[Serie de aprendizaje 6] Algoritmos de optimización comunes

Tabla de contenido

1 Algoritmos de optimización comunes

1.1 Algoritmo de descenso de gradiente (BGD de descenso de gradiente por lotes)

1.2 Método de descenso de gradiente estocástico (SGD de descenso de gradiente estocástico)

1.3 Descenso de gradiente de mini lotes (MBGD de descenso de gradiente de mini lotes)

1.4 Método Momentum (Momento)

1.5 AdaGrado

1.6 RMSProp

1.7 Adán


1 Algoritmos de optimización comunes

1.1 Algoritmo de descenso de gradiente (BGD de descenso de gradiente por lotes)

Todas las muestras deben enviarse en cada iteración, lo que tiene la ventaja de que todas las muestras se tienen en cuenta en cada iteración y lo que se hace es una optimización global.

1.2 Método de descenso de gradiente estocástico (SGD de descenso de gradiente estocástico)

Apuntando a las deficiencias de la baja velocidad de entrenamiento del algoritmo de descenso de gradiente, se propone el algoritmo de descenso de gradiente estocástico.El algoritmo de descenso de gradiente estocástico consiste en seleccionar aleatoriamente un grupo de la muestra, actualizarlo una vez de acuerdo con el gradiente después del entrenamiento, y luego extraiga un grupo y luego actualícelo nuevamente.Cuando el tamaño de la muestra es extremadamente grande, puede que no sea necesario entrenar todas las muestras para obtener un modelo con un valor de pérdida dentro del rango aceptable.
La api en torch es: torch.optim.SGD()

1.3 Descenso de gradiente de mini lotes (MBGD de descenso de gradiente de mini lotes)

SGD es relativamente más rápido, pero también hay problemas.Debido a que el entrenamiento de una sola muestra puede generar mucho ruido, el SGD no siempre optimiza la dirección del resto en cada iteración, por lo que puede converger al comienzo del entrenamiento. Rápido, pero lento después de entrenar por un tiempo. Sobre esta base, se propone un método de descenso de gradiente de lotes pequeños, que selecciona aleatoriamente un lote pequeño de las muestras para entrenar cada vez, en lugar de un grupo, para garantizar tanto el efecto como la velocidad.

1.4 Método Momentum (Momento)

Aunque el algoritmo SGD de mini lotes puede brindar una buena velocidad de entrenamiento, no siempre puede alcanzar el punto óptimo cuando alcanza el punto óptimo, sino que se cierne alrededor del punto óptimo.
Otra desventaja es que el SGD de mini lotes requiere que elijamos una tasa de aprendizaje adecuada. Cuando usamos una tasa de aprendizaje pequeña, hará que la red converja demasiado lentamente durante el entrenamiento; cuando usamos una tasa de aprendizaje grande, conducirá a la rango de la función de salto de radiación optimizada durante el entrenamiento, es decir, se puede saltar el punto óptimo. Todo lo que esperamos es que la función de pérdida de la red tenga una buena velocidad de convergencia cuando la red esté optimizada y, al mismo tiempo, no oscile demasiado.

Entonces, el optimizador Momentum puede resolver los problemas que enfrentamos. Se basa principalmente en el promedio ponderado de enseñanza móvil basado en gradientes, suavizando los parámetros de la red, de modo que la oscilación del gradiente se vuelve más pequeña.

v=0.8v+0.2\Delta w\Delta wque representa el gradiente anterior

w=w-\alfa v , α es la tasa de aprendizaje

1.5 AdaGrado

El método del cilindro de AdaGrad consiste en tomar el cuadrado del gradiente de cada generación de cada parámetro y acumularlo en la raíz cuadrada, dividir la tasa de aprendizaje global por este número y utilizarlo como una actualización dinámica de la tasa de aprendizaje, a fin de lograr el efecto de la tasa de aprendizaje adaptativo

gradiente = historial\_grado + (\Delta w)^2

w=w-\frac{\alpha }{\sqrt{gradiente}+\delta }\Delta w

\deltaes una pequeña constante, establecida aproximadamente en10^{-7}

1.6 RMSProp

En el algoritmo de optimización Momentum, aunque el problema de las grandes oscilaciones en la optimización se ha resuelto inicialmente, para optimizar aún más la función de pérdida, existe un problema de oscilaciones excesivas en la actualización y para acelerar aún más la convergencia de la función, el algoritmo RMSProp utiliza ponderación cuadrática para el gradiente de los parámetros.

gradiente=0.8*historia\_grado+0.2*(\Delta w)^2

w=w-\alpha \frac{\Delta w}{\sqrt{gradiente}+\delta}\Delta w

1.7 Adán

El algoritmo Adam (Estimación de momento adaptativo) es un algoritmo que combina el algoritmo Momentum y el algoritmo RMSProp, lo que puede evitar que el gradiente oscile demasiado y, al mismo tiempo, aumentar la velocidad de convergencia.

  1. Cumulantes y cumulantes cuadrados que necesitan inicializar gradientes v_w=0,s_w=0
  2. En la t-ésima ronda de entrenamiento, primero podemos calcular la actualización de parámetros de Momentum y RMSProp v_w=0.8v+0.2\Delta w, el gradiente calculado por Momentum y  s_w=0.8*s+0.2*(\Delta w)^2 el gradiente calculado por RMSProp
  3. Después de procesar los valores en él, obtenemos:w=w-\alpha \frac{v_w}{\sqrt{s_w}+\delta }

La api en torch es: torch.optim.Adam()

Aquí hay un diagrama dinámico intuitivo para mostrar el efecto del algoritmo de optimización anterior:

  • La siguiente figura describe el rendimiento de los seis optimizadores en una superficie:

La siguiente figura compara el rendimiento del optimizador en 6 sobre una superficie con puntos de silla:

  • La siguiente figura compara el proceso de ejecución de 6 optimizadores que convergen en el punto de destino (estrella de cinco puntas)

sugerencia relacionada: 

[Conceptos básicos del aprendizaje automático] Revisión y resumen de varios algoritmos de optimización de descenso de gradiente 213580115ba2b4c581cef3ffcbfa4bfb8ad644e9d57e6513d7979fddd &scene=27 

Supongo que te gusta

Origin blog.csdn.net/WakingStone/article/details/129646973
Recomendado
Clasificación