首页 / 神经网络 / 神经网络中反向传播算法(BP)
神经网络中反向传播算法(BP)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了神经网络中反向传播算法(BP),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3944字,纯文字阅读大概需要6分钟。
内容图文
神经网络中反向传播算法(BP)
本文只是对BP算法中的一些内容进行一些解释,所以并不是严格的推导,因为我在推导的过程中遇见很多东西,当时不知道为什么要这样,所以本文只是对BP算法中一些东西做点自己的合理性解释,也便于自己理解。
要想看懂本文,要懂什么是神经网络,对前向传播以及神经网络中一些常见定义要熟悉。
为什么是 δ
假如上面是一个神经网络的任意层l和l+1层,那么我们如果进行BP算法,就是相当于把一个损失函数C 对θ 进行偏导数计算,假如现在我要求?θl?C? ,意思就是对第l层和l+1层之间的权重参数 θ 求偏导,但是发现密密麻麻好多的权重值呀,所以求其来非常不方便,所以利用链式求导法则,我把这个偏导数转化一下,转化成 ?zl+1?C??θl?zl+1? ,之所以这样的原因我自己给自己的解释就是为了方便计算,因为zl+1=θlal 所以求这个?θl?zl+1? 就相对比较简单 ,所以就把前面的?zl+1?C? 定义成δl+1 ,这样的话原问题就转化成了计算δl+1 ?θl?zl+1?,而?θl?zl+1? 是一个已知的值,所以关键问题就是求 δl+1 。
δ 的递推
有了上面的解释,就知道了其实δ的作用就是为了简化计算,现在我们原问题就进行了转换,转换成了求δ,比如你要计算 ?θ3?C? 其实关键就是计算出来δ3 就行了,所以这个时候你需要求得所有 δ 的值,这样的话你猜能对所有的θ 就行偏导计算,而有定义δl= ?zl?C? 并不能看出来什么,但是同样我们用链式法则改变一下你就发现了不一样 , δl= ?zl+1?C? ?zl?zl+1? 之所以要进行这样的链式,原因还是为了方便,因为直接求偏导很麻烦,所以进行转换,为什么要换成 ?zl+1?C? ?zl?zl+1? ,是因为 zl+1=θlsigmoid(zl) ,所以求?zl?zl+1? 也是能直接求出来的,所以我们就得到了关于δ 的递推 δl= δl+1 ?zl?zl+1? ,所以整个问题就转化成了如何求δl+1 ,而对于神经网络来说,也就是如何求最后一层的δ 。
至于如何求请看参考中的那篇博文。
问题求解
根据上面的两个解释,就明白了原问题是对θ 的求偏导,我们把这个用链式法则转化求解δ,而对δ的求导我们同样经过链式法则转化成了求最后一层的那个δ值即可,所以整个问题就转换成了最后一层的δ只要求出来了就行,求出之后,我们根据递推公式计算出所有的δ,然后再根据?θl?C?= δl+1 ?θl?zl+1? 就可以求出对所有θ 的偏导了,因为在经过前向传播后 ?θl?zl+1?这个值是可以计算出来的,是一个常数。
所以你再看BP算法,是不是就有点眉目了,知道为什么要先计算δL(L就是最后一层 ), 以及为什么有了δL后其他层的δ 也能计算出来了,以及为什么有了所有的 δ后就能计算所有 θ的偏导了。
总结
本文只是从算法角度宏观分析了一下BP算法中每一步这样做的原因,通过解释可以加深对这个算法的理解,关于这个算法的详细推导参考下面参考中的一篇博文,这篇文章给出了推导方法以及最后一层的δ 的计算以及?θl?zl+1? 、?zl?zl+1? 等值的计算公式,这几个偏导都是常规计算,因为有了zl+1=θlal=θlsigmoid(zl) ,所以偏导数都是可以直接求的。
参考:
https://blog.csdn.net/weixin_40920228/article/details/80709216
内容总结
以上是互联网集市为您收集整理的神经网络中反向传播算法(BP)全部内容,希望文章能够帮你解决神经网络中反向传播算法(BP)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。