神经网络之 BP 算法
神经网络的一种求解W的算法,分为信号“正向传播(FP)”求损失,“反向传播(BP)”回传误差;根据误差值修改每层的权重,继续迭代
BP算法也叫做δ算法。以三层的感知器为例(假定现在隐层和输出层均存在相同类型的**函数)
输入层误差
隐层误差
输入层误差
误差E有了,那么为了使误差越来越小,可以采用随机梯度下降的方式进行ω和υ的求解,即求得ω和υ使得误差E最小
BP算法的例子
- 初始值:w(0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65), b(0.35,0.65)
- 输出值:O=(0.01,0.99)
- 假设隐层和输出层都使用 sigmoid **函数
- 学习率 η=0.5 \eta=0.5η=0.5
FP过程
同理可以得到:
out
同理可以得到:
输出层误差表示如下:
2、BP 过程
输出层到第二层隐层,以求 为例:
下面我们分别求上式的三个部分,其中第一部分:
第二分部因为:
第三部分,因为:
最终得到:
更新 的值:
同理可以求出:
第二层隐层到第一层隐层,以求 为例:
下面我们分别计算,第一部分()内的:
其中:
注意:这里由于是反向传播,此时要用到之前更新后的 的值
同理:
第二部分:
第三部分:
最终:
于是:
同理求出:
以上是第一次迭代,经过多次迭代,最终的误差会越来越小