ReLU和BN层简析

卷积神经网络中,若不采用非线性激活,会导致神经网络只能拟合线性可分的数据,因此通常会在卷积操作后,添加非线性激活单元,其中包括logistic-sigmoid、tanh-sigmoid、ReLU等。

sigmoid激活函数应用于深度神经网络中,存在一定的局限性,当数据落在左右饱和区间时,会导致导数接近0,在卷积神经网络反向传播中,每层都需要乘上激活函数的导数,由于导数太小,这样经过几次传播后,靠前的网络层中的权重很难得到很好的更新,这就是常见的梯度消失问题。这也是ReLU被使用于深度神经网络中的一个重要原因。

在之前的学习中,我一直认为ReLU的应用,仅仅是因为在非零区间中,ReLU的导数为1,可以很好的传递反向传播中的误差。最近被问到Dead ReLU问题,于是复习了一下,网上有很多有用的材料,将列在参考材料中,我在这里总结一下。

1. ReLU与生物神经元激活的联系

在我的理解中,人工神经网络的发明,是受到生物神经网络的启发。2001年,神经科学家Dayan、Abott从生物学角度,模拟出了脑神经元接受信号更精确的激活模型,该模型如图所示:图片来源于参考材料

                                           

从图中我们可以看到,生物神经元的激活与Sigmoid的不同,(1)单边抑制 (2)兴奋区域较大 (3)稀疏激活性

2003年Lennie等人估测大脑同时被激活的神经元只有1~4%,进一步表明神经元工作的稀疏性。

而在Sigmoid激活中,神经网络中约有一半的神经元被激活了,这可以看出与模拟生物神经网络的想法相违背。

ReLU在负区间中为0,相当于使数据稀疏了,符合生物神经网络的规律。

 

2. Dead ReLU

若数据落在负区间中,ReLU的结果为0,导数也是0,就会导致反向传播无法将误差传递到这个神经元上,这会导致该神经元永远不会被激活,导致Dead ReLU问题。

解决方法:

1)Leraning Rate

导致Dead ReLU问题的其中一个潜在因素为Learning Rate太大,假设在某次更新中,误差非常大,这时候若LR也很大,会导致权重参数更新后,神经元的数据变化剧烈,若该层中多数神经元的输出向负区间偏向很大,导致了大部分权重无法更新,会陷入Dead ReLU问题中。

当然,小learning rate也是有可能会导致Dead ReLU问题的,于是出现了Leaky ReLU和PReLU。

2)Leaky ReLU

普通的ReLU为:

                            &n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值