老饼讲解:一步一步上手学习
哈哈哈哈哈!终于来到最终章了!在这里,我们给富有研究精神的同学,带来最干最硬的内容-复现matlab的BP神经网络训练!也就是如何不用工具箱,自写出与matlab一模一样的BP神经网络~
其实在我刚接触BP神经网络的时候,我只会调工具箱来训练一下BP神经网络,且对它挺有神秘感,直到有一天,自己开箱matlab,写了一遍BP神经网络的训练代码后,才开始对它去魅。所以,在这一章里,我把开箱后的matlab源码进行整理、并补充完整的相关理论推导,来给大家讲解如何自实现BP神经网络。
简单来说,如果想搞清楚matlab怎么训练出BP神经网络的,那就来看本教程,以及相关代码就可以了。
在这里,我们提供了梯度下降法、动量法和LM法三种算法的原理,以及自写代码复现matlab使用这三种算法训练BP神经网络的效果。关键的内容共有5个:

1. 初始化:BP是怎么初始化的。
2. 梯度计算:BP的梯度是怎么计算的。
3. 梯度训练:梯度下降法怎么训练BP。
4. 动量训练:动量下降法怎么训练BP。
5. lm法训练:LM算法怎么训练BP。
在看的过程,最好粗略看一下理论就可以了,然后跟随着代码、再细读理论,这样相对友好一些。
在最开始的时候,我按照一般的教材所说的方法,去写了一个BP神经网络,发现训练效果没有matlab工具箱训练的好,连一些简单的任务,也没有很好的效果,我甚至怀疑自己的理解是不是错误了,然后就开箱matlab的源码,经过很漫长一段时间的挖掘和梳理后,才发现,好家伙,原来它的初始化、训练方法并不是一般教材中所说的"随机初始化+梯度下降法",而是用nguyen-widrow法来初始化,并用lm算法来训练。
所以,"教材的学习"和"真正实现"其实是有很长的一步要跨出的,大家如果感兴趣,就跟着本章的内容一步一步学习就好了,看完之后就会发现它的精妙之处,同时也就彻底搞清它是怎么一回事了。
在以前我是非常大家仔细阅读一下本章的内容的,毕竟自己写一遍BP神经网络,再实在不过了。但是,随着发展,模型越来越多,真的没有那么多时间去纠结太多的细节,所以要不要看这里的内容,全凭爱好就好了。
评论