Última actualización el 1 de febrero de 2021
Existe mucha confusión para los principiantes sobre qué algoritmo se utiliza para entrenar modelos de redes neuronales de aprendizaje profundo.
Es común escuchar cómo las redes neuronales aprenden usando el «propagación inversa del error«Algoritmo o»descenso de gradiente estocástico. » A veces, cualquiera de estos algoritmos se usa como una abreviatura de cómo se ajusta una red neuronal en un conjunto de datos de entrenamiento, aunque en muchos casos, existe una profunda confusión en cuanto a qué son estos algoritmos, cómo están relacionados y cómo podrían funcionar. juntos.
Este tutorial está diseñado para aclarar el papel de los algoritmos de retropropagación y descenso de gradiente estocástico en el entrenamiento entre redes.
En este tutorial, descubrirá la diferencia entre el descenso de gradiente estocástico y el algoritmo de retropropagación.
Después de completar este tutorial, sabrá:
- El descenso de gradiente estocástico es un algoritmo de optimización para minimizar la pérdida de un modelo predictivo con respecto a un conjunto de datos de entrenamiento.
- La retropropagación es un algoritmo de diferenciación automática para calcular gradientes para los pesos en una estructura gráfica de red neuronal.
- El descenso de gradiente estocástico y la retropropagación de algoritmos de error juntos se utilizan para entrenar modelos de redes neuronales.
Empecemos.
Descripción general del tutorial
Este tutorial se divide en tres partes; son:
- Descenso de gradiente estocástico
- Algoritmo de retropropagación
- Descenso de gradiente estocástico con retropropagación
Descenso de gradiente estocástico
Descenso de gradiente es un algoritmo de optimización que encuentra el conjunto de variables de entrada para una función de destino que da como resultado un valor mínimo de la función de destino, llamado el mínimo de la función.
Como sugiere su nombre, el descenso de gradiente implica calcular el gradiente de la función objetivo.
Tal vez recuerde del cálculo que la derivada de primer orden de una función calcula la pendiente o curvatura de una función en un punto dado. Si se lee de izquierda a derecha, una derivada positiva sugiere que la función objetivo está inclinada hacia arriba y una derivada negativa sugiere que la función objetivo está inclinada hacia abajo.
- Derivado: Pendiente o curvatura de una función objetivo con respecto a valores de entrada específicos para la función.
Si la función de destino toma múltiples variables de entrada, se pueden tomar juntas como un vector de variables. El trabajo con vectores y matrices se denomina álgebra lineal y el cálculo con estructuras del álgebra lineal se denomina cálculo matricial o cálculo vectorial. En el cálculo de vectores, el vector de derivadas de primer orden (derivadas parciales) generalmente se denomina gradiente de la función objetivo.
- Degradado: Vector de derivadas parciales de una función objetivo con respecto a las variables de entrada.
El algoritmo de descenso de gradiente requiere el cálculo del gradiente de la función objetivo con respecto a los valores específicos de los valores de entrada. El gradiente apunta hacia arriba, por lo tanto, el negativo del gradiente de cada variable de entrada se sigue cuesta abajo para dar como resultado nuevos valores para cada variable que dan como resultado una evaluación más baja de la función objetivo.
Se usa un tamaño de paso para escalar el gradiente y controlar cuánto cambiar cada variable de entrada con respecto al gradiente.
- Numero de pie: Tasa de aprendizaje o alfa, un hiperparámetro que se usa para controlar cuánto cambiar cada variable de entrada con respecto al gradiente.
Este proceso se repite hasta que se localiza el mínimo de la función objetivo, se evalúa un número máximo de soluciones candidatas o alguna otra condición de parada.
El descenso de gradiente se puede adaptar para minimizar la función de pérdida de un modelo predictivo en un conjunto de datos de entrenamiento, como un modelo de clasificación o regresión. Esta adaptación se denomina descenso de gradiente estocástico.
- Descenso de gradiente estocástico: Extensión del algoritmo de optimización del descenso de gradientes para minimizar una función de pérdida de un modelo predictivo en un conjunto de datos de entrenamiento.
La función de destino se toma como la función de pérdida o error en el conjunto de datos, como el error cuadrático medio para la regresión o la entropía cruzada para la clasificación. Los parámetros del modelo se toman como variables de entrada para la función objetivo.
- Función de pérdida: función de destino que se está minimizando.
- Parámetros del modelo: parámetros de entrada a la función de pérdida que se están optimizando.
El algoritmo se denomina «estocástico”Porque los gradientes de la función objetivo con respecto a las variables de entrada son ruidosos (por ejemplo, una aproximación probabilística). Esto significa que la evaluación del gradiente puede tener ruido estadístico que puede oscurecer la verdadera señal del gradiente subyacente, causado por la escasez y el ruido en el conjunto de datos de entrenamiento.
La idea del descenso de gradiente estocástico es que el gradiente es una expectativa. La expectativa puede estimarse aproximadamente utilizando un pequeño conjunto de muestras.
– Página 151, Deep Learning, 2016.
El descenso de gradiente estocástico se puede usar para entrenar (optimizar) muchos tipos de modelos diferentes, como la regresión lineal y la regresión logística, aunque a menudo se han descubierto algoritmos de optimización más eficientes y probablemente deberían usarse en su lugar.
El descenso de gradiente estocástico (SGD) y sus variantes son probablemente los algoritmos de optimización más utilizados para el aprendizaje automático en general y para el aprendizaje profundo en particular.
– Página 294, Deep Learning, 2016.
El descenso de gradiente estocástico es el algoritmo más eficiente descubierto para entrenar redes neuronales artificiales, donde los pesos son los parámetros del modelo y la función de pérdida objetivo es el error de predicción promediado sobre uno, un subconjunto (lote) de todo el conjunto de datos de entrenamiento.
Casi todo el aprendizaje profundo se basa en un algoritmo muy importante: descenso de gradiente estocástico o SGD.
– Página 151, Deep Learning, 2016.
Hay muchas extensiones populares del descenso de gradiente estocástico diseñadas para mejorar el proceso de optimización (igual o mejor pérdida en menos iteraciones), como Momentum, Root Mean Squared Propagation (RMSProp) y Adaptive Movement Estimation (Adam).
Un desafío cuando se usa el descenso de gradiente estocástico para entrenar una red neuronal es cómo calcular el gradiente para los nodos en capas ocultas en la red, p. nodos a uno o más pasos de la capa de salida del modelo.
Esto requiere una técnica específica de cálculo llamada regla de la cadena y un algoritmo eficiente que implementa la regla de la cadena que se puede usar para calcular gradientes para cualquier parámetro en la red. Este algoritmo se llama retropropagación.
Algoritmo de propagación hacia atrás
Propagación inversa, también llamada «propagación hacia atrás,» o simplemente «backprop, ”Es un algoritmo para calcular el gradiente de una función de pérdida con respecto a las variables de un modelo.
- Propagación hacia atrás: Algoritmo para calcular el gradiente de una función de pérdida con respecto a las variables de un modelo.
Puede recordar del cálculo que la derivada de primer orden de una función para un valor específico de una variable de entrada es la tasa de cambio o curvatura de la función para esa entrada. Cuando tenemos múltiples variables de entrada para una función, forman un vector y el vector de derivadas de primer orden (derivadas parciales) se llama gradiente (es decir, cálculo vectorial).
- Degradado: Vector de derivadas parciales de valores de entrada específicos con respecto a una función objetivo.
La retropropagación se utiliza al entrenar modelos de redes neuronales para calcular el gradiente para cada peso en el modelo de red. Luego, un algoritmo de optimización utiliza el gradiente para actualizar los pesos del modelo.
El algoritmo se desarrolló explícitamente para calcular los gradientes de las variables en estructuras gráficas trabajando hacia atrás desde la salida del gráfico hacia la entrada del gráfico, propagando el error en la salida predicha que se usa para calcular el gradiente para cada variable.
El algoritmo de retropropagación, a menudo llamado simplemente backprop, permite que la información del costo fluya hacia atrás a través de la red para calcular el gradiente.
– Página 204, Deep Learning, 2016.
La función de pérdida representa el error del modelo o función de error, las ponderaciones son las variables de la función y, por tanto, los gradientes de la función de error con respecto a las ponderaciones se denominan gradientes de error.
- Función de error: Función de pérdida que se minimiza al entrenar una red neuronal.
- Pesos: Parámetros de la red tomados como valores de entrada a la función de pérdida.
- Gradientes de error: Derivadas de primer orden de la función de pérdida con respecto a los parámetros.
Esto le da al algoritmo su nombre «propagación hacia atrás,» o algunas veces «retropropagación de error» o el «propagación inversa del error. «
- Propagación inversa del error: Comente cómo se calculan los gradientes de forma recursiva hacia atrás a través del gráfico de red comenzando en la capa de salida.
El algoritmo implica la aplicación recursiva de la regla de la cadena del cálculo (diferente de la regla de la cadena de la probabilidad) que se utiliza para calcular la derivada de una subfunción dada la derivada de la función principal para la que se conoce la derivada.
La regla de la cadena del cálculo […] se utiliza para calcular las derivadas de funciones formadas al componer otras funciones cuyas derivadas se conocen. La retropropagación es un algoritmo que calcula la regla de la cadena, con un orden específico de operaciones que es altamente eficiente.
– Página 205, Deep Learning, 2016.
- Cadena de reglas: Fórmula de cálculo para calcular las derivadas de funciones utilizando funciones relacionadas cuyas derivadas son conocidas.
Existen otros algoritmos para calcular la regla de la cadena, pero el algoritmo de retropropagación es un algoritmo eficiente para el gráfico específico estructurado mediante una red neuronal.
Es justo llamar al algoritmo de retropropagación un tipo de algoritmo de diferenciación automática y pertenece a una clase de técnicas de diferenciación llamadas acumulación inversa.
El algoritmo de retropropagación descrito aquí es solo un enfoque para la diferenciación automática. Es un caso especial de una clase más amplia de técnicas llamadas acumulación en modo inverso.
– Página 222, Deep Learning, 2016.
Aunque la retropropagación se desarrolló para entrenar modelos de redes neuronales, tanto el algoritmo de retropropagación específicamente como la fórmula de la regla de la cadena que implementa de manera eficiente pueden usarse de manera más general para calcular derivadas de funciones.
Además, la retropropagación a menudo se malinterpreta como específica de las redes neuronales multicapa, pero en principio puede calcular derivadas de cualquier función …
– Página 204, Deep Learning, 2016.
Descenso de gradiente estocástico con retropropagación
Stochastic Gradient Descent es un algoritmo de optimización que se puede utilizar para entrenar modelos de redes neuronales.
El algoritmo de descenso de gradiente estocástico requiere que se calculen gradientes para cada variable en el modelo para que se puedan calcular nuevos valores para las variables.
La retropropagación es un algoritmo de diferenciación automática que se puede utilizar para calcular los gradientes de los parámetros en las redes neuronales.
Juntos, el algoritmo de retropropagación y el algoritmo de descenso de gradiente estocástico se pueden utilizar para entrenar una red neuronal. Podríamos llamar a esto «Descenso de gradiente estocástico con retropropagación. «
- Descenso de gradiente estocástico con retropropagación: Una descripción más completa del algoritmo general utilizado para entrenar una red neuronal, haciendo referencia al algoritmo de optimización y al algoritmo de cálculo de gradiente.
Es común que los profesionales digan que entrenan su modelo usando propagación inversa. Técnicamente, esto es incorrecto. Incluso como un resumen, esto sería incorrecto. La retropropagación no es un algoritmo de optimización y no se puede utilizar para entrenar un modelo.
El término retropropagación a menudo se malinterpreta en el sentido de todo el algoritmo de aprendizaje para redes neuronales multicapa. En realidad, la retropropagación se refiere solo al método para calcular el gradiente, mientras que otro algoritmo, como el descenso de gradiente estocástico, se utiliza para realizar el aprendizaje utilizando este gradiente.
– Página 204, Deep Learning, 2016.
Sería justo decir que una red neuronal está entrenada o aprende usando el Descenso de gradiente estocástico como forma abreviada, ya que se supone que el algoritmo de retropropagación se usa para calcular gradientes como parte del procedimiento de optimización.
Dicho esto, se puede utilizar un algoritmo diferente para optimizar el parámetro de una red neuronal, como un algoritmo genético que no requiere gradientes. Si se usa el algoritmo de optimización de descenso de gradiente estocástico, se puede usar un algoritmo diferente para calcular los gradientes de la función de pérdida con respecto a los parámetros del modelo, como algoritmos alternativos que implementan la regla de la cadena.
Sin embargo, el “Descenso de gradiente estocástico con retropropagación”La combinación se usa ampliamente porque es el enfoque general más eficiente y efectivo hasta ahora desarrollado para ajustar modelos de redes neuronales.
Otras lecturas
Esta sección proporciona más recursos sobre el tema si está buscando profundizar.
Libros
Artículos
Resumen
En este tutorial, descubrió la diferencia entre el descenso de gradiente estocástico y el algoritmo de retropropagación.
Específicamente, aprendiste:
- El descenso de gradiente estocástico es un algoritmo de optimización para minimizar la pérdida de un modelo predictivo con respecto a un conjunto de datos de entrenamiento.
- La retropropagación es un algoritmo de diferenciación automática para calcular gradientes para los pesos en una estructura gráfica de red neuronal.
- El descenso de gradiente estocástico y la retropropagación de algoritmos de error juntos se utilizan para entrenar modelos de redes neuronales.
¿Tiene usted alguna pregunta?
Haga sus preguntas en los comentarios a continuación y haré todo lo posible para responder.