Resumen de varios optimizadores para el aprendizaje profundo

1. Principio de diseño del algoritmo de optimización

El principio del algoritmo de optimización en el aprendizaje profundo es el método de descenso de gradiente, que minimiza la función objetivo J ( θ ) J(\theta)J ( θ ) , el proceso de solución óptima, primero resuelve el gradiente de la función objetivo∇ J ( θ ) \nabla J(\theta)J ( θ ) , entonces el parámetroθ \thetaSi θ es una variable independiente,θ t = θ t − 1 − η ∇ J ( θ ) \theta_{t}=\theta_{t-1}-\eta\nabla J(\theta) .it=it 1η J ( θ )η \etaη es la tasa de aprendizaje, que indica el tamaño del paso de actualización del gradiente. El algoritmo del que depende el proceso de optimización se llama optimizador. Se puede ver que los dos núcleos del optimizador de aprendizaje profundo son el gradiente y la tasa de aprendizaje. El el primero determina la dirección de actualización de los parámetros, y el segundo determina el grado de actualización de los parámetros.

Definimos θ \thetaθ es el parámetro a optimizar,J ( θ ) J(\theta)J ( θ ) es la función objetivo, y la tasa de aprendizaje inicial esη \etanorte _ El marco de ejecución del algoritmo de optimización durante el proceso de descenso de gradiente es el siguiente:

1. Calcular el gradiente de la función objetivo con respecto a los parámetros actuales:

gt = ∇ J ( θ t ) g_t = \nabla J(\theta_t)gramot=J ( yot)

2. Calcule el impulso de primer y segundo orden del gradiente histórico según sea necesario:

mt = ϕ ( gramo 1 , gramo 2 , ⋅ ⋅ ⋅ , gt ) m_t = \phi(g_1, g_2,···,g_t)metrot=ϕ ( gramo1,gramo2,⋅⋅⋅,gramot)

V t = ψ ( gramo 1 , gramo 2 , ⋅ ⋅ ⋅ , gt ) V_t = \psi(g_1, g_2,···,g_t)Vt=ψ ( gramo1,gramo2,⋅⋅⋅,gramot)

3. Calcular la pendiente descendente en el momento actual:

p = η ∗ mt / V t (optimizador adaptativo) p = \eta * m_t / \sqrt{V_t} (optimizador adaptativo)pag=elmetrot/Vt ( optimizador adaptativo )

p = η ∗ gt (optimizador no adaptativo) p = \eta * g_t (optimizador no adaptativo)pag=elgramot( optimizador no adaptativo )

4. Realice una actualización de descenso de gradiente

θ t + 1 = θ t - pags \theta_{t+1} = \theta_t - pagsit + 1=itpag

Para varios optimizadores, paso 3 33 y paso4 44 son iguales, la principal diferencia se refleja en el paso1 11 y paso2 22. Expliquemos en detalle las ideas de diseño de estos optimizadores.

1. Optimizador no adaptativo

Durante el proceso de optimización, la tasa de aprendizaje permanece sin cambios a lo largo de todo el proceso, o de acuerdo con un cierto aprendizaje aprendizajehorario de aprendizaje horario _ _ _programar cambios a lo largo del tiempo, denominado optimizador no adaptativo, esta categoría incluye los SGD SGD más comunesSG D (descenso de gradiente estocástico) conMomentum MomentumSGDde M o m e n t u m SGDSG D、带N esterov NesterovN es t ero vSGD SGDSGD et al.

1, BGD BGDBG D (Lote Lotegradiente por lotes gradiente _ _descenso de gradiente _ _ _ _ _ _descenso ) _ _ _

Su fórmula de actualización de gradiente es:

θ = θ - η ∗ ∇ θ J ( θ ) \theta = \theta - \eta * \nabla_{\theta} J(\theta) .i=ieliJ ( θ )

USD USDSG D utiliza los datos de todo el conjunto de entrenamiento para calcular la pérdidacada vez que se actualiza el gradientel El gradiente de oss a los parámetros, por lo que es muy lento de calcular y será muy complicado cuando encuentre una gran cantidad de conjuntos de datos, y no es posible actualizar el modelo en tiempo real con nuevos datos.

2, SGD SGDMétodo de descenso de gradiente estocástico SG D (Stochastic StochasticGradiente de gradiente estocástico _ _ _ _descenso de gradiente _ _ _ _ _ _descenso ) _ _ _

Su fórmula de actualización de gradiente y SGD SGDSG D es similar.

USD USDEl proceso de descenso de gradiente de SG D es similar a una pequeña pelota que rueda cuesta abajo, su dirección hacia adelante solo es consistente con la dirección de pendiente máxima de la colina actual (dirección máxima de gradiente negativo), y la velocidad inicial en cada momento es 0. La regla de actualización de gradiente es: cada actualización para unlote por lotesLas actualizaciones de gradiente se realizan para cada muestra en lote , lo que hace que los parámetros de actualización de la red sean muy rápidos. Pero sus deficiencias también son obvias, porqueSGD SGDSG D actualiza el gradiente con mucha frecuencia, lo que causarácosto costo función función cos tLa función tendrá serios impactos , y puede oscilar de un lado a otro en el mínimo global y saltar fuera del óptimo global .

3, MSGD MSGDMSG D (M ini − lote Mini loteMini _ gradiente por lotes gradiente _descenso de gradiente _ _ _ _ _ _descenso ) _ _ _

De hecho, más a menudo nos referimos a MSGD como MSGDMSG D lo llamaSGD SGDSG D , su fórmula de actualización de gradiente ySGD SGDSG D es similar. La regla de actualización de gradiente es:MSGD MSGDMSG D usa un lote por lotescada vezlote de muestra , es decir , nnSe calculan N muestras, por lo que puede reducir la varianza al actualizar los parámetros y la convergencia es más estable.Por otro lado, puede hacer un uso completo de la operación de matriz altamente optimizada en la biblioteca de aprendizaje profundo para un cálculo de gradiente más eficiente. y2 22 SGD medianosSGDLa diferencia de SG D es que en lugar de usar todas las muestras en el conjunto de datos cada vez que se actualiza el gradiente, es unlote por lotesnndentro del lote _ _n muestras. SGD SGDmencionado en el siguiente artículoSG D se refiere aMSGD MSGDMSG D. _
inserte la descripción de la imagen aquí
ventaja:

1. Aunque parece que MSGD está en proceso de actualización MSGDcosto costode MSG D función función cos tLa función fluctúa mucho y tomará muchos desvíos, pero los requisitos para los gradientes son muy bajos (el cálculo de los gradientes es rápido), y para la introducción de ruido , mucho trabajo teórico y práctico ha demostrado que mientras el el ruido no es particularmente grande,MSGD MSGDMSG D puede converger bien.

2. Al aplicar grandes conjuntos de datos, la velocidad de entrenamiento es muy rápida. Por ejemplo, tome cientos de puntos de datos de millones de muestras de datos cada vez y calcule un MSGD MSGDGradiente MSG D , actualice los parámetros del modelo. En comparación con atravesar todas las muestras del método de descenso de gradiente estándar, es mucho más rápido actualizar los parámetros cada vez que se ingresa una muestra.

defecto:

1. No se puede garantizar una buena convergencia, mini minimini -lote por lotesba t c h solo usa una parte del conjunto de datos para el descenso del gradiente cada vez, por lo que cada descenso no es estrictamente en la dirección del mínimo, pero la tendencia descendente general es en la dirección del mínimo, y es extremadamente fácil de caer en un mínimo local.

2, lr lrl Si r es demasiado pequeño, la velocidad de convergencia será muy lenta, si es demasiado grande,pérdida pérdida función de función de pérdidaLa función seguirá oscilando o incluso se desviará del valor mínimo . (Una medida es establecer primero una tasa de aprendizaje más grande, y cuando el cambio entre dos iteraciones es inferior a un cierto umbral, reducir elaprendizaje de aprendizajetasa de aprendizaje tasa _ _ _r a t e , pero la configuración de este umbral debe escribirse previamente, pero en este caso no puede adaptarse a las características del conjunto de datos).

3. Para funciones no convexas, también es necesario evitar quedar atrapado en un mínimo local o en un punto de silla, porque el gradiente alrededor del punto de silla es cercano a 0 00 ,MSGD MSGDMSG D fácilmente podría quedarse atascado aquí. Para explicar el punto de silla aquí es: la curva, superficie o hipersuperficie de la vecindad del punto de silla de una función suave se encuentra en diferentes lados de la tangente de este punto. Como se muestra a continuación2 22 .

inserte la descripción de la imagen aquí
4, SGDM SGDMSG D M (conMomentum MomentumM o m e n t u m SGD SGDdel impulsoSG D )

Para resolver los problemas que pueden ocurrir en los algoritmos de optimización anteriores, SGDM SGDMNació la aplicación SG D M , en el original SGD SGDAl SG D se le suma la cantidad de movimiento de primer orden , por intuición se le suma una inercia, en lugares de mayor pendiente habrá mayor inercia, y la bajada será más rápida, será más lenta.

Su fórmula de actualización de gradiente es:

vt = γ vt − 1 + η ∇ θ J ( θ ) v_t = \gamma v_{t-1} + \eta \nabla_{\theta}J(\theta) .vt=v_ _t 1+η∇ _iJ ( θ )

θ = θ − vt \theta = \theta - v_ti=ivt

SGDM SGDMSG D M sumandoγ vt − 1 \gamma v_{t-1}v_ _t 1, que se define como cantidad de movimiento, γ \gammaEl valor de γ comúnmente usado es0.9 0.90.9 . Después de usar el impulso, durante el proceso de descenso del gradiente, la velocidad de descenso en la dirección en la que la dirección del gradiente permanece sin cambios se puede hacer más rápida, y la velocidad de descenso en la dirección en la que se cambia la dirección del gradiente se vuelve más lenta. Aquí ponemos un ejemplo más cercano: en la bajada de pendiente original, hemos estado descendiendo en una dirección, y cuando nos encontramos con un barranco (es decir, un punto de inflexión), estamos en el otro lado de la ladera cuando cruzamos el barranco. En este momento la dirección de la pendiente es opuesta a la anterior, en este momento debido a la acumulación del tamaño de la pendiente anterior, los cambios entre las dos laderas se cancelarán, por lo que no oscilará siempre en las dos laderas, y es fácil descender por el valle, solo reduce la vibración. SGDM SGDMEl estado de la actualización del gradiente de SG D M es como se muestra en la Figura 3 33 y Figura1 11 , la vibración se reduce significativamente.
inserte la descripción de la imagen aquí
5.NAG NAGN A G (N esterov NesterovN es t ero v acelerado aceleradogradiente acelerado gradiente _ _ _ _ _ _gradiente ) _ _ _ _ _ _ _

SGDM introducido por encima de SGDMCada paso descendente de SG D M se compone de una acumulación de la dirección descendente anterior y la dirección del gradiente del punto actual, pero cuando solo desciende hasta las proximidades del punto de inflexión, si continuamos actualizando los parámetros de esta manera en esta vez, tendremos una magnitud mayor que cruza el punto de inflexión, es decir, el modelo no reducirá automáticamente la magnitud de la actualización cuando encuentre un punto de inflexión. NAG mejora el método de cantidad de movimiento para los problemas anteriores, y su expresión es la siguiente:

vt = γ vt − 1 + η ∇ θ J ( θ − γ vt − 1 ) v_t = \gamma v_{t-1} + \eta \nabla_{\theta}J(\theta-\gamma v_{t-1 ). })vt=v_ _t 1+η∇ _iJ ( θv_ _t 1)

θ = θ − vt \theta = \theta - v_ti=ivt

NAG NAGN A G utiliza el valor de gradiente anterior en la posición actual para realizar primero una actualización de parámetros, luego calcula el gradiente en la posición actualizada y agrega esta parte del gradiente al vector de valor de gradiente acumulado previamente. en la acumulación anterior La dirección del gradiente de simula el valor después de la actualización del parámetro en el siguiente paso, y luego reemplaza el gradiente en la posición actual en el método de momento con el gradiente en la posición simulada. Entonces, ¿por qué este método resuelve el problema mencionado anteriormente? PorqueNAG NAGN A G tiene un paso para predecir el gradiente de posición del siguiente paso, por lo que cuando cae cerca del punto de inflexión,NAG NAGN A G predice que cruzará el punto de inflexión y el gradiente de este elemento se corregirá para el gradiente anterior, lo que equivale a evitar que su extensión sea demasiado grande.
inserte la descripción de la imagen aquí
Como la imagen de arriba4 44 , damos un ejemplo para mostrar brevementeNAG NAGEl principio de actualización de N A G , donde la línea azul representa SGDM SGDMMétodo SG D M , la línea azul corta representa la actualización del gradiente de la posición actual, y la línea azul larga representa el gradiente acumulado antes; la primera línea roja representa el uso deNAG NAGEl algoritmo NAG predice la actualización del gradiente de la siguiente posición. La primera línea marrón representa el gradiente acumulado previamente, y el resultado de la suma del vector (línea verde) es la dirección de la actualización del parámetro . NAG NAGEl diagrama de estado de N A G al actualizar el gradiente se muestra en la Figura5 55 , se puede ver en la figura que en comparación conSGDM SGDMSG D M ySGD SGDSG D ,NAG NAGNAG mostró un mejor desempeño.
inserte la descripción de la imagen aquí

2. Optimizador adaptativo

En el proceso de optimización, la tasa de aprendizaje cambia de forma adaptativa con el gradiente, y trata de eliminar la influencia de la tasa de aprendizaje global dada tanto como sea posible. Se llama optimizador adaptativo, y los comunes incluyen A dagrad AdagradA d a g r a d ,A dadelta AdadeltaAdadelta RMS propRMSprop _ _ _ _RMSp ro pAdam AdamA d am等。
1、A dagrad AdagradEl d a g r a d

Dagrad es AdagradUn da ​​g ra d es en realidad una restricción en la tasa de aprendizaje. Para los parámetros que se actualizan con frecuencia, hemos acumulado mucho conocimiento al respecto. No queremos vernos afectados demasiado por una sola muestra, y esperamos que la tasa de aprendizaje será más lenta; espara El uso de impulso de segundo orden en este método significa la llegada de la era del algoritmo de optimización de "tasa de aprendizaje adaptativo".

Aquí ilustramos el impulso de segundo orden V t V_tVtDefinición de: se utiliza para medir la frecuencia de actualización histórica de los parámetros, y el impulso de segundo orden es la suma de los cuadrados de todos los valores de gradiente hasta el momento. Un dagrad AdagradLa expresión de A d a g r a d es:

mt = gt m_t = g_tmetrot=gramot

V t = ∑ yo = 1 tgt 2 V_t = \sum_{i=1}^{t}{g_t}^2Vt=yo = 1tgramot2

θ t + 1 = θ t − η metro V t \theta_{t+1} = \theta_t - \eta \frac{m_t}{\sqrt{V_t}}it + 1=itelVt metrot

donde gt g_tgramotpara ttEl parámetro gradiente en el tiempo t , expliquemos por quéadagrad adagrada d a g rad puede cambiar la tasa de aprendizaje de sus parámetros para diferentes características de frecuencia . Primero, vemos que la cantidad de movimiento de segundo ordenV t V_tVt, que es la suma acumulada de los gradientes al cuadrado. Para las funciones con menos datos de entrenamiento, los parámetros correspondientes se actualizan lentamente, es decir, la suma acumulada de los cambios de gradiente al cuadrado será relativamente pequeña, por lo que la tasa de aprendizaje correspondiente al parámetro anterior La ecuación de actualización será más grande, por lo que para un determinado conjunto de datos característicos, la velocidad de actualización del parámetro correspondiente será más rápida. En caso de que el denominador anterior sea 0 00 , por lo que a menudo se agrega un parámetro de término de suavizadoϵ \epsilonϵ , la ecuación de actualización de parámetros se convierte en:

θ t + 1 = θ t − η metro V t + ϵ \theta_{t+1} = \theta_t - \eta \frac{m_t}{\sqrt{V_t+\epsilon}}it + 1=itelVt+ϵ metrot

pero adagrad adagrada d a g ra d también tiene un problema, es decir, su denominador aumentará a medida que aumente el número de entrenamientos, lo que hará que la tasa de aprendizaje sea cada vez más pequeña, y finalmente infinitamente cercana a 0 00 , por lo que es imposible actualizar los parámetros de manera efectiva.

2、A dadelta AdadeltaA d a d e l a

Para A dagrad AdagradContras de A d a g r a d , A dadelta AdadeltaA d a d e l a a la cantidad de movimiento de segundo ordenV t V_tVtMejorado y A dagrad AdagradEn comparación con A d a g ra d , el denominador se reemplaza por el valor promedio de atenuación del cuadrado del gradiente en el pasado. Este denominador es equivalente al valor cuadrático medio RMS RMS del gradienteRMS (raíz raízraíz significa significam e un cuadrado al cuadradocuadrado rojo ) . _ _ _ Su expresión es la siguiente:

mt = gt m_t = g_tmetrot=gramot

V gramo , t = γ V gramo , t − 1 + ( 1 − γ ) gt 2 V_{g,t} = \gamma V_{g,t-1} + (1-\gamma){g_t}^2Vg , t=γV _gramo , t 1+( 1c ) gt2

V Δ θ , t = γ V Δ θ , t − 1 + ( 1 − γ ) Δ θ t 2 V_{\Delta \theta,t} = \gamma V_{\Delta \theta,t-1} + (1 -\gamma){\Delta\theta_t}^2VD yo , t=γV _re θ , t - 1+( 1c ) yo _t2

RMS [ g ] t = V gramo , t + ϵ RMS[g]t = \sqrt{V{g,t}+\epsilon}RMS [ g ] t=v g ,t+ϵ

RMS [ Δ θ ] t = V Δ θ , t + ϵ RMS[\Delta\theta]t = \sqrt{V{\Delta\theta,t}+\epsilon};RMS [ Δ θ ] t=V D yo ,t+ϵ

θ t + 1 = θ t − RMS [ Δ θ ] t − 1 RMS [ g ] tmt \theta_{t+1} = \theta_{t} - \frac{RMS[\Delta \theta]_{t-1 }}{RMS[g]_t}m_tit + 1=itvalor eficaz [ g ]tRMS [ Δθ ] _t 1metrot

donde el cambio de impulso de segundo orden al gradiente es RMS [ g ] t RMS [g]_tvalor eficaz [ g ]t; El impulso de segundo orden del cambio en la variable es RMS [ Δ θ ] t RMS[\Delta \theta]_tRMS [ Δθ ] _ty reemplácelo con la tasa de aprendizaje usando . por adadelta adadeltaa da a del lt un algoritmo de optimización, ni siquiera necesitamos establecer una tasa de aprendizaje predeterminada, porque esto se ha eliminado en las nuevas reglas .

3, apoyo RMS RMSpropRMSp ro p

apoyo RMS apoyo RMSRMSp ro pA dadelta AdadeltaA d a d e l a se trata de resolverA dagrad AdagradLa tasa de aprendizaje de Adagrad cae bruscamente debido al problema . apoyo RMS apoyo RMSRMSprop A d a d e l t a Adadelta La fórmula de cálculo de A d a d e l a es muy similar, pero al mismo tiempo se propone de forma independiente, y su expresión es:

mt = gt m_t = g_tmetrot=gramot

V t = γ V t − 1 + ( 1 − γ ) gt 2 V_t = \gamma V_{t-1} + (1-\gamma){g_t}^2Vt=γV _t 1+( 1c ) gt2

θ t + 1 = θ t − η mt V t + ϵ \theta_{t+1} = \theta_{t} - \eta \frac{m_t}{\sqrt{V_t + \epsilon}}it + 1=itelVt+ϵ metrot

Se puede ver a partir de esto que RMS prop RMSpropRMSp ro p también necesita establecer manualmente una tasa de aprendizaje inicialη \etanorte _ Los autores sugieren queϵ \epsilonϵ se establece en 0.9, tasa de aprendizajeη \etaη se fijó en 0,001.

4、Una presa AdánA d am (A daptativo AdaptativoA d apt i v e M omento MomentoM o m e n t Estimación EstimaciónEs t ima c i ó n ) _

Una presa AdánEl algoritmo de Adam es otra forma de calcular una tasa de aprendizaje adaptativo para cada parámetro. Es una especie de impulsoMomentum MomentumM o m e n t u m yRMS prop RMSpropEl método de combinar RMSp ro p introduce dos parámetros al mismo tiempo β 1 \beta_1b1y β 2 \beta_2b2, cuya expresión es:

mt = β 1 mt − 1 + ( 1 − β 1 ) gt (momento de primer orden) m_t = \beta_1m_{t-1} + (1-\beta_1)g_t(momento de primer orden)metrot=b1metrot 1+( 1b1) gt( impulso de primer orden )

V t = β 2 V t − 1 + ( 1 − β 2 ) gt 2 (momento de segundo orden) V_t = \beta_2V_{t-1} + (1-\beta_2){g_t}^2(momento de segundo orden )Vt=b2Vt 1+( 1b2) gt2 (segundo impulso)

metro ~ t = metro 1 − β 1 t \tilde{m}_t = \frac{m_t}{1-\beta_1^t}metro~t=1b1tmetrot

V ~ t = V t 1 − β 2 t \tilde{V}_t = \frac{V_t}{1-\beta_2^t}V~t=1b2tVt

θ t + 1 = θ − η metro ~ t V ~ t + ϵ \theta_{t+1} = \theta - \eta \frac{\denominator{m}_t}{\sqrt{\denominator{V}_t + \épsilon}}it + 1=ielV~t+ϵ metro~t

Entre ellos β 1 \beta_1b1El valor predeterminado es 0,9 0,90.9β 2 \beta_2b2El valor predeterminado es 0,999 0,9990.999 ,ϵ \epsilonϵ1 0 − 8 10^{-8}1 08Una presa AdánA d am combina cantidad de movimiento yRMS prop RMSpropRMSp ro p los méritos de ambos, por experiencia ha demostradoAdam AdamAdam se desempeña bien en la práctica y tiene ventajas en comparación con otros algoritmos de aprendizaje adaptativo .

Resumir

Echemos un vistazo al rendimiento de los algoritmos de optimización anteriores en los puntos de silla y las curvas de nivel:
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Como se puede ver en la Figura 6 y la Figura 7, A dagrad AdagradA d a g r a d ,A dadelta AdadeltaAdadelta RMS propRMSprop _ _ _ _RMS rop encuentra la dirección correcta y avanza casi rápidamente, y converge bastante rápido, mientras que otros métodos son lentos o toman muchos desvíos para encontrarla .

1. En primer lugar, no hay conclusión sobre cuál de los principales algoritmos es mejor. Si recién está comenzando, dé prioridad a SGD SGDSG D +N esterov NesterovN es t ero v Momentum MomentumMomento o AdamAdam _ _ _ _ _ _Ad am _

2、Una presa AdánLos algoritmos de tasa de aprendizaje adaptativo como Adam tienen ventajas para datos escasos y la velocidad de convergencia es rápida, pero SGDM SGDMSG D M tiende a lograr mejores resultados finales.

3. Elija según sus necesidades: en el proceso de experimento de diseño del modelo, para verificar rápidamente el efecto del nuevo modelo, primero puede usar Adam AdamAdam realiza una optimización experimental rápida; se puede usar SGD SGDajustado antes de que se lance el modelo o se publiquen los resultadosEl algoritmo de optimización de la serie SG D realiza una optimización extrema del modelo.

4. Considere la combinación de diferentes algoritmos. Primer uso A dam AdamUn da ​​am para un descenso rápido antes de cambiar aSGD SGDEl algoritmo de optimización de la serie SG D está totalmente ajustado.

Supongo que te gusta

Origin blog.csdn.net/qq_52302919/article/details/131626516
Recomendado
Clasificación