嵌入式设计应用
一个新的二进前向多层网学习算法及布尔函数优化实现
本文首先给出二进前向多层网几何学习算法[1,2]的一个改进策略,提高了原算法的学习效率.然后提出一个新的神经网络启发式遗传几何学习算法(简称HGGL算法).HGGL算法采用面向知识的交叉算子和变异算子对几何超平面进行优化的划分,同时确定隐层神经元的个数及连接权系数和阈值.对任意布尔函数,HGGL算法可获得迄今为止隐节点数最少的神经网络结构.
关键词:遗传算法;神经网络;学习算法;布尔函数
A New Learning Algorithm of Binary Neural Network Used for Optimum Design of Boolean Function
MA Xiao-min YANG Yi-xian
(Department of Information Engineering,Beijing University of Posts and Telecommunications,Beijing 100876,China)
ZHANG Zhao-zhi
(Institute of System Science,Academia Sinica,Beijing 100080,China)
Abstract:A modification to the geometrical learning algorithm of binary neural network,which tries to enhance efficiency of the algorithm,is demonstrated.Then a new Heuristic Genetic Geometrical Learning algorithm(called HGGL algorithm) of the neural network used for arbitrary Boolean function approximation is presented.The algorithm imtroduces knowledge based crossover operator and mutation operator to optimally divede geometrical hypercube and evaluate the number of the hidden neurons,connection weight and threshold. For arbitrary Boolean function,the neural network trained by HGGL algorithm has the fewest number of hidden layer neurons comparde with existed learning algorithms.
Key words:genetic algorithm;neural network;learning algorithm;Boolean function
一、引 言
布尔函数的简化实现在编码、密码、数字逻辑设计等领域的理论和应用都有重要意义.设n元布尔函数f(X)=f(x1,x2,…,xn)为GF(2n)→GF(2)上的函数,其中GF(2n)为二元域GF(2)上的n维向量空间,xi∈{0,1},i=1,2,…,n.本文研究的核心是利用前向三层神经网络实现或逼近任意布尔函数的输入输出映射.目前布尔函数神经网络实现结构最简单的是文[1,2]的几何学习算法,把布尔函数输入空间2n个二进制样本视作n维超立方体的2n个顶点,隐层的学习是通过对学习样本的几何分析寻找一系列超平面对超立方体进行划分,使得划分后两个超平面之间的学习样本顶点拥有相同的布尔函数输出,隐层网络学习过程是划分超平面的逐次产生过程,直至所有的样本顶点都被相应的超平面分离.最后超平面的个数等于隐层神经元的个数,超平面方程的系数即为隐层神经元的权系数.几何学习算法把非线性可分问题转化为若干线性可分问题求解,从而用一个三层网实现任意布尔函数映射 .然而在几何学习算法的训练过程中,只有划分超平面决定了全部布尔函数样本顶点,学习才告结束.本文提出并证明了一个新的学习结束的判别条件,减少了可能的隐层神经元个数及学习时间.文[1,2]学习算法样本的先后排序对学习效果影响很大,对于变量个数少的布尔函数可以利用穷举法获得最优的神经网络实现结构,而对于变量个数多的布尔函数(如编码密码中的布尔函数),这种排序的搜索问题实际上是一个NP难解问题.在对几何学习算法分析改进后,本文针对几何学习提出一种启发式遗传算法,寻找最优的排序路径,形成完整的HGGL学习算法.最后通过典型的例子说明了算法的特点及有效性.
二、几何学习算法的改进策略
定义1 在学习过程中,已由超平面分离的线性可分样本顶点称为真顶点;其余样本称假顶点;确定超平面选择的初始样本顶点称核心顶点.
定义2 设布尔函数数神经网络学习样本集合U={X1,X2,…,XN},其中N=2n,Xi={xi1,xi2,…,xin},则以某一个样本为核心顶点的真顶点样本集合称为真顶点分离集VK={X1,X2,…,XK},其中K为集合中真顶点样本的个数.XI为初始核心顶点.
神经网络隐层的学习过程实质上是真顶点样本集合VK扩展过程:在U-VK中随机选择样本顶点Xk+1,满足f(X,X∈Vk)=f(X,X∈Vk+1),并计算集合中心:(Ci/C0)=(1/(k+1))其中C0=k+1,x′i={0,1};i=1,2,…,n,对于Xj∈{Vk,Xk+1},,计算…,k+1;对于Xj∈U-{Vk,Xk+1},计算Tmin=minj,j=k+2,…,2n.这样判别Xk+1是否可扩展为真顶点的条件为:
Tmax<Tmin (1)
如果Xk+1可扩展,即Vk与U-Vk线性可分,Vk+1={Xk,Xk+1},得到权系数wi=2Ci-C0和阈值T=[(Tmax+Tmin)/2],[x]表示取整函数,否则寻找新的样本顶点,不断扩展直至U-Vk不再存在可扩展的与XK有相同布尔函数输出的顶点样本,则一个分离超平面形成,w1j={wi},Tj=T,这时有:当;当0,从而确定一个隐层神经元,再令Vk的输出取反,K=k,重复扩展.不断得到新的超平面或隐层神经元,直至U-Vk=φ(所有样本顶点训练完毕).最后得到L个超平面及相应的神经网络隐层结构.
输出层的学习目的就是组合隐层神经元的输出以产生理想的布尔函数输出.输出层的连接权系数及阈值w2j与θ按以下规则确定[1,2]:
(2)
文[1,2]中在隐层的训练中,仅当所有的学习样本顶点都扩展为真顶点分离集合,学习才告结束.在确定超平面的过程中,下面定理将说明在某些情形下,这个学习结束条件是不必要的.这样会减少若干分离超平面,意味着减少隐层神经元.
定理:在真顶点分离集合VK的扩展过程中,如果U-VK中所有样本顶点布尔函数输出相同,则只需要一个超平面(或一个隐层神经元)即可把这些样本与VK中的其它样本区分开来,并得到正确的布尔函数输出.
证明:设分离集合VK中的K个样本由L个超平面确定,根据真顶点分离集合的扩展原理可知:
而j=K+1,…,2n,t=1,2,…,L
故当样本输入属于VK,至少有一个隐层神经元输出为1,当样本输入不属于VK,则隐层所有神经元输出皆为0.因此若VK以外的样本布尔函数值皆相同,超平面L就可以来区分这些样本,不需再增加超平面,即使U-VK中有一些样本不满足式(1)真顶点的扩展条件,仍可得到正确输出.证毕
上述定理为几何学习算法学习结束提供了新的判别条件:即在真顶点分离集扩展过程中,当U=Vk中所有样本布尔函数值相同时,则学习结束.
三、HGGL算法原理及其实现
前述几何学习算法真顶点分离集扩展过程中,实现同一布尔函数初始核心顶点样本的选择及真顶点扩展的次序不同,需要,隐层神经元的个数差异很大.文[1,2]采用穷举法,即每种可能的初始点及真顶点集合都试一遍,然后找到最优的一种组合和神经网络结构.变量个数为n的布尔函数,其排列的可能性有(2n)!,因此对于变量很多的布尔函数很难在有限时间内实现.本文引入遗传算法搜索样本学习的最优排序即布尔函数实现复杂度最小的神经网络结构.为避免加大样本顶点超平面划分的搜索空间,本文没有采用基本的遗传算子,而是基于知识采用了启发式遗传策略寻求此问题的最优解.
1.问题的编码及遗传群体的产生
把几何学习算法中样本真顶点分离集的扩展过程看作是样本顶点在真顶点分离集中依次序排列的过程,遗传算法的任务是寻找一组或若干组最优真顶点样本的排列,使得神经网络实现布尔函数所需隐层神经元个数最少.遗传算法的每个基因串按如下方式编码:P={p1,p2,…,p2n},pi∈{1,2,…,2n},i=1,2,…,2n
首先把学习样本从1~2n按次序逐个编号表示样本在基因串中的顺序位置,即P表示真顶点分离集中各样本参与学习的先后顺序,代表序号为pi的样本在时刻i扩展参与学习.根据启发式遗传算法的要求,P中所代表样本顶点必须为合法真顶点,所谓合法真顶点应满足如下判别条件:设Vi-1={Xp1,Xp2,…,Xpi-1}对任意pi代表的新样本Xpi,①与P中已有样本点序号没有重复;②满足式(1)真顶点分离集扩展条件.
在遗传算法中,对每一个基因串都有一个衡量其特性的适合度函数作如下定义:
fa(P)=1/L (3)
这里L表示P排列下,几何划分的超平面个数或神经网络所需神经元的个数,超平面个数越少,则P的适合度函数越大,适合度大的基因串繁殖下一代的概率也大.
2.遗传算子的设计
遗传算子通过交叉、变异、选择三个遗传算子以产生下一代更优秀性能的群体.
交叉是指把父代基因串的部分结构加以替换重组而生成新个体的操作,通过交叉子代个体继承了父代个体遗传特性,交叉是HGGL算法寻找最优解的主要手段,由于基于神经网络学习的几何超平面划分问题采用的是样本序号的编码,若采取简单的一点交叉或多点交叉策略,必然以极大的概率产生非法的真顶点分离集合.因此本文引入了基于知识的交叉方法,对于父代基因串P={p1,p2,…,p2n},交叉算子构造后代:Q={q1,q2,…,q2n},qi∈{1,2,…,2n},i=1,2,…,2n,以概率Pc从上一代群体中选取适合度较大的基因串进行交叉:
①随机选取一个样本顶点,并把其序号作为初始核心样本序号q1.集合V1={Xq1};
②For K=1 to 2n-1.给定Vk={Xq1,…,Xqk},在父代个体P中寻找与qk邻接的序号,设为pm.并根据式(1)判别Xpm是否为合法真顶点集合,如果是,则令qk+1=pm;如果不是,则在U-Vk中寻找新的合法真顶点添加到真顶点集合,寻找途径为:首先寻找与qk输出相同的样本顶点;如果找不到合法点则找与qk输出相异的顶点;
③重复②相类似的操作,不断继承父代基因串的相邻样本序号,或寻找新的合法样本得到q3,q4,…,直至构造出完整的子代基因串Q.如果某一时刻i,U-Vk的样本满足定理1的条件,交叉提前完成,qi,qi+1,…,q2n可随意排列.
变异算子是对群体中的个体串的某些基因座上的基因值作变动,以帮助遗传算法的交叉算子摆脱在进化过程中使得群体陷于搜索空间中某个超平面的局面.从而加速向全局最优解收敛.考虑到一般的变异策略也会产生非法的真顶点分离集合,引入基于知识的变异方法如下:
①以很小的变异概率Pm,在上一代群体中随机选取父代基因串中输出相同的两个样本序号,交换其位置;
②判别被操作的基因串是否为合法真顶点分离集合,如果是则变异结束;
③否则,以扩展过程中第一个不合法样本点为起点,依据前述的交叉方法,构造新的合法后代基因串.选择即是把上一代群体中的个体按一定规律选中繁衍下一代.HGGL的选择策略为:
①计算上一代每一个个体的适合度函数fa;②以选择概率Ps比例产生适合度函数值较大的个体作为下一代群体中的个体.
四、HGGL算法实现流程及计算机仿真结果
给定任意布尔函数学习样本及其相应的输出,HGGL创建一个复杂性最低的三层前向神经网络,完全实现布尔函数的输入输出映射关系.HGGL算法的主要流程可归纳如下:
①初始化 根据具体任务,确定遗传算法的交叉概率Pc(0.6~0.9),变异概率Pm(0.01~0.15),选择概率Ps(0.8~0.95),确定群体大小N,一般取20~60,给定布尔函数变量个数n,样本个数M=2n.
②问题编码 第一代群体的产生,以几何学习算法确定隐层神经元连接系数及阈值集合,产生N个个体,并计算每个个体的适合度.
③下一代群体的进化 对上一代群体中的个体进行交叉、变异、选择等遗传操作,保留适应值最大的个体直接进入下一代群体,产生下一代N个个代,并计算每个个体的适合度及超平面方程的系数集合.
④重复②③直至满足下面的收敛条件 a.进化的代数等于预先给定的Gmax代群体;b.同一代群体中所有基因串的适合度函数几乎相等.
⑤选择最优的个体作为隐层学习的最终结果 隐层神经结构已经确定.
⑥输出层的学习 根据式(2)输出层学习方法,确定输出层的权系数及阈值.
本文通过C语言仿真实现了HGGL算法,对许多布尔函数进行学习,得到了一系列很好的结果,下面给出其中一个典型例子.
例 5位布尔函数的实现[1],其布尔函数输出可表示为:
f(0~31)=(0,0,1,0,1,1,0,1,1,1,1,1,0,1,1,0,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0)
取输入个数n=5,超立方体顶点个数为32,交叉概率Pc=0.8,变异概率Pm=0.01;选择概率Ps=0.9,遗传算法群体个数N=30,每个串基因的长度为32.HGGL经20代的遗传学习,获得的最优排序其相应的超平面参数(即隐层神经元的权系数及阈值)如表1所示,布尔函数只需要3个隐层神经元.由式(2)确定输出层神经元连接权系数,实现此布尔函数的三层神经网络如图1所示,经实验验证:HGGL算法能够可靠收敛,如果没有变异,算法在很多情形下收敛不到最优值,而没有每代最优基因串的直接继承,收敛曲线会出现振荡,收敛得不到保证.同样的布尔函数文[4]需要15个隐层神经元,文[3]需要至少8个神经元,而文[1]的几何学习算法经穷举得到的优化结果为4个隐层神经元.由于本文采用新的学习判别准则和遗传算法寻优,得到了目前最好的实现结果.
表1 最优排序结果及超平面系数
输入样本序号 | 隐层神经元的权系数与阈值 | |||||
m=(x1x2x3x4x5)10 | wi1 | wi2 | wi3 | wi4 | wi5 | T |
21,17,1,19,25,29 | 4 | -2 | -2 | -4 | 6 | 5 |
16,20,23,5,9,13,4,7,28 | 3 | -5 | 3 | -9 | 7 | 1 |
0,3,31,12,15,6,22,18,24,27,30 | 4 | -4 | 4 | -4 | 4 | -2 |
26,2,8,11,10,14 |
图1 5位布尔函数实现网络 五、结 论 |
全部0条评论
快来发表一下你的评论吧 !