基于改进竞争型神经网络的分类算法研究
2017-07-14南书坡郭战杰程聪韩利华
南书坡+郭战杰+程聪+韩利华
摘要:该文针对竞争型神经网络在对训练样本没有明显的分类特征时不能准确分类的问题,在已有的分类算法基础上,提出了一种改进的分类算法。该算法在竞争型神经网络学习过程,通过对训练样本引入特征向量的方法,进一步改善了分类效果。实验结果表明,该算法在分类过程中表现了良好的效果,不仅降低了训练误差,还具有很好的分类准确率,表现出很好的学习效率,通过对比说明该算法的有效性和優越性。
关键词:竞争型神经网络;分类;训练误差;特征向量
文本分类数是据挖掘的一个重要研究领域,国内外的众多学者已经进行了比较深入的研究,取得了不少研究成果。常见的文本分类技术有最小距离方法、朴素贝叶斯方法、KNN方法、支持向量机方法(SVM)、模糊c均值(FCM)算法和等,现在有很多学者把神经网络的方法应用到分类算法中,在这些分类算法中,神经网络的文本分类更具有优越的性能。袁飞云利用SOINN自动产生聚类数目和保留数据拓扑结构的两项能力,寻找更有效的单词和设计更有效的编码方式,提出了基于自组织增量神经网络(SOINN)的码书产生方法;申明金利用自组织特征映射神经网络(SOM)以无监督方式进行网络训练,具有自组织功能的特点,利用自组织特征映射神经网络对不同产地金银花进行分类;彭俊等将不同空气质量等级下的各空气指标作为原型模式,通过输入样本模式,利用竞争网络的竞争特点得到胜者,以此得出空气质量等级;郝晓丽等通过筛选基于轮廓系数的优秀样木群,来寻找最佳初始聚类中心,并将该改进算法用于构造径向基函数神经网络分类器和快速有效地确定隐含层节点径向基函数中心及函数的宽度,从而提高了分类精度;孙进进利用神经网络技术中的自组织映射SOM)网络对我国主要机场进行聚类分析评价,得出我国主要机场分为8层的主要结论;刘艳杰在非监督的自组织映射神经网络的基础上进行了一定的改进,构建了有监督的神经网络分类模型;李杨将神经网络与群体智能算法、云计算相结合的方法,实现对不同规模农业数据集的分类,提出基于神经网络分类器的设计与优化方法。而竞争型神经网络的自组织、自适应学习能力,进一步拓宽了神经网络在模式分类和识别方面的应用。竞争型神经网络依靠神经元之间的兴奋、协调、抑制或竞争的作用来进行信息处理,可在训练中无监督自组织学习,通过学习提取数据中的重要特征或内在规律,进而实现分类分析的功能。
1竞争型神经网络的描述
1.1竞争型网络的结构
竞争学习网络的结构如图1所示,该网络具有R维输入和s个输出,由前馈层和竞争层组成。图中的llndlstll模块表示对输入矢量P和神经元权值矢量w之间的距离取负。该网络的输出层是竞争层,图中的模块c表示竞争传递函数,其输出矢量由竞争层各神经元的输出组成,这些输出指明了原型模式与输入向量的相互关系。竞争过后只有一个神经元有非零输出,获胜的神经元指明输入属于哪类(每个原型向量代表一个类)。
1.2竞争型神经网络的原理
竞争型神经网络在结构上,既不同于阶层型的各层神经元间非单向连接,也不同于全连接型。它有层次界限,一般是由输入层和竞争层构成的两层网络。两层之间各神经元实现双向全连接,没有隐含层,有时竞争层各神经元之间还存在横向连接。在学习方法上,不是以网络的误差或能量函数的单调递减作为算法准则。而是依靠神经元之间的兴奋、协调、抑制、竞争的作用来进行信息处理,指导网络的学习与工作。
网络在刚开始建立的时候,输入层和输出层之间的连接权值已经开始了,如果与竞争层某一神经元对应的矢量子类别属于线性层某个神经元所对应的目标类别,则这两个神经元的连接权值为1,否则二者的连接权值为0,这样的权值矩阵就实现了子类别到目标类别的合并。在建立竞争型网络时,每类数据占数据总数的百分比是已知的,这也是竞争层神经元归并到线性层的各个输出时所依据的比例。
1.3存在的问题
竞争型神经网络按Kohonen学习规则对获胜神经元的权值进行调整,通过输入向量进行神经元权值的调整,因此在模式识别的应用中是很有用的。通过学习,那些最靠近输入向量的神经元权值向量得到修正,使之更靠近输入向量,其结果是获胜的神经元在下一次相似的输入向量出现时,获胜的可能性更大;而对于那些与输入向量相差很远的神经元权值向量,获胜的可能性将变得很小。这样,当经过越来越多的训练样本学习后,每一个网络层中的神经元权值向量很快被调整为最接近某一类输入向量的值。最终的结果是,如果神经元的数量足够多,则具有相似输入向量的各类模式作为输入向量时,其对应的神经元输出为1;而对于其他模式的输入向量,其对应的神经元输出为0。所以,竞争型神经网络具有对输入向量进行学习分类的能力。
例子:以竞争型神经网络为工具,对下面的数据进行分类:
运用Matlab编程实现,发现网络的训练误差能达到要求,最后也能实现很好的分类效果。运行结果如图2所示。
有运行结果可以看到,训练误差达到要求,分类结果也很合理。
但是在实际应用过程中,我们发现,当对于训练数据的数据特征十分明显的时候,本文设计的网络模型可以对训练的数据进行合理有效的分类,但是,当训练数据的特征不太明显区分的时候,本文设计的训练模型的分类效果就不是太有优势,所得到的分类结果就不能达到我们预期的效果。
我们利用竞争型神经网络对数据样本进行分类,其中参数设置为学习效率0.1,网络竞争层有4个神经元,运用Matlab编程实现,发现结果如下:
例子:我们利用本文设计的网络分类模型进行对数据分类处理:进行分类处理数据的样本数据如下所示:
通过运行学习发现训练误差较大,分类结果也达不到要求。
2改进的方法
2.1问题分析
通过比较分析我们发现,上面的数据样本没有明显的分类特征,所以,以竞争型神经网络进行分类,其输入向量仅仅依靠数据本身的固有的特征时不够的,但我们可以把数据样本看作是二维数据,假设同符号的特征值为1,不同符号的特征值为2,于是一个新的训练样本就确定了,即成为三维数据模型。
2.2改进的算法
第一步:给定数据集X=[X1,X2……,Xi),对网络进行初始化,随机给定网络竞争层与输入层间的初始权向量wj(=wj[w1j w2j…wnj];j=1,2,…,m xp;wijE(0,1));给定输出层与竞争层间的连接权值wjo=1/m,o=1,2,…P (P表示第二隐层和输出层的连接权矢量)。
第二步:创建竞争型神经网络,首先根据给定的问题确定训练样本的输入向量,当学习模式样本本身杂乱无章,没有明显的分类特征,网络对输入模式的响应呈现震荡的现象,不足以区分各类模式时,在创建网络之前,提取训练样本的特征值,设置输入样本的特征向量,然后再创建网络模型,并根据模式分类数确定神经元的数目,最后任取一输入模式Ak。
第三步:计算竞争层各神经元的输入值si:
第四步:对本文建立的网络进行训练学习,网络训练最大次数的初始值设置为230,当训练误差大于预期的设定值的时候,可以尝试增加训练的最大次数,按“胜者为王”(Winner Takes All)原则,将训练网络中获得最接近预期值的神经元作为胜者,输出状态设置为1,没有获胜的神经元的输出状态设置为0。如果有两个以上神经元的sj相同,取左边的为获胜单元。
第五步:获胜神经元连接权修正如下:
第六步:另选一学习模式,返回步骤3,直至所有学习模式提供一遍。
第七步:如果不满足要求,则返回到最初的训练状态,反复训练直至训练网络中神经元获得最接近预期值,最终的训练结束。
第八步:根据测试样本利用Matlab编写程序进行仿真实验。
通过实例训练,我们发现本算法和改进前的算法相比,改进后的算法训练误差却大大降低,已经达到了训练的精度要求,同时也很好地实现了分类要求。
3结束语
竞争型神经网络的输出层神经元能够通过竞争以确定胜者,胜者将指出哪一种原型模式最能代表输入模式。利用竞争神经网络可以自适应分类的这一特点,本文提出了一种改进的分类算法,该算法在竞争型神经网络学习过程中对训练样本引入特征向量的方法,解决了竞争型神经网络在对学习模式样本本身杂乱无章,没有明显的分类特征时不能准确分类的问题,实验结果表明该方法具有较好的分类效果。