Sería útil si proporcionara un contexto para la afirmación de que el descenso del gradiente es ineficiente. ¿Ineficiente en relación con qué?
Supongo que el contexto que falta aquí es la comparación con el descenso de gradiente estocástico o por lotes en el aprendizaje automático. Aquí se explica cómo responder la pregunta en este contexto. Está optimizando los parámetros del modelo, incluso los hiperparámetros. Entonces, tiene la función de costo , donde - sus datos, y - vector de parámetros, y - función de pérdida. Para minimizar este costo, utiliza el descenso de gradiente sobre los parámetros :
x i Θ L ( ) θ j ∂∑nortei = 1L ( xyoEl | Θ)XyoΘL ( ) θj
∂∂θj∑i = 1norteL ( Θ | xyo)
Entonces, verá que necesita obtener la suma de todos los datos . Esto es lamentable, porque significa que sigue recorriendo los datos para cada paso de su descenso de gradiente. Así es como surge el descenso de gradiente por lotes y estocástico: ¿qué sucede si tomamos muestras del conjunto de datos y calculamos el gradiente en una muestra, no en el conjunto completo?
Aquí, es el número de observaciones en la muestra . Entonces, si su muestra es 1/100 del conjunto total, ¡acelerará sus cálculos 100 veces! Obviamente, esto introduce el ruido, que alarga el aprendizaje, pero el ruido disminuye a una velocidad de∂Xi = 1 , ... , nnss√
∂∂θj∑k = 1nortesL ( Θ | xk)
nortess nnorte--√mientras que la cantidad de cálculo aumenta en , entonces este truco puede funcionar.
norte
Alternativamente, insteado esperando hasta que se calcule la suma total , puede dividir esto en lotes y hacer un paso para cada lote . De esta manera, habría realizado M pasos para cuando se calcule la suma de todo el conjunto de datos. Estos serían pasos más ruidosos, pero el ruido se cancela con el tiempo. ∑ M s = 1 ∑ n s i s = 1∑nortei = 1∑METROs = 1∑nortesyos= 1