激活函数

转自:燕哥带你学算法(微信公众号


全篇概述


    深度学习在训练的过程中常常要用到激活函数


    “说,目的是啥?”

    “目的是为了让多层网络之间进行非线性变换”

    “如果不用呢?”

    “不用的话,多层的线性网络的表达能力与单层网络的表达能力是一样的,要不就没意思了”

    

 TA 说:

     在使用tensorflow的过程中我发现它提供了以下几个函数: sigmoid、tanh、elu、relu等。


   “还等啥啊,赶紧给我讲”

    听老衲给施主絮絮叨叨、

    咱竹板这么一打啊,别的咱不夸,夸一夸激活函数呐!




函数一: sigmoid  




   分析

从图像中我们可以看出当我们输入的数据非常小或非常大时它的值是0或者1那么它的梯度很小趋近于0。

在反向传播中,这个局部梯度会与整个代价函数关于该单元输出的梯度相乘,结果会接近为 0。此时相当于没有信号传到神经元,权重不会更新。

还有一个问题是:sigmoid的值总是为正值。

如果输入都是正值那么梯度总为正或负这会导致训练的时候呈现Z字形梯度下降。





函数二:Tanh 

 双曲正切tanh读作/tæntʃ/




有着对比精神,可以看到tanh函数其实是sigmoid函数的变形




同样的tanh函数也存在饱和的问题,不过tanh函数的值经过原点

并且函数值在(-1,1)之间的不同于sigmoid值总是为正值或负值






函数三:Relu

Relu(Rectified Linear Units读 /'relju/


f(u) = max ( 0, u )




可以看到反向传播的时候梯度要么是0要么不变,所以梯度衰减很小,经过很多层也不会减弱.收敛的速度会比tanh和sigmoid快。

不过有个缺点是当x<0时 f '(x)=0 (z) (这里是导函数为零)所有负梯度到这都变成0,且这个神经元有可能再也不被激活,神经元的梯度永远都是0.



函数四:Elu



  



Elu函数是sigmoid和relu的结合体。

当x<0时,跟relu不一样的函数值趋近于-1,使elu能够对输入具有更强的鲁棒性

当下x>0时线性部分能够缓解梯度消失,Elu的输出均值是接近于0的,因此它的收敛会更快。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值