您好,欢迎访问三七文档
1神经网络报告信计12徐文豪模拟人大脑的运作方式建立模型去解决实际问题,提出第一个人工神经元模型的McCulloch和Pitts真是天才。神经网络发展到现在功能已经非常强大,在模式识别、回归拟合和优化等方面都有着广泛的应用。这篇报告较全面地介绍了几个神经网络分支的应用,但由于时间关系,实现主要是调用matlab库和台湾林智仁教授的libsvm,只有极少部分是自己的思路,这是一个遗憾,因为要深刻理解神经网络应该要实现理论的算法而不是熟悉调用方式。1.多层前向网络字符识别Matlab中prprob用26个35维的向量存储了26个英文字母的形状信息(将每个字母看成75的二值矩阵),字符识别所要解决的问题就是当这些字母向量加了一定的噪声之后,怎么判断加噪向量原本属于哪个字母。1.1多层前向网络简介简单来说多层前向网络可以用一个等式表示()()()(1)()()lllllYfWY(1)其中()kY表示第l层的输出,()lW表示第l层相对于第1l层的权系数矩阵,()l表示第l层的阈值向量,()lf表示第l层的激活函数。从等式(1)可以看出,只要确定了各层的权系数矩阵和阈值向量,则整个多层前向网络就确定了。因而,所谓用样本数据训练网络就是根据学习算法用样本输入输出确定W和。普遍使用的多层前向网络学习算法是由.DRumelhart于1986年提出的反向传播算法(BackPropagationAlgorithm),即BP算法。为了便于算法的叙述,先假设网络层数为L,即输入层为0层,输出层为L层,并定义第l层相对于()lf的净输入()lV为()()(1)()llllVWY(2)设{(),()}xktk为第k个训练样本,()yk为网络对应于()xk的实际输出定义平方误差(,)kFw为2()()kFtkyk(3)定义kF对于()lV的矩阵变量求导()l为()()(,)lklFwV(4)设第l层的神经元个数为lS个。BP算法的具体步骤为:Step1:选取小随机数作为权系数矩阵和阈值的初始值。Step2:由等式(1)和等式(2),根据样本输入x得到第L净输入()LV。Step3:根据下面两个等式计算各层()l2()()'()()2(()(()))(())LLLLLktkfVkfVk(5)()(1)(1)'()()(()())(()),11lllllkWkkfVklL(6)其中,表示点乘。Step4:根据下面等式更新权值和阈值()(1)()()()(1)()()()(1)()()llllijijijllliiiwkwkkykkkk(7)1.2多层前向网络字符识别1.2.1隐层神经元个数为10选取隐层神经元的个数为10,采用每个字母理想特征向量的20个加噪的版本(均值为0,标准差为0.1和0.2的高斯白噪各10个)作为训练样本,选取适当的初始权值、初始阈值和动量值对网络进行训练,直到网络收敛。训练结束后产生一系列加噪的特征向量(噪声为均值为0高斯白噪)作为网络的输入向量,检验在噪声标准差依次为0:0.05:0.5下的正确恢复率,绘出识别率与噪声标准差的变化关系曲线,所用程序见附录1。结果如下图所示:图110神经元恢复率-标准差图从图中可以明显看出,恢复率随着标准差的增大而降低。1.2.2交叉确认隐层神经元个数从等式(1)可以知道隐层神经元的个数决定了多层前向网络的复杂程度,因而对识别恢复率势必会有很大的影响。首先,隐层神经元太少了肯定不行,因为无法充分记录样本的信息。其次,隐层神经元太多了也不行,因为会出现过拟合现象从而缺少泛化的能力。交叉确认法是确定隐层神经元的一个有效方法,其原理为给出一组合适的神经元个数向量,通过从全体样本中取出部分不参与训练的样本用于检验不同神经元个数的恢复率,取恢复率最高的个数作为隐层神经元的个数。用于交叉确认的隐层神经元的个数为:5,10,15,20,30,40。训练样本:每个字母理想特征向量的40个加噪的版本(均值为0,标准差为0.1和0.2的高斯白噪各20个)。确认样本:如同训练样本的选择。00.050.10.150.20.250.30.350.40.450.50.650.70.750.80.850.90.951标准差恢复率10神经元BP算法恢复率-标准差图像3所用程序见附录2。值得注意的一点是,真正做交叉确认时,全体样本是固定的,因而无论是划分25%验证集还是循环验证,得到的最佳参数都是固定的。但这里为了简便起见,随机产生训练集和验证集,因而可能导致得到的最佳神经元个数不固定。从程序运行结果来看,大部分得到的最佳个数为40,少数得到的最佳个数为30,因而这里我们取40作为最佳神经元个数。在这种情况下,重新调用附录1中的程序,结果如下图所示:图2最佳神经元恢复率-标准差图很明显,与图1相比,通过交叉确认的得到的结果明显更优,这也体现了进行交叉确认的必要性。1.2.3比较不同网络初始值的影响由于BP算法是基于梯度的,因而理论上初始权系数矩阵和阈值向量值较小优于值较大的情形。实际上图1和图2都是在matlab默认的初始网络值乘了一个小系数0.01做的,现在我们在隐层神经元个数为40的情形下,将系数0.01改为10,得到结果如下图所示:00.050.10.150.20.250.30.350.40.450.50.840.860.880.90.920.940.960.9811.02标准差恢复率最佳神经元个数BP算法恢复率-标准差图像00.050.10.150.20.250.30.350.40.450.5-1-0.500.511.5标准差恢复率最佳神经元个数BP算法恢复率-标准差图像4图3大系数初始网络值的恢复率-标准差图这个结果反映的事实是极其明显的,在用BP算法时,我们必须将初始网络值选得相对较小点!1.2.4增加含噪训练样本个数当合理的训练样本个数增加时,网络参数的设置就会更符合样本输入和输出的规律,因而识别率势必会提高,为了突出这一特点,我们将训练样本数变为原来的4倍,得到结果如下:图44倍训练样本恢复率-标准差图这个效果明显优于图2,这给我们的启发是,在现实中运用多层前向网络时,在条件允许的情况下,应当相对较多地采集样本点。2.支撑向量机字符识别2.1支撑向量机简介2.1.1训练样本线性可分情形这种情形下,支撑向量机的根本思路在于在所有可以正确区分样本的超平面中找到一个平移隔离带间隙最大的最优分类超平面。为了便于算法的叙述,先假设线性可分的训练样本为{,}iixy,nixR,{1,1}iy,(1,1,,1)e,样本点数为Q,最优超平面形式如下:**0wxb(8)寻找最优分类超平面的具体步骤如下:Step1:通过(,)ijijijWyyxx构造nn矩阵W。Step2:写出由最大间隔优化问题对应的拉格朗日乘子导出的优化问题00.050.10.150.20.250.30.350.40.450.50.910.920.930.940.950.960.970.980.991标准差恢复率最佳神经元个数BP算法恢复率-标准差图像511max()2.0,0TTQiiiFeWsty(9)构造拉格朗日函数1(,)2TTTLeWy,利用对(,)L对的梯度为0和约束条件求解出满足条件的*。Step3:由最大间隔优化问题的KKT条件得到**1***[(())1]0,1QiiiiTiiiwyxywxbiQ(10)由等式(10)加上样本数据即可得到最优超平面形式(8)中的*w和*b。2.1.2简单训练样本非线性可分情形在这种情形下,样本虽然非线性可分,但用超平面可以得到较满意的分类效果,其原理在于在线性可分的基础上引入松弛变量,其算法和线性可分算法非常相似,只有两个较大的差别。首先,最大间隔优化问题变为最大间隔最少错分优化问题,其拉格朗日乘子导出的优化问题如下:11max()2.0,0TTQiiiiFeWstyC(11)对应的KKT条件变为**1*********0[(())1]000QiiiiiiTiiiiiiiwyxCywxb(12)2.1.3复杂训练样本非线性可分情形在这种情形下,样本在n维空间已经不能用超平面较好的分类了,这时的思路是用一个非线性映射将原问题映射到m维高维空间中,在这个空间中样本样本是可以用超平面较好的分类的。但这样就存在两个问题,一是这样的映射构造起来很繁琐,二是高维空间的内积计算较耗时。于是支撑向量机理论中引入了核函数的概念:设(,):nnKxyRRR,称(,)Kxy为核函数,如果存在映射:nmRR使(,)((),())Kxyxy。有了核函数这个工具以后,复杂训练样本非线性可分情形就变得简单,实际6上求解形式和等式(11)、(12)完全相同,只是ijW由之前的(,)ijijyyxx变为由核函数表示的(,)ijijyyKxx。2.2支撑向量机字符识别在网站~cjlin下载台湾林智仁教授等的libsvm工具箱libsvm-3.20并在matlab中用make命令将.c文件转换为.mex文件之后svmtrain和svmpredict函数了(由于是mex文件,在matlab命令界面help是无用的,但直接输入函数名会自动显示帮助)。取与1.2.2相同个数的样本,用附录3中的libsvm程序得到结果如下图5svm恢复率-标准差图与图2相比我们发现,当标准差较小时多层前向网络和svm效果很接近,但当标准差较大时,svm的效果就明显优于多层前向网络了,这体现了svm具有较强的健壮性。为了直观说明这一点,我们画出字母X在标准差为0和0.5情况下的对比图如下图6重噪下字母X比较图这样严重加噪的图像,svm在只有520个样本的情.况下还能取得92%以上的00.050.10.150.20.250.30.350.40.450.59293949596979899100标准差恢复率libsvm恢复率-标准差图像原字母X图像加噪字母X图像7恢复率,确实很神奇。不过值得一提的是,svm相对于多层前向网络在分类问题上的优越性一般只是在训练样本较少的情形下,当训练样本较多时,两者的效果是几乎一致的,采用与1.2.4相同个数的训练样本,用libsvm得到结果如下:图74倍训练样本svm恢复率-标准差图3.离散Hopfield字符识别3.1离散Hopfield简介离散Hopfield的本质是固定迭代格式下序列收敛的问题,它的一个特殊要求是迭代向量x的分量只能为1或-1(这有助于收敛定理的推导),为了满足这个条件,引入Hopfield符号函数1,0sgn()1,0xxx(13)值得注意的一点是sgn(0)1,离散Hopfield的一般迭代格式为(1)sgn(())(0){1,1}nxtWxtx(14)注意到等式(14)中每次迭代所有的分量都会更新,但有时为了收敛性的需要,只随机更新其中一个分量,前者称为同步工作方式,后者称为异步工作方式。离散Hopfield有如下两个收敛性定理:如果Hopfield网络的权矩阵W是对称的,且0iiW,则网络在异步工作方式下是渐进稳定的。如果Hopfield网络的权矩阵W是对称正定的,则网络在异步或同步工作方式下都是渐进稳定的。离散Hopfield的作用在于,如果我们能根据已知样本{}ix设计权矩阵W和阈值向量使得我们想存储的模式成为迭代序列的不动点,那么就可以让加了噪的模式恢复到其本来的模式。为此,有如下确定W和的Hebb学习算法00.050.10.150.20.250.30.350.40.450.59595.59696.59797.59898.59999.5100标准差恢复率libsvm恢复率-标
本文标题:神经网络报告
链接地址:https://www.777doc.com/doc-2148083 .html