machine learning - mastery - ¿Cuál es la intuición de usar tanh en LSTM?
lstm sklearn (2)
En la red LSTM ( Understanding LSTMs ), ¿por qué la puerta de entrada y la puerta de salida usan tanh? ¿Cuál es la intuición detrás de esto? es solo una transformación no lineal? si lo es, ¿puedo cambiar ambos a otra función de activación (por ejemplo, ReLU)?
Los LSTM manejan un vector de estado interno cuyos valores deberían poder aumentar o disminuir cuando agregamos la salida de alguna función. La salida sigmoidea siempre es no negativa; los valores en el estado solo aumentarían. La salida de tanh puede ser positiva o negativa, permitiendo aumentos y disminuciones en el estado.
Es por eso que tanh se usa para determinar los valores candidatos para ser agregados al estado interno. El primo GRU del LSTM no tiene un segundo tanh, por lo que en cierto sentido el segundo no es necesario. Consulte los diagramas y explicaciones en Understanding LSTM Networks de Chris Olah para obtener más información.
La pregunta relacionada, "¿Por qué se usan los sigmoides en LSTM donde están?" también se responde en función de los posibles resultados de la función: "gating" se logra multiplicando por un número entre cero y uno, y eso es lo que producen los sigmoides.
No hay diferencias realmente significativas entre los derivados de sigmoide y tanh; tanh es solo un sigmoide desplazado y reescalado: vea los cs224d.stanford.edu/lectures/CS224d-Lecture6.pdf Richard Socher. Si los segundos derivados son relevantes, me gustaría saber cómo.
Sigmoid
específicamente, se utiliza como la función de puerta para las 3 puertas (entrada, salida, olvido) en LSTM
, ya que produce un valor entre 0 y 1, no puede dejar fluir o completar el flujo de información a través de las puertas. Por otro lado, para superar el problema del gradiente de fuga, necesitamos una función cuya segunda derivada pueda sostenerse por un largo margen antes de pasar a cero. Tanh
es una buena función con la propiedad anterior.
Una buena unidad neuronal debe ser delimitada, fácilmente diferenciable, monótona (buena para la optimización convexa) y fácil de manejar. Si considera estas cualidades, entonces creo que puede usar ReLU
en lugar de la función tanh
ya que son muy buenas alternativas entre sí. Pero antes de elegir las funciones de activación, debe saber cuáles son las ventajas y desventajas de su elección sobre los demás. En breve describo algunas de las funciones de activación y sus ventajas.
Sigmoideo
Expresión matemática: sigmoid(z) = 1 / (1 + exp(-z))
Derivado de primer orden: sigmoid''(z) = -exp(-z) / 1 + exp(-z)^2
Ventajas:
(1) Sigmoid function has all the fundamental properties of a good activation function.
Tanh
Expresión matemática: tanh(z) = [exp(z) - exp(-z)] / [exp(z) + exp(-z)]
Derivada de primer orden: tanh''(z) = 1 - ([exp(z) - exp(-z)] / [exp(z) + exp(-z)])^2 = 1 - tanh^2(z)
Ventajas:
(1) Often found to converge faster in practice
(2) Gradient computation is less expensive
Hard Tanh
Expresión matemática: hardtanh(z) = -1 if z < -1; z if -1 <= z <= 1; 1 if z > 1
hardtanh(z) = -1 if z < -1; z if -1 <= z <= 1; 1 if z > 1
Derivada de primer orden: hardtanh''(z) = 1 if -1 <= z <= 1; 0 otherwise
hardtanh''(z) = 1 if -1 <= z <= 1; 0 otherwise
Ventajas:
(1) Computationally cheaper than Tanh
(2) Saturate for magnitudes of z greater than 1
ReLU
Expresión matemática: relu(z) = max(z, 0)
Derivada de primer orden: relu''(z) = 1 if z > 0; 0 otherwise
relu''(z) = 1 if z > 0; 0 otherwise
Ventajas:
(1) Does not saturate even for large values of z
(2) Found much success in computer vision applications
Leaky ReLU
Expresión matemática: leaky(z) = max(z, k dot z) where 0 < k < 1
Derivada de primer orden: relu''(z) = 1 if z > 0; k otherwise
relu''(z) = 1 if z > 0; k otherwise
Ventajas:
(1) Allows propagation of error for non-positive z which ReLU doesn''t
Este paper explica alguna función de activación divertida. Puede considerar leerlo.