神经网络的激活函数

根据学习Stanford university的cs231n课堂视频,我做了一下总结~


sigmoid


  • 原来挺流行,与大脑神经元的运作很类似
  • 饱和神经元将使得梯度消失。输入一个绝对值很大的数,其梯度接近于0,通过链式法则后会让梯度流消失,就无法得到反馈
  • 是一个非零中心的函数。梯度更新的效率低
  • 使用了指数函数,计算代价不低


tanh(x) 


双曲正切函数

  • 零均值
  • 绝对值很大的输入会使梯度消失


ReLU

线性整流函数


  • 不会产生饱和现象
  • 计算成本低
  • 收敛速度快(约6倍)
  • 更具备生物学的合理性
  • 不是零均值
  • 一般来说,将偏置项初始化为0。不过有时可以使用较小的正偏值来初始化ReLU, 以增加它在初始化时被激活的可能性,并获得一些更新



Leaky ReLU

与PRuLU


f(x) = max(0.01x, x)

f(x) = max(ax, x) (a不需要指定,是一个反向传播和学习的参数)

  • 没有饱和空间
  • 计算成本低
  • 迭代速度快



ELU

(Exponential Linear Units)


  • 具有ReLU的所有优点
  • 接近于零均值
  • 存在负饱和机制,当输入值为绝对值较大的负数时梯度为0对噪声有更强的鲁棒性
  • 计算成本稍高



通常来说

使用RuLU就比较好,注意仔细考虑学习速率。

有时可以尝试Leaky ReLU, ELU, tanh. 但不要对tanh抱有太大期望。它们的实用性不够强。

最好不再用sigmoid了

猜你喜欢

转载自blog.csdn.net/carl_wu_/article/details/79928450