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

在LSTM网络(理解LSTM)中,为什么输入门和输出门使用tanh?

这背后的直觉是什么?

这仅仅是一种非线性变换吗?如果是的话,我可以将两者都改为另一个激活函数(例如ReLU)吗?


回答:

特别是,Sigmoid 被用作LSTM中三个门(输入门、输出门和遗忘门)的门控函数,因为它输出一个介于0和1之间的值,并且可以控制信息在各门之间的无流或完全流动。

另一方面,为了克服梯度消失问题,我们需要一个函数,其二阶导数能够在变为零之前维持较长时间。Tanh 就是一个具有上述属性的好函数。

一个好的神经元单元应该是有界的、容易微分的、单调的(有利于凸优化)并且易于处理。如果考虑这些品质,那么我认为你可以用ReLU代替tanh函数,因为它们是彼此非常好的替代品。

但在选择激活函数之前,你必须了解你选择的函数相对于其他函数的优缺点。我将简要描述一些激活函数及其优点。

Sigmoid

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

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

优点:

(1) Sigmoid函数具备一个好的激活函数的所有基本属性。

Tanh

数学表达式: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) 在实践中通常发现收敛速度更快(2) 梯度计算成本较低

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) 计算成本比Tanh低(2) 当z的绝对值大于1时饱和

ReLU

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

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

优点:

(1) 即使z值很大也不会饱和(2) 在计算机视觉应用中取得了很大成功

Leaky ReLU

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

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

优点:

(1) 允许非正z的误差传播,这是ReLU所不具备的

这篇论文解释了一些有趣的激活函数。你可以考虑阅读一下。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注