Quería entrenar una red con no linealidades que sufren el desvanecimiento (o el problema de gradiente explosivo, aunque principalmente se desvanecen). Sé que la forma estándar (actual) es usar la normalización por lotes 1 [BN] 1 o simplemente abandonar la no linealidad y usar las unidades ReLu Rectifier / ReLu .
Quería dos cosas:
- Seguir con mi no linealidad, por lo que no quiero abandonarlo y usar ReLu (es decir, ¡no se permite ReLu!). Volver a parametrizar la no linealidad está bien, por ejemplo, poner un multiplicativo al frente como en por ejemplo.
- Idealmente, no quería confiar demasiado en la normalización de lotes (o al menos si se usa, debe usarse de una manera novedosa que no sea cómo se usó en el documento original o generalizar a muchas no linealidades). Una de las razones por las que quería evitar Batch Normalize es porque parece que solo funciona para no linealidades específicas. Por ejemplo, para los sigmoides, pero no está claro cómo funcionarían para otras no linealidades, dicen los gaussianos.
La razón por la que tengo estas restricciones es porque me gustaría abordar el problema de la desaparición del gradiente o la explosión de gradientes contando el problema directamente en lugar de piratear una solución que funciona solo para no linealidades específicas o simplemente evitar el problema empujando un ReLu.
Me preguntaba, con esas dos restricciones, ¿cuáles son formas alternativas de lidiar con el problema del gradiente que desaparece? (otra no linealidad en consideración sería el núcleo gaussiano RBF con preactivación de la norma euclidiana, sigmoide, tanh, etc.)
Las posibles ideas (vagas) que tenía en mente serían:
- Tenga una buena inicialización para que las no linealidades de saturación no comiencen ya saturadas (las no linealidades saturadas resultan en gradientes cercanos a cero).
- Para RBF, de manera similar, un buen inicio puede ser importante porque los gaussianos en su mayoría tienen un gran valor cercano a 0 (es decir, cuando los filtros son similares a su activación o datos). Por lo tanto, tenerlos demasiado grandes o demasiado pequeños tiene problemas de gradiente de fuga similares.
- Realmente no sé si esto es demasiado restrictivo, pero sería bueno si hubiera una forma diferente de utilizar la normalización por lotes que no sea su sugerencia tradicional en el documento original (o tal vez alguna idea de BN que se generalice a un conjunto más grande de linealidades, actualmente parece que la mayor parte de la investigación es para mostrar que funciona para sigmoides hasta donde yo sé).
- Otra idea podría ser en lugar de no tener linealidad tenemos dónde . Si, entonces significa que las no linealidades no se multiplican hacia atrás varias veces para cada capa, a fin de evitar "desaparecer" para las capas anteriores. Puede hacer que la regla de aprendizaje sea inestable, por lo que tal vez algún regularizador sea una buena idea.
- Un optimizador que trata intrínsecamente con el gradiente de fuga (o al menos actualiza cada parámetro de manera diferente). Por ejemplo, si es una capa más cercana a la entrada, entonces el paso de aprendizaje debería ser mayor. Sería bueno para el algoritmo de aprendizaje tener esto en cuenta por sí solo para lidiar con el gradiente de fuga.
¡Si hay alguna sugerencia sobre cómo lidiar con el gradiente de fuga que no sea la norma de lote o ReLu's, me encantaría saber de ellos!
Parece que el gradiente de fuga ocurre principalmente porque las no linealidades tienen la propiedad de que y también porque y después de multiplicarlo muchas veces, explota o desaparece. Decir explícitamente el problema podría ayudar a resolverlo. El problema es que hace que las capas inferiores no se actualicen o dificulta la señal a través de la red. Sería bueno mantener esta señal fluyendo a través de la red, durante el paso hacia adelante y hacia atrás (y también durante el entrenamiento, no solo en la inicialización).
1 : Ioffe S. y Szegedy C. (2015),
"Normalización por lotes: acelerar la capacitación en redes profundas mediante la reducción del cambio covariable interno",
Actas de la 32ª Conferencia Internacional sobre Aprendizaje Automático , Lille, Francia, 2015.
Journal of Machine Learning Research: W&CP volumen 37