BP反向传播算法

版权声明:本文为博主原创文章,欢迎转载,要是能注明出处就更好了 https://blog.csdn.net/xieyi4650/article/details/52973299

前言:

本来想把自己报告的ppt写成博客,后来公式打起来太麻烦了,不想再敲第二遍了。写一篇深入浅出,图文并茂的博客好难。


可以看斯坦福cs231n的课程,因为我发现很多人的博客的图和公式直接是截的那边的图。
http://cs231n.stanford.edu/syllabus.html


youtube上没有英文字幕,但是youtube会提供自动生成英文字幕,我的英文水平比较渣,有英文字幕还是听不懂,后来发现在网页上可以用0.5倍的速度观看。这个时候还可以。就算不看视频,看看ppt也是极好的。

正文:

BP反向传播算法明白了之后其实是比较简单,现在想想一开始阻碍自己明白的就是向量化的那种表达形式。
组会要做报告,做了一天的ppt,敲了很多公式,想写一篇日志发现已经无力再把那么多公式敲一遍了。简要的记录一发
首先是基本思想,求导的链式法则对于f(t)=f(u(t),v(t)),对f求偏导数ft=fuut+fvvt,其次要记住的一点就是对谁求偏导数,那么就把这个数当做变量,其他的都是常量。所以,对于f(t)=f(u(t1),v(t2))来说,ft1=fuut1
BP算法就是基于上述的原理来进行求偏导的。看下面的简单例子:
神经网络图
假如现在要求JW(3)21也就是图中红色线的部分,J是损失函数。那么就要找到J中所有和W(3)21有关系的量。我们把图再拆解一下,如下图:
拆解图
进一步拆解如下图:
这里写图片描述
红色部分就是和W(3)21
可以看到第一个包含W(3)21的是z(4)2,所以,

fw(3)21=a(3)1Jz(4)2
接下来求后半部分Jz(4)2,包含后半分的在图中也标出来了。所以,
Jz(4)2=Ja(4)2a(4)2z(4)2=a(4)2z(4)2iJz(5)iW(4)i2

这个时候考虑到Jz(4)2和\frac{\partial J}{\partial z^{(5)}_2}的形式一样,所以,可以确定,在得知前一层的Jz(l)后可以求得后一层的偏导数。

展开阅读全文

没有更多推荐了,返回首页