神经网络反向传播(相关公式)

来源:互联网 发布:js 取数组前几个 编辑:程序博客网 时间:2024/06/08 21:41

看了网上的帖子,写的很好,不过我还是想自己整理下,有的地方原来的博主还是有点散了,不过建议先看原博,然后在按照如下思路展开,不然可能有点跳跃。
自己认为下面的思路还是很清晰的,编辑公式就花了我好长时间啊。。。

正向传播是为了计算net out的值
反向传播
这里写图片描述

(1)隐含层—->输出层

EtotalW5=Etotalouto1outo1neto1neto1w5=δo1neto1w5=δo1outh1

在这里δo1=Etotalouto1outo1neto1

Etotalouto1outo1neto1=δo1=Etotalneto1=(Eo1outo1+Eo2outo1)outo1neto1=(Eo1outo1+0)outo1neto1=[(targeto1outo1)][outo1(1outo1)]

因此原式带入后:

EtotalW5=Etotalouto1outo1neto1neto1w5=δo1outh1=[(targeto1outo1)outo1(1outo1)][outh1]

(2)隐含层—->隐含层

EtotalW1=Etotalouth1outh1neth1neth1w1

这里的Etotalouth1

Etotalouth1=Eo1outh1+Eo2outh1=(Eo1neto1neto1outh1)+(Eo2neto2neto2outh1)=[(Eo1outo1outo1neto1)neto1outh1]+[(Eo2outo2Eo2outo2)neto2outh1]=[(targeto1outo1)outo1(1outo1)w5]+[(targeto2outo2)outo2(1outo2)w6]

为了简化公式记δ(h1)表示隐含层单元h1的误差为

Etotalw1=i=12[(Etotaloutoioutoinetoi)netoiouth1]outh1neth1neth1w1=i[δoiwh?][outh1(1outh1)][i1]=δh1i1

这里的δ和链接顶部的公式是同一个公式,所以为什么偏导是这样的也就解释清楚了,当然在链接也给出了形式化的证明

对比这上面两个,可以发现两个后面的红色字体部分是一样的,只不过针对两个层需要稍微改动点,并且两个偏导数的形式是一样的