为什么LSTM模型中既存在sigmoid又存在tanh两种激活函数?

为什么不是选择统一一种sigmoid或者tanh,而是混合使用呢?这样的目的是什么?
关注者
105
被浏览
4,943

3 个回答

二者目的不一样
  1. sigmoid 用在了各种gate上,产生0~1之间的值,这个一般只有sigmoid最直接了。
  2. tanh 用在了状态和输出上,是对数据的处理,这个用其他激活函数或许也可以。

对于这个问题,我觉得应该从两个方面来考虑。

一是为什么用两种函数,即门(输入门,输出门,遗忘门)所使用的激活函数,与求值( \tilde{c_t} , h_t )的激活函数不一样。

二是为什么分别使用sigmoid函数和tanh函数。

对于第一个问题的解答是,门是控制开闭的,全开时值为0,全闭值为0。有开有闭时,值在0到1之间。如果选择的激活函数得到的值不在0,1之间时,通常来说是没有意义的。对于求值时的激活函数,选取时我认为与深层网络中激活函数选取是一样的,没有行与不行,只有好与不好。所以,总结来说,门的激活函数只能是值域为0到1的,对于求值的激活函数无特殊要求。

对于第二个问题,为什么使用sigmoid函数与tanh函数,这个牵扯到激活函数的选取问题。

对于前者,王赟 Maigo提到这样一点。

LSTM应该需要饱和的门来记住或忘记信息,不饱和的门会使得过去和现在的记忆一直在叠加,造成记忆错乱。

我的理解是,通常选取的激活函数为单调函数,又因为门的激活函数值域为0到1,所以函数两侧是0和1。并且我们希望我们的门输出的值大多为0,1即完全忘记或完全记住。所以也希望函数是饱和的,即两侧极限导数为0。对于这个解释是否合理,希望能与 @王赟 Maigo 讨论。另外,我觉得输入门与遗忘门0,1交叉分布也很重要,GRU也体现了这一点。


对于后者,应该就是按照相关的研究进行挑选。可看这个问题。另外,也可以自行实验。

相关问题:

在训练LSTM的时候使用除了Tanh/Sigmoid以外的激活函数效果都很差,是为什么?