BP(backpropagation)神经网络学习笔记
w:权重
θ:偏向
以下是我对B-P神经网络的理解:BP神经网络由3个层组成。上图是一个二层神经网络,下一层的输出都是由上一层计算得来
,最后得出输出层的输出即上图第六个小圆。然后再由此往回递推,计算出新的权重和偏向并更新。以此来减小误差。
注:其实我没搞明白神经网络算法的目的是为了什么,我考完试就更新此项。
接下来一步一步整理该算法的计算步骤:
从左往右:
已知:w,θ,输入层数据。
未知:4,5,6的输出,设为O4,O5,O6。
以O4为例:
I4=x1*w14+…+x3*w34+θ4
O4=1/(1+e-I4)
注:我看了两篇实现BP网络算法的代码,都没有加上偏向(θ),所以这个偏向是可加不可加的吗?
I:上一层数据与权重(w)相乘再加上偏向(θ)的值;
接下来我们对I这个值进行非线性转化得到各层的输出公式;
即:
O=1/(1+e-I)
从右往左:接下来反向递推出权重和偏向。
首先计算误差:
对于输出层:E6=O6(1-O6)(T6-O6)
T:输出层的标签值,我看过很多关于BP的介绍,我一直以为只有输入层才会初始化,一直没理解输出层也会初始化,写博客也一直卡在这。所以T是程序一开始对输出层的赋值。
所以关于输出层的误差公式是:Ej=Oj(1-Oj)(Tj-Oj)
对于隐藏层误差公式:
Ej=Oj(1-Oj)∑\sum∑wjkEk
Ek是下一层的误差。
对于权重和偏向的更新:
Δ\DeltaΔwij=lrEjOj
wij=wij+Δ\DeltaΔwij
lr:学习率(learning rate)
此公式中的误差和输出都是对应和权重相连的那个节点。
Δ\DeltaΔθ=lrEj
θ=θ+Δ\DeltaΔθ
以上内容就是BP算法的计算步骤。
终止整个算法的条件:
1.设置循环次数。
2.权重的更新低于某个值。
3.误差低于某个值。
注:初始的权重,偏向以及学习率都是自己设置的,学习率不需要更新。权重和偏向都是在-1~1或 0.5~-0.5之间。
学习率是0~1之间。