赞
踩
这是我的一门智能计算选修课做的对一些算法原理的简单实现,过程简单,算法的应用对象也比较简单,在自己电脑里找到的,刚完成一项开发任务,休息下,在电脑里翻到了之前的课程报告,在此分享到CSDN上。
摘要
人工神经网络(Artificial Neural Networks, ANN)可以实现学习,分类和预测等功能,其功能实现可以视为一个数据的拟合过程。但对于神经网络的超参数,在学习或者分类的过程中,其数值不会进行修正,构建网络体系来解决具体问题的过程中常常需要耗费长时间来测试超参数。为此,本文提出一种基于遗传算法的超参数搜寻方法。该算法面向(Adaptive Resonance TheoryⅡ)ART2神经网络,通过对设定好分类的数据,运用遗传算法的方法对ART2网络超参的搜寻及获取。该算法虽未对其他类型网络测试,但针对本例,能够在一定程度上获取良好的超参数数值。
关键词: 人工神经网络;ART2;遗传算法;超参数
Hyper-parameter Search Method Based on Genetic Algorithm
——Taking ART2 neural network as the object
Abstract. Artificial Neural Networks (ANN) can realize functions such as learning, classification and prediction, and its function realization can be regarded as a data fitting process. However, for the hyperparameters of neural networks, the values will not be corrected during the process of learning or classification. It is often necessary to spend a long time to test hyperparameters in the process of constructing a network system to solve specific problems. To this end, this paper proposes a hyperparametric search method based on genetic algorithm. The algorithm is oriented to the (Adaptive Resonance Theory II) ART2 neural network. Through the setting of the classified data, the genetic algorithm is used to search and acquire the ART2 network super-parameters. Although the algorithm is not tested on other types of networks, for this example, good hyperparameter values can be obtained to some extent.
Keywords: Artificial Neural Network; ART2; Genetic Algorithm; Hyper-parameter
人工神经网络是借鉴于生物神经网络而发展起来的新型智能信息处理系统,主要应用在学习、分类和预测等问题上。但神经网络模型工作过程中,有一些数值是不随学习过程而变的,这些参数的设定,经常需要的是“经验”判断,这些参数被称为“超参数”[1],目的是为了根据具体问题而设置最优参数以达到最小泛化误差。但是由于不可能每次参数的设定都完全为“经验”判断,很难获得良好的超参数。为此本文提出一种基于遗传算法的超参数搜寻方法。由于神经网络模型众多,本文将选取针对聚类分析问题的一种自适应共振理论模型2,即ART2神经网络。
本例子采用Unity3d,Matlab和C#语言作为研究工具。
综上所述,其中所需要一开始设定的超参数有:底层有输入方程参数a,中层有规格化方程参数b,上层有非线性变换函数参数θ。F2场中的超参数为:反馈参数d,警戒门限ρ,取向子系统中的比例参数c,以及在各层都出现的极小正实数e。其中ART2神经网络的流程图a:
给定五组初始的二维点,其数值由随机函数得到,如图:
但该数组里二维点的先后顺序是不可预测的,现在需要对这组点进行完美地聚类,并且实现学习及预测新点的功能。针对该问题,本来运用无导师监督的ART2神经网络算法即可进行很好的分类。但是问题就在于神经网络超参数的初始设定总不能很好地使得该网络具有良好的泛化性。因此采用遗传算法来解决这一问题。
因为面对不同的网络模型,超参数的范围是不同的,因此根据初步的测试以及归纳,将超参数的定义域设置如表1:
确定了超参数的定义域,可以进行遗传算法的编码处理。
(1)编码操作
确定了超参数的定义域及划分数后,采用二进制编码的方式对其进行编码。根据划分数确定二进制数的位数,每个超参数都对应一个二进制数,每个二进制数都相对应一个其定义域内的十进制的数。用C#语言实现便是创建一个Code的类,相对应的每个不同的超参数为该类的实例化,如图d所示。
因为划分数都为1000,而不是1024,所以在后续操作中修改二进制数使得转为的十进制数超过定义域时,用更接近一端的边界值进行替代。
创建的Code类表示为在基因层面上的类,包括基本的交叉重组变异等方法。但宏观角度上看,交叉重组变异是发生在个体与个体之间的,即每个个体的7个超参数,是一一对应进行交叉重组,因此需要创建一个Individual类来表示这一层面上的过程。
Individual个体类包括Code的上下界值与划分数,这些是常数,不会变化,一个个体的构造需要上述的7个超参数;每个个体还会根据所构造的7个超参数得到相对应的适应度值。其中,极小实数e无需取[0,1],因为在网络模型中它存在的作用是为了避免分母为0的情况,其值不应该对结果产生大的影响;为避免遗传算法的个体类别过于随机,根据警戒门限ρ在网络模型中的筛选作用,其值一般而言取[0.9,1],具体代码见图e。
然而一个遗传算法的过程,从初始状态到繁殖,到生存斗争和适者生存的过程,都是在种群内发生,这里暂且不考虑其他种群因素。因此本文相对应的创建了一个Population类。该类包含一个Individual组的属性,代表的是当前种群的个体;考虑到遗传算法过程交叉重组概率和变异概率不进行变化,设有一个“特别优秀”个体组的属性,用来存储生存斗争过程中个体适应度特别高的个体;有一个初始化和繁衍方法,用来表算法工作过程,具体代码见下图。
(2)交叉重组
以上的编码操作及一些框架代码完成后,便需要对交叉重组进行定义。上文提到过交叉重组是在个体层面进行,而本质仍然是基因之间的交叉重组,因此采用一种两点之间的交叉重组方法[4],其实现过程可以简化如下:
假设父代有10位二进制数,假设交叉重组概率为30%,即会在10个位置中随机选定3个位置中的数进行交换,从而得到两个新的后代。因交叉重组是发生在个体之间,因此并不是在种群里所有的基因都会有进行交叉重组的机会,并且重组是进行捆绑操作,即每次交叉重组都为2组7个超参数之间的相互作用。
(3)变异
变异和交叉重组实质一样,根本上也是基因层面上的变异,不同的是变异发生在一个个体的一个基因本身,并不需要两个个体之间的相互作用。本文采用一种随机性质的二进制数取反的变异方法。其实现过程如下:
假设变异概率为20%,即在初代中10位二进制数将有2位进行取反的操作。
(4)适应度值及适者生存原则
适应度即每个个体在生物圈中的适应能力,本文中将适应度值定义为每个个体的7个超参数在ART2神经网络中学习固定次数过后对同一类数组聚类的能力,用数学表达式即:
其中,E(x)代表的是每次ART2网络运行过后聚类误差数,c为学习次数,k为聚类结果的类别数,在本文中k=5,R(k)为每个聚类的理想个数,O(k)为实际聚类的每个类的数。
适应度筛选原则,采用父类和子类进行共同筛选的方法。在父代繁衍出相同数量的子代后,进行适应度值的计算,然后进行共同斗争,筛选出一半,因此整个算法过程中,种群的数量保持为一个动态的值,不会过度繁衍或者斗争过多导致数量减少。
针对该数组聚类的ART2网络模型,之前测算到有比较理想的分类结果及其超参数设定有:
a = 1,b = 0.5,c = 0.2,d = 0.6,e = 0.00133,θ=0.2,k=0.996
与其对应的代码和聚类结果在Matlab软件中显示如图g所示。
可以看到图里1,2,3,4,5各类分得很清楚,该聚类结果可以当作是本例的理想结果。
在进行遗传算法求得的超参数,代码如图h。
设定种群的动态数量为30个,进行20次后代的繁衍,交叉重组的概率为80%,变异的概率为30%,得到最后30个个体里,筛选出适应度值前10的个体,在unity里面进行超参数的初始化,得到的结果如图i。
将第一个适应度值为49.2的个体的超参数测试即:
a = 0.836,b = 0.053,c = 0.023,d = 0.903,e = 0.00508,θ=0.277,k=0.9906
作为超参数代入ART2神经网络的聚类分析过程,在unity的另外一个工程对坐标进行打印(由于unity工程里进行分类为颜色分类,难以在文中进行表达),结果见图j,然后在Matlab里把坐标的分类结果表示出来,如图k所示:
本次实验在Intel® Core™i7-7700HQ 2.80GHz CPU,8G内存,Windows10 64位操作系统的计算机上完成,研究平台主要是Unity3D平台和Matlab软件。本文遗传算法种群动态数量为30个,遗传代数为20代,每次所运行时间为85s左右,考虑到ART2神经网络的高度复杂性及遗传算法的空间复杂度,这样的结果属于可接受范围。
而上述结果得到该遗传算法在ART2神经网络中的超参数搜寻结果是较为理想的。ART2神经网络通过遗传算法的优化,可以得到较优的超参数,使得神经网络的学习更具有高效性和准确性,避免网络陷入过度学习和聚类分析不明确等问题。
[1]李刚,高武奇,杨瑞臣.有指导机器学习超参数的交叉验证智能优化[J].西安工业大学学报,2016,36(11):906-910.
[2]韩力群.人工神经网络理论、设计及应用[M].北京:化学工业出版社,2007,98-101.
[3]陈建辉.ART网络的鲁棒性增强方法研究[D].电子科技大学,2016.
[4]S.N.Sivanandam,S.N.Deepa.Introduction to Genetic Algorithms[M].New York,50-53,56-58.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。