620 likes | 752 Views
第三章 构造性机器学习理论与覆盖算法. 引言. 1. 1.1 传统的神经网络存在的问题 传统的神经网络是非构造性的,整个网络结构就像是个“黑盒子” ,只能从输入输出的关系来认识它。 在帮助解决实际的大规模问题时遇到了很多的难题: 1. 缺乏有效的学习算法; 2. 难以将特定的要求、知识和策略融入其中; 3. 难以用硬件实现网络结构. 1. 1.2 构造性机器学习方法的提出 最初提出:张铃张钹于 1997 年提出了多层反馈神经网络的 FP ( Forward Propagation )学习和综合算法。
E N D
引言 1
1.1 传统的神经网络存在的问题 传统的神经网络是非构造性的,整个网络结构就像是个“黑盒子” ,只能从输入输出的关系来认识它。 在帮助解决实际的大规模问题时遇到了很多的难题: 1. 缺乏有效的学习算法; 2.难以将特定的要求、知识和策略融入其中; 3.难以用硬件实现网络结构 1
1.2 构造性机器学习方法的提出 最初提出:张铃张钹于1997年提出了多层反馈神经网络的FP(Forward Propagation)学习和综合算法。 构造性学习方法就如同是盖房子,总是先从最底层的地基结构开始,打完地基后建一层,建好一层后建二层,如此重复构造,直至房屋最后造好。由此可知,构造性机器学习方法可以分层逐步地构造,并将学习系统的基本功能模块划分成若干独立的功能子模块。 1
1.2.1 构造性神经网络描述 构造性神经网络中各个神经元之间的连接是松散的,即一个模块内的神经元与另一个模块内的神经元之间的连接权数目很少,甚至没有连接。各模块独自负责解决问题的一部分,因此在学习阶段所处理的数据也不完全相同。 1
1.2.2 构造性网络结构 首先,网络结构中各功能子模块相对简单,而且各子模块主要只需要集中于问题的一部分,所要解决的问题也相对比较简单,不会受到其它不同信号模块的影响,因此容易训练,相对简单的网络结构也有利于网络的泛化能力; 其次,网络的行为便于解释、分析,因而便于对网络的设计进行改进; 第三,各功能模块相对独立,有时可并行地进行训练,提高训练的效率; 第四,在解决实际问题时,经常需要建立大规模的神经网络,构造性的结构使得大规模网络的组织可按模块来构造,使得复杂问题变得相对简单。 第五,用硬件实现网络结构时,先构造简单的模块再将他们连接起来比一次性建立全连接的大规模网络容易的多 1
1.2.3 构造性学习的意义 重要事实:人脑中的神经元之间不是全连接的,相反,他们的连接是松散的,并且是以聚类和多层次的方式组织在一起的,因此,从借鉴生物界研究成果的角度出发,构造性学习方法是在设计学习系统时值得考虑的一个重要设计原则,从解决科研、工程中实际问题的角度出发,人们逐渐认识到构造性的网络结构对于解决大规模问题有着非常重要的意义。 1
1.3 构造性机器学习覆盖算法与SVM的区别 SVM: (1)基于统计学习理论的一种学习方法 (2)主要是研究小样本下的机器学习的规律,无论是线性可分还是线性不可分,都需要求解复杂的二次规划问题,这相当困难 (3)SVM本质上用于解决二分类问题,只能用于类别数为二的样本的分类,多类别的分类问题,需构造SVM决策树,效率低 构造性学习方法的覆盖算法: (1)可处理海量样本,能根据样本自身的特点,针对学习样本的特征用超平面切割球面形成“球形领域”作为神经元来构造网络 (2)分类能力强,运行速度快,最适宜于多类别的分类问题 (3)可读性较强,参数的确定相对来说也比较容易。 1
2.1 覆盖问题的描述 覆盖、划分、无关子集问题的数学定义: 定义1 假设K={rt=(xt,yt),t=1,2,…,p} 为一个有限的集合, C={Cj,j=1,2,…,s}是K上的一个子集族,即每个Cj(j=1,2,…s)都是K的子集。令J={1,2,…,s},若J的一个子集J*满足∪Cj=K ,则称J*是集合K上的一个覆盖。 定义2 对,若j≠i ,有Cj∩Ci= ,且∪Cj=K ,则称J*是集合K上的一个划分。 定义3 针对上述假设,对,若j≠i ,有Cj∩Ci= ,则称J*是集合K上的一个无关子族。 1
2.2 覆盖算法的理论基础 1943年McCulloch和Pitts根据神经元传递中的“0,1律”和神经传递中信号不但有不同的强度,而且有兴奋和抑制两种情况,提出了神经元的数学模型(M-P模型) 一个M-P神经元是一个有着n个输入和 单个输出的处理单元,其输入输出关系如下: 是符号函数
2.2 覆盖算法的理论基础 时,表示点X落在超平面P的正半空间内,此时 当 ;当 时,表示点X落在超平面P的负半空间内, ,如图3.2 所示。
2.2.1 超球面、球形领域、空间投射的概念 当n维空间中m个超平面(n,m的值较大时)相交时,情况会非常复杂,很难再用超平面的模型直观的理解神经网络的内在性质。
2.2.1 超球面、球形领域、空间投射的概念 文献[11]中指出若限定所有输入向量的长度相等,即将输入向量限定在n维的某个球面Sn( Sn是n+1 维空间中的 n维超球面,其中心在原点,半径为R)上,那么此时,则表示球面上输入向量落在超平面p ( p由所表示)的正半空间的部分,这个部分恰好是球面上的某个“球形领域”,若取 w与x 等长,则这个球形领域的中心恰好是w ,其半径为 ,是的单调下降的函数,如图3.3所示。 这里用绿线表示球冠半径r,红线表示w向量,蓝线表示球心到超平面 的距离
2.2.1 超球面、球形领域、空间投射的概念 具体应用中,大部分情况下所给定的输入样本向量的长度不相等,设输入的定义域样本为n维空间中的有界集合D ,取R>max{|x|,x ∈ D} ,文献[11]通过如下变换将样本点投射到球面Sn上并使得投射后的样本向量等长,如图3.4所示。 (3.4) 正是这种变换将无限的超平面转换为有限的球形领域,使得分类器的 设计成为可能。每个神经元 就是在超球面 为中心,以 为半径的一个“球形领域”的特征函数。 上,以 这里一般取R为1.1~1.2倍。
覆盖模型及其算法的分析 • 覆盖算法是在FP算法的基础上发展起来的构造性算法。 • 算法属于有监督学习,分为训练和测试两个过程。 • 其实质就是用求出的覆盖领域作为三层神经网络的隐含层,输入为测试集,输出为测试集的分类结果。覆盖算法网络结构确定后,运行效率高,适宜于处理大规模数据。 • 主要有1998年提出的领域覆盖算法、1999年提出的交叉覆盖算法及之后陆续提出的基于rough集的覆盖算法(附带提出加权覆盖的设想)、核覆盖算法、多侧面递进算法、概率覆盖算法等。 1
3.1 领域覆盖算法 • 领域覆盖算法分类器设计的基本思想 : • 输入为 , • 输出为 , • 直观地理解为当输入样本落在xi的附近时,其输出都应为yi如果根据神经元的几何意义,进一步将在xi的附近看作是以xi为中心, 为半径的“球形领域”所对应的神经元。 • 多层前向神经网络作为分类器的设计相当于用若干个“球形领域”将输入xi按照所属的类别区分开,换句话来说,即将每一类别用一组球形领域所覆盖。然后再将属于同类的“球形领域”对应的神经元输出用“或门”集中。 1
3.1.1 领域覆盖算法的初始化 • 给定一个输入集合K={(x1,y1),(x2,y2),…,(xp,yp)} ,其中K 中有p个样本,每个输入样本xi (i=1,2,…,p)有n维属性,yi为输入样本xi相应的输出。设p个样本对应的输出中不同的yi值有共有 s个,不妨设前s个样本对应的yi输出值均不相同,令I(t)(t=1,2,…,s)分别代表令样本的输出为yt的所有样本标号的集合,即I(t)={i|yi=yt} ;对应的输入集合记为P(t),P(t)={xi|i ∈I(t)},并将输入样本的上标按I(1),I(2),…,I(s) 的顺序排列。 1
3.1.2 领域覆盖的基本过程 • 算法最终将求出一组覆盖C={C11,C12,…,C1n,C21,C22,…,C2n,…,Cs1,Cs2,…,Csn} , C就是算法所得到的解。若令Ci= ∪ Cij,j=1,2,…,ni,则每个 Ci表示第 i类样本的所有覆盖。每个覆盖相当于一个神经元,根据这些覆盖可以构造一个神经网络,网络可以将所有的训练样本全部无误地分开。 1
3.1.2 领域覆盖的基本过程 注释:这里内积运算,其值可以看成是两向量构成平面到球体中心距离 ; 点集之间距离即为点与点之间的距离长度,此时d(k)为球冠地面圆心。 ,其中 的单调下降的函数。可见step6中前后max与 是 min取值互反。
图3.5 领域覆盖算法流程图 由于X通过变换投影到超球面上, 因而,在覆盖的球冠上的点也是 与中心点距离较近的点
3.1.3 领域覆盖算法的分析与应用 指出任何一种求(次优)最小覆盖的方法与“球型领域”法相结合,都能给出一个神经网络的学习算法,这些算法都能称为领域覆盖算法。由于最小覆盖问题是一个典型的NPC问题,所以只能求出其次优解,但领域覆盖算法可以处理多类样本点,多分类处理能力比SVM算法要强,对样本个数和特征维数无特殊要求,并且特征描述不要求离散化,要优于粗糙集理论,对于拒识样本点采用“就近原则”,类似于人类智能对于不认识的事物,一般和已知事物做近似匹配,虽然有些测试样本的准确率达不到最优结果,却一般高于大部分算法 。 1
3.1.3 领域覆盖算法的分析与应用 算法常用的测试分类正确性的方法分为K-交叉验证和保持两种。 K-交叉验证法指的是将初始样本分为K个大小大致相等且互不相交的子集 1 ,轮流取其中一个子集 作测试,剩余的样本作训练, 最后取K次运算的平均值作为最后结果,一般情况下,使用10-交叉验证; 保持指的则是将数据集划分为训练集和测试集两个部分,使用训练集得出 分类器的基本结构,用测试集来评估分类器的准确率。一般将样本中约三 分之二的数据用作训练,三分之一的数据用来测试。也可将保持法重复K次, 取平均值为最后结果。 近年来,领域覆盖算法的研究主要用于通信信号的搜索、气象信息分析 及预测等方面。
3.2 交叉覆盖算法 1999年张铃教授等首次提出了交叉覆盖算法交叉覆盖算法实际上就是交替覆盖。设学习样本集为X ,共有 s类,即先求出一个球形领域C1,此领域只覆盖样本中第一类样本点集 P(1)中的点,而不覆盖其它类的点,然后将被C1覆盖的点删去,对剩下的点求另一个领域 C2,同理,C2只覆盖第二类样本点集P(2)中的点,而不覆盖其它类的点,然后再将 C2覆盖的点删去,如此交叉进行覆盖,依次轮流构造各类别的球形领域,直至所有的点覆盖完毕。 1
算法说明: 其中第7步骤求出覆盖c(a1),然后再求出覆盖的重心,将其映射到球面上,设投影 点为a2。在按照公式求出阈值,得到新的覆盖c(a2)。如果之后覆盖的点更多,则 循环操作,直到c(a2)不能覆盖更多的点为止。进入到第9步进行样本点a2的平移, 得到其平移点a3。并得出覆盖c(a3)。若c(a3)比c(a2)覆盖的点更多, 则转到第8步。否则就得到一个覆盖。 交叉覆盖算法的基本思路: 1
交叉覆盖算法的分析及应用 交叉覆盖算法在构造初始领域后,求它所覆盖的样本点重心,将重心投射到超球面上,以此为领域中心重新构造新领域,重复进行,直到覆盖的样本点数不再增加。紧接着平移领域中心的位置,构造新领域,与求重心交替进行,对领域求重心、平移是个不断重复的过程,直到覆盖的样本数不多于前一次覆盖。在求每个覆盖领域时,算法希望覆盖的样本点数越多越好,这样,相应的领域覆盖的个数就会减小,网络神经元的个数也会减小。所以在求覆盖领域时采取了求重心和平移的算法,以求尽量扩大覆盖领域。 一般的领域覆盖算法总是先对一类样本点进行覆盖,一类覆盖完成过后,再进行另一类的覆盖,已被覆盖的样本仍占据空间位置,在考虑其后样本时,仍起作用。在求得的覆盖组中,领域覆盖的各领域无先后顺序。而交叉覆盖算法总是依样本的类别交替进行,并删除已覆盖的样本点,被覆盖的样本在后面的样本处理中将不再考虑,样本被删除后将有利于附近其它点的覆盖,也就是覆盖的半径可以取的更大些,因此,领域内涵盖的同类样本数就会更多,可使总的覆盖数目减少,相应地神经元的个数减少并简化网络的设计。 交叉覆盖算法在进行样本测试时,由于训练时各领域有严格的先 后顺序,后求出的覆盖领域可能会包含前面的同类或异类领域,因此,要严格按照训练样本的领域顺序进行识别判断 1
表3.2 对相应数据库进行领域覆盖的实验结果表 将表3.2与表3.6对比后,不难看出交叉覆盖 与领域覆盖算法相比,样本的正确率有所下 降,覆盖个数大大降低,也就是说网络 神经元个数大大减少,简化了网络设计。 表3.6 对相应数据库进行交叉覆盖的实验结果
双螺旋结构样本分布图 从双螺旋中心开始用交叉覆盖法对双螺旋线分类的效果 采用交叉覆盖算法从双螺旋线的中心点由内向外分别做覆盖得到的覆盖效果
3.3 覆盖算法的改进措施 1.针对覆盖算法中具体功能函数的讨论和改进 (1)在样本分布的球面上可能会存在着一定范围的不属于任何一类球形领域所覆盖的区域,在网络测试识别过程中,包含在此区域中的点就无法被识别出所属类别,即存在拒识现象。 1
3.3 覆盖算法的改进措施 (2)球型领域之间可能存在重叠,落入重叠区域的点在识别过程中可能会被误判成其它类别 (3)对领域外样本点类别采用一般“就近原则”判断时,有可能造成误判。 1
针对以上问题,可以从领域覆盖的功能函数和距离函数及构造等方面对算法加以改进:针对以上问题,可以从领域覆盖的功能函数和距离函数及构造等方面对算法加以改进: • 1)增大球形领域的半径,使球型领域尽可能地增大,从而减少“球型领域”之间的边界区域。 • 这种改进方法可以更大程度地增大球形领域的范围,减少样本拒识率。 • 文献[42]中指出还可引入隶属度的概念,对原有的球形领域进行扩展, 将扩展区域中所覆盖的同类训练样本数目与其所覆盖的训练样本数的比 值称为扩展球面领域的隶属度。
2)当识别的样本点被拒识时,一般情况下可按距离覆盖中心最近的原则确定样本的归属类别,距离函数为:2)当识别的样本点被拒识时,一般情况下可按距离覆盖中心最近的原则确定样本的归属类别,距离函数为: • 样本点将被判断为与其相邻的半径较小领域的类别,却不会归属于与其相邻的半径较大区域,有可能造成误判。文献[30],[33],[43]针对此类问题提出了改进策略,提出还可根据其它的方式来计算点与不同领域的距离,其中为覆盖领域中心点,三种不同的距离函数分别定义为:
其中R是超球的半径,是领域中心与最近异类点的内积, Ci是第i类球形领域的集合,cent(i)=(r1*w1+r2*w2+…+rm*wm)/(r1+r2+…+rm) ,wj(j=1,2,…,m) 是第i类第j个球形领域的权向量, rj(j=1,2,…,m)是被Ci中第j个球面领域覆盖的样本数目,cent(i)是Ci的各领域中心的重心。式(3.10)主要定义测试样本点 xm与领域Ci之间的距离为样本点到领域边界的距离,;式(3.11)主要是对式(3.10)进行了归一化的操作;式(3.12)则表示测试样本与领域 Ci中所有球形领域的重心之间的距离。 • 若一个测试样本点不属于任何球形领域,但却与某领域之间的距离最小,则可认为该样本点属于此领域所对应的类别。按该方法测试样本集,将不存在拒识点,而实际数据中的噪音、孤立点也被划分成相应的类,从这方面来说也有其不合理的因素,存在着缺陷,但可以加以改进,如给定一个距离的界限值,当测试点距离某个覆盖的值均大于此界限值时,可认为是“拒识状态”,否则,根据就近原则进行判断即可。
3)对于落在重叠区域中的测试样本点,文献[33],[43]指出可采用功能函数来确定样本的类别。如将原算法中神经元功能函数.3)对于落在重叠区域中的测试样本点,文献[33],[43]指出可采用功能函数来确定样本的类别。如将原算法中神经元功能函数. • 改为: • 其中是超球面的半径,,若采用式(3.14),函数的输出值为;采用式(3.15)函数的输出值为,进行了归一化处理,即覆盖边界上的样本点输出值为0,而覆盖领域中心的样本点输出为1,落在重复区域中样本的类别根据球形领域输出值的大小确定即可。
2. 样本学习的顺序分析 • 样本学习的顺序可直接影响覆盖领域的大小和个数,如图3.11(a)和图3.11(b)所示。 • 图3.11(a)是随机选取样本学习中心时得到的分类图,而 图3.11(b)则是经过一定的学习顺序选取中心时得到的分类图, 很显然,图3.11(b)比图3.11(a)的覆盖数少,覆盖领域增大, 泛化能力更强。
再如图3.7所示的平面双螺旋分类问题,如果从双螺旋的中心点作交叉领域覆盖,则对平面双螺旋分类,可用有限的覆盖领域将其正确的分类,如图3.8所示。但是,若将双螺旋型分布样本的学习顺序加以改变,如图3.12所示。再如图3.7所示的平面双螺旋分类问题,如果从双螺旋的中心点作交叉领域覆盖,则对平面双螺旋分类,可用有限的覆盖领域将其正确的分类,如图3.8所示。但是,若将双螺旋型分布样本的学习顺序加以改变,如图3.12所示。 • 其中图3.12(a)是领域覆盖算法有可能产生的覆盖顺序示意图,图3.12 (b)为交叉覆盖算法从C点开始覆盖有可能产生的覆盖顺序示意图,不管 是哪种情况,都可以看出在初始样本点选择不正确的情况下,覆盖领域的 个数会大大增加,覆盖领域半径也会大大减小,覆盖的效果会变得很差。
由于样本的分布是随机的,事先无法知道整个样本集的空间分布,也无法事先确定由于样本的分布是随机的,事先无法知道整个样本集的空间分布,也无法事先确定 • 合适的学习顺序,文献[13]和文献[44]提出了重复覆盖算法思想,指出对第一次覆盖求出的领域可按样本个数从大到小的顺序中再次重新求覆盖的思想,这就是典型的重新选择样本学习顺序的一种改进方法。除此之外,还可以考虑按重心选择覆盖初始点[32]、及针对时间序列的顺序学习方法[41]。
2)点对主分量分析算法DPCAA(Double points Principal Component Analysis Algorithm) 见例题
例3.8 其样本空间分布如下图所示: • 用覆盖算法对样本X求覆盖,如图3.14所示,共可以得到9个覆盖A、B、C、D、E、F、G、H、I。其中A、E、H、I属于同一类覆盖,B、C、D、F、G 属于另一类覆盖。若取,则例子中覆盖半径小于2的覆盖领域共有7个,即 C、D、F、G和E、H、I ,这7个覆盖领域所覆盖的点集为{{x4,x5,x6},{x7,x8,x10,x12}} ,对每个覆盖取覆盖内与覆盖不同点的最近距离的两点,即构成点对。 • 本例中点对的集合为 {(x4,x8),(x5,x12),(x6,x10),(x7,x4),(x8,x4),(x10,x5),(x12,x5)}
利用点对主分量分析算法对样本特征提取有很好的效果,样本的识别正确率也有所提高。但是可能会增加拒识率,另外,该算法中 的值究竟选取在多少比较合适也是我们继续需要探讨的问题。 • FSACA(Feature Selection Algorithm based on the Decision Boundary of Covering Algorithm)算法,主要思想是将点对的定义稍微加以改变,认为点对是两个最相邻的(即覆盖领域的边界之间距离最短),分别包含不同类别样本点的覆盖领域中彼此最靠近的一对异类点,先求出所有覆盖领域的点对, 然后统计所有点对各分量差的绝对值之和,删除m个最小分量所对应的样本属性,最后进行测试分析,发现效果也很不错。
4. 泛化能力、网络复杂性与识别精度之间的关系 • 泛化能力又称推广能力,指的是用训练样本学习所构造的神经网络对测试样本集合的识别能力。构造性机器学习的目的就是根据给定的已知训练样本求取出对系统输入输出之间依赖关系的估计,使它能够对未知输出做出尽可能准确的预测,即有较强的泛化能力。
3.4 多侧面递进算法 对于覆盖算法而言,训练样本可百分百正确识别的特性可认为是经验风险趋于零,此时若想提高学习机器的泛化能力的最有效的方法就是简化学习机器的复杂度,这也是多侧面方法提出的主要原因。 多侧面递进算法MIDA的基本思想就是参照人类对复杂问题的求解分重点和多方面考虑的方式,将网络训练样本集分成几个部分,对每个部分分别选择一组适应它们的特征子集,采用分层划分特征向量的方法,在保证一定精度的前提下,提高泛化能力并降低计算的复杂度 1