深度学习神经网络系列第一讲-bp神经网络_第1页
深度学习神经网络系列第一讲-bp神经网络_第2页
深度学习神经网络系列第一讲-bp神经网络_第3页
深度学习神经网络系列第一讲-bp神经网络_第4页
深度学习神经网络系列第一讲-bp神经网络_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 深度学习神经网络系列课程无关部分自我介绍: 本人,姓名:黄海安,网名:深度眸,南京航空航天大学硕士,业余工程师各位朋友可以通过以下方式获取前面的视频和文档 (1) 关注:机器学习算法全栈工程师 微信公众号,后续我的文章和视频会首先发布在上面,其二维码为: (2) 加我个人的 QQ 群,ML 和 DL 视频分享群(678455658)。在群里大家可以对本视频提出任何意见 (3) 知乎、简书、倔金、腾讯视频网站、其他公众号和其他一些网站等欢迎各位提出宝贵意见 第一讲:BP 神经网络-从推导到实现摘要本文详细讲解 BP 神经网络,包括公式推导到具体实现。本次分享的内容来自两本书:(1) ;(2)

2、,故可以认为是读书分享笔记,大家如果对本次分享的内容有疑问,可以参照书籍进行详细阅读。 由于代码部分文字不好表达,故本人录制了对应的视频讲解,视频内容主要包括:(1) BP 神经网络推导步骤讲解(由于公式较复杂,建议大家看一下本文视频,便于理解);(2) BP 神经网络代码讲解;(3) 书籍重点内容讲解。由于本人水平有限,如果有错误,欢迎纠正。 第二讲:深度理解神经网络 or 基于Tensorflow 的BP 神经网络代码讲解 1、BP 神经网络结构与原理L1L2L3L4z(2)a(2)z(3)a(3)1111w(1)11w(3)w(2)1121x(1)w211w(1)31(2)(2)z2a2

3、z(3)z(4)a(4) a(3)2112w(1)(1)b112x2h ( X )( )w,b2wb(1)242w(3)a(2)(2)(4)(4) z3z(3)a(3)23z2a1333w(1)w(2)x34343b(1)3b(3)2a(3)z(3)(2)(2)z4a4b(2)44b(1)34+1+1+1由于 BP 神经网络参数超级多,如果不先定义好变量,后面非常难理解,故针对上述图形,定义如下: (1) nl :表示网络层数,此处为 4(2) Ll :表示第l 层, L1是输入层, Ln 是输出层,其他为隐含层 l(3) w :(l) 表示第l +1 层第i 个单元与第l 层第 j 个单元的

4、连接权重必须要记住 ij(4) b(l) :表示第l 层第i 个单元的偏置项(激活阈值)i(5) z(l) :表示第l 层第i 个单元的权重累计 i (6) a(l) :表示第l 层第i 个单元的激活值(输出值)ihw,b ( X ):表示最后的输出值(7)(8) Sl :表示第l 层的神经元个数 (9) 样本个数为m ,特征个数为n 通过上面的定义可知: 第一层: 当l = 1时候, a(1) = xii第二层:()4z(2)() ( 1)()=w a+ b1111 jj1j =1()(2)(2)a=f z11f w( x(1)+ w(1) x + w(1) x)a(2) =()+ b122

5、1 122 22332f w( x(1)+ w(1) x + w(1) x + b)a(2) =()1441 142 243 34第三层:()4= z(3)() ()()w a+ b22211 jj1j=1()( )( )a= f z3311第四层:()4= z(4)(3) (3)(3)+ bw a11 jj1j =1a()T( X )=(4)(4)h, aw.b122、BP 神经网络公式推导对于单个样本:代价函数为J (w, b; x, y) = 1h(x)- y 2w,b2对于全部样本:代价函数如下l nl -1 Sl 1 J (w, b; x , y ) +Sl+1()m2J (w, b

6、) = (i)(i)(l)wji m2l =1 i=1 j=1i=1l= 11hw,b (x)- yn -1 Sll Sl+1()m22(i)(i)(l)+wji m22l =1 i=1 j=1i=1和( l )第一项是均方差项(经验风险),第二项是正则项。可以看出,代价函数是关于所有权重 wij偏置b (的l ) 方程,要通过求代价函数最小来得到最佳的权重 ( )( )llw 和偏置b ,可以采用梯度下 i降法逐步下降迭代得到,具体为:iji ()w(l)( )= w-alJ w,bw(l )ijijijJ (w,b)b(l)( )= b-al()iilbi现在就是要求各权重 w(l) 和偏

7、置b(l) 的偏导,直接求上述式子会发现非常困难,而 BP 反向传 iji播算法就是一种方便的求解偏导数的方法,可以认为是一种从后往前找规律的方法,下面开始推导:对于第l 层的参数,可以容易得到 + 1 ()m(l) J (w, b) = (i)(i)(l)lJw, b; x , yw()ijwijmlwi=1ij= 1 J()m()(i)(i)w,bJw, b; x , y(l)() mlbbi=1ii现在的问题转化为求每个样本情况下的代价函数关于各权重 w(l) 和偏置b(l) 的偏导,通过观iji察不难发现:对于任何一个样本均有J (w, b; x, y) = 1h(x)- y 2w,b

8、2而hw,b ( x) 是关于上一层的 w 和b 的函数,故可以考虑从最后一层开始算起,看能否找到规律,即有 1J (w,b) =2anl- y()()n -1n -12wwllijij注意:按照上述定义,对于nl 层的 BP 神经网络, w 和b 的参数上标只能取得nl -1。Snl1()2k( )=a- ynl()n -1k2wlk =1ijSnl(kk )1()2( )=f z- ynl()n -12wlk =1ij并且有:Snl -1z(n)l() ()()n -1n -1n -1=w+ balllkkppkp=1依据链式法则:z(nl )(kk )Snl()12J (w,b) =(

9、)f z- yn il()(ni)()n -1n -12wwzlllk =1ijijz(nl )= f z()- y fz)(n )(n)illi (n -1)iiwlij()() ()()()n -1=f z-nyfzanllli iij此时设:()()(n )(n )(n )d=f z-yfzllli iii(n )(n )z都是一直的,故d此时已经唯一确定了,而前面y 和 对于最后一层,由于映射函数、 lliii几层的依然未知。下面来推导倒数第二层: z(nl -1)Snl(kk )1()2J (w,b) =( )n- y if zl()()()n -2n -1n -22wzwlllk

10、=1ijiijSnl(k )()12(n )(n -2 )=- yf zall()-1kj2znlk =1i( f (zk )1)- y即可,使用链式法则2(n )下面只需要求l2 z(nl -1)ki(kk )(kk )()()f z()1122( )( )(n)f z- y=nf z- ynlll()()()n -1(n)lkn -1kz22 f zzllii()()f z()(n )(n )= f z- yllz(nl -1)kkki()(n )注意:k 表示当前层数的第k 个神经元,而第k 个神经元的 f z受到前一层的所有的第ilk个 z(nl -1) 影响,故有:i(y )() (

11、)()()()z(nl)(n )(n )(n )(n )f z-f z= f z- yf zllllz(nl -1)z(nl )z(nl -1)kkkkkkkiki(k )()()(n )(n )(n )= f z- yfzzlllz(nl -1)kkkiSnl -1()( )()()(j)= dn -1n -1n -1n+ bwf zllllz(nl -1)kijjj=1i()(n )(n -1)(n)= d w-1fzlllkkii可能很多人奇怪 w(nl -1) 是如何得来,其实k 是 n 层的第k 个神经元,而i 是 n-1的第i 个神 kill经元,经过上述求导,其实就是n 层的第k

12、 个神经元和n -1的第i 个神经元的权重 w(nl -1) 与 llki()(n -1)fzl的乘积。故iSnl()()( ) w(nl-1) ()()J w, b =dn -1n -2nfzalll()n -2kkiijwlk =1ij可以进一步归纳出:S()l+1(l+1)(l)( )d =d wfllzikkiik =1从而得到: J (w, b; x, y )=( ) ( )a dll +1w(l)jiijJ (w, b; x, y )= d(l)+1i(l)bi最终的梯度下降方程为:(l)(l)(l ) (l +1 )w= w- a a dij(l)ij(l)ji( )= b-a

13、dl +1biii故 BP 神经网络的完整流程如下: 1、进行前向传导计算,得到 L2, L3,Lln 的激活函数值 l2、对于最后一层即n 层,计算误差d (nl )l()()(n )(n )(n )d= - y - afzllliiii3、对l = nl -1, nl - 2, nl - 3,L, 2S()l+1i( )()( )d =dl +1l wfzlljjiij=14、权重和偏置更新,此处的l =1 时候, a(1) 实际上就是输入 x()()() ( l +1)w= w- a a dlllijijji(i()()b= b-a dl +1llii如果考虑正则化,则权重的更新方程为(

14、l)(l)()(l ) (l +1 )w= w1- al -a a dijijji3、BP 神经网络的第一种实现采用误差平方和作为损失函数,基于反向传播算法推导,可得最终的 4 个方程式,如下: ()()()()()d= - y - a fznnnllliiiiS()l+1i j()()()d =dl +1 wfzllljiij=1 ()( ) ( )a dll +1J w, b; x, y =w(l)jiijJ (w, b; x, y )= d(l)+1i(l)bi由于代码较长,此处只贴核心代码,请阅读完整代码或者看视频讲解。3.1 前向计算 3.2 反向传播 4、BP 神经网络的改进和第二

15、种实现4.1 BP 神经网络改进 4.1.1 交叉熵代价函数 “严重错误”导致学习缓慢,如果在初始化权重和偏置时,故意产生一个背离预期较大的输出,那么训练网络的过程中需要用很多次迭代,才能抵消掉这种背离,恢复正常的学习。(1) 引入交叉熵代价函数目的是解决一些实例在刚开始训练时学习得非常慢的问题,其 主要针对激活函数为 Sigmod 函数 (2) 如果采用一种不会出现饱和状态的激活函数,那么可以继续使用误差平方和作为损 失函数 (3)如果在输出神经元是S 型神经元时,交叉熵一般都是更好的选择 (4) 输出神经元是线性的那么二次代价函数不再会导致学习速度下降的问题。在此情形下,二次代价函数就是一种合适的选择(5)(6)(7)交叉熵无法改善隐藏层中神经元发生的学习缓慢 交叉熵损失函数只对网络输出“明显背离预期”时发生的学习缓慢有改善效果 应用交叉熵损失并不能改善或避免神经元饱和,而是当输出层神经元发生饱和时, 能够避免其学习缓慢的问题。4.1.2 4 种规范化技术 (1) 早停止。跟踪验证数据集上的准确率随训练变化情况。如果我们看到验证数据上的准确率不再提升,那么我们就停止训练 (2)(3)(4)正则化 弃权(Dropout) 扩增样本集 4.1.3 更好的权重初始化方法 不好的权重初始化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论