ReLU和BN层简析[通俗易懂]

ReLU和BN层简析[通俗易懂]卷积神经网络中,若不采用非线性激活,会导致神经网络只能拟合线性可分的数据,因此通常会在卷积操作后,添加非线性激活单元,其中包括logistic-sigmoid、tanh-sigmoid、ReLU等。sigmoid激活函数应用于深度神经网络中,存在一定的局限性,当数据落在左右饱和区间时,会导致导数接近0,在卷积神经网络反向传播中,每层都需要乘上激活函数的导数,由于导数太小,这样经过几次传播后,靠…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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

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

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

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

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

                                           ReLU和BN层简析[通俗易懂]

从图中我们可以看到,生物神经元的激活与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为:

                                                                        

Leaky ReLU为:

​​​​​​​                                    ​​​​​​​                                    

其中\alpha取一个很小的数,作者的默认值为0.01,这样可以保证输出小于0的神经元也会进行很小幅度的更新。

3)PReLU

PReLU是Leaky ReLU的进一步优化版,公式表达为:

​​​​​​​                                    ​​​​​​​                                   

其中\alpha是一个可以学习的参数,更新是反向传播使用的是momentum来更新,更新方式如下:

​​​​​​​                                    ​​​​​​​                                   \bigtriangleup \alpha _{i} = \mu \bigtriangleup \alpha _{i} +\epsilon\frac{\partial \varepsilon }{\partial \alpha _{i}}

​​​​​​​                                    ​​​​​​​                                  \frac{\partial \varepsilon }{\partial \alpha _{i}} = \sum_{y_{i}}^{ }\frac{\partial \varepsilon }{\partial f(y_{i})}\frac{\partial f(y_{i})}{\partial \alpha _{i}}

其中\mu为动量,\varepsilon为学习率。文章中\alpha初始化为0.25,且不添加正则化,因为\alpha​​​​​​​很有可能会很大可能被置0,变成ReLU。

3. Batch Normalization

SegNet网络简析的博文中,我提到过BN层的基本操作和作用。

BN层的出现,主要是为了解决机器学习IID问题,即训练集和测试集保持独立同分布。如果输入的分布不能保持稳定,那么训练就会很难收敛,而在图像处理领域的白化处理,即将输入数据转换为以0为均值,1为方差的正态分布。这样能够让神经网络更快更好的收敛,而这就是BN层所要做的。

“深度神经网络之所以收敛慢,是由于输入的分布逐渐向非线性函数的两端靠拢”,而BN层的作用,就是将输入的分布,拉回到均值为0,方差为1的正态分布上,这样就使输入激活函数的值,在反向传播史能够产生更明显的梯度,更容易收敛,避免了梯度消失的问题。之所以能够在反向传播时产生更明显的变化,我们将输入分布变为标准正态分布后,输入的值靠近中心的概率会变大,若我们的激活函数为sigmoid函数,那么即使输入存在微小的变化,也能够在反向传播时产生很明显的变化。

                                                    ReLU和BN层简析[通俗易懂]

每层神经网络在线性激活后,通过如下公式进行转换,这个转换就是BN层的操作。

                                                                           ReLU和BN层简析[通俗易懂]

公式中的x是经过该层线性变换后的值,即x = wu+b,u为上一层神经层的输出。

通过这个操作,将输入非线性激活函数的输入值,尽量拉伸到变化较大的区域,即激活函数中间区域。这样能够增大激活函数的导数值,使收敛更快速。而这样也会引入一个问题,强行变换分布后,会导致部分特征无法学习到,因此引入了另一种操作Scale,操作如下:

                                                                          ReLU和BN层简析[通俗易懂]

mean和variance是不会进行学习的,而gamma和beta两个参数是可以通过反向传播学习的,通过这两个参数对数据进行扩大和平移,恢复部分特征的分布。

BN层的主要功能总结为两点:

1)归一化scale

没有BN层时,若LR设置较大,在配合ReLU激活函数时,容易出现Dead ReLU问题。

2)数据初始化集中,缓解overfitting(这里还理解得不是很透彻)

Overfitting主要发生在一些较远的便捷点,BN操作可以使初始化数据在数据内部。

通常提到BN层,我们会想到,若使用sigmoid激活函数时,它可以将数据归一化到梯度较大的区域,便于梯度更新。

但很少有人提到BN层和ReLU的联系,https://blog.csdn.net/wfei101/article/details/79997708这篇转载文章中有提到。

在BN中的gamma对于ReLU的影响很小,因为数值的收缩,不会影响是否大于0。但是如果没有偏移量beta,就会出现数据分布在以0为中心的位置,强行将一半的神经元输出置零。因此偏移量beta是必不可少的。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183993.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【论文笔记】A Multi-Task Learning Formulation for Predicting Disease Progression「建议收藏」

    AMulti-TaskLearningFormulationforPredictingDiseaseProgression论文地址摘要1.介绍2.多任务回归方程2.1时间平滑先验2.2解决数据不完整问题2.3LASSO时间群正则2.3.1纵向(时间项)稳定特征选择2.4本文算法3.实验4.结论论文地址AMulti-TaskLearningFormulati…

    2022年4月16日
    39
  • Apache Struts2打开重定向/命令执行 CVE-2013-2251「建议收藏」

    Apache Struts2打开重定向/命令执行 CVE-2013-2251「建议收藏」昨日,著名JavaWeb框架Struts官方再发高危安全漏洞补丁升级(最新版本为:2.3.15.1),升级修补了多个安全漏洞,其中包括一个远程任意代码的高危安全漏洞,这些漏洞可以影响到Struts2.0.0-Struts2.3.15的所有版本。攻击者可以利用该漏洞,执行恶意Java代码,最终导致网站数据被窃取、网页被篡改等严重后果。基于Struts2使用广泛,目前很多网站还没有升级,另外

    2022年7月13日
    18
  • mt4平台交易系统下载_mt4软件下载工具

    mt4平台交易系统下载_mt4软件下载工具我们在使用ea回测的时候,如果使用自带的数据回测,因为数据质量问题,无法回测出ea的实际盈亏能力。这时就需要一个高质量的数据来回测,而自带的数据往往不能满足这一点我今天要介绍的是一款tickstory的数据下载。以英镑美元为例:1、选中你要下载的货币对,右键,选择导出mt4中。2、选择导出的时间范围,最高可以10年。3、选择时间周期,按照默认的就行。4、选择…

    2022年8月15日
    8
  • CSS 图片去色处理

    CSS 图片去色处理说到对图片进行处理,我们经常会想到PhotoShop这类的图像处理工具。作为前端开发者,我们经常会需要处理一些特效,例如根据不同的状态,让图标显示不同的颜色。或者是hover的时候,对图片的对比度,阴影进行处理。//黑白色img{transition:all.3sease;filter:grayscale(100%);opacity:.6;}//正常颜色img:hover{filter:none;opacity:1;

    2022年10月6日
    4
  • 电商网站的搭建研究报告_连连跨境电商网站构建

    电商网站的搭建研究报告_连连跨境电商网站构建电商网站的搭建研究Researchontheconstructionofe-commercewebsite摘要互联网给全世界提供了最强大的网络平台,在互联网上不仅能同时快速传递大量的信息(数据、文件),而且还实现了网络营销、电子支付,提供各种新型的服务。经济全球化的发展态势和全球经济贸易的规模发展迫切需要一种新型的经济运作模式和商业运营模式。随着互联网的普及,还有各大电商平…

    2022年10月1日
    3
  • 设计模式之桥接(bridge)模式

    在现实生活中,我们常常会用到两种或多种类型的笔,比如毛笔和蜡笔。假设我们需要大、中、小三种类型的画笔来绘制12中不同的颜色,如果我们使用蜡笔,需要准备3*12=36支。但如果使用毛笔的话,只需要提供3

    2021年12月19日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号