BP神经网络算法常规思路及详细解法(数学建模or机器学习)

                                 Back-Propagation Network

    原创声明:本文为博主原创,转载请注明出处:https://blog.****.net/weixin_40913261/article/details/82619840

  • 简介

       反向传播网络(Back-Propagation Network)简称BP网络,基于误差反向传播算法(BP算法)的一种多层网络。

       下面为2-3-2BP网络模型:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

 

  • 算法介绍

     算法伪代码:

 

       输入:训练集D

                  学习率η

                  1:数据归一化

                  2:创建网络

                  3:训练网络

                        repeat for D

                        3.1:正向传播

                        3.2:反向传播

                         until for 达到结束条件

                  4:使用网络

                  5:数据反归一化

        输出:训练完成的BP神经网络

  • 算法详解

     网络结构

       如2-3-2层神经网络:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

    符号说明

       训练样本:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

       输入层到隐含层权值:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

       隐含层输入:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

                                                                                                                                                (p为隐含层神经元个数)

       隐含层输出:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

       隐含层到输出层权值:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

       输出层输入:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

                                                                                                                                                    (q为输出层神经元个数)

       输出层输出:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

       期望输出:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

       样本数据个数:                                                            k=1,2,...,m

       各层神经元个数:                                                          n,p,q

       **函数:                                                                         f(·)

       误差函数:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

·算法详解

     1.数据归一化

       ·最大最小法:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

       ·平均数方差法:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

                                                                                                                                                (mean为均值,var为方差)

      2.创建网络

      2.1:确定网络层数与每层神经元数量

           层数:根据经验,一般层数等于(输入+输出)/2,然后慢慢进行调整。一般使用 三层。

           隐含层结点数:节点数太少, 网络不能很好的学习,需要增加训练次数;节 点数过多,训练时间会加长,网络容易过拟合。

           参考以下公式:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

 

       2.2:初始化网络中所有权值

              (0,1)内随机赋值。(有的资料赋(-1,1))

       2.3:确定隐含层、输出层**函数

                选取S型函数,在网络层数少时,一般选择sigmoid函数或tanh函数

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

       2.4:设置训练参数

               根据经验赋值

 

       3.训练网络

       3.1:随机选取某个输入样本

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

                                                                                                                                                     (图1模型中n=2)

       3.2:计算当前样本隐藏层输入和输出

               隐藏层输入:    

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

                                                                                                                                                      (图1模型中p=3)

               隐藏层输出:    

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

 

       3.3:计算当前样本输出层输入和输出

 

               输出层输入:    

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

               输出层输出:     

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

 

       3.4:计算误差函数

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

       3.5:计算误差函数对输出层和隐含层之间参数的偏导数

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

       3.6:计算误差函数对隐含层和输入层之间参数的偏导数

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

        3.7:修正参数

                 输出层和隐含层之间参数:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

                 隐含层和输入层之间参数:

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

        3.8:计算全局误差

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

        3.9:判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最 大次数,则结束算法。否则回到3.1

 

        4.使用网络

           输入所要进行处理的数据。

 

        5.数据反归一化

           直接使用MATLAB反归一化函数即可

 

·gif动态图

BP神经网络算法常规思路及详细解法(数学建模or机器学习)

 

·应用

           BP网络主要用于:

           ·函数逼近:用输入矢量和相应的输出矢量训练一个网络逼近—个函数;

           ·模式识别:用一个特定的输出矢量将它与输入矢量联系起来;

           ·分类:把输入矢量以所定义的合适方式进行分类;

           ·数据压缩:减少输出矢量维数以便于传输或存储。