返回顶部

LSTM中各模块分别使用什么激活函数,可以使用别的激活函数吗?

2

0/300

评论 1

Andre老师@小象学院

在LSTM中,遗忘门、输入门、输出门使用Sigmoid函数作为激活函数;在生成候选记忆时,使用双曲正切函数Tanh作为激活函数。值得注意的是,这两个函数都是饱和的,也就是在输入达到一定值的情况下,输出不会发生明显变化。如果是非饱和的激活函数,比如ReLU,那么就难以实现门控的效果。Sigmoid函数的输出在0~1之间,符合门控的物理意义。且当输入较小或较大时,其输出会非常接近0或1,从而保证该门开或关。   在生成候选记忆时,使用Tanh函数,因为其输出在-1~1之间,这与大多数场景下特征分布是0中心的吻合。此外,Tanh在输入为0的附近比Sigmoid有更大梯度,通常使模型收敛更快。 激活函数选取不是一成不变的,例如在原始LSTM中,使用的是Sigmoid函数的变种,h(x)=2sigmoid(x)−1,g(x)=4sigmoid(x)−2h(x)=2sigmoid(x)-1,g(x)=4sigmoid(x)-2h(x)=2sigmoid(x)−1,g(x)=4sigmoid(x)−2,这两个函数的范围分别是[-1,1]和[-2,2]。后来发现效果并不如sigmoid。   实际上在门控中,使用Sigmoid几乎是现代所有神经网络模块的共同选择。例如在GRU和Attention机制中,也采用Sigmoid作为门控激活函数。   在计算能力有限制的设备中,由于Sigmoid函数求指数需要一定的计算量,此时会使用0/1门控输出为0或1的离散值。即当输入小于阈值,门控输出为0;大于阈值时,输出为1。

2021-08-18 18:17:37

- 没有更多了 -