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

【说明】matlab-BP训练算法-说明

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


matlab为BP神经网络提供了多种的训练算法,这里我们展示matlab中各种BP神经网络训练算法(traingd,traingdm,trainlm等)的详细说明,方便使用时参考。

一、matlab-BP神经网络工具箱-训练算法

1.1. BP神经网络-训练算法

matlab神经网络工具箱提供的所有训练方法和参数名如下

训练参数名训练方法
 traingd 梯度下降法
 traingdm 有动量的梯度下降法
 traingda 自适应lr梯度下降法
 traingdx 自适应lr动量梯度下降法
 trainrp 弹性梯度下降法
 traincgf Fletcher-Reeves共轭梯度法
 traincgp Ploak-Ribiere共轭梯度法
 traincgb Powell-Beale共轭梯度法
 trainscg 量化共轭梯度法
 trainbfg 拟牛顿算法
 trainoss 一步正割算法
 trainlm Levenberg-Marquardt法

好了,上面就是matlab提供的所有BP神经网络的训练算法了。

二、BP神经网络-关键训练算法-说明

上面列举的各种算法,许多其实是充数的,比较关键的训练方法有三个:

traingd:梯度下降法

trainlm:Levenberg-Marquardt法

trainscg:量化共轭梯度法

2.1. traingd训练算法

traingd是梯度下降法,也是最基础的算法,但是实际应用效果并不太好,这主要是因为BP神经网络的误差函数往往是一个相对复杂的函数,而梯度下降算法在平缓区域迭代特别慢,所以遇到这种情况,训练10万步都没办法跳出平缓区域,往往训练半天,最后也没有获得较好的结果,因此,梯度下降法作为学习与理解BP神经网络的训练是挺不错的,但如果真的拿来训练,效果欠佳。

2.2. trainlm训练算法

trainlm是LM(Levenberg-Marquardt)算法,其中,Levenberg(列文伯格)、Marquardt(马跨特)分别是两个人名。trainlm算法是matlab神经网络工具箱的默认方法,它是BP神经网络训练的最佳方法之一,它同时利用了一阶导信息和二阶导信息,训练速度比梯度下降法、或者其它算法要快得多。它的缺点是内存消耗会随着变量个数的增长而二次方增长,所以较为消耗内存,在变量极多时,就会爆内存。但是,一般按目前的情况,LM算法基本都是可用的,所以不必过于担心,首选就用LM算法就可以了。

2.3. trainscg训练算法

trainscg是量化共轭梯度法,它在梯度下降算法的基础上加入了共轭性,使得每一个搜索方向是互相共轭的,由于它的收敛速度是超线性,但内存消耗却较小,可以说是优化大型问题的利器。因此,当trainlm无法使用时,就可以选择使用trainscg算法,它相当于trainlm的备选方法。

总结

这里介绍了matlab工具箱提供的各种训练算法,没事的同事可以随便玩一玩,但总的来说,梯度下降法一般效果不怎么样,至少选个traingda,都会相对要好一些,它是加入了"可变学习率"的梯度下降算法,在顺风时就会加大学习率,逆风时缩小学习率,所以效果也比梯度下降法要好很多。但总的来说,有trainlm算法基本就够用了。



图标 评论
添加评论