激活函数Tanh

激活函数Tanh

  Tanh的诞生比Sigmoid晚一些,sigmoid函数我们提到过有一个缺点就是输出不以0为中心,使得收敛变慢的问题。而Tanh则就是解决了这个问题。Tanh就是双曲正切函数。等于双曲余弦除双曲正弦。函数表达式和图像见下图。这个函数是一个奇函数。
双曲正则表达式
双曲正切函数图形,来源于网上
  对tanh函数求导需要一定的数学基础,这里直接给出结果。 t a n h ( x ) = 1 t a n h 2 ( x ) tanh'(x)=1-tanh^2(x) ,这个函数同样是根据函数求导数很容易,但是函数值的计算比较复杂。
  同样可以很轻易的证明这个函数两边趋于无穷极限是饱和的,函数图像和sigmoid函数非常像,其实就是直接在竖直方向拉伸两倍,然后在y轴向下平移了1个单位,使得函数的中心回到了0,然后在水平方向上拉伸两倍。 t a n h ( x ) = 2 s i g m o i d ( 2 X ) 1 tanh(x)=2sigmoid(2X)-1 解决了sigmoid函数收敛变慢的问题,相对于sigmoid提高了收敛速度
  其他特点都是类似的,根据函数值求导数值简单,但是指数的计算复杂。梯度消失的特点依旧保留,因为两边的饱和性使得梯度消失,进而难以训练。
  尽管tanh函数和sigmoid函数存在梯度消失的问题,但是与之类似,如果函数的梯度过大又会导致梯度爆炸的问题,显然tanh和sigmoid的导函数非常有界,根据导数公式,很容易得出 t a n h ( x ) [ 0 , 1 ] tanh'(x)\in[0,1] ,所以完全不用担心因为使用激活函数而产生梯度爆炸的问题。

系列文章:

神经网络中的激活函数总述
sigmoid激活函数
tanh激活函数
ReLU系列激活函数
maxout激活函数