Self-Learning Gene Expression Programming——自学习基因表达式编程


摘要:本文提出了一种名为SL-GEP的新型自学习基因表达式编程(GEP)方法,提高了GEP的搜索精度和效率。与现有的GEP变体相比,所提出的SL-GEP具有新颖的染色体表示,其中每个染色体嵌入有可部署以构建最终解决方案的子功能。作为染色体的一部分,在进化搜索期间,所提出的算法的子功能是自学习的或自我演化的。通过将子功能或任何部分解决方案作为另一个子功能的输入参数,所提出的SL-GEP有助于形成提高搜索的准确性和效率的复杂,高阶和建设性的子功能。此外,针对SL-GEP中染色体的进化提出了一种基于差异演化的新型搜索机制。所提出的SL-GEP简单,通用且比传统的GEP变体具有更少的控制参数。拟议的SL-GEP在15个符号回归问题和6个偶数奇偶校验问题上得到验证。实验结果表明,提出的SL-GEP在精度和搜索效率方面提供了几种最先进的算法的增强性能。


索引术语 - 偶校验问题,进化计算,基因表达规划(GEP),遗传规划(GP),符号回归问题。


一,引言

遗传编程(GP)是一种演化计算技术,已经被证明对于自动化解决用户定义任务的计算机程序的设计非常有用。自从Koza开始,GP的许多变体已被开发。其中一个显着的变体是基因表达程序设计(GEP),由Ferreira引入。 GEP的独特之处在于它采用基因表达表示法,它通过使用固定长度的字符串而不是像传统的GP中使用解析树来模拟计算机程序。具有基因表达表达,GEP显示提供比GP更简洁可读的解决方案。在过去十年中,GEP已经广泛应用于许多应用,包括分类问题,时间序列预测等。然而,由于GEP具有迭代性,所以GEP的计算量很大,特别是处理大规模问题时。此外,GEP在算法中包含多个控制参数,这需要耗时的微调。
为了提高GP在大规模和复杂应用中的表现,有效的方法是结合可以加速搜索的高阶知识。考虑到经典的10位偶数奇偶校验问题,传统的GP很难用“AND”,“OR”和“NOT”来解决这个问题。但是,如果“XOR”函数被引入作为一个新的原语,问题的复杂性可以大大减少,从而可以显着加快搜索过程。 然而,为了定义这样的高阶知识,通常是域特定的,不平凡的。
在GP社区,已经有一些自动化获取高阶知识的努力。例如,Angeline和Pollack以及Kameya等人试图从历史搜索信息中挖掘有希望的部分解决方案作为高阶知识,然后确保他们在进化过程中的生存。同时,Koza将高阶知识视为自动定义函数(ADF)的形式,并提出在进化过程中由GP自动进化ADF。 ADF是向特定子问题提供子解决方案的子功能。然后可以组合ADF以提供更大问题的解决方案。到目前为止,ADF已经被证明对于改善GP在一系列问题上的表现非常有效。最近,Walker和Miller也考虑了在嵌入式笛卡尔GP(ECGP)中使用ADF,据报道,在各方面优于GP和GP_ADF。
与以前的研究相反,迄今为止,还没有报道关于纳入高等知识(如ADF)以加强GEP的研究。Ferreira对ADF的使用进行了初步研究,以获得增强的GEP(称为GEP-ADF)。然而,GEP-ADF的机制使其对大规模复杂问题的效率低下或不可低估。此外,GEP-ADF具有比传统GEP更多的新操作和控制参数,这使得实际使用不方便。
为了解决上述问题,本文提出了一种新型的自学GEP(SL-GEP)方法。在提出的SL-GEP中,每个染色体被设计成包括主程序和一组ADF,所有这些都使用基因表达方法表示。每个ADF然后是解决子问题的子功能,并且在主程序中组合以解决给定的感兴趣的问题。作为染色体的一部分,ADF自学习,因此随着随着进化在线而在SL-GEP中自动设计。在初始化步骤中,每个染色体中编码的所有ADF都被随机生成,然后在每一代,包括突变和交叉在内的进化算子将相应地演化染色体的ADF。通过选择操作,导致高质量解决方案的ADF更有可能在世代之间生存下去。以这种方式,高质量的ADF随着进化搜索过程的演变。我们的SL-GEP的一个独特特征是我们的ADF包含其他ADF和/或主程序的任何子树作为输入参数,导致形成复杂的ADF或C-ADF。该功能在古典GEP搜索以及GEP-ADF的设计中提供了显着的灵活性,在设计复杂和结构化的ADF时,可以提高搜索的精度和搜索效率。另外,提出了一种基于差分演化(DE)的新型搜索机制,用于解决方案群体的有效和有效的演进。 所提出的SL-GEP易于实现,通用,并且包含比GEP和GEP-ADF少得多的控制参数。 在实验部分,提出的SL-GEP使用15个符号回归基准和6个偶次奇偶校验问题进行了深入的验证。 获得的结果表明,在精度和搜索效率方面,SL-GEP优于几种最先进的GP变体。
本文的其余部分安排如下。 第二部分描述了相关背景技术。 第三节描述了拟议的SL-GEP。 第四节介绍了实验研究。 最后,第五节得出结论。

二, 前言

本节简要介绍本文中考虑的技术的背景知识。 一般来说,GP已经广泛应用于各种应用,最常见的应用领域之一是符号回归。 因此,这里给出了符号回归问题的正式定义,以帮助读者更好地理解我们提出的方法。 然后介绍了GEP的传统基因表达方法,然后介绍了GEP-ADF引入的ADF扩增基因表达方法。 最后讨论了其他相关的GEP变体。

A.符号回归问题:
给定由输入变量值和输出响应组成的一组测量数据,符号回归问题涉及找到数学公式S(·)来描述输入变量与输出之间的关系。 导出的数学公式S(·)可以提供生成数据的系统的见解,从而可以随后用于预测新的输入变量的输出。
形式上,第i个样本的数据可以被表示为:[vi, 1, vi, 2, … , vi, n, oi]

B.传统的GEP基因表达方法:
在传统的GP中,数学公式S(·)由包含两种节点类型的树结构表示:函数和终端。 函数节点具有一个或多个子节点(例如,+和sin),而终端节点是没有任何子节点的叶节点(例如,变量和常量)。GEP使用固定长度字符串来表示数学公式,而不是像传统的GP一样使用解析树。染色体由一系列符号表示,包括两部分,即头部和尾部。 头的每个元素是一个函数或一个终端,而尾部的每个元素只能表示一个终端。例如,给定一个函数集:δ = {+, −, ∗,/, cos, exp}和一个终端集:┏ = {x, y}。长度为17的典型基因表达染色体可以表示为X = [+, −, cos, ∗, x, −, exp, +, y, x, x, x, x, y, x, y, x].每个基因表达染色体可以使用广度优先遍历方案转换为等效表达树(ET)。头(h)部分和尾部(l)部分的长度保持固定。 为了确保任何染色体可以正确地转换成有效的ET,h和l被施加约束l = h·(u-1)+ 1,其中u是函数中最大的子代数。 例如,如果u = 2,那么我们有l = h + 1。
请注意,在每个染色体中,尾部可能存在冗余元素,在目前的搜索生成中不用于构建ET。然而,值得注意的是,随着搜索的发展,这些未使用的元素可能在随后的几代中变得有用。此外,由于最终ET中的节点数量不会超过染色体的预定义长度,基因表达方法具有产生短程序的趋势,从而避免GP的膨胀限制。
在经典的GEP中,进化算子包括初始化,评估,精英,选择,突变,倒置,IS转置,根转置,一点交叉和两点交叉。 读者参考GEP的实施细节。

C.用于GEP-ADF的扩展基因表达技术:
Ferreira 将ADF与GEP结合起来获得GEP-ADF。在GEP-ADF中,每个染色体由许多常规基因和同源异型基因组成。 使用基因表达来表示所有常规基因和同源异型基因。每个常规染色体编码为一个子ET,并用作ADF。同义词通过链接功能(例如,+和*)收益不同的ADF,并对生成最终输出的主程序进行编码。 ADF的功能集和端基与传统的基因表达方法相同。 另一方面,同源异型基因的功能集包括连接功能,同源基因的末端组仅含有ADF。
例如,考虑染色体:∗, +, −, y, x, x, z, +, /, −, x, y, z, x,∗, ∗, sin, 2, +, 1, 2, 1, 2, 1, 2].该染色体编码两个ADF和一个同源基因(即主程序)。 图中示出了GEP-ADF的示例性ET。 可以观察到,ADF1和ADF2在同源异型基因中使用两次。 此外,应该注意到这种染色体表示,ADFs只能用作同源异型基因的末端,并且不包含输入参数。

D.其他相关GEP变体:
自从GEP首次引入以来,已经提出了各种增强型GEP变体。现有工作主要集中在与GEP混合新操作或自适应参数控制策略,以提高搜索效率。。例如,Liuetal提出了一个扩展的GEP,自适应地替代更差的个体与随机生成的个体,以增加人口多样性。还采用了混合选择方法来提高搜索效率。同样地,zhang 和 xiao也提出了修改后的GEP,动态地改变人口规模(NP),以避免局部停滞。 Peng等人首先构建树,然后穿过树进行健康评估, [29]提出了一种新的方法来评估基因表达染色体在不建立ET的适应性。据报道,该方法能够减少GEP的计算量。 Bautu等提出了适应性GEP,自适应地调整染色体中使用的基因数量。 Huang研究了GEP的模式理论,并开发了一些描述模式从一代传播到另一代的定理。与以前的作品相比,本文将规范的GEP与ADF进行了扩展,作为染色体表示的一部分,随着搜索进化而自发演化或自学习,同时部署它们以加速搜索。此外,本文开发了GEP中基于DE的新型运营商。所提出的基于DE的搜索机制不仅包含更少的控制参数,而且还提供了改进的搜索性能。

三, 自学习基因表达编程

本节介绍了所提出的SL-GEP方法,这是经典GEP以及GEP-ADF的增强版本。 与现有的GEP方法相比,SL-GEP引入了一种新颖的染色体表示,有助于形成C-ADF,从而简化了复杂和建设性的高阶知识。 此外,提出了一种新颖的进化搜索机制来简化SL-GEP中染色体的进化。 由于ADF和C-ADF与GEP搜索演进一起自学习,因此我们将所提出的算法标记为SL-GEP。

A.拟议的染色体表示方法
在所提出的SL-GEP中,每个染色体包括“主程序”和若干个ADF,如图1所示。 5.主程序是解决方案的压缩表达式,它提供最终的输出。 同时,每个ADF都是一个子功能,可以组合起来解决主程序中的较大问题。 主程序和ADF都使用基因表达表示法表示。 但是主程序和ADF的具有不同的功能集和终端集。 对于主程序,函数集不仅包括函数(例如,+, - 和sin),而且包括染色体中定义的ADF,而终端集由变量和常数(例如x,y和π)组成, 。 对于ADF,功能集由功能组成,而终端集由输入参数组成。 表I比较和对比本文中考虑的三种基因表达方法的功能集和终端集。
以这种方式,具有33个节点的ET可以由两个总共只有15个节点的ET简明地表示。 通过这个简单的例子,我们希望在简洁的有效压缩复杂表达方面证明所提出的染色体表示的好处。

B.建议的算法
SL-GEP的染色体表达具有固定长度,在结构上与传统的基因表达相似。 因此,GEP的搜索机制可以容易地整合以用所提出的表示进化染色体。 但是,GEP包含一些需要仔细调整的操作和控制参数。 为了解决这个问题,进一步提高性能,本节提出了一种基于DE操作的新型搜索机制。 算法1给出了所提出的SL-GEP的过程,其中包括初始化,突变,交叉和选择四个主要步骤。 基本符号列于表II.
1)步骤1 - 初始化:第一步是生成NP随机染色体以形成初始种群。 如第III-A部分所定义,每个染色体都可以用标记为目标载体的符号向量表示Xi = [xi, 1, xi, 2, … , xi, D]。其中i是群体中染色体的指数,D是染色体的长度,xi,j是Xi的第j个元素。 D的值由D = h + l + K ∗ h + l,其中K是每个染色体中的ADF数。 注意,在本文中,所有函数和ADF的输入参数的最大数量为2,因此我们有l = h + 1和l? = h? + 1。xi,j的值由包含两个阶段的“随机分配”方案分配。 第一阶段是将类型随机配置为功能,ADF,终端或输入参数。 然而,分配的类型必须是可行的。 例如,如果xi,j属于主程序的尾部,则xi,j只能是终端类型。 将分配类型的可行值集合表示为E,第二个参数涉及从E的可行值的随机选择作为xi,j的值。
应该注意的是,初始化步骤随机地初始化染色体,包括ADF。 然后通过突变,交叉和选择进化操作迭代地染色体进化。 因此,ADF将自动学习SL-GEP搜索,而无需事先知道或手动配置。
2)步骤2-突变:在第二步中,对每个目标载体进行突变操作以产生突变载体。 传统的DE突变表达为Yi = Xr1 + F · (Xr2 − Xr3)。
其中F是缩放因子,r1,r2,r3和i是四个不同的个体索引。
然而,由于染色体中的元素是离散符号,传统DE的数值运算不能直接使用。 为了解决这个问题,我们将DE突变分为三个阶段。 第一阶段是获得当前人口中两个随机目标向量的差异(称为距离测量):Δ = (Xr2 − Xr3).第二阶段是用差值缩放系数F(称为距离缩放): Δ’= F · Δ。第三个阶段是将缩放后的差值加到另一个随机目标载体上以创建突变载体(称为距离加法):Yi = Xr1 +Δ’
在树结构计算机程序的搜索空间中,上述三个阶段的实现如下。 a)距离测量:在离散域中,两个元素之间的距离可以为零(即两个元素相同)或不为零。 这里我们使用不关心的符号“*”表示非零距离。

3)步骤3 - 交叉:在第三步,每个目标矢量Xi与其突变载体is交叉以产生试验载体Ui

4)步骤4 - 选择:最后,在第四步中,然后选择每对目标和试验载体之间的适应解,以形成新的群体

总而言之,上述四个步骤扩展了DE搜索机制来演进编码解决方案。应该注意的是,提出的SL-GEP是一个通用的框架,可以容易地使用其他最先进的DE,如JADE,CoDE等,。在下文中,我们根据其计算复杂度和控制参数大小研究了GEP和GEP-ADF的算法。根据上述程序,提出的SL-GEP在每一代中的计算复杂度是两部分之和:1)产生NP新染色体,2)将NP新染色体解码为ET,并评估其适应度值。功能和变量可以通过使用单次通过扫描群体中的元素进行更新,其复杂度为O(NP·D)。基于频率分配方案选择一个元素是选择流程。通过使用[35]中提出的方法,上述基于频率分配操作的复杂度可以减少到O(1)。因此,突变和交叉的复杂度为O(NP·D),第一部分的复杂度为O(NP·D)。第二部分的复杂性是针对特定问题的,但对于所有GEP变体都是相同的。将第二部分的复杂度作为O(f),则针对每一代的SL-GEP的复杂度为O(NP·D )+ O(f)。因此,我们可以获得GEP和GEP-ADF的复杂度为O(NP·D)+ O(f)。因此,我们提出的SL-GEP算法,GEP和GEP-ADF的复杂性是相似的。同时,如表III所示,所提出的SL-GEP算法只有四个控制参数,而标准GEP和GEP-ADF分别包含十一个控制参数和二十个控制参数。从这个角度来看,所提出的SL-GEP算法包含的控制参数要少得多,因此对于实际应用来说更为方便和适用。

C.不断创造
数值常数是大多数数学公式的组成部分。因此,数值常数的创建是GP及其对满足数学公式演变的变体的重要组成部分。然而,由于数值常数是连续值,GP样方法的染色体表示通常适用于组合优化,因此GP类似方法精确地近似于常数值是相当具有挑战性的。在文献中,提出了解决不断创造问题的几种方法。最常见的是Koza [1]引入的“短暂随机常数(ERC)”。在Koza的方法中,ERC被视为特殊的终端符号。在创建初始种群时,每个ERC的值被赋予特定范围内的随机值。然后通过交叉算子将随机ERCs固定并从一个解析树移动到另一个解析树。 Ferreira [36]提出了一种处理GEP常数的新方法。在费雷拉(Ferreira)的方法中,额外的末端“?”用于表示公式中的常数。恒定池是随机的在初始化中创建并分配给每个人。当解码基因表达染色体进行健身评估时,每个?相应地在常量池中分配一个常量。引入了一个额外的直流域和一些特殊的直流操作来促进恒定的创建过程。除了上述两种方法之外,还使用了诸如局部搜索方法[37],非线性最小二乘法最小化[38]和EAs [39]等其他方法来搜索恒定值。
在GEP [8]中,常规创建操作被认为是SL-GEP中的可选操作。 当在搜索过程中考虑常数时,SL-GEP由于其简单性而采用常用的ERC来处理常数。 应该注意的是,在所提出的SL-GEP中也可以考虑其他现有的常规处理方法。具体来说,在特定范围内(例如[-1,1])中的一组固定随机常数已经在 初始化步骤 引入新的终端符号来表示ERCs。 在随机分配和基于频率的分配过程中,H1和T1的每个元素具有将条件箱分配给常数的概率。 当一个元素被分配一个常数时,将选择一个常数集的随机常数。 分配给元素的常数对于运行的其余部分应保持固定,除非对其执行基于频率的分配。

你可能感兴趣的:(遗传算法)