¿Cómo resuelve la función de activación rectilínea el problema del gradiente de fuga en las redes neuronales?

40

Encontré la unidad lineal rectificada (ReLU) elogiada en varios lugares como una solución al problema del gradiente de fuga para las redes neuronales. Es decir, uno usa max (0, x) como función de activación. Cuando la activación es positiva, es obvio que es mejor que, digamos, la función de activación sigmoidea, ya que su derivación es siempre 1 en lugar de un valor arbitrariamente pequeño para x grande. Por otro lado, la derivación es exactamente 0 cuando x es menor que 0. En el peor de los casos, cuando una unidad nunca se activa, los pesos de esta unidad tampoco cambiarían nunca más, y la unidad sería para siempre inútil, lo que parece mucho peor que incluso gradientes muy pequeños. ¿Cómo manejan los algoritmos de aprendizaje ese problema cuando usan ReLU?

Hans-Peter Störr
fuente
2
Lo que usted describe como el peor de los casos se llama un ReLU moribundo
Martin Thoma
Creo que la idea es que para una función logística, dado que el gradiente puede volverse arbitrariamente pequeño, puede obtener un gradiente numérico que desaparece al componer varias logísticas "insignificantes" (el problema empeoraría para arquitecturas más profundas). Para la función de rampa, como el gradiente es constante por partes, un gradiente compuesto de fuga solo puede ocurrir si hay un componente que es realmente 0.
GeoMatt22
(¿No estoy seguro si esto es "para siempre"? ¿No podría volverse distinto de cero después de más entrenamiento? ¿De dependencias en otros nodos y / o el mini lote de datos actual? (Para el descenso de gradiente estocástico)
GeoMatt22

Respuestas:

33

Aquí hay un documento que explica el problema. Cito alguna parte para aclarar el problema.

La función de activación del rectificador permite que una red obtenga fácilmente representaciones dispersas. Por ejemplo, después de la inicialización uniforme de los pesos, alrededor del 50% de los valores de salida continua de las unidades ocultas son ceros reales, y esta fracción puede aumentar fácilmente con la regularización que induce la dispersión.

Por lo tanto, la función de activación del rectificador introduce un efecto de dispersión en la red. Aquí hay algunas ventajas de la escasez del mismo artículo;

  • Desenredamiento de la información . Uno de los objetivos declarados de los algoritmos de aprendizaje profundo (Bengio, 2009) es desenredar los factores que explican las variaciones en los datos. Una representación densa está muy enredada porque casi cualquier cambio en la entrada modifica la mayoría de las entradas en el vector de representación. En cambio, si una representación es escasa y robusta a pequeños cambios de entrada, el conjunto de características distintas de cero casi siempre se conserva aproximadamente con pequeños cambios de la entrada.

  • Representación eficiente de tamaño variable . Las diferentes entradas pueden contener diferentes cantidades de información y se representarían más convenientemente utilizando una estructura de datos de tamaño variable, que es común en las representaciones informáticas de información. Variar el número de neuronas activas permite que un modelo controle la dimensionalidad efectiva de la representación para una entrada dada y la precisión requerida.

  • Separación lineal . Las representaciones dispersas también tienen mayor probabilidad de ser linealmente separables, o más fácilmente separables con menos maquinaria no lineal, simplemente porque la información se representa en un espacio de alta dimensión. Además, esto puede reflejar el formato de datos original. En las aplicaciones relacionadas con el texto, por ejemplo, los datos sin procesar originales ya son muy escasos.

  • Distribuido pero escaso . Las representaciones distribuidas densas son las representaciones más ricas, siendo potencialmente exponencialmente más eficientes que las puramente locales (Bengio, 2009). La eficiencia de las representaciones dispersas sigue siendo exponencialmente mayor, con el poder del exponente como el número de características distintas de cero. Pueden representar una buena compensación con respecto a los criterios anteriores.

También responde la pregunta que has hecho:

softplus(x)=log(1+ex)(Dugas et al., 2001), una versión suave de la no linealidad rectificadora. Perdemos la escasez exacta, pero esperamos obtener un entrenamiento más fácil. Sin embargo, los resultados experimentales tienden a contradecir esa hipótesis, lo que sugiere que los ceros duros en realidad pueden ayudar al entrenamiento supervisado. Presumimos que las no linealidades duras no duelen siempre que el gradiente pueda propagarse a lo largo de algunos caminos, es decir, que algunas de las unidades ocultas en cada capa no sean cero Con el crédito y la culpa asignados a estas unidades ON en lugar de distribuidas más uniformemente, planteamos la hipótesis de que la optimización es más fácil.

Puedes leer el periódico para más detalles.

yasin.yazici
fuente
18

Esta es la razón por la que probablemente sea una mejor idea usar PReLU, ELU u otras activaciones similares a ReLU con fugas que no solo mueren a 0, sino que caen a algo así como 0.1 * x cuando x se vuelve negativo para seguir aprendiendo. Durante mucho tiempo me pareció que las ReLU son historia como sigmoideas, aunque por alguna razón la gente todavía publica artículos con estas. ¿Por qué? No lo sé.

Dmytro Mishkin y otros muchachos realmente probaron una red con muchos tipos de activación diferentes, debería ver sus hallazgos sobre el rendimiento de diferentes funciones de activación y otras cosas. Sin embargo, algunas funciones, como XOR, se aprenden mejor con ReLU simple. No pienses en cosas neuronales en términos de dogma, porque las redes neuronales son mucho trabajo en progreso. Nadie en el mundo realmente los conoce y entiende lo suficiente como para decir la verdad divina. Nadie. Pruebe cosas, haga sus propios descubrimientos. Tenga en cuenta que el uso de ReLU en sí es un desarrollo muy reciente y durante décadas todos los diferentes doctores en el campo han utilizado funciones de activación demasiado complicadas de las que ahora solo podemos reír. Demasiado a menudo "saber" demasiado puede obtener malos resultados. Es importante comprender que las redes neuronales no son una ciencia exacta. Nada en matemáticas dice que las redes neuronales realmente funcionen tan bien como lo hacen. Es heurístico Y entonces es muy maleable.

Para su información, incluso la activación de valor absoluto obtiene buenos resultados en algunos problemas, por ejemplo, problemas de tipo XOR. Las diferentes funciones de activación se adaptan mejor a diferentes propósitos. Intenté Cifar-10 con abs () y parecía funcionar peor. Sin embargo, no puedo decir que "es una peor función de activación para el reconocimiento visual", porque no estoy seguro, por ejemplo, si mi preinicialización fue óptima, etc. El hecho de que estaba aprendiendo relativamente bien me sorprendió

Además, en la vida real, los "derivados" que pasa al backprop no necesariamente tienen que coincidir con los derivados matemáticos reales.

Incluso iría tan lejos como para decir que deberíamos prohibir llamarlos "derivados" y comenzar a llamarlos de otra manera, por ejemplo, error activation functionsno cerrar nuestras mentes a las posibilidades de jugar con ellos. En realidad, puede, por ejemplo, usar la activación ReLU, pero proporcionar un 0.1, o algo así en lugar de 0 como derivado para x <0. En cierto modo, entonces tienes un ReLU simple, pero las neuronas no pueden "morir por adaptabilidad". Yo llamo a esto NecroRelu, porque es un ReLU que no puede morir. Y en algunos casos (definitivamente no en la mayoría), eso funciona mejor que LeakyReLU simple, que en realidad tiene 0.1 derivada en x <0 y ReLU mejor de lo habitual. Sin embargo, no creo que muchos otros hayan investigado dicha función, esto o algo similar podría ser una función de activación generalmente genial que nadie consideró solo porque están demasiado concentrados en las matemáticas.

En cuanto a lo que generalmente se usa, para la función de activación de tanH (x) es habitual pasar 1 - x² en lugar de 1 - tanH (x) ² como derivada para calcular las cosas más rápido.

Además, tenga en cuenta que ReLU no es tan "obviamente mejor" que, por ejemplo, TanH. TanH probablemente puede ser mejor en algunos casos. Simplemente, por lo que parece, no en reconocimiento visual. Sin embargo, ELU, por ejemplo, tiene un poco de suavidad sigmoidea y es una de las funciones de activación más conocidas para el reconocimiento visual en este momento. Realmente no lo he intentado, pero apuesto a que uno puede configurar varios grupos con diferentes funciones de activación en el mismo nivel de capa para una ventaja. Porque, una lógica diferente se describe mejor con diferentes funciones de activación. Y a veces probablemente necesite varios tipos de evaluación.

Tenga en cuenta que es importante tener una inicialización que corresponda al tipo de su función de activación. Las ReLU con fugas necesitan otro init que las ReLU simples, por ejemplo.

EDITAR: En realidad, el ReLU estándar parece menos propenso al sobreajuste frente a los que tienen fugas con arquitecturas modernas. Al menos en reconocimiento de imágenes. Parece que si está buscando una red de muy alta precisión con una gran carga de parámetros, podría ser mejor quedarse con opciones simples de ReLU frente a fugas. Pero, por supuesto, prueba todo esto por ti mismo. Tal vez, algunas cosas con fugas funcionarán mejor si se da más regularización.

Íhor Mé
fuente
Estoy interesado en su NecroReLU, pero no puedo obtener de lo que escribió cómo es diferente de LeakyReLU. ¿Podrías aclarar?
Tom Hale
Diferente en que la activación es ReLU, pero la derivada es LReLU
Íhor Mé
@ ÍhorMé, como mencionó sobre el initialization that corresponds to a type of activation function one is usingen un NOTEen su publicación, ¿podría proporcionar sus sugerencias para esto en las mismas líneas? No estoy completamente convencido de que el uso de activaciones ReLu sobre sigmoid / tanH sea una solución para el problema de gradiente de fuga / explosión. .
Anu
16

Aquí hay una explicación heurística:

  • Cada actualización de gradiente en backprop consta de varios factores multiplicados.
  • Cuanto más avance hacia el inicio de la red, más de estos factores se multiplicarán para obtener la actualización del gradiente.
  • Muchos de estos factores son derivados de la función de activación de las neuronas; el resto son pesos, sesgos, etc.
  • De estos factores, los que importan intuitivamente son los pesos, los sesgos, etc. Las derivadas de la función de activación son más bien un tipo de parámetro de ajuste, diseñado para hacer que el descenso del gradiente vaya en la dirección correcta a la velocidad correcta.
  • Si multiplica un montón de términos que son menores que 1, tenderán a cero cuantos más términos tenga. Por lo tanto, desaparece el gradiente a medida que se aleja de la capa de salida si tiene funciones de activación que tienen una pendiente <1.
  • Si multiplica varios términos que son mayores que 1, tenderán hacia el infinito cuanto más tenga, por lo tanto, explotará el gradiente a medida que se aleje de la capa de salida si tiene funciones de activación que tienen una pendiente> 1.
  • ¿Qué tal si pudiéramos, de alguna manera, mágicamente, obtener estos términos aportados por la derivada de las funciones de activación para ser 1. Esto intuitivamente significa que todas las contribuciones a las actualizaciones de gradiente provienen de la entrada al problema y el modelo - los pesos, entradas, sesgos, en lugar de algún artefacto de la función de activación elegida.
  • RELU tiene gradiente 1 cuando la salida> 0, y cero en caso contrario.
  • Por lo tanto, multiplicar un conjunto de derivados RELU en las ecuaciones de backprop tiene la buena propiedad de ser 1 o cero: la actualización no es nada o toma contribuciones enteramente de los otros pesos y sesgos.

Puede pensar que sería mejor tener una función lineal, en lugar de aplanar cuando x <0. La idea aquí es que RELU genera redes dispersas con un número relativamente pequeño de enlaces útiles, que tiene más plausibilidad biológica, por lo que la pérdida de Un montón de pesas es realmente útil. Además, la simulación de funciones interesantes con redes neuronales solo es posible con cierta no linealidad en la función de activación. Una función de activación lineal da como resultado una salida lineal, que no es muy interesante en absoluto.

Tom Walker
fuente
gran explicación, ¿podría elaborar más sobre el sexto punto? Además, ¿podría dar sus sugerencias para esto en las mismas líneas? No estoy completamente convencido de que el uso de activaciones ReLu sobre sigmoid / tanH sea una solución para el problema de gradiente de fuga / explosión.
Anu
1
La inicialización del peso sensible también es importante; pero también lo es la elección de la función de activación. Como ejemplo trivial, si todos sus pesos están predeterminados en cero y usa RELU, entonces todas las salidas de sus neuronas serán cero y permanecerán en cero ... Ni RELU solo ni las técnicas de inicialización resuelven completamente el gradiente de desaparición / explosión, pero ambos ayudan. No estoy seguro de lo que quieres decir con la reelaboración en el punto 6, ¿qué no está claro?
Tom Walker
1

Consideremos la relación de recurrencia principal que define la propagación hacia atrás de la señal de error.

Wibiif

hii

si=Wi(hi1)+bi

hi=f(si)

δi

δi=Wi+1(δi+1f(si))

ff(si)=(1hi2)hi

f=Relu=max(0,x)ff=numpy.where(hi>0,1,0)

Esta ecuación también demuestra el otro problema característico de la activación relu: las neuronas muertas: si una neurona dada se inicializa de una manera que no dispara ninguna entrada (su activación es cero), su gradiente también sería cero, y por lo tanto, nunca se activaría.

usuario1767774
fuente