激活函数

激活函数的用途(为什么需要激活函数)?

如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层节点的输入都是上层输出的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,那么网络的逼近能力就相当有限。正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大(不再是输入的线性组合,而是几乎可以逼近任意函数)。
Sigmoid
在这里插入图片描述
Sigmoid函数的导数:
在这里插入图片描述
优点:引入非线性
缺点:梯度爆炸和梯度消失;Sigmoid 的 output 不是0均值;其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。

tanh函数

tanh函数解析式:
在这里插入图片描述
在这里插入图片描述
它解决了Sigmoid函数的不是zero-centered输出问题,也可以缓解梯度消失问题,然而,梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。

Relu函数

Relu函数的解析式:
在这里插入图片描述
在这里插入图片描述
ReLU函数在训练的时候,一不小心有可能导致梯度为零。由于ReLU在x<0时梯度为0,这样就导致负的梯度在这个ReLU被置零,这个神经元有可能再也不会被任何数据激活,这个ReLU神经元坏死了,不再对任何数据有所响应。实际操作中,如果设置的learning rate 比较大,那么很有可能网络中的大量的神经元都坏死了。如果开始设置了一个合适的较小的learning rate,这个问题发生的情况其实也不会太频繁。

优点:

1) 解决了gradient vanishing问题 (在正区间)
2)计算速度非常快,只需要判断输入是否大于0
3)收敛速度远快于sigmoid和tanh

问题:
1)ReLU的输出不是zero-centered
2)Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见 (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。

Leaky ReLU函数(PReLU)

在这里插入图片描述
在这里插入图片描述
理论上来讲,Leaky ReLU有ReLU的所有优点,外加不会有Dead ReLU问题,但是在实际操作当中,并没有完全证明Leaky ReLU总是好于ReLU。

ELU (Exponential Linear Units) 函数

在这里插入图片描述
ELU也是为解决ReLU存在的问题而提出,显然,ELU有ReLU的基本所有优点,以及:

不会有Dead ReLU问题
输出的均值接近0,zero-centered

它的一个小问题在于计算量稍大。类似于Leaky ReLU,理论上虽然好于ReLU,但在实际使用中目前并没有好的证据ELU总是优于ReLU。

maxout

参考:https://blog.csdn.net/tyhj_sf/article/details/79932893

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值