53 votos

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

Encontré la unidad lineal rectificada (ReLU) elogiada en varios lugares como solución al problema del gradiente de fuga para las redes neuronales. Es decir, se utiliza max(0,x) como función de activación. Cuando la activación es positiva, es obvio que esto es mejor que, por ejemplo, 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 no se activa nunca, los pesos para esta unidad tampoco cambiarían nunca más, y la unidad sería para siempre inútil - lo que parece mucho peor que incluso los gradientes desvanecidos. ¿Cómo resuelven los algoritmos de aprendizaje este problema cuando utilizan ReLU?

40voto

ang mo Puntos 183

Aquí está un papel que explica la cuestión. Cito una parte para que quede clara la cuestión.

La función de activación del rectificador permite que una red obtenga fácilmente representaciones dispersas. Por ejemplo, tras una 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 a la dispersión. de regularización.

Así, la función de activación del rectificador introduce un efecto de dispersión en la red. He aquí algunas ventajas de la dispersión extraídas del mismo artículo;

  • Desenredar la información . Uno de los objetivos reivindicados de los algoritmos de aprendizaje profundo (Bengio,2009) es desentrañar los factores que explican las variaciones de los datos. Una representación densa está altamente enmarañada porque casi cualquier cambio en la entrada modifica la mayoría de las entradas del vector de representación. En cambio, si una representación es a la vez escasa y robusta a los pequeños cambios de entrada, el conjunto de características no nulas se conserva casi siempre a grandes rasgos por pequeños cambios de la entrada.

  • Representación eficiente de tamaño variable . Diferentes entradas pueden contener diferentes cantidades de información y sería más conveniente representarse convenientemente utilizando una estructura de datos de tamaño variable, lo que es habitual en las representaciones informáticas de la información. Variar el número de número de neuronas activas permite a un modelo controlar la dimensionalidad la dimensionalidad efectiva de la representación para una entrada dada y la precisión requerida.

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

  • Distribuido pero escaso . Las representaciones distribuidas densas son las más ricas, siendo potencialmente más eficiente que las puramente locales (Bengio, 2009). La eficiencia de las representaciones dispersas de La eficiencia de las representaciones dispersas es aún exponencialmente mayor, siendo la potencia del exponente es el número de características distintas de cero. Pueden representar un buen equilibrio con respecto a los criterios anteriores.

También responde a la pregunta que has formulado:

Se puede plantear la hipótesis de que la saturación dura a 0 puede perjudicar la optimización al bloquear la retropropagación del gradiente. Para evaluar la impacto potencial de este efecto también investigamos la activación de softplus activación: $ \text{softplus}(x) = \log(1 + e^x) $ (Dugas et al., 2001), una versión suave de la no linealidad rectificadora. Perdemos la exactitud de la pero podemos esperar obtener un entrenamiento más fácil. Sin embargo, los resultados experimentales Sin embargo, los resultados experimentales tienden a contradecir esa hipótesis, sugiriendo que los ceros duros pueden en realidad ayudar al entrenamiento supervisado. Nuestra hipótesis es que las no linealidades duras no linealidades duras no perjudican mientras el gradiente pueda propagarse por algunos caminos, es decir, que algunas de las unidades ocultas de cada capa sean distintas de cero. Con el crédito y la culpa asignados a estas unidades ON en lugar de distribuirlas de forma más uniforme, nuestra hipótesis es que la optimización es más fácil.

Puede leer el documento Redes neuronales profundas con rectificador disperso para más detalles.

21voto

user134936 Puntos 11

He aquí una explicación heurística:

  • Cada actualización del gradiente en el backprop consiste en un número de factores multiplicados.
  • Cuanto más se acerque al inicio de la red, más se multiplican estos factores 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 intuitivamente importan son los pesos, los sesgos, etc. Las derivadas de la función de activación son más bien una especie de parámetro de ajuste, diseñado para que el descenso del gradiente vaya en la dirección correcta a la velocidad adecuada.
  • Si multiplicas un grupo de términos que son menores que 1, tenderán a cero cuantos más términos tengas. De ahí la desaparición del gradiente a medida que se avanza en la capa de salida si se tienen funciones de activación que tienen una pendiente < 1.
  • Si multiplicas un montón de términos que son mayores que 1, tenderán hacia el infinito cuantos más tengas, de ahí la explosión del gradiente a medida que te alejas de la capa de salida si tienes funciones de activación que tienen una pendiente > 1.
  • Qué tal si pudiéramos, de alguna manera, mágicamente, conseguir que estos términos aportados por la derivada de las funciones de activación fueran 1. Esto significa intuitivamente que todas las contribuciones a las actualizaciones del gradiente provienen de la entrada al problema y al modelo -los pesos, las entradas, los 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, la multiplicación de un grupo de derivados de RELU en las ecuaciones de retropropulsión tiene la agradable propiedad de ser 1 o cero - la actualización es nada, o toma las contribuciones por completo de los otros pesos y sesgos.

Se podría 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, lo que tiene más plausibilidad biológica, por lo que la pérdida de un montón de pesos es realmente útil. Además, la simulación de funciones interesantes con redes neuronales sólo 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 nada interesante.

20voto

Dejan Marjanovic Puntos 146

Por eso, probablemente sea mejor utilizar PReLU, ELU u otras activaciones tipo ReLU con fugas, que no sólo mueren a 0, sino que caen a algo como 0,1*x cuando x se vuelve negativo para seguir aprendiendo. Durante mucho tiempo me ha parecido que las ReLU son historia como la sigmoide, aunque por alguna razón la gente sigue publicando artículos con ellas. ¿Por qué? No lo sé.

Dmytro Mishkin y otros chicos realmente probaron una red con un montón de diferentes tipos de activación, usted debe mirar en sus conclusiones 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 ninguna cosa neuronal en términos de dogma, porque las redes neuronales son un trabajo en progreso. Nadie en el mundo las conoce y entiende lo suficientemente bien como para decir la verdad divina. Nadie. Prueba las cosas, haz tus propios descubrimientos. Ten en cuenta que el uso de ReLU en sí es un desarrollo muy reciente y que durante décadas todos los diferentes doctores en la materia han utilizado funciones de activación demasiado complicadas de las que ahora sólo podemos reírnos. A menudo, "saber" demasiado puede dar malos resultados. Es importante entender que las redes neuronales no son una ciencia exacta. Nada en las matemáticas dice que las redes neuronales vayan a funcionar tan bien como lo hacen. Son heurísticas. Y por eso es muy maleable.

Para que sepas, incluso la activación de valores absolutos obtiene buenos resultados en algunos problemas, por ejemplo, los de tipo XOR. Diferentes funciones de activación son más adecuadas para diferentes propósitos. Probé Cifar-10 con abs() y parecía tener un peor rendimiento. Aunque, no puedo decir que "es una función de activación peor para el reconocimiento visual", porque no estoy seguro, por ejemplo, si mi pre-inicialización fue óptima para ella, etc. El mero hecho de que aprendiera relativamente bien me sorprendió.

Además, en la vida real, las "derivadas" que se pasan al backprop no necesariamente tienen que coincidir con las derivadas matemáticas reales.

Incluso me atrevería a decir que deberíamos prohibir llamarlos "derivados" y empezar a llamarlos de otra manera, por ejemplo, error activation functions para no cerrar nuestra mente a las posibilidades de retocarlas. En realidad, se puede, por ejemplo, utilizar la activación de ReLU, pero proporcionar un 0,1, o algo así en lugar de 0 como derivada para x<0. En cierto modo, se tiene entonces una ReLU simple, pero con neuronas que no pueden "morir por adaptabilidad". Yo llamo a esto NecroRelu, porque es una ReLU que no puede morir. Y en algunos casos (aunque definitivamente no en la mayoría) eso funciona mejor que el simple LeakyReLU, que en realidad tiene 0,1 de derivación en x<0 y mejor que el ReLU habitual. No creo que muchos otros hayan investigado tal función, sin embargo, esto, o algo similar podría ser en realidad una función de activación generalmente genial que nadie consideró sólo porque están demasiado concentrados en las matemáticas.

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

Además, tenga en cuenta que ReLU no es tan "obviamente mejor" que, por ejemplo, TanH. Probablemente, TanH puede ser mejor en algunos casos. Sólo que, al parecer, no en el 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 probado, pero apuesto a que se pueden establecer varios grupos con diferentes funciones de activación en el mismo nivel de capa para obtener una ventaja. Porque, una lógica diferente se describe mejor con diferentes funciones de activación. Y a veces es probable que necesite varios tipos de evaluación.

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

EDITAR: En realidad, el ReLU estándar parece menos propenso a la sobreadaptación frente a los leaky con arquitecturas modernas. Al menos en el reconocimiento de imágenes. Parece que si se busca una red de muy alta precisión con una enorme carga de parámetros, podría ser mejor quedarse con ReLU estándar frente a las opciones con 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.

1voto

Kadir Puntos 158

Consideremos la principal relación de recurrencia que define la retropropagación de la señal de error.

dejar $ {W_i}$ y ${b_i}$ sean la matriz de pesos y el vector de sesgo de la capa $\text{i}$ y ${f}$ sea la función de activación.

El vector de activación ${h_i}$ de la capa ${i}$ se calcula como sigue:

${s_i} = {W_i}({h_{i-1}}) + {b_i} $

${h_i} = {f(s_i)}$

El error singal $\delta$ para la capa ${i}$ se define por:

${\delta_{i}} = {W_{i+1}({\delta_{i+1}}}\odot{f^{'}({s_i})})$

Donde $\odot$ es la multiplicación elemental de dos vectores.

Esta relación de recurrencia se calcula para cada capa de la red, y expresa la forma en que la señal de error se transfiere desde la capa de salida hacia atrás. Ahora, si tomamos por ejemplo ${f}$ para ser la función tanh, tenemos ${f^{'}({s_i})}=(1-h_i^2)$ . A menos que $h_i$ es exactamente 1 o -1, esta expresión es una fracción entre 0 y 1. Por lo tanto, en cada capa, la señal de error se multiplica por una fracción, y se hace cada vez más pequeña: un gradiente evanescente.

Sin embargo, si tomamos ${f}=Relu=max(0,x)$ tenemos ${f^{'}}$ que es 1 para cada neurona que ha disparado algo, es decir, una neurona cuya activación es distinta de cero (en numpy, esto sería ${f^{'}} = \text{numpy.where}(h_i>0, 1, 0)$ ). En este caso, la señal de error se propaga completamente a la siguiente capa (se multiplica por 1). Por lo tanto, incluso para una red con múltiples capas, no nos encontramos con un gradiente evanescente.

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

1voto

user3654258 Puntos 6

Esencialmente, las ReLUs sólo conducen a gradientes desvanecidos para entradas menores que cero, mientras que para otras entradas permiten que el gradiente pase a través de ellas (mira el gráfico de la derivada de la ReLU). Esto es diferente a Sigmoid y Tanh, que pueden llevar a la saturación del gradiente para valores pequeños y grandes.

Del documento original de ReLU:

Debido a esta linealidad, los gradientes fluyen bien en las vías activas de neuronas (no hay efecto de desvanecimiento del gradiente debido a la activación no linealidad de las unidades sigmoideas o tanh), y las matemáticas matemática es más fácil.

¿Por qué no tener gradientes fluidos en ambos extremos? La dispersión es beneficiosa:

Se puede hipotetizar que la saturación dura en 0 puede perjudicar la optimización al bloquear la retropropagación del gradiente. Para evaluar el impacto potencial de este efecto, también investigamos la saturación blanda en 0. activación: softplus(x)=log(1+ex) (Dugas et al., 2001), una versión suave versión suave de la no linealidad rectificadora. Perdemos la sparsity exacta, pero podemos esperar ganar un entrenamiento más fácil. Sin embargo, los resultados experimentales Sin embargo, los resultados experimentales tienden a contradecir esa hipótesis, sugiriendo que los ceros duros pueden ayudar al entrenamiento supervisado. Nuestra hipótesis es que las no linealidades duras no linealidades duras no perjudican mientras el gradiente pueda propagarse por algunos caminos, es decir, que algunas de las unidades ocultas de cada capa sean distintas de cero Con el crédito y la culpa asignados a estas unidades ON en lugar de distribuirlas de forma más uniforme, nuestra hipótesis es que la optimización es más fácil.

Papel

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X