¿Hay alguna forma de lidiar con el gradiente de desaparición para saturar las no linealidades que no involucran unidades de Normalización por lotes o ReLu?

8

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:

  1. 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θ(s) por ejemplo.
  2. 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:

  1. 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).
  2. 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.
  3. 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é).
  4. Otra idea podría ser en lugar de no tener linealidad θ(z) tenemos aθ(z) dónde aR. Sia>1, 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.
  5. 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 |a|<1 y también porque |θ(s)|<1y 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

Pinocho
fuente
+1 Esta es una pregunta interesante. Solo por curiosidad, ¿por qué no quieres usar ReLU?
Sycorax dice Reinstate Monica el
mis razones son: 1) Me parece que usar ReLu evita la cuestión de desaparecer y explotar el gradiente en lugar de abordarlo directamente. 2) si uno tenía una activación que creía que era muy buena en algunas tareas en lugar de otras, entonces, de alguna manera, nos vemos obligados a cambiar a ReLu a pesar de que podrían no ser las correctas. 3) ... (próximos comentarios)
Pinocho
3) cuando se trata con gaussianos, por ejemplo, generalizar la normalización de lotes no es trivial (¿debo normalizar por lotes la preactivación de la norma euclidiana? Si lo hago, la entrada al guassian RBF podría ser negativa, lo que lleva a una explosión de gradientes, pero ¿y si en cambio yo? normalizamos la salida de la no linealidad directamente, entonces, estamos normalizando algo que ya tenía momentos restringidos, ya que la salida de RBF y de hecho sigmoide (tanh) también están restringidos a un pequeño intervalo [0,1] o [- 1,1]) Básicamente, parece que estas dos ideas podrían llevarse más lejos, simplemente no sé cómo.
Pinocho
Aunque mis razones se basan principalmente en corazonadas, claramente, necesitamos más investigación o algo para lidiar con todos esos puntos.
Pinocho
1
Es curioso si sabes algo sobre cómo funcionan los LSTM o las redes residuales con las no linealidades saturadas. Me pregunto si solo tienden a trabajar con ReLus. En los documentos, ambos especifican que usan ReLus, pero me pregunto si eso es esencial para los métodos o simplemente algo que les dé un impulso.
testuser

Respuestas:

2

¿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!

Redcalx
fuente
¿Cómo lo hace? "así que hay formas de controlar el tamaño del paso para mantenerlo sensible y que son algo independientes del gradiente real". ¿Uno tiene que hacer esto manualmente o hay un algoritmo que funciona que hace esto?
Pinocho
Hay varios métodos (y variantes) discutidos en los enlaces, pero todos proporcionan un método para calcular una actualización de peso que no es el producto de un gradiente y una tasa de aprendizaje.
Redcalx
1

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 ( -infy inf), 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 0 N(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 softplus log(1+ex), que está muy cerca de ReLU, y se usó en el documento de Geoffrey Hinton para explicar por qué ReLU funcionaría.

ingrese la descripción de la imagen aquí

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.

dontloo
fuente