激活函数sigmoid和tanh的区别


在学习神经网络的时候,阅读论文时,多次看见tanh和sigmoid,在此记下其不同的区别

激活函数sigmoid和tanh的区别

simoid函数

  1. 作为激活函数,sigmoid函数存在梯度弥散的问题,即当x的取值特别大或者特别小的时候,其梯度几乎为零,这会导致参数的值无法更新。即所说的梯度消失。
  2. 作为激活函数,sigmoid的不是中心对称的,且总是输出正数,这会导致在做非线性变换时,其只能“同意”上一层的结果,这也会导致随着深度的增加,结点的取值会“爆炸”,这也是在sigmoid函数中引入batch normalization变换的原因,因为随着层数增加,样本的分布会从0-1高斯分布逐渐偏移,偏移至sigmoid的饱和区域,导致反向传播很难进行,所以其收敛较慢,而batch-normalization会把样本分布强行拉回到0-1高斯分布。
  3. 输出总是正数也会导致其优化路径出现“zigzag”现象,即所有权值的优化方向总是相同的(同时增大或减小)。

    tanh函数

  4. 作为激活函数,其同样存在梯度弥散问题
  5. tanh函数相较于sigmoid函数的优点在于其是中心对称的,均值为0的分布,其能将一个0-1高斯分布依然映射到0附近的分布,保持零均值的特性,而且由于其有正有负,所以他可以对来自上一层的结果 “支持”(正)、“反对”(负)、“弃权”(0)。所以其收敛速度较sigmoid快一些。

文章作者: 大杯柠檬加冰
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 大杯柠檬加冰 !
  目录