¿Hay alguna diferencia en la regularización en MLP entre actualizaciones por lotes e individuales?

9

Acabo de aprender acerca de la regularización como un enfoque para controlar el sobreajuste, y me gustaría incorporar la idea en una implementación simple de retropropagación y perceptrón multicapa (MLP) que armé.

Actualmente para evitar un ajuste excesivo, valido cruzado y mantengo la red con la mejor puntuación hasta ahora en el conjunto de validación. Esto funciona bien, pero agregar regularización me beneficiaría en esa elección correcta del algoritmo y parámetro de regularización que haría que mi red converja en un modelo no sobreajustado de manera más sistemática.

La fórmula que tengo para el término de actualización (del curso Coursera ML) se establece como una actualización por lotes, por ejemplo, para cada peso, después de sumar todos los deltas aplicables para todo el conjunto de entrenamiento a partir de la propagación de errores, lambda * current_weightse agrega un ajuste de antes de la combinación delta se resta al final del lote, donde lambdaestá el parámetro de regularización.

Mi implementación de retropropagación utiliza actualizaciones de peso por artículo. Me preocupa que no pueda simplemente copiar el enfoque por lotes, aunque me parece bien intuitivamente. ¿Un término de regularización más pequeño por elemento funciona igual de bien?

Por ejemplo, lambda * current_weight / Ndonde N es el tamaño del conjunto de entrenamiento, a primera vista esto parece razonable. Sin embargo, no pude encontrar nada sobre el tema, y ​​me pregunto si eso se debe a que la regularización no funciona tan bien con una actualización por elemento, o incluso tiene un nombre diferente o una fórmula alterada.

Neil Slater
fuente

Respuestas:

2

La regularización también es relevante en el aprendizaje por ítem. Sugeriría comenzar con un enfoque de validación básico para descubrir lambda, ya sea que esté aprendiendo por lotes o por artículo. Este es el enfoque más fácil y seguro. Intente manualmente con varios valores diferentes. por ejemplo 0.001. 0.003, 0.01, 0.03, 0.1 etc. y vea cómo se comporta su conjunto de validación. Más adelante, puede automatizar este proceso introduciendo un método de búsqueda lineal o local.

Como nota al margen, creo que el valor de lambda debe considerarse en relación con las actualizaciones del vector de parámetros, en lugar del tamaño del conjunto de entrenamiento. Para el entrenamiento por lotes, tiene una actualización de parámetros por pase de conjunto de datos , mientras que para una actualización en línea por muestra (independientemente del tamaño del conjunto de entrenamiento).

Recientemente me topé con esta pregunta cruzada , que parece bastante similar a la tuya. Hay un enlace a un documento sobre un nuevo algoritmo SGD , con algún contenido relevante. Puede ser útil echar un vistazo (especialmente las páginas 1742-1743).

insys
fuente
Sí, todavía tengo la intención de hacer una validación cruzada para verificar si hay un ajuste excesivo, mi pregunta es más básica que eso: no puedo encontrar ninguna referencia al uso de la regularización con un ajuste de peso por artículo en MLP, y me preocupa que haya un buen razón para eso, por ejemplo, no funciona en ese modo de aprendizaje, o necesita un ajuste. Sin embargo, la pregunta validada cruzada es muy similar y me da más confianza, gracias. La página del algoritmo SGD parece tener un método estocástico diferente para introducir la regularización, que podría ser un poco avanzado para mí, pero es exactamente lo que estoy buscando.
Neil Slater
La regularización también es relevante en el aprendizaje por ítem. Todavía sugeriría comenzar con un enfoque básico de validación para descubrir lambda. Este es el enfoque más fácil y seguro. Intente manualmente con varios valores diferentes. por ejemplo 0.001. 0.003, 0.01, 0.03, 0.1 etc. y vea cómo se comporta su conjunto de validación. Más adelante, puede automatizar este proceso introduciendo un método de búsqueda lineal o local.
insys
Si su comentario anterior fue editado y reemplazó la primera oración / pregunta en su respuesta, entonces creo que podría aceptarlo.
Neil Slater
Gracias por señalar, estoy de acuerdo. Editado en. Espero que sea más claro.
insys
2

Para complementar lo que dijo insys :

La regularización se usa cuando se calcula la propagación hacia atrás para todos los pesos en su MLP. Por lo tanto, en lugar de calcular el gradiente con respecto a toda la entrada del conjunto de entrenamiento ( batch), solo usa algunos / un elemento (s) ( stochastic or semi-stochastic). Terminará limitando el resultado de la actualización con respecto a un elemento en lugar de todo lo que también es correcto.

Además, si no recuerdo mal, Andrew NG lo usó L2-regularization. El /Nen lambda * current_weight / Nque no es obligatorio, sólo ayuda a cambiar la escala de la entrada. Sin embargo, si elige no usarlo, deberá (en la mayoría de los casos) seleccionar otro valor para lambda.

También puede usar el algoritmo de búsqueda de cuadrícula para elegir el mejor valor para lambda(el hiperparámetro => el que tiene que elegir).

Orelus
fuente