1、主主 讲:周润景讲:周润景 教授教授单单 位:电子信息工程学院位:电子信息工程学院基于基于BP网络数据网络数据分类设计分类设计目目 录录 前馈神经网络简介前馈神经网络简介BP网络简介网络简介BP神经网络的工作原理神经网络的工作原理BP网络的特点网络的特点BP网络的建立及网络的建立及执行执行BP网络应用于模式分类网络应用于模式分类BP网络的其他学习算法的网络的其他学习算法的应用应用结论结论 一一.前馈神经网络简介前馈神经网络简介对于很多应用,一个确定的网络计算与确定的时间行为一样重要对于很多应用,一个确定的网络计算与确定的时间行为一样重要。网络架构允许中间单元的循环结构计算依靠神经元内部激活的输
2、出。网络架构允许中间单元的循环结构计算依靠神经元内部激活的输出值。即使输入不变化,输出也可能不同,直到网络内的计算达到稳定值。即使输入不变化,输出也可能不同,直到网络内的计算达到稳定状态,单元之间不仅有单方向连接的网络,而且有反方向的网络,这状态,单元之间不仅有单方向连接的网络,而且有反方向的网络,这些相反方向的网络称为前馈网络些相反方向的网络称为前馈网络。一一.前馈神经网络简介前馈神经网络简介前馈神经网络包括感知器网络和前馈神经网络包括感知器网络和BPBP神经网络。神经网络。p感知感知器网络是最简单的前馈网络,主要用于模式分类,也可用在器网络是最简单的前馈网络,主要用于模式分类,也可用在基于
3、模式分类的学习控制和多模态控制中。感知器网络中神经元基于模式分类的学习控制和多模态控制中。感知器网络中神经元的变换函数采用的是符号函数,即输出为二值量的变换函数采用的是符号函数,即输出为二值量1 1或或1 1,它主要,它主要用于模式分类用于模式分类。pBPBP神经网络的神经元神经网络的神经元变换函数采用变换函数采用S S形函数时,系统的输出量将为形函数时,系统的输出量将为0 01 1之间的连续量,它可实现从输入到输出的任意之间的连续量,它可实现从输入到输出的任意非线性映。非线性映。二二.BP神经网络简介神经网络简介BPBP神经网络即反向传播网络,这是由于该算法连接神经网络即反向传播网络,这是由
4、于该算法连接权的调整采用权的调整采用的是反向传播(的是反向传播(Back PropagationBack Propagation)。)。在人工神经网络的实际应用中在人工神经网络的实际应用中,BPBP网络广泛应用于函数逼近、模式识别网络广泛应用于函数逼近、模式识别/ /分类、数据压缩等,分类、数据压缩等,80%90%80%90%的人工神经网络模型是采用的人工神经网络模型是采用BPBP网络或它的变化形式,它也是网络或它的变化形式,它也是前馈网络的核心部分,体现了人工神经网络最精华的部分。前馈网络的核心部分,体现了人工神经网络最精华的部分。 三三.BP神经网络的工作原理神经网络的工作原理三三.BP神
5、经网络的工作原理神经网络的工作原理BP神经元与其他神经元类似,不同的是神经元与其他神经元类似,不同的是BP神经元的传输函数为非神经元的传输函数为非线性函数,最常用的函数是线性函数,最常用的函数是 和和 函数,有的输出层也采用函数,有的输出层也采用线性函数(线性函数( )。其输出为)。其输出为BP网络一般为多层神经网络。由网络一般为多层神经网络。由BP神经网络构成的二层网络如图神经网络构成的二层网络如图1.2所示。所示。 logsigtansigpurelinlog()asigWp b三三.BP神经网络的工作原理神经网络的工作原理三三.BP神经网络的工作原理神经网络的工作原理 BP网络的信息从输
6、入层流向输出层,因此是一种多层前馈神经网络的信息从输入层流向输出层,因此是一种多层前馈神经网络。网络。 如果多层如果多层BP网络的输出层采用网络的输出层采用S形传输函数(如形传输函数(如 ),其输),其输出值将会限制在一个较小的范围内(出值将会限制在一个较小的范围内(0,1);而采用线性传输函数);而采用线性传输函数则可以取任意值。则可以取任意值。 在在确定了确定了BP网络的结构后,要通过输入网络的结构后,要通过输入和输出和输出样本集对网络进样本集对网络进行训练,以及对行训练,以及对网络的网络的阈值和权值进行学习和修正,以使阈值和权值进行学习和修正,以使网络实现网络实现给定的输入输出映射关系。
7、给定的输入输出映射关系。logsig三三.BP神经网络的工作原理神经网络的工作原理BP网络的学习过程包含网络的学习过程包含两个过程,即正向传播和反向传播。两个过程,即正向传播和反向传播。(1)正向传播。输入已知学习样本,通过设置的网络结构和前一次)正向传播。输入已知学习样本,通过设置的网络结构和前一次迭代的权值和阈值,从网络的第一层向后计算各神经元输出。迭代的权值和阈值,从网络的第一层向后计算各神经元输出。(2)反向传播:反向传播时,对权值和阈值进行修改:从最后一层)反向传播:反向传播时,对权值和阈值进行修改:从最后一层向前计算各权值和阈值对总误差的影响(梯度)向前计算各权值和阈值对总误差的影
8、响(梯度),据此对各权值和阈据此对各权值和阈值进行修改值进行修改。以上两个过程反复交替,直到达到收敛为止以上两个过程反复交替,直到达到收敛为止三三.BP神经网络的工作原理神经网络的工作原理由于误差逐层往回传递,以修正层与层间的权由于误差逐层往回传递,以修正层与层间的权值和值和阈值,所以阈值,所以称该算法为误差反向传播(称该算法为误差反向传播(back propagation)算法,这种误差反)算法,这种误差反传学习算法传学习算法可以推广可以推广到有若干个中间层的多层网络,因此该多到有若干个中间层的多层网络,因此该多层网层网络络常称之为常称之为BP网络。标准的网络。标准的BP算法,其权值算法,其
9、权值的修正的修正是沿着误差性是沿着误差性能函数梯度的反方向进行的。能函数梯度的反方向进行的。四四.BP网络的特点网络的特点1.BP网络具有以下主要优点:网络具有以下主要优点: 只有只有有足够多的隐含层结点和隐含层,有足够多的隐含层结点和隐含层,BP网络可以逼近任意的非网络可以逼近任意的非线性映射关系线性映射关系 BP网络的学习算法属于局部逼近的方法,因此它具有较好的泛化网络的学习算法属于局部逼近的方法,因此它具有较好的泛化能力能力2.BP网络的主要缺点如下:网络的主要缺点如下: 收敛速度慢收敛速度慢 容易容易陷入局部极值点陷入局部极值点 难以难以确定隐含层和隐含层结点的个数确定隐含层和隐含层结
10、点的个数五五. BP网络的建立及执行网络的建立及执行1建立建立BP网络网络首先需要选择网络的层数和每层的结点数首先需要选择网络的层数和每层的结点数。l 网络网络输入层和输出层的结点个数与输入变量个数及输出变量个数对应输入层和输出层的结点个数与输入变量个数及输出变量个数对应。l 隐含层隐含层结点的选择应遵循以下原则结点的选择应遵循以下原则:尽量:尽量选取较少的隐含层结点选取较少的隐含层结点,使,使网络尽量简单。一种方法是先设置较少结点,对网络进行训练,并测网络尽量简单。一种方法是先设置较少结点,对网络进行训练,并测试网络的逼近能力,然后逐渐增加结点数,直到测试的误差不再有明试网络的逼近能力,然后
11、逐渐增加结点数,直到测试的误差不再有明显的较小为止;另一种方法是先设置较多的结点显的较小为止;另一种方法是先设置较多的结点,再对,再对网络进行网络进行训练,训练,从而从而得到一个适合规模的得到一个适合规模的网络结构。网络结构。一般采用单隐层的一般采用单隐层的BP网络就可以实现较好的训练效果。网络就可以实现较好的训练效果。五五. BP网络的建立及执行网络的建立及执行2确定网络的初始权确定网络的初始权值值BP网络的各层初始权值一般选取一组较小的非零随机数。为了避免出现局部网络的各层初始权值一般选取一组较小的非零随机数。为了避免出现局部极值问题,可选取多组初始权值,最后选用最好的一种极值问题,可选取
12、多组初始权值,最后选用最好的一种。3产生产生训练样本训练样本建立建立样本数据之前,首先要收集大量的原始数据,并在大量的原始数据中确样本数据之前,首先要收集大量的原始数据,并在大量的原始数据中确定出最主要的输入模式,分析数据的相关性,选择其中最主要的输入模式,并确定出最主要的输入模式,分析数据的相关性,选择其中最主要的输入模式,并确保所选择的输入模式互不相同保所选择的输入模式互不相同。在在确定了最重要的输入模式后,需要进行尺度变换和预处理。使得经变换后确定了最重要的输入模式后,需要进行尺度变换和预处理。使得经变换后的数据对神经网络更容易学习和的数据对神经网络更容易学习和训练。训练。确定样本大小,
13、样本大小取决于确定样本大小,样本大小取决于许多因素,如网络的大小、网络测试的需要许多因素,如网络的大小、网络测试的需要和输入和输入/输出的分布等。其中,网络的大小是最关键的因素。通常较大的网络需要输出的分布等。其中,网络的大小是最关键的因素。通常较大的网络需要较多的训练数据。经验规则:训练模式应是连接权总数的较多的训练数据。经验规则:训练模式应是连接权总数的35倍。倍。五五. BP网络的建立及执行网络的建立及执行4训练训练网络网络 通常通常训练一个网络需要训练一个网络需要多次,但并非多次,但并非训练的次数越多,越能得到正确的输入训练的次数越多,越能得到正确的输入/输出的映射关系输出的映射关系。
14、由于。由于所收集的数据都是包含噪声的,训练的次数过多,网络将所收集的数据都是包含噪声的,训练的次数过多,网络将包含噪声的数据都记录包含噪声的数据都记录下来。下来。5测试测试网络网络 在在测试时需要保持连接权系数不改变测试时需要保持连接权系数不改变,用确定的数据,用确定的数据作为网络的输入,正向运作为网络的输入,正向运行该网络,检验输出的均方误差行该网络,检验输出的均方误差。6判断判断网络网络 在在实际确定实际确定BP网络时,通常应将训练和测试交替进行,即每训练一次,同时网络时,通常应将训练和测试交替进行,即每训练一次,同时用测试数据测试一遍网络,画出均方误差随训练次数的变化用测试数据测试一遍网
15、络,画出均方误差随训练次数的变化曲线。曲线。六六. BP网络应用于模式分类网络应用于模式分类 1.网络创建及重要代码介绍网络创建及重要代码介绍(1)网络的构建:)网络的构建:首先需要构造一个网络构架,函数首先需要构造一个网络构架,函数newff()就是构建神经网的就是构建神经网的。 下面具体下面具体介绍介绍参数参数的选择。的选择。 网络层数网络层数:选用:选用两层两层BP网络即可。网络即可。 输入层节点数输入层节点数m:其:其节点数取决于矢量的维数。节点数取决于矢量的维数。 输出层节点数输出层节点数n:输出层的节点数取决于两个方面,输出数据类型和表示该类型:输出层的节点数取决于两个方面,输出数
16、据类型和表示该类型所需数据大小。当所需数据大小。当BP网络用于模式分类时,则输出层的节点数可根据待分类模网络用于模式分类时,则输出层的节点数可根据待分类模式数来确定。式数来确定。 隐含层结点数隐含层结点数:对于:对于用于模式识别用于模式识别/分类的分类的BP网络网络,隐隐层节点数可以层节点数可以参照以下参照以下公式进行设计:公式进行设计: 其中其中,m为输入层结点数;为输入层结点数;n为输出层结点数;为输出层结点数;a为为110之间的常数之间的常数。amnS1六六. BP网络应用于模式分类网络应用于模式分类 传输传输函数:函数:BP网络中的传输函数通常采用网络中的传输函数通常采用S( )形)形
17、函数,在函数,在某些特定情某些特定情况下还可能采用纯线性况下还可能采用纯线性( )函数。)函数。 训练函数:训练函数:BP神经网络的训练函数有神经网络的训练函数有 等等,每种训练函数,每种训练函数各有特点,但是没有一种函数能适应所有情况下的训练过程。代码如下:各有特点,但是没有一种函数能适应所有情况下的训练过程。代码如下:l net=newff(minmax(p),12,4,tansig,logsig,trainlm);(2)网络的初始化)网络的初始化:网络的输入向量:网络的输入向量: 。网络的目标向量网络的目标向量: 。网络初始化程序:网络初始化程序:net=init(net)。sigmoi
18、dpurelinetraindxtraindmtraingd,),.,(21nkaaap ),.,(21qkyyyt 六六. BP网络应用于模式分类网络应用于模式分类 (3)训练参数训练参数初始化:初始化:代码代码如下:如下:lmax_epoch=x; %最大训练次数xlerr_goal=E ; %期望误差(4)网络训练)网络训练:lnet=train(net,p,t);(5)网络仿真)网络仿真:ly=sim(net,p_test);(6)结果对比:)结果对比:六六. BP网络应用于模式分类网络应用于模式分类 2.完整代码完整代码本例采用本例采用BP网络对酒瓶颜色进行分类。网络对酒瓶颜色进行分
19、类。其中,前其中,前29组数据已确定类别,后组数据已确定类别,后30组数据待确定类别。组数据待确定类别。BP网络的输入和输出层的神经元数目由输入和输出向量的维数确定。输入向网络的输入和输出层的神经元数目由输入和输出向量的维数确定。输入向量由量由A、B、C这三列决定,所以输入层的神经元数目为这三列决定,所以输入层的神经元数目为3;输出结果有;输出结果有4种模式,种模式,1、2、3、4代表代表4种输出,因此输出层的神经元个数为种输出,因此输出层的神经元个数为4。模式识别程序如下:。模式识别程序如下:l %构建训练样本中的输入向量pl p=1739.94 373.3 1756.77 864.45 2
20、22.85 877.88 1803.58 2352.12 401.3 363.34 1571.17 104.8 499.85 2297.28 2092.62 1418.79 1845.59 2205.36 2949.16 1692.62 1680.67 2802.88 172.78 2063.54 1449.58 1651.52 341.59 291.02 237.63;1675.15 3087.05 1652 1647.31 3059.54 2031.66 1583.12 2557.04 3259.94 3477.95 1731.04 3389.83 3305.75 3340.14 3177
21、.21 1775.89 1918.81 3243.74 3244.44 1867.5 1575.78 3017.11 3084.49 3199.76 1641.58 1713.28 3076.62 3095.68 3077.78;2395.96 2429.47 1514.98 2665.9 2002.33 3071.18 2163.05 1411.53 2150.98 2462.86 1735.33 2421.83 2196.22 535.62 584.32 2772.9 2226.49 1202.69 662.42 2108.97 1725.1 1984.98 2328.65 1257.21
22、 3405.12 1570.38 2438.63 2088.95 2251.96;六六. BP网络应用于模式分类网络应用于模式分类 l %构建训练样本中的目标向量tl t=0 1 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1;l 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0;l 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0;l 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0
23、0 0 0 0 0 0 0 1 0 0 0 0;l %创建一个BP网络,隐含层有12个神经元,传递函数为tansigl %中间层有4个神经元,传递函数为logsig,训练函数为trainlml net=newff(minmax(p),12,4,tansig,logsig,trainlm);l %训练次数 默认为100l net.trainParam.epochs=500;l %训练的目标 默认为0l net.trainParam.goal=0.01;l %神经网络训练l net=train(net,p,t);l %测试样本进行分类l p_test=1702.8 1877.93 867.81 1
24、831.49 460.69 2374.98 2271.89 1783.64 198.83 1494.63 1597.03 1598.93 1243.13 2336.31 354 2144.47 426.31 1507.13 343.07 2201.94 2232.43 1580.1 1962.4 1495.18 1125.17 24.22 1269.07 1802.07 1817.36 1860.45;六六. BP网络应用于模式分类网络应用于模式分类 l 1639.79 1860.96 2334.68 1713.11 3274.77 3346.98 3482.97 1597.99 3250.4
25、5 2072.59 1921.52 1921.08 1814.07 2640.26 3300.12 2501.62 3105.29 1556.89 3271.72 3196.22 3077.87 1752.07 1594.97 1957.44 1594.39 3447.31 1910.72 1725.81 1927.4 1782.88; 2068.74 1975.3 2535.1 1604.68 2172.99 975.31 946.7 2261.31 2445.08 2550.51 2126.76 1623.33 3441.07 1599.63 2373.61 591.51 2057.8 1
26、954.51 2036.94 935.53 1298.87 2463.04 1835.95 3498.02 2937.73 2145.01 2701.97 1966.35 2328.79 1875.83;l y=sim(net,p_test); 运行运行上述程序代码后,可以得到网络的训练结果上述程序代码后,可以得到网络的训练结果:l TRAINLM-calcjx, Epoch 0/500, MSE 0.303441/0.01, Gradient 173.123/1e-010l TRAINLM-calcjx, Epoch 25/500, MSE 0.0862919/0.01, Gradient
27、0.0209707/1e-010l TRAINLM-calcjx, Epoch460/500, MSE 0.00159/0.01, Gradient 0.226/1e-07l TRAINLM, Performance goal met.六六. BP网络应用于模式分类网络应用于模式分类 如图如图1为为神经网络训练模块,在这里可以查看训练结果、训练状态等。可见网神经网络训练模块,在这里可以查看训练结果、训练状态等。可见网络经过络经过460次训练后即可达到误差要求,结果如次训练后即可达到误差要求,结果如图图2所所示。从图中可以看出网络具示。从图中可以看出网络具有非常好的学习性能,网络输出与目标输出的
28、误差已经达到了预先的要求。有非常好的学习性能,网络输出与目标输出的误差已经达到了预先的要求。图图1 神经网络训练图神经网络训练图图图2 训练曲线图训练曲线图六六. BP网络应用于模式分类网络应用于模式分类 对预测样本值的仿真输出结果如下对预测样本值的仿真输出结果如下:y = 1 至 18 列0.0144 0.0144 0.4828 0.0144 0.9788 0.0353 0.0353 0.0144 0.9788 0.0877 0.0144 0.0239 0.0525 0.0353 0.9788 0.0353 0.9788 0.0144 0.9857 0.9857 0.3637 0.9857
29、0.0187 0.0300 0.0300 0.9857 0.0187 0.9528 0.9857 0.8961 0.1056 0.0300 0.0187 0.0300 0.0187 0.9857 0.0057 0.0057 0.0020 0.0057 0.0221 0.9693 0.9693 0.0057 0.0221 0.0006 0.0057 0.0822 0.0001 0.9693 0.0221 0.9693 0.0221 0.0057 0.0264 0.0264 0.0233 0.0264 0.0565 0.0050 0.0050 0.0264 0.0565 0.0453 0.0264
30、 0.0099 0.8830 0.0050 0 .0565 0.0050 0.0565 0.0264 19 至 30 列0.9787 0.0353 0.0353 0.0144 0.0144 0.0525 0.0525 0.9788 0.0568 0.0144 0.0144 0.0144 0.0187 0.0300 0.0300 0.9857 0.9857 0.1056 0.1056 0.0187 0.1208 0.9857 0.9857 0.98570.0221 0.9693 0.9693 0.0057 0.0057 0.0001 0.0001 0.0221 0.0001 0.0057 0.0
31、057 0.0057 0.0565 0.0050 0.0050 0.0264 0.0264 0.8830 0.8830 0.0565 0.8643 0.0264 0.0264 0.0264七七. BP网络的其他学习算法的应用网络的其他学习算法的应用在在 应 用 其 他 学 习 方 法 训 练应 用 其 他 学 习 方 法 训 练 B PB P 网 络 之 前 , 先 将 样 本 数 据网 络 之 前 , 先 将 样 本 数 据(bp_train_sample_data.datbp_train_sample_data.dat)、目标数据()、目标数据(bp_train_target_data.d
32、atbp_train_target_data.dat)及)及待分类数据(待分类数据(bp_simulate_data.datbp_simulate_data.dat)存放到数据文件,各文件内容及格式如)存放到数据文件,各文件内容及格式如图所图所示示。1.1.采用梯度法进行学习采用梯度法进行学习前向神经网络前向神经网络BPBP算法采用最速下降寻优算法,即梯度法。假设有算法采用最速下降寻优算法,即梯度法。假设有N N对学习对学习样本,采取批处理学习方法,目标函数样本,采取批处理学习方法,目标函数:其中其中 、 分别为第分别为第K K对样本的期望输出和实际输出向量。对样本的期望输出和实际输出向量。E
33、 E反映网络输出反映网络输出与样本的总体误差。学习过程就是通过修改各神经元之间的权值,使得目标函与样本的总体误差。学习过程就是通过修改各神经元之间的权值,使得目标函数数E E的值最小,权值按下列公式修正的值最小,权值按下列公式修正:其中其中,为学习速率。为学习速率。七七. BP网络的其他学习算法的应用网络的其他学习算法的应用NKKKYTNE12)(21KTKYijijWEW七七. BP网络的其他学习算法的应用网络的其他学习算法的应用应用应用traingd函数训练,应调整全值和阈值沿着表现函数的负梯度方向,函数训练,应调整全值和阈值沿着表现函数的负梯度方向,如果应用梯度下降法训练函数,需要在训练
34、之前将网络构成函数的相应参数如果应用梯度下降法训练函数,需要在训练之前将网络构成函数的相应参数trainFcn设置为设置为traingd。与函数与函数traingd有关的训练参数有:有关的训练参数有:epochs、goal、lr、max_fail、min_grad、show、time,如果不设置就表示应用内定缺省值。,如果不设置就表示应用内定缺省值。lnet.trainParam.epochs 最大训练次数(缺省为最大训练次数(缺省为10)lnet.trainParam.goal 训练要求精度(缺省为训练要求精度(缺省为0)lnet.trainParam.lr 学习率(缺省为学习率(缺省为0.
35、01)lnet.trainParam.max_fail 最大失败次数(缺省为最大失败次数(缺省为5)lnet.trainParam.min_grad 最小梯度要求(缺省为最小梯度要求(缺省为1e-10)lnet.trainParam.show 显示训练迭代过程(显示训练迭代过程(NaN表示不显示,缺省为表示不显示,缺省为25)lnet.trainParam.time 最大训练时间(缺省为最大训练时间(缺省为inf) 训练训练过程中,只要满足下面四个条件之一,训练就会停止:过程中,只要满足下面四个条件之一,训练就会停止: 超过超过最大迭代次数最大迭代次数epochs。 表现表现函数值小于误差指标
36、函数值小于误差指标goal。 梯度梯度值小于要求精度值小于要求精度mingrad。 训练训练所用时间超过时间限制所用时间超过时间限制time。 最大最大失败次数超过次数限制失败次数超过次数限制max_fail.七七. BP网络的其他学习算法的应用网络的其他学习算法的应用完整程序代码:完整程序代码:l function f=bpfun()l %Neural Networkl %build train and simulate l %bpfun.ml %输入矩阵的范围(数据源)l P=20 3000;1400 3500;500 3500;l %创建网络l net=newff(P,12 4 1,ta
37、nsig tansig purelin,traingd);l %初始化神经网络l net=init(net);l %设置训练的参数l %停止方式按键 l %pause;l %两次显示之间的训练步数默认为25l net.trainParam.show=50;l %lr不能选择太大,太大了会造成算法不收敛,太小了会使训练时间太长l %一般选择0.010.1之间七七. BP网络的其他学习算法的应用网络的其他学习算法的应用l %训练速度l net.trainParam.lr=0.05;l %训练次数 默认为100l net.trainParam.epochs=3000;l %训练时间 默认为inf,表
38、示训练时间不限l net.trainParam.time=6000;l %训练的目标 默认为0l net.trainParam.goal=0.001;l %建立源数据的矩阵l SourceDataConvert=importdata(bp_train_sample_data.dat);l SourceData=SourceDataConvertl TargetConvert=importdata(bp_train_target_data.dat);l Target=TargetConvertl %神经网络训练l net=train(net,SourceData,Target)l %显示训练后的
39、各层权重l mat1=cell2mat(net.IW(1,1)七七. BP网络的其他学习算法的应用网络的其他学习算法的应用l mat2=cell2mat(net.LW(2,1)l mat3=cell2mat(net.LW(3,2)l %读取仿真文件数据l simulate_data_convert=importdata(bp_simulate_data.dat);l simulate_data=simulate_data_convert;l result=sim(net,simulate_data) 多次多次运行上述程序,可以得到满足误差要求的网络的训练结果:运行上述程序,可以得到满足误差要求
40、的网络的训练结果:lT TRAINLM-calcjx, Epoch 0/3000, Time 0.0%, MSE 14.4178/0.001, Gradient 10741.9/1e-010lTRAINLM-calcjx, Epoch 40/3000, Time 0.0%, MSE 0.000438/0.001, Gradient 0.196/1e-07lTRAINLM, Performance goal met 七七. BP网络的其他学习算法的应用网络的其他学习算法的应用 如图如图3为为神经网络训练模块,在这里可以查看训练结果、训练状态等。训练神经网络训练模块,在这里可以查看训练结果、训练状
41、态等。训练后即可达到误差要求,结果如后即可达到误差要求,结果如图图4所所示。示。图图3 神经网络训练模块神经网络训练模块图图4 训练曲线图训练曲线图七七. BP网络的其他学习算法的应用网络的其他学习算法的应用对预测样本值的仿真输出结果如下对预测样本值的仿真输出结果如下:result =1 至 9 列3.0016 0.9969 3.0011 3.9847 1.9460 1.9460 3.0016 3.987310 至 18 列0.9973 3.0016 2.9982 0.9969 2.0245 3.9873 1.9460 3.9850 3.001619 至 27 列3.8844 1.9460 2
42、.0245 2.5884 3.0016 0.9969 0.9969 3.9816 0.996928 至 30 列3.0016 3.0016 3.0016 3.0015七七. BP网络的其他学习算法的应用网络的其他学习算法的应用2采用带动量最速下降法进行采用带动量最速下降法进行学习学习带动量最速下降法在非二次型较强的区域能使目标函数收敛较快。带动量最速下降法在非二次型较强的区域能使目标函数收敛较快。BP算算法的最速下降方向即目标函数法的最速下降方向即目标函数E在权值空间上的负梯度方向,在无约束优化目在权值空间上的负梯度方向,在无约束优化目标函数标函数E时,相邻的两个搜索方向正交。因此,当权值接近
43、于极值区域时,每时,相邻的两个搜索方向正交。因此,当权值接近于极值区域时,每次迭代移动的步长很小,呈现出次迭代移动的步长很小,呈现出“锯齿锯齿”现象,严重影响了收敛速率,有时甚现象,严重影响了收敛速率,有时甚至不能收敛而在局部极值区域振荡至不能收敛而在局部极值区域振荡。为此为此,提出了各种加速学习速率的优化算法,其中加动量项的算法为当前,提出了各种加速学习速率的优化算法,其中加动量项的算法为当前广为应用的方法,其权值修正广为应用的方法,其权值修正公式:公式:为为动量系数动量系数。) 1( tWWEWijijij七七. BP网络的其他学习算法的应用网络的其他学习算法的应用完整程序代码:完整程序代
44、码:lfunction f=bpfun()l%Neural Networkl%build train and simulate l%bpfun.ml%输入矩阵的范围(数据源)输入矩阵的范围(数据源)lP=20 3000;1400 3500;500 3500;l%创建网络创建网络lnet=newff(P,12 4 1,tansig tansig purelin,traingdx);l%初始化神经网络初始化神经网络lnet=init(net);l%设置训练的参数设置训练的参数l%停止方式按键停止方式按键 l%pause;l%两次显示之间的训练步数默认为两次显示之间的训练步数默认为25lnet.tr
45、ainParam.show=50;l%lr不能选择太大,太大了会造成算法不收敛,太小了会使训练时间太不能选择太大,太大了会造成算法不收敛,太小了会使训练时间太长长七七. BP网络的其他学习算法的应用网络的其他学习算法的应用l%一般选择一般选择0.010.1之间之间l%训练速度训练速度lnet.trainParam.lr=0.05;l%速度增长系数速度增长系数lnet.trainParam.lr_inc=1.2;l%速度下调系数速度下调系数lnet.trainParam.lr_dec=0.8;l%添加动量因子添加动量因子lnet.trainParam.mc=0.9;l%训练次数训练次数 默认为默
46、认为100lnet.trainParam.epochs=3000;l%训练时间训练时间 默认为默认为inf,表示训练时间不限,表示训练时间不限lnet.trainParam.time=6000;l%训练的目标训练的目标 默认为默认为0lnet.trainParam.goal=0.001;l%建立源数据的矩阵建立源数据的矩阵lSourceDataConvert=importdata(bp_train_sample_data.dat);lSourceData=SourceDataConvertlTargetConvert=importdata(bp_train_target_data.dat);七
47、七. BP网络的其他学习算法的应用网络的其他学习算法的应用lTarget=TargetConvertl%神经网络训练神经网络训练lnet=train(net,SourceData,Target)l%显示训练后的各层权重显示训练后的各层权重lmat1=cell2mat(net.IW(1,1)lmat2=cell2mat(net.LW(2,1)lmat3=cell2mat(net.LW(3,2)l%读取仿真文件数据读取仿真文件数据lsimulate_data_convert=importdata(bp_simulate_data.dat);lsimulate_data=simulate_data_
48、convert;lresult=sim(net,simulate_data)多次运行上述程序,可以得到满足误差要求的网络的训练结果:多次运行上述程序,可以得到满足误差要求的网络的训练结果:lTRAINLM-calcjx, Epoch 0/3000, Time 0.0%, MSE 14.0262/0.001, Gradient 7315.37/1e-010lTRAINLM-calcjx, Epoch 335/3000, Time 0.0%, MSE 0.000442/0.001, Gradient1.19/1e-7lTRAINLM, Performance goal met七七. BP网络的其他
49、学习算法的应用网络的其他学习算法的应用神经网络训练工具如神经网络训练工具如图图5所示,训练后即可达到误差要求,结果如图所示,训练后即可达到误差要求,结果如图6所所示示。图图5神经网络训练工具箱神经网络训练工具箱图图6 训练曲线图训练曲线图七七. BP网络的其他学习算法的应用网络的其他学习算法的应用对对预测样本值的仿真输出结果如下:预测样本值的仿真输出结果如下:result =1 至 9 列3.0296 2.9309 1.5220 2.9256 3.9876 1.9889 1.9904 3.0315 3.989710 至 18 列1.3982 3.0274 2.5501 1.0009 2.056
50、2 3.9843 2.0376 3.9917 3.073319 至 27 列3.9915 2.0045 2.0212 1.8679 2.9285 0.9716 1.0037 4.0013 1.488028 至 31 列2.9780 2.9835 2.9379 3.0032七七. BP网络的其他学习算法的应用网络的其他学习算法的应用3.采用采用共轭梯度法进行共轭梯度法进行学习学习共轭梯度法是重要的无约束最优化方法,它利用一维搜索所得到的极小共轭梯度法是重要的无约束最优化方法,它利用一维搜索所得到的极小点处的最速下降方向生成共轭方向,并据此搜索目标函数极值。共轭梯度法点处的最速下降方向生成共轭方向