在LSTM中使用tanh的直觉是什么?

DNK*_*DNK 49 machine-learning deep-learning lstm recurrent-neural-network activation-function

在LSTM网络(了解LSTM)中,为什么输入门和输出门使用tanh?这背后的直觉是什么?它只是一个非线性变换?如果是,我可以将两者都更改为另一个激活功能(例如ReLU)吗?

Was*_*mad 70

Sigmoid具体来说,它被用作3个门(进,出,忘记)的门控函数LSTM,因为它输出一个介于0和1之间的值,它可以让整个门中没有信息流或完整的信息流.另一方面,为了克服消失的梯度问题,我们需要一个函数,其二阶导数可以在达到零之前保持长距离.Tanh具有上述属性是一个很好的功能.

一个好的神经元单元应该是有界的,易于区分,单调(适用于凸优化)并且易于处理.如果你考虑这些品质,那么我相信你可以用它ReLU来代替tanh功能,因为它们是彼此非常好的替代品.但在选择激活功能之前,您必须知道您选择的优缺点是什么.我将简要介绍一些激活功能及其优点.

乙状结肠

数学表达式: sigmoid(z) = 1 / (1 + exp(-z))

一阶导数: sigmoid'(z) = -exp(-z) / 1 + exp(-z)^2

好处:

(1) Sigmoid function has all the fundamental properties of a good activation function.
Run Code Online (Sandbox Code Playgroud)

正切

数学表达式: tanh(z) = [exp(z) - exp(-z)] / [exp(z) + exp(-z)]

一阶导数: tanh'(z) = 1 - ([exp(z) - exp(-z)] / [exp(z) + exp(-z)])^2 = 1 - tanh^2(z)

好处:

(1) Often found to converge faster in practice
(2) Gradient computation is less expensive
Run Code Online (Sandbox Code Playgroud)

Hard Tanh

数学表达式: hardtanh(z) = -1 if z < -1; z if -1 <= z <= 1; 1 if z > 1

一阶导数: hardtanh'(z) = 1 if -1 <= z <= 1; 0 otherwise

好处:

(1) Computationally cheaper than Tanh
(2) Saturate for magnitudes of z greater than 1
Run Code Online (Sandbox Code Playgroud)

RELU

数学表达式: relu(z) = max(z, 0)

一阶导数: relu'(z) = 1 if z > 0; 0 otherwise

好处:

(1) Does not saturate even for large values of z
(2) Found much success in computer vision applications
Run Code Online (Sandbox Code Playgroud)

Leaky ReLU

数学表达式: leaky(z) = max(z, k dot z) where 0 < k < 1

一阶导数: relu'(z) = 1 if z > 0; k otherwise

好处:

(1) Allows propagation of error for non-positive z which ReLU doesn't
Run Code Online (Sandbox Code Playgroud)

介绍了一些有趣的激活功能.你可以考虑阅读它.

  • 如果上述答案是正确的,则与问题无关.衍生物不区分tanh和S形,因为tanh只是一个重新缩放和移位的S形.(见:https://cs224d.stanford.edu/lectures/CS224d-Lecture6.pdf) (3认同)
  • "另一方面,为了克服消失的梯度问题,我们需要一个函数,其二阶导数可以在达到零之前保持很长的范围." - 为什么?? (3认同)

Aar*_*her 47

LSTM管理一个内部状态向量,当我们添加某个函数的输出时,其值应该能够增加或减少.Sigmoid输出总是非负的; 州内的价值只会增加.tanh的输出可以是正数或负数,允许状态的增加和减少.

这就是为什么tanh用于确定要添加到内部状态的候选值的原因.LSTM的GRU表兄没有第二个tanh,所以从某种意义上说,第二个没有必要.查看Chris Olah的LSTM网络图表和解释,了解更多信息.

相关问题,"为什么在LSTM中使用sigmoids它们在哪里?" 也可以根据函数的可能输出来回答:"gating"是通过乘以0和1之间的数字来实现的,这就是sigmoids的输出.

sigmoid和tanh的衍生物之间没有真正有意义的差异; tanh只是一个重新缩放和转移的sigmoid:参见Richard Socher的神经提示和技巧.如果二阶导数是相关的,我想知道如何.

  • 好答案。兄弟 (3认同)
  • 虽然这解释了状态更新规则,但这无法解决 LSTM 的输出门包含 tanh 层的事实,h_t = o_t * tanh(C_t) 。原因是它可以将隐藏状态重新规范化为状态更新加法操作后在[-1,1]之间。 (2认同)