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
Respuestas:
¿Has mirado en RMSProp? Eche un vistazo a este conjunto de diapositivas de Geoff Hinton:
Descripción general del descenso de gradiente de mini lotes
Específicamente la página 29, titulada 'rmsprop: una versión mini-batch de rprop', aunque probablemente valga la pena leer el conjunto completo para tener una idea más completa de algunas de las ideas relacionadas.
También se relacionan las tasas de aprendizaje de No Le molestan de Yan Le Cun
y SMORMS3 de Brandyn Webb .
La idea principal es mirar el signo de gradiente y si es flip-flop o no; si es coherente, entonces desea moverse en esa dirección, y si el letrero no gira, cualquier paso que haya dado debe estar bien, siempre que no sea muy pequeño, por lo que hay formas de controlar el tamaño del paso para mantenerlo sensible y que son algo independientes del gradiente real.
Entonces, la respuesta breve sobre cómo manejar gradientes que desaparecen o explotan es simplemente: ¡no use la magnitud del gradiente!
fuente
Algunos de mis entendimientos pueden no ser correctos.
La causa del problema del gradiente de fuga es que
sigmoid
tanh
(y RBF) se saturan en ambos lados (-inf
yinf
), por lo que es muy probable que la entrada de dicha no linealidad caiga en las regiones saturadas.El efecto de BN es que "tira" la entrada de la no linealidad hacia un pequeño rango alrededor de 0N(0,1) como punto de partida, donde tales no linealidades no se saturan. Así que supongo que también funcionará con RBF.
Para eliminar la no linealidad de ReLU, podemos usar la función softpluslog(1+ex) , que está muy cerca de ReLU, y se usó en el documento de Geoffrey Hinton para explicar por qué ReLU funcionaría.
Además, las redes residuales o las redes de carreteras proporcionan otra forma de abordar los gradientes que desaparecen (a través de accesos directos). Desde mi experiencia, dicha arquitectura se entrena mucho más rápido que solo conectar la pérdida a la última capa.
Además, la dificultad de entrenar redes profundas no se debe únicamente al gradiente de fuga , sino también a otros factores (por ejemplo, el cambio covariable interno). Hay una reciente normalización de la capa de papel sobre otra forma de normalización, sin embargo, no dice sobre la desaparición de los gradientes, pero tal vez te interese.
fuente