Diferencia entre retropropagación y descenso de gradiente estocástico
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 que las redes neuronales aprenden utilizando el algoritmo de “propagación hacia atrás del error” o “descenso de gradiente estocástico”. A veces, cualquiera de estos algoritmos se utiliza como abreviatura de cómo se ajusta una red neuronal a un conjunto de datos de entrenamiento, aunque en muchos casos existe una profunda confusión en cuanto a qué son estos algoritmos, cómo se relacionan y cómo podrían funcionar. juntos.
Este tutorial está diseñado para aclarar el papel de los algoritmos de propagación hacia atrás 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 se utilizan juntos para entrenar modelos de redes neuronales.
Empecemos.
Descripción general del tutorial
Este tutorial se divide en tres partes; ellos son:
- Descenso del gradiente estocástico
- Algoritmo de retropropagación
- Descenso de gradiente estocástico con propagación hacia atrás
Descenso del gradiente estocástico
Gradient Descent es un algoritmo de optimización que encuentra el conjunto de variables de entrada para una función objetivo que da como resultado un valor mínimo de la función objetivo, llamado mínimo de la función.
Como sugiere su nombre, el descenso de gradiente implica calcular el gradiente de la función objetivo.
Quizás recuerdes 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. Leído de izquierda a derecha, una derivada positiva sugiere que la función objetivo tiene pendiente ascendente y una derivada negativa sugiere que la función objetivo tiene pendiente descendente.
- Derivada: pendiente o curvatura de una función objetivo con respecto a valores de entrada específicos de la función.
Si la función de destino toma varias variables de entrada, se pueden tomar juntas como un vector de variables. Trabajar con vectores y matrices se denomina álgebra lineal y hacer cálculos con estructuras de álgebra lineal se denomina cálculo matricial o cálculo vectorial. En cálculo vectorial, el vector de derivadas de primer orden (derivadas parciales) generalmente se denomina gradiente de la función objetivo.
- Gradiente: 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 gradiente negativo de cada variable de entrada se sigue cuesta abajo para dar como resultado nuevos valores para cada variable que resultan en una evaluación más baja de la función objetivo.
Se utiliza un tamaño de paso para escalar el gradiente y controlar cuánto cambiar cada variable de entrada con respecto al gradiente.
- Tamaño del paso: Tasa de aprendizaje o alfa, un hiperparámetro utilizado 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 gradiente para minimizar una función de pérdida de un modelo predictivo en un conjunto de datos de entrenamiento.
La función objetivo 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 objetivo 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, debido a la escasez y el ruido en el conjunto de datos de entrenamiento.
La idea del descenso del 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, Aprendizaje profundo, 2016.
El descenso de gradiente estocástico se puede utilizar 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 que 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, Aprendizaje profundo, 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 un subconjunto (lote) de todo el conjunto de datos de entrenamiento.
Casi todo el aprendizaje profundo se basa en un algoritmo muy importante: el descenso de gradiente estocástico o SGD.
— Página 151, Aprendizaje profundo, 2016.
Existen muchas extensiones populares para el descenso de gradiente estocástico diseñadas para mejorar el proceso de optimización (la misma o mejor pérdida en menos iteraciones), como Momentum, Root Mean Squared Propagation (RMSProp) y Adaptive Movement Estimation (Adam).
Un desafío al utilizar el descenso de gradiente estocástico para entrenar una red neuronal es cómo calcular el gradiente para los nodos en capas ocultas de la red, p. nodos a uno o más pasos de la capa de salida del modelo.
Esto requiere una técnica de cálculo específica llamada regla de la cadena y un algoritmo eficiente que implemente 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 retropropagación
La retropropagación, también llamada “backpropagation” 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.
- Back-Propagation: Algoritmo para calcular el gradiente de una función de pérdida con respecto a las variables de un modelo.
Quizás recuerdes 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).
- Gradiente: Vector de derivadas parciales de valores de entrada específicos con respecto a una función objetivo.
La propagación hacia atrás se utiliza al entrenar modelos de redes neuronales para calcular el gradiente de 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 variables en estructuras de gráficos trabajando hacia atrás desde la salida del gráfico hacia la entrada del gráfico, propagando el error en la salida prevista que se utiliza 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, Aprendizaje profundo, 2016.
La función de pérdida representa el error del modelo o función de error, los pesos son las variables de la función y, por lo tanto, los gradientes de la función de error con respecto a los pesos 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 respecto a los parámetros.
Esto le da al algoritmo su nombre “propagación hacia atrás”, o a veces “propagación hacia atrás del error” o “propagación hacia atrás del error. "
- Propagación hacia atrás 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 cuya derivada se conoce.
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, Aprendizaje profundo, 2016.
- Regla de la cadena: Fórmula de cálculo para calcular las derivadas de funciones utilizando funciones relacionadas cuyas derivadas se conocen.
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 sólo 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, Aprendizaje profundo, 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 regla de cadena que implementa de manera eficiente se pueden usar de manera más general para calcular derivadas de funciones.
Además, la retropropagación a menudo se malinterpreta como algo específico de las redes neuronales multicapa, pero en principio puede calcular derivadas de cualquier función...
— Página 204, Aprendizaje profundo, 2016.
Descenso de gradiente estocástico con propagación hacia atrás
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 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 mediante propagación hacia atrás. Técnicamente, esto es incorrecto. Incluso como abreviatura, 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 que significa todo el algoritmo de aprendizaje para redes neuronales multicapa. En realidad, la propagación hacia atrás se refiere únicamente al método para calcular el gradiente, mientras que se utiliza otro algoritmo, como el descenso de gradiente estocástico, para realizar el aprendizaje utilizando este gradiente.
— Página 204, Aprendizaje profundo, 2016.
Sería justo decir que una red neuronal se entrena o aprende utilizando el Descenso de gradiente estocástico como abreviatura, ya que se supone que el algoritmo de retropropagación se utiliza para calcular los 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 utiliza el algoritmo de optimización del descenso de gradiente estocástico, se puede utilizar 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, la combinación “Descenso de gradiente estocástico con retropropagación” se usa ampliamente porque es el enfoque general más eficiente y efectivo desarrollado hasta ahora para ajustar modelos de redes neuronales.
Lectura adicional
Esta sección proporciona más recursos sobre el tema si desea profundizar más.
Libros
- Aprendizaje profundo, 2016.
- Redes neuronales para el reconocimiento de patrones, 1995.
- Reconocimiento de patrones y aprendizaje automático, 2006.
Artículos
- Propagación hacia atrás, Wikipedia.
- Descenso de gradiente estocástico, Wikipedia.
- Regla de la cadena, Wikipedia.
- Diferenciación automática, Wikipedia.
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 se utilizan juntos para entrenar modelos de redes neuronales.
¿Tiene alguna pregunta?
Haga sus preguntas en los comentarios a continuación y haré todo lo posible para responderlas.