感知器算法实验 -1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 理解线性分类器的分类原理。
2. 掌握感知器算法,利用它对输入的数据进行分类。
3. 理解BP 算法,使用BP 算法对输入数据进行分类。 二. 实验原理 1.感知器算法
感知器算法是通过训练模式的迭代和学习算法,产生线性可分的模式判别函数。感知器算法就是通过对训练模式样本集的“学习”得出判别函数的系数解。在本次实验中,我们主要是采用硬限幅函数进行分类。
感知器的训练算法如下:
设输入矢量{x 1,x 2,…,x n }其中每一个模式类别已知,它们分别属于ω1类和ω2类。 (1)置步数k=1,令增量ρ为某正的常数,分别赋给初始增广权矢量w(1)的各分量较小的任意值。
(2)输入训练模式x k ,计算判别函数值w T (k) x k 。 (3)调整增广权矢量,规则是:
a.如果x k ∈ω1和w T (k) x k ≤0,则w(k+1)=w(k)+ ρx k ;
b.如果x k ∈ω2和w T (k) x k ≥0,则w(k+1)=w(k)-ρx k ;
c.如果x k ∈ω1和w T (k) x k >0,或x k ∈ω2和w T (k) x k <0,则w(k+1)=w(k)
(4)如果k 如果训练模式已经符号规范化,即x k ∈ω2已经乘以-1(包括增广分量1),则校正权矢量的规则可统一为 () (1)()k w k w k w k x ρ⎧+=⎨ +⎩ 如果w T (k) x k >0分类正确,则为第一个表达式,如果w T (k) x k ≤0错误分类则为第二个表达式。 在全部模式训练完一轮之后只要还有模式分类错误,则需要进行第二轮迭代,再用全部训练模式训练一次,建立新的权矢量。如果对训练模式还有错分,则进行第三轮迭代依此类推,直至对所有驯良模式均能正确分类为止,此时的w 即为所求的权矢量。 BP (Back Propagation)神经网络是一种神经网络学习算法。其由输入层、隐层、输出层组成的阶层型神经网络,隐层可扩展为多层。相邻层之间各神经元进行全连接,而每层各神经元之间无连接,网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,各神经元获得网络的输入响应产生连接权值(Weight )。然后按减小希望输出与实际输出误差的方向,从输出层经各中间层逐层修正各连接权,回到输入层。此过程反复交替进行,直至网络的全局误差趋向给定的极小值,即完成学习的过程。 算法描述: 输入层: 单元i 的输入:i x ; 单元数量:d ; 单元i 的输出:i x ; 单元i 的激活函数:线性函数; 隐层: 单元j 的输入:netj ; 单元数量:nH ; 01 j d t j ji i j i net x x ωωω==+=∑ 010(,,....,),1t d x x x x x == 01(,,....,)t j j j jd ωωωω= 单元j 的输出: ()j j y f net =; 单元j 的激活函数:非线性函数; 输出层: 单元k 的输入: k net ; 单元数量:c ; 01 H n t k kj j k k j net y y ωωω==+=∑ 010(,,....,),1H t n y y y y y == 01(,,....,)H t k k k kn ωωωω= 单元k 的输出:()k k z f net = 单元k 的激活函数:非线性函数 两层神经网络图如下: 分析: (1)给定隐层单元及输出层单元的激活函数,一个神经网络就可以实现一个对输入特征向量x 的非线性映射。因此,神经网络本质上是一个非线性函数。 (2)给定隐层单元及输出层单元的激活函数,该非线性函数所对应的映射关系完全由权系数决定。不同的权系数对应不同的非线性映射。 (3)神经网络学习的目的,就是根据已知的训练样本,确定神经网络的权系数。这一过程称为训练过程。在训练过程结束后,对于新样本x ,根据神经网络的输出进行判决。 (4)对于C 类分类问题,神经网络的输出为(),1,...,k z x k c =。神经网络的判 决规则为:如果()(),1,...,,k l z x z x l c l k ≥=≠,则判x 属于wk 。 (5)令()(),1,...,k k g x z x k c ==,可以看出神经网络实际上实现了C 个非线性 的鉴别函数,并根据鉴别函数的取值进行分类。 (6)神经网络的训练目标:调整权系数w ,即所有的wkj 及wij ,使得对于训练集中的每一个训练样本(x,t),网络的输出尽可能满足: 11()()......()c c z x t z x t z x t ⎛⎫⎛⎫ ⎪ ⎪=== ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭ (7)优化准则:对于样本集D ,使下述误差函数取得最小值: ()() x x D J J ωω∈=∑ () 2 1 1()()2c x k k k J t z x ω==-∑ 权系数的调整: kj kj kj J ωωη ω∂←-∂ ()'()k j k k k k kj J y t z f net δδω∂==--∂, 1 ()c ji ji j i j j k kj k ji ji J J x f net ωωηδδδωωω=∂∂'←-==∂∂∑,, BP 算法描述: 对于给定的样本集D={(x,t)},初始化网络结构d*nH*c 。初始化权系数w ,学习效率η、阈值θ。 随机从D 中取出一个样本(x,t),根据该样本更新权系数w : kj kj kj J ωωη ω∂←-∂ ji ji ji J ωωη ω∂←-∂ 计算 ()()pre J J J ωω∆=-,如果J θ∆<结束训练,并认为此时的 w 为最 优。否则转第2步继续进行循环。 三.实验内容 1. 感知器算法实验 本实验利用感知器算法的原理,随机抽取两类的部分数据,然后,用这两类的其他数据来验证分类是否正确。这里是利用感知器两两分类的原理。实验可得结果如下表。其中r1是输入x1所得的分类正确率,r2是输入x2所得的分类正确率,r3是输入x3所得的分类正确率。 当训练样本数m 取20时,x1和x2数据分类正确率都是100%,x1和x3数据分类正确率是100%,而x2和x3的分类正确率分别为86% 和93%。 当训练样本数m 取30时,x1和x2数据分类正确率都是100%,x1和x3数据分类正确率是100%,而x2和x3的分类正确率分别为92% 和88%。 由实验结果可以看出,x1和x2、x1和x3之间是线性可分的,而x2和x3则达到了与预设的迭代次数的上限,且分类效果不明显。说明感知器算法对于现行可分的数据有比较好的性能与速度,但对于线性不可分的数据则效果较差。 2.BP 算法实验 (1)异或问题实验 利用前向两层神经网络来完成异或分类,输入的样本为x1=[0 1 -1],x2=[1 0 -1],