基于BP的误差反向传播/Max-pooling反向传播

研一主要学习神经网络的知识,导师也有为我们推导过反向传播的公式,但总是不能长期有深刻的印象,用的细节的东西还是需要翻翻笔记,这次有一个池化层(max-pooling)求导的问题有疑惑,故对BP反向传播进行复习,发现了一篇文章记载得特别清楚,且生动形象,故将总体思路在此概括。

原文地址为“https://www.cnblogs.com/charlotte77/p/5629865.html”

我以自己理解的思路为主,进行了下面的整理.

针对下面这样一个单隐层网络,i1,i2是输入,h1,h2是隐含层,o1,o2是输出层,下面有对应的输入输出和各层初始权重,b是偏置.


前向传播

i→h的前向传播公式为(sigmoid为激活函数):



类似可得到

h→o的前向传播公式为(sigmoid为激活函数):



反向传播

总误差为:


反向传播的目的就是为了利用总误差来调整前几层的权重,如果是SGD优化算法,那就是为了求得公式中的未知项(以w5为例)。

下面以w5和w1为例。

w5:


前文的前向传播公式使得w5,net(o1)是函数关系,net(o1)和Out(o1)是函数关系,如果要求,由于其之间无直接函数关系但有间接函数关系,故而可以由链式法则求解:


由前面前向传播的公式就能很容易求出,并更新w5.

w1:


要求中的,前向的函数关系是w1→net(h1)→out(h1)→E(total) 反向传播是E(total)→out(h1)---->net(h1)---->w1,链式法则公式为:


其中这个根据前向传播公式很方便求解,而又无法直接连接,out(h1)→net(o1)out(h1)又可以串起来,则



类似求,由此得到,最后更新w1的权重(同一层的权重更新方式雷同)。

解决池化层求导问题:

卷积后的X→经过池化之后→得到Y。

池化层没有权值,故不需要更新,而在更新卷积的权重时,正如更新前述w1的权值类似,需要由总误差对X求偏导数()而此就需要总误差对池化层的输入求导,故而池化处的反向传播,只需对输入参数求导,不需要进行权值更新。也就是:

设L为总误差,


fasle表示不被选择输出,即非最大值或该点不在池化框框范围内.

一个输入节点可能和多个输出节点相连。设X(i)为输入层的节点,y(rj)为第r个候选区域的第j个输出节点输出节点


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值