一、BP神经网络的概念
误差逆传播简称BP算法,BP神经网络是一种多层的前馈神经网络,其主要特点是:信号前向传播,误差反向传播。如下图为只含一层的隐含层的卷积神经网络。
其大致工作流程为:
第一阶段是信号的前向传播,从输入层经过隐含层,最后达到输出层;第二阶段是误差(各边权重w和阈值)的反向传播,从输出层到隐含层,最后到输入层,依次调节各层相连边的权重的阈值。
二、BP神经网络流程
神经网络的基本组成单元为神经元。具体模型如下图:
其中常见激活函数有:sigmoid函数、Relu函数、Tanh函数等。
神经元的输出为:
其中w代表各边的权值,初始值一般为随机给出,后续根据反馈慢慢调节。
BP神经网络模型中,为了便于讨论,假设只有一层隐含层,即有输入层、隐含层、输出层三层结构。设输入层到隐含层的权重为 Vih,隐含层第h个神经元的阈值为Yh。隐含层到输出层的权值为Whj,输出层第j个神经元的阈值用 θj表示。在如下图中,有d个输入神经元,q个隐含层神经元,对应q个隐含神经元阈值,l个输出神经元,l个对应的输出神经元阈值。
其中βj中的bh= f (αh − γh) 。即也为隐含层的输出结果。同理得出输出层的输出结果为Yj = f(Bj - θj) ,其中f函数为相应的激活函数。
计算出输出结果和实际结果的方差得到误差率
然后进行反向传播减小误差。减小误差的方法为梯度下降法。此处引入另一概念学习率。
学习率是为了控制算法每一轮迭代的更新步长。若太大则容易振荡,若太小则训练速度过慢。
根据周志华西瓜书p103书上的推导,得出各层权重和阈值的更新公式。
最后总体流程总结如下:
输入:训练集D
学习率初始值
过程:
1、在(0,1)之间随机初始化网络中所有的权重和阈值
2、repeat
3、 for all (Xk,Yk) 属于 D do
4、 根据当前参数计算输出层最终输出Y;
5、 根据P103中公式(5.10)计算输出层神经元的梯度项;
6、 根据p104中公式(5.15)计算隐含层神经元的梯度项;
7、 根据P103中公式(5.10)到(5.14)更新各权值w和阈值。
8、 end for
9、until 达到停止条件
上述停止条件一般为预测值和实际值之间的误差。