本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
本文讲解梯度下降算法求解BP神经网络的算法思路与流程,
具体实现代码可参考《梯度下降法求解BP的简单DEMO》
本节简单回顾梯度下降法的原理与流程
梯度下降算法原理-回顾
梯度下降算法的思想是先初始化先初始化一个初始解,
然后不断地根据目标函数L的梯度下降方向,调整x,最后达到局部最优值。
其原理如下:
算法更详细的介绍请看《梯度下降算法原理》
本节展示梯度下降算法求解BP神经网络的算法流程
梯度下降求解BP神经网络-算法主流程
梯度下降求解BP神经网络的算法流程如下:
1. 先初始化W,b
2. 按照梯度公式算出梯度
3. 将W和b往负梯度方向调整
4. 不断循环(1)(2)(3),直到达到终止条件
终止条件为:达到最大迭代次数,或误差足够小
BP神经网络的梯度公式
梯度下降法在迭代过程使用到了BP神经网络的误差函数E(W,b)的梯度,
我们需要求出它的梯度公式
我们这里以一个隐层,隐层激活函数为tansig,输出层激活函数为purelin为例,
梯度公式为:
输出层梯度公式
输出层权重梯度:
输出层阈值梯度:
隐层梯度公式
隐层权重梯度:
隐层阈值梯度:
✍️符号说明
为样本个数、输出个数
是第m个样本第k个输出的误差
是第m个样本第i个隐节点的激活值
是第m个样本第i个输入
✍️详细推导过程可见《BP神经网络的梯度公式推导》
笔者语
使用梯度法训练BP神经网络,整个训练算法流程很简单,
较复杂的地方就仅在求梯度的公式而已,其它按照梯度下降算法的流程就可以了
End