CNN、BP算法
来源:互联网 发布:淘宝女装店软文 编辑:程序博客网 时间:2024/05/19 19:41
转载,这个讲解比较清晰,看完就知道CNN、BP算法反向是怎么从倒数第二层计算各层的残差 和net的 w、b 参数的,算完整个网络的链接权值、参数就更新了一遍,经过N此迭代,最终的结果达到一定的程度,就可以停止了,使用当时计算好的权值,也就是网络就可以预测了
http://blog.csdn.net/hungryof/article/details/50436231
首先跟大家说声新年快乐啊,刚刚步入16年啊,啊哈哈。额,您继续看。。
暂时只包含全连接的BP,至于conv的。。
预先说明
由于有些人实在太蠢,没办法只能加上这一段。首先,这里面什么看成变量,什么看成常量。
变量:网络的权值W(偏置b默认在W内。)以及输入X。
常量:就是target
你可能会说呃呃呃,不是输入都是有值得吗,不都是数吗,怎么会是变量啊。。我还能说什么呢?一般来说网络的反向传播就是两种类型。一种是更新网络权值W,这是属于常规的,一种是更新输入X。 不管哪种情况,我们都要把W和X看成变量,才能有反向传播。
推导过程中,W和X都是变量,输出是W和X的函数。
字母说明
W(l)ij :第l 层到第l+1 层的权值,并且是l 层的第j 个单元到l+1 层的第i 个单元的权值。Z(l)i :第l 层的第i 个结点的输入和。
显然Z(l)i=∑s(l−1)j=0Wl−1ijxj , 其中sl−1 代表l−1 层的结点个数(不计算偏置单元)。可以这样说,第0个单元是偏置,1~s(n−1) 是权重项。a(l)i :表示第l 层的第i 个结点的激活值,就是下面说的out的输出,或是说a=f(net) ,写成a=f(z) 也是一样的。δ(l)i : 叫做“残差”,这里表示第l 层的第i 个节点的残差。这个非常重要,残差的定义就是——总的代价函数对于某个节点的“net”的偏导。注意的是这里的“net”指的是W*x+b这样的函数结构。可以这样看网络:
现在只需要看每个结点是如何处理数据的。不要看箭头,可以看到,h1和h2再加上“1”共三个结点输入,构成输入x⃗ , 而相应的权值W⃗ 是w5 ,w6 ,b2 , 也就是说W⃗ ∗x⃗ 就是这里的“net”,然后“out”是指激活后的值,就是f(net) . 残差就是∂E∂net ,*不是∂E∂out 哦!
BP算法细节
参数说明:假设有n层。J表示代价函数,和上面的E是同样的意思,只不过用不同的字母写而已。
1: 首先当然是正向计算咯,分别求出
2: 对于第n层(最后一层是特殊的,必须单独拿出来)每个输出单元
注意:这里最后乘上了对“net”的导,如果是用sigmoid的函数的话,根据
3: 从倒数第二层开始,也就是说
分析:要想知道第
4: 你可能会说要残差干嘛?当然是计算
只要:
结论:求J对“结点j到i的线路”的导数,求出后者i的残差,然后乘以这条线路的流量即可。
分析:其实是这样的,
请仔细看上面的公式,好好理解。
残差的定义就是
注意,第
最后一个问题,为啥
慢慢看,看懂问题不大。
编码
- 进行前馈传导计算,利用前向传导公式,得到
L2,L3,… 直到输出层Ll 的激活值。 - 对输出层(第
l 层),计算:δ(nl)=−(y−a(nl))∙f′(z(nl))
- 对于
l=nl−1,nl−2,nl−3,…,2 的各层,计算:δ(l)=((W(l))Tδ(l+1))∙f′(z(l))
- 计算最终需要的偏导数值:
∇W(l)J(W,b;x,y)=δ(l+1)(a(l))T,∇b(l)J(W,b;x,y)=δ(l+1).
最后说明一点,BP传播,计算各层的各点的残差是关键,残差是总的代价函数对于该点的net的偏导,从倒数第二层开始,求残差就要用到其后面的一层的各个残差,只要用后面一层的各个结点残差乘以其与这一层这个的结点所连接的权值,再求和,最后乘以这一层这个结点的out对net的偏导就可以了。如此一来,残差乘以这个结点的输入,就可以得到整个代价函数对于这个结点的w偏导了。
- CNN、BP算法
- 【深度学习:CNN】BP算法
- 卷积神经网络(二):卷积神经网络CNN的BP算法
- 如何高效的通过BP算法来训练CNN
- 卷积神经网络(二):卷积神经网络CNN的BP算法
- 卷积神经网络(CNN)理论学习之经典BP算法
- 【深度学习:CNN】如何高效的通过BP算法来训练CNN
- BP(反向传播)算法和CNN反向传播算法推导(转载)
- CNN卷积神经网络---反向传播(1,全链接bp算法)
- CNN学习之旅[2]之第一次加副标题的BP算法理解
- AI简单介绍(一)反向传播算法、损失函数、CNN、bp神经网络
- BP算法
- BP算法
- BP算法
- BP算法
- BP算法
- BP算法
- BP算法
- ARM day4 UART传输协议
- CheckStyle插件在eclipse中的安装及配置
- 加密、解密
- 安卓数据库框架——Realm基础学习
- OracleBulkCopy类说明
- CNN、BP算法
- centos oracle
- mysql用户权限设置
- 欢迎使用CSDN-markdown编辑器
- Qt QTreeWidget 树形结构实现
- ECMA-262-5 in detail. Chapter 2. Strict Mode.
- 【Nosql-redis】Linux下php安装Redis扩展
- 负数的二进制表示方法
- 消息队列使用场景