BP算法(Background Propagation Alogorithm) 即误差误差逆传播算法的原理算法,是训练多层前馈神经网络的一种最经典的算法通过BP算法可以学得网络的权重和阈值,且具有可靠的收敛性
首先对所用的符号和变量做约定,这里采用《机器学习》中的命名
输入层到隐层的权重以υih表示隐层到输出层的权重以ωhj表示
隐层神经元輸入和输出层神经元输入如图所示
通过前向传播确定误差,再利用反向传播减少误差
优化基于梯度下降法(gradient decenet)进行对参数的更新方式为(其Φη为学习率)
将输入值传入神经网络,逐层将信号前传计算输出层的结果y?
计算输出值y?和yj的误差,通常采用均方误差(mse)
根据优化策略减小输絀误差需要计算误差关于其输入权的梯度,即?Ek?ωhj
利用求导的链式法则(Chain Rule)可以将其展开为
这个表达式初看上去有点复杂,我们可以一步┅步来计算它
这一项是误差对输出求偏导,由上文提到的均方误差公式可以直接求导计算结果为?(y?kj?ykj)
這一项是输出对输入求偏导,即对输出层的激励函数求偏导在这里选用sigmoid函数作为激励函数
具有非常优秀的性质,其中包括导数可用自身表示f′(x)=f(x)(1?f(x))
因此,该项导数可直接写出为=y?kj(1?y?)
这一项是输入对权重求偏导,由图中βj的定义直接计算结果为bh
对于隱层神经元,输入权梯度为
同样地激活函数也为sigmoid,可以快速写出第二项导数
第一项继续运用链式法则先求误差对输入的偏导?Ek?βj,洅求输入对隐层神经元的偏导?βj?bh方法同上
需要注意的是,隐层神经元不能直接确定对误差的影响因此对所有输出神经元都需要考慮输入
(在输出层时只考虑一个待求神经元的输入)
BP算法的精髓在于逐层反向更新权重,基于梯度下降的学习使它具有可靠的学习能力但也同时会被梯度下降算法固有的缺陷所影响,包括
问题1和2涉及到梯度下降法的优化问题解决的方法有
-> 累积误差误差逆传播算法的原理算法
讨论了误差误差逆传播算法的原理算法存在的缺陷 ,并针对其缺陷提出了动态调整学习因子与合理选取激发函数相结合的改进方案
补充资料:逆推学习算法
McClelland)提出来的。用样本数据训练人工神经网络(一种模仿人脑的信息处理系统)它自动地将实际输出值和期望值进行比较,得到误差信号再根据误差信号从后(输出层)向前(输入层)逐层反传,调节各神经层神经元之间的连接权重直至误差减至满足要求为止。反向传播算法的主要特征是中间层能对输出层反传过来的误差进行学习这种算法不能保证训练期间实现全局误差最小,但可以实现局部誤差最小BP算法在图像处理、语音处理、优化等领域得到应用。
说明:补充资料仅用于学习参考请勿用于其它任何用途。