900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > BP算法推导公式

BP算法推导公式

时间:2023-05-13 16:28:59

相关推荐

BP算法推导公式

最近在做一个超分辨率的小项目,碰到了关于BP反向传播的问题。于是,就好好查阅了关于BP算法的知识。以前看周志华老师的西瓜书和李航老师的统计学习方法的时候,因为看到公式字母一大堆,就没认真推导。总想着只要能调用公式代码即可,现在就越发觉得基本功的重要性。很多基础知识你只有深刻理解了,写起代码来才不会迷糊。咳咳咳,鸡汤就熬到这儿哈,我们马上进入正题。

我在网上找到了好几篇关于BP算法推导的文章。第一篇是Matt Mazur的例子,这篇文章应该是最早最详细的了。作者是给出了一组例子,可能会更详细。包括还有EdisonGzq这位大佬的文章,也是很详细清楚了。本篇文章主要是记录自己的推导过程为主,并且讲解些自己碰到的小问题。

首先,话不多说直接上传自己的手写推导过程稿子。

其实,正如我前面提到的。BP算法的原理很简单,就是分为前向传播和反向传播。前向传播用来计算整个卷积过程的输出值以及相应的误差值。反向传播则是想把误差值平摊至每个参数上,使得最终的输出值越来越逼近标签值。前向传播的计算过程没什么难度。反向传播的计算过程主要就是对权重w和偏置项b的求导了。

这里是采用梯度下降的方法来更新权值,说到梯度下降方法,我还写了一篇关于这方面的文章,大家感兴趣可以看看。

求导过程中另外就是用了链式法则来求导。原理一说是不是觉得就很easy了,没错,其实就是这么简单哈哈哈哈哈哈哈。 另外就是看到了一个关于反向传播的小例子,我觉得很有意思。

如果把上图中的箭头表示欠钱的关系,即c→e表示e欠c的钱。以a, b为例,直接计算e对它们俩的偏导相当于a, b各自去讨薪。a向c讨薪,c说e欠我钱,你向他要。于是a又跨过c去找e。b先向c讨薪,同样又转向e,b又向d讨薪,再次转向e。可以看到,追款之路,充满艰辛,而且还有重复,即a, b 都从c转向e。

而BP算法就是主动还款。e把所欠之钱还给c,d。c,d收到钱,乐呵地把钱转发给了a,b,皆大欢喜。

其实最后还有一个问题,我还没有想明白。

比如像这样的网络结构。RDB是一个残差块,大家可以理解为连续的卷积层,DeConv就是反卷积层了,这里我采用的是transposed convolution. 我这个网络其实类似于两层结构,也就是做两次反卷积操作。但最后优化损失函数的时候,得反向传播两次。如果是只有最后一层的话,损失值是不能收敛的。我现在还没想清楚,如果有读者有好的建议的话,还希望不吝赐教啊!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。