¿Cuáles son las ventajas de ReLU sobre la función sigmoidea en redes neuronales profundas?

141

El estado del arte de la no linealidad es utilizar unidades lineales rectificadas (ReLU) en lugar de la función sigmoidea en la red neuronal profunda. ¿Cuáles son las ventajas?

Sé que entrenar una red cuando se usa ReLU sería más rápido, y tiene más inspiración biológica, ¿cuáles son las otras ventajas? (Es decir, ¿alguna desventaja de usar sigmoid)?

RockTheStar
fuente
Tenía la impresión de que permitir la no linealidad en su red era una ventaja. Pero no veo eso en ninguna de las respuestas a continuación ...
Monica Heddneck
2
@MonicaHeddneck, tanto ReLU como sigmoid son no lineales ...
Antoine

Respuestas:

130

Dos beneficios principales adicionales de ReLU son la escasez y una probabilidad reducida de gradiente de fuga. Pero primero recuerde que la definición de un ReLU es donde .a = W x + bh=max(0,a)a=Wx+b

Un beneficio importante es la probabilidad reducida de que el gradiente desaparezca. Esto surge cuando . En este régimen, el gradiente tiene un valor constante. En contraste, el gradiente de sigmoides se vuelve cada vez más pequeño a medida que aumenta el valor absoluto de x. El gradiente constante de ReLU resulta en un aprendizaje más rápido.a>0

El otro beneficio de ReLU es la escasez. La escasez surge cuando . Cuantas más unidades de este tipo existan en una capa, más escasa será la representación resultante. Los sigmoides, por otro lado, siempre generan un valor distinto de cero que da como resultado representaciones densas. Las representaciones dispersas parecen ser más beneficiosas que las representaciones densas.a0

DaemonMaker
fuente
2
Cuando dices el gradiente, ¿quieres decir con respecto a los pesos o la entrada x? @DaemonMaker
MAS
44
Con respecto a los pesos. Los algoritmos de aprendizaje basados ​​en gradientes siempre toman el gradiente con respecto a los parámetros del alumno, es decir, los pesos y sesgos en un NN.
DaemonMaker
2
¿Qué quiere decir con "representaciones" "densas" y "escasas"? La consulta a Google "redes neuronales de representación dispersa" no parece tener nada relevante.
Hola Ángel
66
"Las representaciones dispersas parecen ser más beneficiosas que las representaciones densas". ¿Podría proporcionar una fuente o explicación?
Rohan Saxena
1
No entiendo cómo esta respuesta es en absoluto correcta. La "probabilidad reducida de que el gradiente desaparezca" deja algo que desear. El ReLu es CERO para suficientemente pequeño . Durante el aprendizaje, tus gradientes DESAPARECIRÁN para ciertas neuronas cuando estés en este régimen. De hecho, es claramente inevitable, porque de lo contrario su red será lineal. La normalización por lotes resuelve esto principalmente. Esto ni siquiera menciona la razón más importante: ReLu's y sus gradientes. son extremadamente rápidos de calcular, en comparación con un sigmoide. x
Alex R.
65

Ventaja:

  • Sigmoide: no explota la activación
  • Relu: gradiente que no desaparece
  • Relu: más computacionalmente eficiente para calcular que las funciones similares a Sigmoid, ya que Relu solo necesita elegir max (0, ) y no realizar costosas operaciones exponenciales como en Sigmoidsx
  • Relu: en la práctica, las redes con Relu tienden a mostrar un mejor rendimiento de convergencia que sigmoide. ( Krizhevsky y cols. )

Desventaja:

  • Sigmoide: tiende a desaparecer el gradiente (porque existe un mecanismo para reducir el gradiente como " " aumento, donde " " es la entrada de una función sigmoidea. Gradiente de sigmoide: . Cuando " " crece hasta infinitamente grande, ).a S ( a ) = S ( a ) ( 1 - S ( a ) ) a S ( a ) = S ( a ) ( 1 - S ( a ) ) = 1 × ( 1 - 1 ) = 0aaS(a)=S(a)(1S(a))aS(a)=S(a)(1S(a))=1×(11)=0

  • Relu: tiende a explotar la activación (no existe un mecanismo para restringir la salida de la neurona, ya que " " en sí es la salida)a

  • Relu: problema de Relu moribundo: si demasiadas activaciones se ponen por debajo de cero, la mayoría de las unidades (neuronas) en red con Relu simplemente generarán cero, en otras palabras, morirán y, por lo tanto, prohibirán el aprendizaje. (Esto puede manejarse, hasta cierto punto, usando Leaky-Relu en su lugar).
Bill Ancalagon el negro
fuente
77
Puede resultarle útil que pueda usar la composición matemática con Latex colocando signos de dólar alrededor de sus ecuaciones, por ejemplo, $x$produce . x
Silverfish
Relu: gradiente que no se desvanece. ¿Eh? para todos . x < - b / aRelu(ax+b)=0x<b/a
Alex R.
40

Solo complementando las otras respuestas:

Gradientes de fuga

Las otras respuestas son correctas al señalar que cuanto mayor es la entrada (en valor absoluto), menor es el gradiente de la función sigmoidea. Pero, probablemente un efecto aún más importante es que la derivada de la función sigmoidea SIEMPRE es más pequeña que una . De hecho, ¡es como máximo 0.25!

El lado negativo de esto es que si tiene muchas capas, multiplicará estos gradientes, y el producto de muchos valores menores que 1 irá a cero muy rápidamente.

Dado que el estado del arte de Deep Learning ha demostrado que más capas ayudan mucho, entonces esta desventaja de la función Sigmoid es un asesino de juegos. Simplemente no puedes hacer Deep Learning con Sigmoid.

Por otro lado, el gradiente de la función ReLu es para o para . Eso significa que puede poner tantas capas como desee, ya que multiplicar los gradientes no desaparecerá ni explotará.a < 0 1 a > 00a<01a>0

Guilherme de Lazari
fuente
10
Esta es la respuesta que estaba buscando. Cuando la gente habla de "gradientes que desaparecen", uno no puede dejar de preguntarse "el gradiente de ReLu es exactamente 0 para la mitad de su rango. ¿No es eso 'desaparecer'". La forma en que describe el problema al recordarnos que los gradientes se multiplican en muchas capas, aporta mucha claridad.
Boris Gorelik
3
@ guilherme-de-lazari sugirió corrección en la última línea: el valor de relu es a para> 0, pero está hablando del gradiente que es 1 para a> 0
saurabh
44
Si esta fuera la razón principal, ¿no podríamos simplemente reescalar el sigmoide a 1 / (1 + exp (-4x))? Entonces la derivada es como máximo 1 (o reescalar aún más, para darnos opciones por encima y por debajo de 1). Sospecho que esto funcionaría mucho peor, porque el cambio de escala también reduce el área donde la derivada es distinguible de 0. Pero no estoy seguro de que esta respuesta cuente la historia completa.
Peter
55
Esta respuesta no tiene sentido. La derivada de una sigmoide con el parámetro constante 1 es inferior a 1. Sin embargo, de manera más general que es , que puede tener un derivado arbitrariamente grande (acaba de tomar a ser muy grande, por lo que el sigmoide pasa rápidamente de 0 a 1). a1/(1+exp(ax))a
Alex R.
77
También PUEDES hacer un aprendizaje profundo con sigmoides, solo necesitas normalizar las entradas, por ejemplo a través de la Normalización por lotes. Esto centralizará sus entradas para evitar saturar el sigmoide. En el documento original sobre Batch Normalization, la red neuronal de activación sigmoidea funciona casi a la par con ReLus: arxiv.org/pdf/1502.03167.pdf
Alex R.
7

Una ventaja de ReLU además de evitar el problema de gradientes de fuga es que tiene un tiempo de ejecución mucho menor. max (0, a) se ejecuta mucho más rápido que cualquier función sigmoidea (función logística, por ejemplo, = 1 / (1 + e ^ (- a)) que utiliza un exponente que es computacionalmente lento cuando se realiza con frecuencia). Esto es cierto tanto para la propagación hacia adelante como hacia atrás, ya que el gradiente de ReLU (si a <0, = 0 else = 1) también es muy fácil de calcular en comparación con sigmoide (para la curva logística = e ^ a / ((1 + e ^ a) ^ 2)).

Aunque ReLU tiene la desventaja de morir células que limita la capacidad de la red. Para superar esto, solo use una variante de ReLU, como ReLU con fugas, ELU, etc., si observa el problema descrito anteriormente.

Peaje
fuente
1
+1. Esta es una de las únicas respuestas correctas aquí. También puede usar la normalización por lotes para centralizar las entradas para contrarrestar las neuronas muertas.
Alex R.
2

Una respuesta adicional para completar en el debate de rendimiento Sparse vs Dense .

No piense más en NN, solo piense en álgebra lineal y operaciones matriciales, porque las propagaciones hacia adelante y hacia atrás son una serie de operaciones matriciales.

Ahora recuerde que existe una gran cantidad de operadores optimizados para aplicar a una matriz dispersa y, por lo tanto, optimizar esas operaciones en nuestra red podría mejorar drásticamente el rendimiento del algoritmo.

Espero que eso pueda ayudar a algunos de ustedes ...

Michael B
fuente
1

El beneficio principal es que la derivada de ReLu es 0 o 1, por lo que multiplicarla no hará que los pesos que están más lejos del resultado final de la función de pérdida sufran el problema del gradiente de fuga:

ingrese la descripción de la imagen aquí

David Refaeli
fuente