¿Por qué es tanh casi siempre mejor que sigmoide como función de activación?

33

En el curso de Redes neuronales y aprendizaje profundo de Andrew Ng en Coursera , dice que usar es casi siempre preferible a usar .tanhsigmoid

La razón que da es que las salidas que usan centran alrededor de 0 en lugar de 's 0.5, y esto "hace que el aprendizaje para la siguiente capa sea un poco más fácil".tanhsigmoid

  1. ¿Por qué centrar el aprendizaje de la velocidad de salida de la activación? ¿Asumo que se está refiriendo a la capa anterior cuando el aprendizaje ocurre durante el backprop?

  2. ¿Hay alguna otra característica que haga preferible ? ¿El gradiente más pronunciado retrasaría la desaparición de los gradientes?tanh

  3. ¿Hay alguna situación en la que sería preferible ?sigmoid

Math-light, se prefieren respuestas intuitivas.

Tom Hale
fuente
13
Una función sigmoidea tiene forma de S (de ahí el nombre). Presumiblemente estás hablando de la función logística . Además de la escala y la ubicación, los dos son esencialmente lo mismo: . Entonces, la verdadera opción es si desea salidas en el intervalo o el intervalo logístico(x)=1ex1+ex(-1,1)(0,1)logistic(x)=12+12tanh(x2)(1,1)(0,1)
Henry

Respuestas:

21

Yan LeCun y otros argumentan en Efficient BackProp que

La convergencia suele ser más rápida si el promedio de cada variable de entrada sobre el conjunto de entrenamiento es cercano a cero. Para ver esto, considere el caso extremo donde todas las entradas son positivas. Los pesos para un nodo particular en la primera capa de peso se actualizan en una cantidad proporcional a donde es el error (escalar) en ese nodo es el vector de entrada (ver ecuaciones (5) y (10)). Cuando todos los componentes de un vector de entrada son positivos, todas las actualizaciones de los pesos que se introducen en un nodo tendrán el mismo signo (es decir, signo ( )). Como resultado, estos pesos solo pueden disminuir o aumentar todos juntosδxδxδpara un patrón de entrada dado. Por lo tanto, si un vector de peso debe cambiar de dirección, solo puede hacerlo zigzagueando, lo que es ineficiente y, por lo tanto, muy lento.

Es por eso que debe normalizar sus entradas para que el promedio sea cero.

La misma lógica se aplica a las capas intermedias:

Esta heurística se debe aplicar en todas las capas, lo que significa que queremos que el promedio de las salidas de un nodo sea cercano a cero porque estas salidas son las entradas a la siguiente capa.

Postscript @craq señala que esta cita no tiene sentido para ReLU (x) = max (0, x), que se ha convertido en una función de activación muy popular. Si bien ReLU evita el primer problema de zigzag mencionado por LeCun, LeCun no resuelve este segundo punto, quien dice que es importante llevar el promedio a cero. Me encantaría saber qué dice LeCun sobre esto. En cualquier caso, hay un documento llamado Batch Normalization , que se basa en el trabajo de LeCun y ofrece una manera de abordar este problema:

Se sabe desde hace mucho tiempo (LeCun et al., 1998b; Wiesler y Ney, 2011) que el entrenamiento de la red converge más rápido si sus entradas se blanquean, es decir, se transforman linealmente para tener cero medias y variaciones de unidades, y están relacionadas con la decoración. Como cada capa observa las entradas producidas por las capas de abajo, sería ventajoso lograr el mismo blanqueamiento de las entradas de cada capa.


Por cierto, este video de Siraj explica mucho sobre las funciones de activación en 10 divertidos minutos.


@elkout dice "La verdadera razón por la que se prefiere el tanh en comparación con el sigmoide (...) es que las derivadas del tanh son más grandes que las derivadas del sigmoide".

Creo que esto no es un problema. Nunca vi que esto fuera un problema en la literatura. Si te molesta que una derivada sea más pequeña que otra, puedes escalarla.

La función logística tiene la forma . Usualmente, usamos , pero nada le prohíbe usar otro valor para para ampliar sus derivados, si ese fuera su problema.σ(x)=11+ekxk=1k


Nitpick: tanh es también una función sigmoidea . Cualquier función con forma de S es un sigmoide. Lo que ustedes llaman sigmoide es la función logística. La razón por la cual la función logística es más popular es por razones históricas. Ha sido utilizado durante más tiempo por los estadísticos. Además, algunos sienten que es más biológicamente plausible.

Ricardo Cruz
fuente
1
No necesita una cita para mostrar que , solo cálculo de la escuela secundaria. Sabemos que esto es cierto porque , por lo que solo tiene que maximizar un cóncavo cuadrático. que puede verificarse mediante inspección. maxxσ(x)<maxxtanh(x)
σ(x)=σ(x)(1σ(x))0.25
0<σ(x)<1
tanh(x)=sech2(x)=2exp(x)+exp(x))1.0
Sycorax dice Reinstate Monica
Aparte de eso, dije que en la mayoría de los casos las derivadas del tanh son más grandes que las derivadas del sigmoide. Esto ocurre principalmente cuando estamos alrededor de 0. Le invitamos a echar un vistazo a este enlace y a las respuestas claras que se proporcionan aquí , que también indican que las derivadas de suelen ser más grandes que las derivadas de . tanhsigmoid
ekoulier
Espera ... eso suena plausible, pero si las capas intermedias deben tener una salida promedio de cero, ¿cómo es que ReLU funciona tan bien? ¿No es eso una contradicción?
craq
@ekoulier, la derivada de es mayor que es un problema. Puedes escalarlo si te molesta. tanhsigmoid
Ricardo Cruz
@craq, buen punto, creo que esa es una falla en el argumento de LeCun. He agregado un enlace al documento de normalización por lotes donde se discute más sobre ese tema y cómo se puede mejorar. Desafortunadamente, ese documento no compara relu con tanh, solo compara relu con logística (sigmoide).
Ricardo Cruz
14

No es que sea necesariamente mejor que . En otras palabras, no es el centro de una función de activación lo que lo hace mejor. Y la idea detrás de ambas funciones es la misma, y ​​también comparten una "tendencia" similar. No hace falta decir que la función se llama una versión desplazada de la función .sigmoidtanhsigmoid

La verdadera razón por la que se prefiere comparación con , especialmente cuando se trata de big data cuando generalmente está luchando por encontrar rápidamente el mínimo local (o global), es que las derivadas de son más grandes que las derivadas de . En otras palabras, minimiza su función de costo más rápido si usa como función de activación.tanhsigmoidtanhsigmoidtanh

Pero, ¿por qué la tangente hiperbólica tiene derivados más grandes? Solo para darle una intuición muy simple, puede observar el siguiente gráfico:

Tangente sigmoidea vs hiperbólica

El hecho de que el rango esté entre -1 y 1 en comparación con 0 y 1 hace que la función sea más conveniente para las redes neuronales. Aparte de eso, si uso algunas matemáticas, puedo demostrar que:

tanhx=2σ(2x)1

Y en general, podemos probar que en la mayoría de los casos .|tanh(x)x|>|σ(x)x|

ekoulier
fuente
Entonces, ¿por qué el Prof. Ng diría que es una ventaja tener la salida de la función promediando alrededor de ? 0
Tom Hale
2
No es el hecho de que el promedio sea alrededor de 0 lo que hace que más rápido. Es el hecho de que estar alrededor de cero significa que el rango también es mayor (en comparación con estar alrededor de 0.5 en el caso de ), lo que conduce a derivados más grandes, lo que casi siempre conduce a una convergencia más rápida al mínimo. Espero que esté claro ahora. Ng tiene razón en que preferimos la función porque está centrada alrededor de 0, pero simplemente no proporcionó la justificación completa. tanhsigmoidtanh
ekoulier
El centrado cero es más importante que la relación , porque sesga la distribución de activaciones y eso perjudica el rendimiento. Si se toma y tasa de aprendizaje más pequeño, que va a aprender a la par con . 2xsigmoid(x) - 0.52xtanh
Maxim
@Maxim ¿Qué "eso" sesga la distribución de activaciones, cero centrado o ? Si el centrado cero es algo bueno, todavía no creo que se haya respondido el "por qué". 2x
Tom Hale
3

Respondiendo la parte de la pregunta hasta ahora sin abordar:

Andrew Ng dice que usar la función logística (comúnmente conocida como sigmoide) realmente solo tiene sentido en la capa final de una red de clasificación binaria.

Como se espera que la salida de la red esté entre y , la logística es una elección perfecta ya que su rango es exactamente . No se requiere escala y desplazamiento de .01(0,1)tanh

Tom Hale
fuente
Para la salida, la función logística tiene sentido si desea producir probabilidades, todos podemos estar de acuerdo en eso. Lo que se está discutiendo es por qué se prefiere tanh sobre la función logística como una activación para las capas intermedias.
Ricardo Cruz
¿Cómo sabes que eso es lo que pretendía el OP? Parece que estaba haciendo una pregunta general.
Tom Hale
2

Todo depende esencialmente de las derivadas de la función de activación, el principal problema con la función sigmoide es que el valor máximo de su derivada es 0.25, esto significa que la actualización de los valores de W y b será pequeña.

La función tanh, por otro lado, tiene una derivada de hasta 1.0, lo que hace que las actualizaciones de W y b sean mucho más grandes.

Esto hace que la función tanh sea casi siempre mejor como una función de activación (para capas ocultas) en lugar de la función sigmoidea.

Para probar esto yo mismo (al menos en un caso simple), codifiqué una red neuronal simple y usé sigmoide, tanh y relu como funciones de activación, luego tracé cómo evolucionó el valor del error y esto es lo que obtuve.

ingrese la descripción de la imagen aquí

El cuaderno completo que escribí está aquí https://www.kaggle.com/moriano/a-showcase-of-how-relus-can-speed-up-the-learning

Si ayuda, aquí están los gráficos de las derivadas de la función tanh y la sigmoidea (¡preste atención al eje vertical!)

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Juan Antonio Gómez Moriano
fuente
(-1) Aunque esta es una idea interesante, no se sostiene por sí sola. En particular, la mayoría de los métodos de optimización utilizados para DL / NN son métodos de gradiente de primer orden, que tienen una tasa de aprendizaje . Si la derivada máxima con respecto a una función de activación es demasiado pequeña, se podría aumentar fácilmente la tasa de aprendizaje. α
Cliff AB
¿No corre el riesgo de no tener una curva de aprendizaje estable con una tasa de aprendizaje más alta?
Juan Antonio Gómez Moriano
Bueno, si los derivados son más estables, entonces aumentar la tasa de aprendizaje es menos probable que desestabilice la estimación.
Cliff AB
Ese es un punto justo, ¿tiene un enlace donde podría aprender más sobre esto?
Juan Antonio Gómez Moriano