激活函数

本文章参考斯坦福深度学习课程,图片也来自于课程截图

为什么我们需要激活函数:

没有激活函数的神经网络只不过是一个线性回归模型,它功率有限,并且大多数情况下执行得并不好。我们希望神经网络不仅仅可以学习和计算线性函数,而且还要比这复杂得多。

1.sigmoid函数

       

 缺点:

1.饱和神经元(绝对值很大的数值)将使得梯度消失


     x=10或-10时梯度为0,使用链式法则梯度相乘,梯度消失

2.sigmoid是一个非零中心的函数

    当神经元的输入总是为正的时候,w的梯度在传回来时,乘以当前梯度,结果要不全部为正,要么全部为负。他们总是朝着一个方向移动,这样做参数更新的时候,对于梯度更新来说是十分低效的


如上图所示:W在二维的情况下更新,如果只能都为正和负,将沿着红线进行迭代,但最优的是沿着蓝线,所以这也是我们希望我们的输入x的均值为0的原因,这样就能得到正的或负的数值,就不会出现这种问题。

3.使用了指数函数,计算代价较高

2.tanh函数


优点:是个以零为中心的函数,比sigmoid好一点

缺点:当饱和时依然会梯度消失

3.ReLU函数

   f(x) = max(0,x)
优点:

1.在正的范围内不会饱和

2.计算高效(只是一个max函数)

3.收敛快(在实际中比sigmoid和tanh快6倍)

4.更具备生物学上的合理性(与sigmod函数相比,对结果有更精准的估计)

缺点:

1.非0中心函数

2.负半轴依然会造成梯度消失(会导致一部分数据挂掉 )

4.Leaky ReLU函数(ReLU函数变种)


   f(x) = max(0.01x,x)
Parametric Rectifier(PReLU):f(x) = max(α*x,x)

  

优点:

1.不会饱和

2.计算高效

3.收敛快(如ReLU)

4.没有挂掉的问题

5. ELU函数(ReLU函数变种)

优点:

1.有ReLU所有的优点

2.输出均值接近于0

3.能达到负饱和,和Leaky ReLU相比添加了一些对于噪声的健壮性

缺点:

1.计算需要exp()

5. Maxout "Neuron"(最大神经元)

缺点:参数/神经元的数量是双倍的

在实际操作中:

1.使用ReLU,谨慎调整学习速率

2.尝试Leaky ReLU/Maxout/ELU

3.尝试tanh,但不要抱太大期望

4.不要使用sigmoid

什么样的函数可以作为激活函数

1.非线性: 当激活函数是线性的,一个两层的神经网络就可以基本上逼近所有的函数。但如果激活函数是恒等激活函数的时候,即f(x)=x,就不满足这个性质,而且如果MLP使用的是恒等激活函数,那么其实整个网络跟单层神经网络是等价的
2.可微性: 当优化方法是基于梯度的时候,就体现了该性质;
3.单调性: 当激活函数是单调的时候,单层网络能够保证是凸函数;
4.f(x)≈x: 当激活函数满足这个性质的时候,如果参数的初始化是随机的较小值,那么神经网络的训练将会很高效;如果不满足这个性质,那么就需要详细地去设置初始值;
5.输出值的范围: 当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是无限的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的Learning Rate。


REFERENCE:
链接:https://www.zhihu.com/question/59031444/answer/177786603
来源:知乎


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值