画图和编辑公式实在是太麻烦了,我就写在纸上吧
一、BP推导
一个简单的神经网络:
正向传播:
1.输入层---->隐藏层:
这里我们要把得到的值通过sigmoid激活一下:
2.隐藏层---->输出层:同理
这样我们就得到了输出值out(o1)和out(o2),此时这两个输出值和我们预想的输出值肯定相差甚远(可以自己设定几个数试一试)那么我们就要进行反向传播来修正w以此来修正输出值。
反向传播:
1.我们所期望的数据和输出数据的误差:
2.隐含层---->输出层的权值更新:
以w5为例,我们想知道w5对整体误差产生了多少影响
那么我们再拆分看每一项:
我们现在更新W5(lr是学习率):
W6,W7,W8更新同理……
3.隐含层---->隐含层的权值更新(以更新W1为例):
我们先简化一下网络,看的更清楚一些。这个稍微有一点复杂……
这看着很复杂,静下心来,自己写一遍就很清楚了,其实挺简单的
最后更新W1:
二、BP代码
最后附上代码:
import numpy