Diferencia entre el deterioro del peso neto neural y la tasa de aprendizaje

94

En el contexto de las redes neuronales, ¿cuál es la diferencia entre la tasa de aprendizaje y la pérdida de peso?

Ryan Zotti
fuente

Respuestas:

161

La tasa de aprendizaje es un parámetro que determina cuánto influye un paso de actualización en el valor actual de los pesos. Si bien la disminución de peso es un término adicional en la regla de actualización de peso que hace que los pesos disminuyan exponencialmente a cero, si no se programa ninguna otra actualización.

Entonces, supongamos que tenemos una función de costo o error que queremos minimizar. El descenso de gradiente nos dice que modifiquemos los pesos en la dirección del descenso más pronunciado en : donde es la tasa de aprendizaje, y si es grande, tendrá una modificación correspondientemente grande de los pesos (en general, no debería ser demasiado grande, de lo contrario, excederá el mínimo local en su función de costo).E(w)wE

wiwiηEwi,
ηwi

Para limitar efectivamente el número de parámetros libres en su modelo a fin de evitar un ajuste excesivo, es posible regularizar la función de costo. Una manera fácil de hacerlo es mediante la introducción de un previo gaussiano medio cero sobre los pesos, que es equivalente a cambiar la función de costo a . En la práctica, esto penaliza grandes pesos y limita efectivamente la libertad en su modelo. El parámetro de regularización determina cómo se intercambia el costo original con la penalización de pesos grandes.E~(w)=E(w)+λ2w2λE

Aplicando el descenso de gradiente a esta nueva función de costo obtenemos: El nuevo término proveniente de la regularización hace que el peso decaiga en proporción a su tamaño.

wiwiηEwiηλwi.
ηλwi
mrig
fuente
2
Gracias por la útil explicación. Una pregunta: en el paquete "nnet" R hay un parámetro utilizado en el entrenamiento de la red neuronal llamado "decaimiento". ¿Sabes si la descomposición corresponde a tu lambda o a tu eta * lambda?
Andrea Ianni ௫
3
También agregaría que la pérdida de peso es lo mismo que la regularización L2 para aquellos que están familiarizados con esto último.
Sergei
2
@Sergei, por favor no, ¡deja de difundir esta información errónea! Esto solo es cierto en el caso muy especial de la vainilla SGD. Vea el decaimiento del peso de fijación para el papel de Adam .
LucasB
Para aclarar: al momento de escribir, los documentos de PyTorch para Adam usan el término " pérdida de peso" (entre paréntesis "penalización L2") para referirse a lo que creo que esos autores llaman regulación L2. Si entiendo correctamente, esta respuesta se refiere a SGD sin impulso, donde los dos son equivalentes.
Dylan F
14

Además de la respuesta de @ mrig (+1), para muchas aplicaciones prácticas de redes neuronales, es mejor usar un algoritmo de optimización más avanzado, como Levenberg-Marquardt (redes pequeñas y medianas) o el descenso de gradiente conjugado a escala (medio-grande redes), ya que serán mucho más rápidos y no hay necesidad de establecer la velocidad de aprendizaje (ambos algoritmos esencialmente adaptan la velocidad de aprendizaje utilizando la curvatura y el gradiente). Cualquier paquete o biblioteca de red neuronal decente tendrá implementaciones de uno de estos métodos, cualquier paquete que no lo haga probablemente sea obsoleto. Utilizo la biblioteca NETLAB para MATLAB, que es un gran kit.

Dikran Marsupial
fuente
¿Qué pasa con los algos de optimización basados ​​en Rprop? ¿Cómo se apilan?
poder
44
Creo que la mayoría de la gente está usando variantes de impulso rprop + como RMSProp, adagrad, SGD + nesterov momentum. Ver clase cs231 .
facuq
1
Bueno, por supuesto, depende de tu aplicación. Pero para grandes conjuntos de datos / redes que están un poco de moda en este momento, creo que la gente está encontrando esos algoritmos que mencioné que son más adecuados.
facuq
66
@DikranMarsupial podría ser porque hoy en día (casi cinco años después de su respuesta) la gente tiende a usar a Adam.
ComputerScientist
2
De hecho, esta respuesta está muy desactualizada. Estos algoritmos no son prácticos con la escala de modelos y conjuntos de datos que son típicos hoy en día, y los paquetes más utilizados, que ciertamente no son obsoletos, carecen de estos algoritmos.
LucasB