1、神经网络算法简介智能算法之一智能算法之一(1 1)具有高速信息处理的能力)具有高速信息处理的能力(2 2)知识存储容量大)知识存储容量大(3 3)具有一定的不确定性信息处理能力)具有一定的不确定性信息处理能力(4 4)具有健壮性)具有健壮性(5 5)善于处理非线性的系统的能力)善于处理非线性的系统的能力神经网络算法的特点神经网络算法的特点 (1 1)模式识别)模式识别 图像识别、语音识别、手写体识别等。图像识别、语音识别、手写体识别等。(2 2)信号处理)信号处理 特征提取、燥声抑制、统计预测、特征提取、燥声抑制、统计预测、 数据压缩、机器人视觉等。数据压缩、机器人视觉等。(3 3)判释决策)
2、判释决策 模糊评判、市场分析、系统辩识、系模糊评判、市场分析、系统辩识、系 统诊断、预测估值等。统诊断、预测估值等。(4 4)组合优化)组合优化 旅行商问题、任务分配、排序问题、旅行商问题、任务分配、排序问题、 路由选择等。路由选择等。(5 5)知识工程)知识工程 知识表示、专家系统、自然语言处理知识表示、专家系统、自然语言处理 、实时翻译系统等。、实时翻译系统等。神经网络的应用领域神经网络的应用领域神经网络的基本思想对于第i个神经元的输入:12 ,nvv vv与第i个神经元连接的相应权值为:12,iiini神经元本身的阀值为 i则输出Y可表示为: 1( )()nijijijYf ufv1,0
3、( )0,0iiiuf uu定义即输出与输入有兴奋与抑制两种状态,兴奋时取值1,抑制时为0。 神经网络的分类神经网络的分类主要从网络结构和学习方式两方面分类。主要从网络结构和学习方式两方面分类。 1.1.按网络结构分为:前馈网络和反馈网络。按网络结构分为:前馈网络和反馈网络。 前馈网络反馈网络神经网络的分类神经网络的分类2. 2. 学习方式:学习方式:有导师学习有导师学习无导师学习无导师学习神经网络的学习规则神经网络的学习规则 关键在于如何决定每一神经元的权值。 常用的学习规则有以下几种:(1)Hebb规则(2)Delta规则 (最小均方差规则 )(3)反向传播学习方法(4)Kohonen学习
4、规则(用于无指导训练网络 )(5)Grosberg学习方法神经网络常用模型神经网络常用模型共70多种,具有代表性的有:(1)感知器(Perceptron) (2)多层前馈(BP)网络 (3)Hopfield网络 (优化)(4)Boltzmann机(在BP中加入噪声) (5)双向联想记忆网络(快速存储) (6)盒脑态(单层自联想,可用于数据库提取知识) (7)自适应共振网络(可选参数,实现粗分类) (8)对传网络(组合式,可用于图像处理) BPBP神经网络模型神经网络模型 BP(Back Propagation)网络是一种按误差反向传播的多层前馈网络。网络是一种按误差反向传播的多层前馈网络。 输
5、入层 隐层 输出层基本思想基本思想: : 学习过程分为两个阶段:学习过程分为两个阶段:第一阶段第一阶段( (正向传播过程正向传播过程) );给出输入信息通过输入层经各给出输入信息通过输入层经各隐层逐层处理并计算每个单元的实际输出值;隐层逐层处理并计算每个单元的实际输出值;第二阶段第二阶段( (反向过程反向过程) ):若在输出层未能得到期望的输出值,:若在输出层未能得到期望的输出值,则逐层递归地计算实际输出与期望输出之间的差值则逐层递归地计算实际输出与期望输出之间的差值( (即误即误差差) ),通过梯度下降法来修改权值,使得总误差函数达到,通过梯度下降法来修改权值,使得总误差函数达到最小。最小。
6、BPBP神经网络模型神经网络模型 BPBP网络算法思想网络算法思想 以三层以三层BPBP网络为例。网络为例。 ki 0z()(x ),1,2,.,nppkkipif netfvkq假设网络的输入、隐层、输出节点数分别为n,q,m个,P个样本点。隐层第k个节点的输出为: 0y()(),1,2,.,qpjpjjkpkkf netfzjm输出层第j个节点的输出为: 其中函数f(.)为传递函数。又假设理想(目标)输出为tpj。则定义全局误差函数为 2jj1111y2PPmpppppjEEt()BPBP网络算法思想网络算法思想 一般的传递函数:一般的传递函数:0,0( )1,0 xf xx1,1( ),
7、111,1xf xxxx 1,0( )1,0 xf xx1. 极限函数(hardlim)2. 对称函数(hardlims)3. 对称饱和线性函数(satlins)1( )1xf xe( )xxxxeef xee1,max ( )0 xf x,其它6. 竞争函数(compet)4. S形函数(logsig)5. 双曲正切S形函数(tansig)BPBP网络算法思想网络算法思想 权值调整公式权值调整公式( (梯度下降法梯度下降法) ):(1)输出层权值的调整jk11jkjkjkPPpppjpppjEEnetEnet 称为学习率,一般取值范围为0.10.3。 jppppjpjpjpjEEynetyn
8、et 定义误差信号2jjjj1(ty(y )2mpppppjpjpjEtyy )()(1)pjpjpjpjpjyfnetyynet(y ) y (1 y )pjpjpjpjpjtjkjk11jkzPPppjpppppjEnetnetk1(y ) y (1 y )zpjpjpjpjPppt(2 2)隐层权值的调整)隐层权值的调整BPBP网络算法思想网络算法思想 ki11kikikiPPpppkpppkEEnetEvvvnetv ji11z (1 z )xppkpkPmjkppj BPBP网络的性能分析网络的性能分析 BPBP网络的缺陷:网络的缺陷:1.1.收敛速度慢收敛速度慢2.2.易陷入局部极
9、小易陷入局部极小3.3.网络结构难以确定网络结构难以确定 4.4.泛化能力差泛化能力差 BPBP算法的改进算法的改进 主要分为六个方面:主要分为六个方面: (1)学习率的改进 E 若学习率过大,可以提高收敛速度,但可能导致振荡现象甚至发散;相反地,若学习率过小,可以保证训练能稳定的收敛,但学习速度慢。 退火算法:开始时设置学习率高(0.7-0.9), 随学习次数增加而减少。或 (1)( )(1)(1)1.050.7kkkk(1)( )(1)( )(1)( )KKKKKKEEEEEEBPBP算法的改进算法的改进 (2)误差函数的改进2kk1 k 11y2PMpppEt()一般情形ypkpkt随着
10、学习次数的增加, 越来越小,会导致函数逼近速度减慢。2kk1 k 111.y ) 2PMpppEtln1+(222kkkk1 k 11k 11112.y )y )(0.5)22PMPMHpppppjppjEtth(2kk1 k 1,13.y( )2( )PMpppniji jEtp wp wn()其中为惩罚项BPBP算法的改进算法的改进 (3)激励函数的改进xSigmoidxef1函数( )1fff其导数(1 )导致误差曲面出现“平台”现象。 1/(y ) y (1y )(y ) y (1y ),1pjpjpjpjpjpjpjpjpjpjstts或提出一些新型的激励函数: 1. 高斯函数 2.
11、 三角函数 3. 双极性压缩函数 4. 分段函数 0.5sin()0.5f xx( )2()a x bf xe( )exf x11( )-21(4)网络初始权值的选取BPBP算法的改进算法的改进 初始权值对于权值学习是否达到最优解和算法收敛快慢关系很大。一般是随机产生。(1)使用Cauchy不等式和线性代数方法得到最优初始权值;(2)利用独立元分析(ICA)方法;(3)采用遗传算法来初始化权值。(5)优化网络结构BPBP算法的改进算法的改进 关键是隐层的层数与隐节点的数目。 隐节点过少,学习过程不可能收敛到全局最小点;隐节点过多,网络性能下降,节点冗余。 (6)改进优化算法主要有共轭梯度法、N
12、ewton法、GaussNewton法、Levenberg-Marquard法等 2004级胡上蔚同学的工作:级胡上蔚同学的工作:BPBP算法的改进算法的改进 1. 基于三项基于三项BP算法的最优学习参数估计算法的最优学习参数估计 (1)( )( )w kw kw k( )( ( )(1)( ( )w kE w kw ke w k , 分别为学习因子、动量因子和比例因子。 , ,min( , )E 2. 修改误差函数新的修改误差函数新的BP学习算法学习算法 21111(0.5)1()2PPKnpMpmpmkmppkyEtoABEEAE为标准误差函数, 为隐层饱和度, BE2004级胡上蔚同学的
13、工作:级胡上蔚同学的工作:BPBP算法的改进算法的改进 3. 放大误差信号放大误差信号 2(2)2( ) 0.5)22( )0.5)( )( )( )(1( )pmpmpmpmpmoipmpmoieitoioioi改进形式其中(y ) y (1y )pjpjpjpjpjt标准形式1( )(1)g xxx22(0.5)2( )(0.5)xgxxe2( )1( )( )gxh xg x2( ) 111( )( )gxgxgx是的倍。在0,0.5)上,理论上证明:00.10.20.30.40.546810121416算例效果图:算例效果图:BPBP算法的改进算法的改进 020040060080010
14、001200140016001800200000.020.040.060.080.10.120.14训 练 误 差改 进 算 法MGFPROP标 准 BP2006级孙娓娓的工作:级孙娓娓的工作:BPBP算法的改进算法的改进 jjjjjjjy (y )y (1 y )1 y )lnpppppppt1. 放大误差信号放大误差信号 j1zz (1 z )(1 z )lnpkppkppkkpkmjkj00.10.20.30.40.50.60.70.80.911.41.61.822.22.42.62.833.22006级孙娓娓的工作:级孙娓娓的工作:BPBP算法的改进算法的改进 1. 放大误差信号放大误
15、差信号 22xy, x 1,101x算例:函数逼近问题 123456789100.10.20.30.40.50.60.70.80.91Function ApproximationInputOutput: -, Target: +123456789100.10.20.30.40.50.60.70.80.91Function ApproximationInputOutput: -, Target: +标准BP算法改进BP算法2006级孙娓娓的工作:级孙娓娓的工作:BPBP算法的改进算法的改进 2. BP网络的联合优化网络的联合优化 (1) 自适应调节学习率 ( )( 1)(1)ttE (2) 动态
16、调整激励函数的参数 ( )exaf x1算算 法法迭代步数迭代步数训练训练10000次次的误差的误差测试样本测试样本识别率识别率标准标准BP算法算法20000次内次内无法实现无法实现0.005256.67%加动量项法加动量项法78390.001389.7%自适应学习率法自适应学习率法3044.5951e-01193.33%改进算法改进算法262.3271e-029100%乳腺癌数据分类问题的实验结果对照表乳腺癌数据分类问题的实验结果对照表 2006级孙娓娓的工作:级孙娓娓的工作:BPBP算法的改进算法的改进 3. 遗传算法与遗传算法与BP网络结合的模型网络结合的模型 先用改进的遗传算法在整个权
17、值空间和结构空间中进行粗略搜索,来代替一般初始权值的随机选取和网络结构的经验设定,然后采用BP算法进行寻优,最终得到问题的精确或近似全局最优解。 实际应用问题 1、蠓虫的分类问题2、DNA序列分类问题3、癌症诊断问题P=1.241.36 1.38 1.38 1.38 1.4 1.48 1.54 1.56 1.14 1.18 1.2 1.26 1.28 1.3; 1.72 1.74 1.64 1.82 1.9 1.7 1.82 1.82 2.08 1.78 1.96 1.86 2.0 2.0 1.96;% 目标向量T=1 1 1 1 1 1 1 1 1 0 0 0 0 0 0;% 建立一个感知器
18、net=newp(0 3;0 3,1);% 网络训练次数net.adaptParam.passes=100net=adapt(net,P,T);% 输出仿真结果Y=sim(net,P)% 利用训练好的感知器进行分类p=1.24,1.28,1.4;1.8,1.84,2.04;a=sim(net,p)a = 1 1 1准确率达到100%。11.21.41.61.81.41.51.61.71.81.922.12.22.3Vectors to be ClassifiedP(1)P(2)ApfAfDNA序列模式分类问题一、问题 已知序列标号110 为A类,序列标号11-20为B类。待判断的序列标号214
19、0。例如 A、B类的片段:a1=aggcacggaaaaacgggaataacggaggaggacttggcacggcattacacggaggacgaggtaaaggaggcttgtctacggccggaagtgaagggggatatgaccgcttgg;b1=gttagatttaacgttttttatggaatttatggaattataaatttaaaaatttatattttttaggtaagtaatccaacgtttttattactttttaaaattaaatatttatt;二、特征提取序列特征主要有两个:1、碱基的含量,反映了该序列的内容; 统计a、g、t、c序列中分别出现的频率; 2、
20、 碱基的排列情况,反映了该序列的形式;从字符出现的周期性来反映。统计三个字符出现的频率;在遗传学中每三个碱基的组合被称为一个密码子,如agg,att,ggc, cgg等,共有43=64个,还可以由密码子组成20个氨基酸。三、神经网络对DNA序列分类问题的应用a1=aggcacggaaaaacgggaataacggaggaggacttggcacggcattacacggaggacgaggtaaaggaggcttgtctacggccggaagtgaagggggatatgaccgcttgg;编程统计出该片段的字符串( ttt, tta, ggc, cgg, gga)的频数分别为:(0,1,5,7,10
21、)经过统计计算,得到已知类别的输入向量:p = 0 1 0 5 1 3 2 2 2 1 19 18 23 17 43 12 2 17 19 23; 1 2 0 4 1 1 1 4 0 1 13 15 13 11 9 9 2 14 12 7; 5 5 8 0 10 9 5 7 11 9 0 0 1 0 0 0 3 1 0 0; 7 10 16 2 11 9 6 5 8 6 0 0 0 1 0 0 3 2 0 0; 10 11 15 2 11 12 12 9 5 6 2 1 1 1 0 1 1 0 1 1;待判类别的输入向量:P = 9 2 3 13 3 15 3 10 3 2 6 5 9 2 2
22、 2 2 16 2 18; 7 4 4 8 5 9 6 12 3 3 12 4 7 3 2 4 4 10 2 10; 0 0 4 1 5 0 2 1 7 0 2 2 0 4 2 1 3 1 2 1; 0 2 8 0 1 1 5 0 7 0 1 3 0 3 3 1 1 1 0 2; 2 3 9 1 2 1 8 1 5 0 2 1 1 5 4 1 3 1 1 2;由前20个已知类别的DNA序列片段可以构造出目标向量:t = 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0;1、应用感知器对DNA序列进行分类:(DNAper1.m)net=newp(0 1;0 1;0
23、1;0 1;0 1,1);net.adaptParam.passes=110net=adapt(net,p,t);Y=sim(net,p) % 回代检验a=sim(net,P) % 对待判类别的序列进行分类A 类B 类a = 0 1 1 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0回代检验结果是100%的准确。待判序列的分类结果:A类:22,23,27,29,34,35,37;B类:21,24,25,26,28,30,31,32, 33,36,38,39,40;输出结果:024681000.10.20.30.40.50.60.70.80.9110 EpochsTraini
24、ng-Blue Goal-BlackPerformance is 0, Goal is 0.01误差曲线图2、应用BP网络对DNA序列进行分类:(DNAbp.m)net=newff(0 20;0 16;0 12;0 12;0 13,5 1,logsig purelin,traingdx);net.trainparam.show=100;net.trainparam.lr=0.5;net.trainparam.mc=0.8;net.trainparam.epochos=20000;net.trainparam.goal=0.01;net,tr=train(net,p,t);Y=sim(net,p
25、)a=sim(net,P)Y = 1.0436 1.0223 0.9879 0.6593 1.0348 1.0225 1.0364 1.0111 0.8835 0.9824 0.0079 0.0079 0.0077 0.0088 0.0077 0.0813 0.2153 0.0080 0.0080 0.0078a = 0.4215 0.7467 0.9664 0.0766 0.4305 0.0158 0.9113 0.1174 0.8094 0.1735 0.4612 0.5622 0.4323 0.8334 0.8310 0.4070 0.5784 0.0115 0.1521 0.0082回代检验结果也是100%的准确。待判序列的分类结果:同上输出结果:误差曲线图01020304050607010-310-210-110010175 EpochsTraining-Blue Goal-BlackPerformance is 0.00945768, Goal is 0.01