目录
老饼讲解:一步一步上手学习

【训练】BP神经网络-训练算法

作者 : 老饼 发表日期 : 2025-11-16 14:59:26 更新日期 : 2026-05-14 14:53:59
老饼讲解-简单易懂,干货满满,爽过嗦螺!


好了,这节我们来简单的介绍一下BP神经网络的训练是什么,以及训练算法有哪些。

一、BP神经网络-训练算法

刚开始接触BP神经网络的时候,我总是感觉训练这两个字非常的抽象,后来接触久了,才恍然大悟,原来训练指的就是对模型的求解,只不过它一般无法依靠数学方法来给出精确解,所以用一些训练算法来进行求解。

1.1. 什么是BP神经网络的训练

首先呢,我们就是希望模型的输出与我们训练数据中的真实尽量一致,也就是MSE尽量的小:

 其中,

   :样本个数                         

     :输出个数                         

           :第个样本第个输出的真实值    

                 :第个样本第个输出的预测值

可以看到,W、b决定了BP模型的输出,因此也就决定了模型的误差MSE。而BP神经网络的训练,就是希望求得一组W、b,使得MSE最小化:

BP神经网络的训练是什么

比较麻烦的是,由于MSE里包含了整个BP神经网络,它很难通过数学方法直接给出精确定,所以一般是使用优化算法来求解。也就是先初始化一组解,然后通过迭代来使目标函数越来越小,套用在BP神经网络上,就是通过不断地调整BP神经网络的W,B,来使MSE逐步下降。

其实就是扔数据给模型,让它不断调整自身参数,看起来像用数据"训练"模型一样,就称为模型训练了。

二、BP神经网络的训练算法

好了,下面我们来看看BP神经网络一般都有哪些训练算法。

2.1. BP神经网络的训练算法

我们就以matlab工具箱提供给我们的训练函数为例,如下:

1. 梯度下降法(traingd)
2. 有动量的梯度下降法(traingdm)
3. 自适应lr梯度下降法(traingda)
4. 自适应lr动量梯度下降法(traingdx)
5. 弹性梯度下降法(trainrp)
6. Fletcher-Reeves共轭梯度法(traincgf)
7. Ploak-Ribiere共轭梯度法(traincgp)
8. Powell-Beale共轭梯度法(traincgb)
9. 量化共轭梯度法(trainscg)
10. 拟牛顿算法(trainbfg)
11. 一步正割算法(trainoss)
12. Levenberg-Marquardt法(trainlm)

大家不要慌,虽然matlab提供了这么多的训练方法,但事实上,我们只需要了解三个就可以了:梯度下降法、共轭梯度法和LM算法,其余的基本很少使用,如果说极端点,那就是根本从不使用。

2.2. BP神经网络的关键训练算法

好了,下面我们就来唠唠梯度下降法、共轭梯度法和LM算法这三个算法,简单地知道它们分别是什么。

BP神经网络-关键训练算法

  • 梯度下降算法(GD)

首先是梯度下降算法(GD),它是机器学习中最基本的优化算法,但是呢,由于它的基础、基本,也导致它的效果并没有那么的好,但是作为学习、思想的理解,它是必须要知道的,你可以把它当成一个"裸机算法",就是啥特色都没有,但却提供了最基础的功能。虽然上面所有算法都吊打梯度下降算法,但是它作为基础算法的地位却永远无法憾动。

  • LM算法

然后是列文伯格-马跨特算法(LM),事实上,我们训练BP神经网络基本都是使用这个算法,没为什么,因为效果好!至于原理什么的,说来就话长了,反正它的效果最好,matlab的神经网络工具箱默认就是使用它。

  • 共轭梯度法

最后呢,是共轭梯度法(SCG),为什么明明有了LM最好用的算法,还要来个共轭梯度法呢,这是因为LM算法是比较耗内存的,如果数据量比较大,可能会爆内存,这时候就推荐使用SCG算法了。

总的来说,一个用于入门理解,一个投于实际使用,还有一个当备胎,三者就是这样的角色。事实上,只要了解梯度下降法、LM法就够了,SCG很少使用到,万一真的爆内存,在训练时选择一下SCG就好了。

总结

这节我们又大概地了解了一下BP神经网络有什么训练算法啦,但对于BP神经网络,一般了解梯度下降法与LM算法也就差不多够了,其余的算法,反正,有兴趣也可以多了解一下,但我感觉作用不大。注意,这里说的是BP神经网络,像如果玩深度学习,那又是动量法、adam法比较好用了。



图标 评论
添加评论