28 votos

¿Cuál es el efecto de escalar una función de pérdida en el aprendizaje profundo?

Entreno una red en un problema en el que las magnitudes de mi función de pérdida son bastante pequeñas. Observé que la red no se entrenaba realmente bien hasta que empecé a escalar la función de pérdida, por ejemplo multiplicando por 1e5. Mi función de pérdida es el coste cuadrático.

Mi intuición es que esto ayudó, ya que las mayores magnitudes de error se propagan hacia atrás a través de la red y básicamente combate la desaparición del gradiente en las primeras capas de la red. Eliminar la escala y aumentar la tasa de aprendizaje no ayudó, sino que hizo que la red divergiera.

¿Alguna idea de por qué esto ayudó? ¿O este comportamiento indica errores en mi implementación?

30voto

Jeremy Taffel Puntos 16

Respuesta corta:

Depende del optimizador y del término de regularización:

  • Sin regularización, utilizando el optimizador SGD: pérdida de escala por $\alpha$ equivale a escalar la tasa de aprendizaje de SGD en $\alpha$ .

  • Sin regularización, utilizando Nadam: pérdida de escala por $\alpha$ no tiene ningún efecto.

  • Con regularización, utilizando el optimizador SGD o Nadam: cambiar la escala de la pérdida de predicción afectará al equilibrio entre la pérdida de predicción y la regularización.


Respuesta completa:

  • Sin regularización + SGD : Suponiendo que la pérdida total consista en una pérdida de predicción (por ejemplo, el error cuadrático medio) y ninguna pérdida de regularización (como el decaimiento del peso L2), entonces escalando el valor de salida de la función de pérdida por $\alpha$ equivaldría a escalar la tasa de aprendizaje ( $\eta$ ) por $\alpha$ al utilizar SGD: $$L_{\text{new}} = \alpha L_{\text{old}}\\ \Rightarrow \nabla_{W_{t}}L_{\text{new}} = \alpha\nabla_{W_{t}}L_{\text{old}}\\ W_{t+1} = W_{t} - \eta \nabla_{W_{t}}L_{\text{new}}\\ = W_{t} - \eta \alpha\nabla_{W_{t}}L_{\text{old}}\\ = W_{t} - \eta'\nabla_{W_{t}}L_{\text{old}} \quad \text{where } \eta'=\eta\alpha$$

  • Sin regularización + Nadam : Usando Nadam, suponiendo que no tiene un término de regularización No creo que haya ninguna diferencia en el procedimiento de entrenamiento si simplemente se multiplica el resultado de las pérdidas por $\alpha$ durante toda la formación. En este caso, en la regla de actualización, $\hat{m_t}$ se multiplicará por $\alpha$ et $\hat{n_t}$ se multiplicará por $\alpha^2$ haciendo que las escalas se anulen entre sí: $$ W_{t+1} = W_{t} - \frac{\eta} {\sqrt{\hat{n_t}+\epsilon}}\hat{m_t} $$

  • Con regularización : Este es probablemente el caso al que se enfrenta. Si tiene un término de regularización explícito como el decaimiento del peso L2 en su pérdida, entonces escalar la salida de su pérdida de predicción cambia el equilibrio entre su pérdida de predicción y la pérdida de regularización: $$L_\text{old} = \text{MSE} + \lambda*\text{weight_decay}\\ L_\text{new} = \alpha\text{MSE} + \lambda*\text{weight_decay}\\ = \alpha\left(\text{MSE} + \frac{\lambda}{\alpha}*\text{weight_decay}\right)$$

  • Utilizar SGD sería equivalente a utilizar $\alpha\eta$ como su nuevo ritmo de aprendizaje en lugar de $\eta$ y utilizando $\frac{\lambda}{\alpha}$ como su nueva escala de regularización L2.

  • Uso de Nadam El $\alpha$ escala en la parte posterior no tendría ningún efecto, y al final sólo terminas con $\frac{\lambda}{\alpha}$ como su nueva escala de regularización L2.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X