本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
本文讲解BP神经网络的误差函数、BP的训练方法及梯度下降法训练BP的流程
BP神经网络模型表达式
在确定了BP神经网络的结构(隐层层数、隐节点个数、传递函数)之后,
我们就得到了如下形式的模型表达式:
BP神经网络模型的均方误差函数
在模型表达式确定后,
BP神经网络预测值与样本真实值的均方误差也就确定了,
均方误差函数如下
其中,m为训练样本个数,k为输出个数,
为第i个样本第j个输出的预测值,为对应的真实值。
误差函数是一个关于W,b的函数,采用不同的权重和阈值,就有不同的误差。
什么是BP神经网络的训练
在BP神经网络结构确定后,其中的W,b仍未确定,
那W,b该如何确定?
不同的W,b会带来不同的网络误差,
我们的目标就是求取一组W,b,
使上述的均方误差函数最小,
这个求解的过程,就称为BP神经网络的训练
对W,b的求解并不是一件容易的事情,
目前的数学水平还没有能力求得 W,b 的精确解,通常是使用算法进行求解。
BP神经网络的训练算法
BP神经网络的训练算法很多,较经典的有如下两种算法:
👉 梯度下降算法
👉 LM算法
梯度下降算法
梯度下降法是最基本的算法,它较为简单、有效,
但缺点是往往训练时间过长、甚至有时还不够精确就停止训练等,
LM算法
LM(Levenberg-Marquardt)算法相对梯度法会更为快,
但对于数据量过大的时候不支持,一般情况都是可以使用的
更多的BP神经网络训练算法
对于更多的训练算法,
我们不妨参考matlab神经网络工具箱提供的训练算法(求解算法),如下:
梯度下降法(traingd)
有动量的梯度下降法(traingdm)
自适应lr梯度下降法(traingda)
自适应lr动量梯度下降法(traingdx)
弹性梯度下降法(trainrp)
Fletcher-Reeves共轭梯度法(traincgf)
Ploak-Ribiere共轭梯度法(traincgp)
Powell-Beale共轭梯度法(traincgb)
量化共轭梯度法(trainscg)
拟牛顿算法(trainbfg)
一步正割算法(trainoss)
Levenberg-Marquardt法(trainlm)
其中,梯度下降法是最基本,最基础的算法,上述很多算法是在梯度下降法的基础上进一步改进得到。
End