✨2021,SEC,Optimizing genetic programming by exploiting semantic impact of sub trees


ABSTRACT

现在的研究者已经将注意力转移到使随机算法具有确定性上。这是为了减少搜索过程中无果的探索,给搜索过程指明方向。算法中局部性的缺失是实现这一目标的最大阻碍。GP中的局部性被描述为基因型的变化与其表型(solution)的语义之间的相关性。在强局部性(strong locality)下,邻近的基因型和表型在一个搜索空间中相互对应。认为具有强局部性的搜索算法比具有弱局部性的算法性能更好。遗传规划是解决具有挑战性问题的性能最好的随机算法之一,并且受到相同问题的困扰。这意味着,GP树的一个小的变化可能导致解的行为发生巨大的变化,反之亦然。不幸的是,这种随机行为使GP无法实现其真正的潜力。GP成立30年来的研究并没有解决这个问题,时至今日仍是GP领域面临的最大挑战之一。

本文提出了一种基于偏导数的技术来计算子树对GP树输出的影响。然后利用这些信息定义一个影响感知的交叉算子。该算子通过智能拾取树中的交叉点 (intelligently picking crossover points) 来减少GP树的语义误差。用新提出的交叉算子增强的GP的性能与最先进的技术进行了比较。所提出的技术被发现是高效、可靠的,并且在所有测试的问题上优于现有的先进算法。

1. Introduction

经典GP [1]是一种以抽象树的形式演化模型的进化算法。GP主要用于解决符号回归领域的问题。在传统的GP中,交叉点的随机选择在大多数情况下会导致破坏性的交叉操作,并在语义方面产生远离目标的后代。交叉算子的这种破坏性使得在有限代内将个体引向目标程序语义的可能性较小。由于GP交叉操作中子树的随机选择导致子代被放置在搜索空间的不同点,这使得GP的探索能力很高,极可能陷入局部最小值。但是GP的目标是达到目标语义的最近。为了实现这一目标,伴随着探索GP也需要开拓搜索空间。由于随机交叉总是对搜索空间进行探索,从不尝试利用搜索空间,因此该方法很难找到具有目标语义的解。基于树的群体缺乏局部性(Tree based population lacks locality)–确定性基因型(符号表征)到表型(实际表征)的映射[2]。算法如何探索和利用搜索景观(search landscape)是进化过程中成功的关键。如果所有相邻的基因型与相邻的表型相对应,则表示具有高度的局部性。另一方面,如果相邻的基因型与相邻的表型不对应,则表示具有较低的局部性。标准交叉、变异等遗传算子以同样的方式改变个体树。分析这些变化对个体树行为的影响是非常复杂的任务;这不仅需要对变化的树结构进行研究,还需要对算子应用的位置进行选择。通常观察到由突变产生的子代,产生的输出往往与其父代有很大差异。同理,交叉算子产生的子代可能不会有父代混合的输出。它是经过适应度评估并驱动进化过程的树的输出。上述讨论表明,对进化过程的深入理解是一项艰巨的任务,选择合适的策略来提高GP性能更是困难的。需要一个度量来衡量子树的影响,从而可以用来提高遗传算子的性能。为此在定义评估基因型变化的度量做了大量工作[3-5],遗憾的是,它们在诱导交叉算子的局部性方面都没有显著的成功。

在GP树中,需要计算每个子树的作用/贡献来理解和改进遗传算子的局部性。Majeed和Ryan[6]将其称为子树的上下文。子树的上下文的各种定义和重要性在文献[6-8]中都有描述。一般来说,子树的上下文被定义为子树对容器树(container tree)的语义贡献。

论文的结构安排如下。第二部分简要介绍了我们提出的技术的相关工作。第3节定义了子树的上下文,在论文的其余部分中使用。第四节讨论了基于偏导数的方法来计算树的每个子树的作用。第5节提出了一种新的冲击感知交叉算子。第6节和第7节详细讨论了实验装置和结果。第八节总结全文并指出未来的研究方向。

2. Background

GP的局部性缺失被研究团体[5、9、10]广泛认为是一个巨大的挑战。许多研究者试图通过引入新的GP表示、交叉和变异算子以及修改适应度函数来解决。上述技术中最著名的是引入了新的遗传算子,特别是交叉算子。这是因为交叉算子主要负责对GP种群的树进行更改。这些努力可以分为四类,即:

  1. 基于上下文的运算符(Context based Operators.)。
  2. 基于语义的算子(Semantics based operators.)。
  3. 几何算子(Geometric operators.)。
  4. 其他操作者。

在第一类方法中,树的上下文用于识别树中最适合交叉的位置。第二类方法利用树的语义生成(发现)与父代语义不同或语义匹配的子代。第三类是借助与目标语义的几何距离来搜索解。在第四类中,通过使用机器学习技术结合第二类和第三类中提到的技术来定义混合技术。

2.1. Context based operators

Context是GP树的一个方面,Uy等[3]利用Context改进交叉操作。Majeed和Ryan [6]提出了一种上下文感知的交叉方法,选择两个父代进行交叉,在第一个父代中选择一个子树并交叉到第二个父代中的每个可能位置。这样就产生了一系列子代。对所有生成的子代进行评估,将最好的子代转发到下一代。Mousavi等[10]提出了GP的性能上界,并利用该信息指导GP。Ono等[11]维持多个种群以增强多样性,并使用频繁出现的树来提高局部搜索。

2.2. Semantics based operators

类似于上下文语义是GP树的另一个方面,在许多现有的方法中被用来改进交叉算子。Chu等[12]提出了从个体的误差向量计算的语义锦标赛选择来提高GP的性能。该方法有助于减少GP代码增长,提高GP解的泛化性能。Chu等人[13]提出了一种基于语义的替换技术来控制代码膨胀。

Nguyen等[3]提出了"语义感知交叉" (Semantically Aware Crossover,SAC),同时丢弃与其父代语义相似的子代,在两个父树中找到几乎语义相似的子树,并交换它们生成新的子代。该方法的目的是平滑交叉的影响(smoothen the effect of crossover),因为交换的子树的语义相似度保持一定的阈值作为上限。Uy等[14]改进了"基于语义相似度的交叉" (SSC)中的SAC算子,增加了一个阈值作为寻找语义相似子树的下限。

F . Zhang等[15]在遗传算子中提出了一种子树选择方法。该技术通过查看一棵树所包含的特征集合来计算该树中每个子树的重要性。在生成新种群时,对排序后的子树进行顶子树的选择。作者证明了该算子在解决众所周知的作业调度问题上的有用性。

2.3. Geometric operators

Krawiec and Lichocki [16]提出了"语义空间中的近似几何交叉" (KLX)。在该方法中,通过n次交叉算子选择两个父代来繁殖一个候选子代池(pool)。计算每个子代在搜索空间上到其父代语义的几何欧氏距离。选择池中与父代语义距离最小的子代作为候选子代传递到下一代。

在"几何语义遗传规划" (GSGP) [17]中,后代是两个被选择的父代的凸组合。给定选择的父代 P 1 P1 P1 P 2 P2 P2,利用式(1)生成新的子代 P 0 P0 P0

R R R是一个随机实数,GSGP产生的新子代位于两亲本 P 1 P1 P1 P 2 P2 P2之间的欧氏距离所画的线段上。

Krawiec and Pawlak[17]提出了"基于语义反向传播的近似几何交叉" (AGX)。AGX是一种新的几何解决方案,旨在减少GSGP中的代码增长,找到最优的子代。它维护一个几乎所有可能的小树的库,以提供高度的多样性,称为程序(procedures)。该方法利用反向传播算法寻找子树位置,代入父代。这种方法的主要局限性在于其性能依赖于小树的库。虽然GSGP可以产生有希望的结果,但指数树生长使其在大多数情况下不切实际。Nguyen等人提出了"子树语义几何交叉"算子(SSGX) [14],与GSGP相同,只是SSGX是在子树层次上实现的。该方法选择随机父代进行交叉,在每个选择的父代中选择 n n n个随机子树,并在适应度案例上进行评估。其目标是在其父类中找到一个语义最相似的子树。设置一个恒定的范围 [ a , b ] [a , b] [a,b]上下界来选择这个范围内的子树来控制种群中树的生长。在双亲中选择语义相似的子树后,用GSGP算子进行交叉操作。当SSGX应用于100%时间的交叉率时,交叉崩溃很快。为了避免种群崩溃,从范围[0 , crossover rate]中取一个随机值 r r r。如果r小于预先设定的阈值,则执行传统的GP交叉操作,否则执行SSGX操作。

Hara等[18]提出了一种新的方法"基于几何语义遗传规划中目标语义的确定性交叉" (Deterministic Crossover Based on Target Semantics in Geometric Semantic Genetic Programming,DGX)来挖掘线段的中点,改进GSGP,从而选择这样的父代进行居中目标语义的交叉。在GSGP中,如果子代的语义位于父代之间的线段上,那么子代的语义不会比父代的语义差。由于搜索空间上的目标语义并不能保证在所选父类的中间,所以使用式(1)中对R的随机实值代替。在DGX中,R的最合适值是通过在语义空间中纳入目标语义与选择父代位置之间的夹角来计算的。利用目标语义与选定父代在语义空间中的位置关系为R寻找最佳值,并执行(1)中常规的GSGP交叉操作。

Chen等[19]为了提高GP的性能,引入了角度驱动的几何语义交叉。该交叉算子通过产生有界的语义影响来操纵GP树的语义,并生成行为与其父代相似或更优的子程序。后来,同样的作者引入了一种新的基于熵的度量来计算GP种群中的多样性[20]。利用这个度量,我们引入了一个框架来保护GP种群的多样性。

Nguyen和Chu [21]使用语义相似度来减少代码膨胀。它们在交叉过程中以较小的语义相似树替换子树。这样可以在不影响树的语义的情况下减少代码膨胀。

Ruberto et al. [22]在遗传规划中引入等价类的概念来解决符号回归问题。在生成新种群的同时,仅从等价类中选择一个解。作者声称,与其他几何交叉算子相比,他们提出的技术产生的个体非常小。

2.4. Other operators

上面讨论的基于语义和几何的算子具有一定的优势和局限性。Pawlak [23]尝试结合语义算子和几何算子的特点改进交叉操作。在他们提出的工作中,他们将以前的语义和几何算子分为两个语义有效的和语义的几何交叉算子。具体来说,在这种方法中,他们结合了SAC和KLX算子的特点,形成了一个新的算子,声称能产生更适合的后代。

Kumoyama等[4]提出了一种新的用于概率模型构建GP的概率树表示(PMBGP)。PMBGP从过去的搜索信息中估计符号在树的每个节点出现的概率,并根据每个节点在生成解时的概率决定符号。

Graff等人[24]提出的基于偏导数误差的语义交叉方法(Semantic Crossover based on the Partial Derivative Error,GPPDE)利用反向传播算法在选定的父节点中寻找最佳交叉点。反向传播用于计算第1个父代的偏导数误差,并将误差反向传播到随机选取的交叉点。根据第1个父代选择交叉的子树输出 o o o、导数误差 r r r及其符号 e e e,选择第2个父代的交叉点。在具有最大化适应度条件 ( o − r ) ∗ e ( o-r) * e (or)e的语义的第二个父子树中。误差符号为负表示子树在第一父代选择交叉点的输出应该增大,在第二父代选择交叉点应该满足第一父代交叉点的条件使得适应度误差最小。

这项工作的目的是提出一种GP交叉的解决方案,解决以前方法中的局限性。本研究中讨论的方法被用作我们提出的方法的基础。该方法通过反向传播算法利用最佳上下文来改进GP交叉操作。本文所讨论的方法是目前最先进的,与我们提出的方法有关,特别是GPPDE,SSGX和DGX。因此,将提出的技术与这些技术进行比较。

3. Context of a sub tree

树的上下文可以通过对输入向量的评价来描述。图1对此进行了图形化描述。每个子树都是一个有效的GP树,在评估过程中返回一个输出向量。子树的行为由其周围节点和父节点定义。如图 1,树 T \text{T} T ST1-ST6 \text{ST1-ST6} ST1-ST6子树。在evaluation中 ST1 \text{ST1} ST1始终返回零向量。 基于这个讨论, ST2 \text{ST2} ST2的行为由 ST1 \text{ST1} ST1 T \text{T} T来定义。注意, ST5 \text{ST5} ST5 ST6 \text{ST6} ST6没有明确提到来定义 ST2 \text{ST2} ST2的上下文。这是因为 ST5 \text{ST5} ST5 ST6 \text{ST6} ST6 ST2 \text{ST2} ST2的一部分。我们定义一棵子树为包括其子节点在内的以交叉点为根的完整树。在这个例子中,由于 ST1 \text{ST1} ST1处的零矢量输出和 T \text{T} T上的算子, ST2 \text{ST2} ST2的作用被掩盖了。用不同的树替换 ST1 \text{ST1} ST1可以改变 T \text{T} T的行为。上述表述相当于改变了 ST1 \text{ST1} ST1的语境。在本研究中,程序树 T \text{T} T的上下文是间接计算的,通过对其进行评估并返回其输出向量,该向量依赖于其周围和父节点。

  • 图 1. 容器树( T \text{T} T)中子树( ST1-ST6 \text{ST1-ST6} ST1-ST6)的上下文。每个节点都有标签,是独立的有效树。此外还给出了每个子树的中间评价向量。对自变量 X \text{X} X使用一个大小为3的示例输入向量。

4. Role of a tree as a function of its context

计算GP树的每个子树的上下文对于提高GP的性能非常重要。提高GP性能的一种可能的方法是定义构造性遗传算子。一般认为,GP中常用的一点交叉算子是破坏性(生成比它的父母更糟糕的孩子)的80%。定义构造性交叉算子最重要的步骤是,找到树中对树的行为有积极影响的关键子树,然后用正确的子树替换它们。直觉上,必须选择一棵树的高影响子树才能使树发生显著的大变化,反之亦然。寻找合适的替换子树是另一大挑战。在这项工作中,我们使用基于偏导数的技术找到关键子树进行替换,然后用更好的子树替换它们。

4.1. Back-propagation to calculate impact

R. Rojas [25]使用反向传播算法计算神经网络表示的函数的偏导数。他计算了具有单一真实输入 x x x和网络函数 f f f的网络在两个阶段的导数,即"前馈"和"反向传播"。在前馈阶段(看图 2(上)),在神经网络的每个节点(节点的右侧部分)及其衍生(节点的左半部分)的 the primitive functions 都被计算并存储在节点中。左半部分存储的值在反向传播阶段(看图 2 (底部))中使用。在反向传播阶段,将常数1反馈到输出节点并将值反向传播。从左边传来的值乘以节点左边已经存储的偏导数,该过程一直持续到叶子节点。最终的计算值实际上是网络表示的函数关于输入 x x x的导数。在图 2中,前向传播计算 f ( g ( x ) ) f(g(x)) f(g(x)),后向传播计算 f ′ ( g ( x ) ) g ′ ( x ) f^′(g(x))g^′(x) f(g(x))g(x),即 ∂ f ( g ( x ) ) ∂ x ∂f(g(x))∂x f(g(x))x

  • 图 2. 对不同子树求偏导。

图 3 给出了多输入的一般情况。对于每个节点,计算并存储关于每个变量的偏导数。其余导数计算过程与上面讨论的相同。

  • 图 3. 对不同子树求偏导。

虽然Rojas [25]提出了反向传播来训练神经网络,但是它可以应用于具有微小调整的GP树。GP树可以可视化为以叶子节点为输入,以根节点为输出,以分支为连接的网络。我们修改并使用反向传播算法标记GP树中的最佳子树进行替换,同时在两个父代之间进行交叉操作。值得注意的是,反向传播算法可以在反向传播过程中停止在树的任意节点。我们使用这种方法来计算GP树的每个子树的影响。在回传过程中计算的值表示子树可以对树的上下文做出的改变。

图4给出了计算偏导数的方法。在反向传播算法的前馈阶段,计算每个子树的偏导数。在图4 (a)中,树的节点被分为两部分。上半部分包含节点执行的函数,而下半部分存储函数关于其子节点的偏导数返回的值。节点的顶端的值是节点的输出。当有多个孩子时,下半部分存储多个值,每个孩子一个值。例如,在图 4(a) 中,以*为根的左下子树表示 0.5 x 0.5x 0.5x 的表达式。它有两个子代,因此存储两个偏导数的值,每个子代一个。在这个例子中,为了简单起见,只考虑了两个训练样本,因此对 x x x使用了一个输入向量(0.3 , 2)。 ∂ 0.5 x / ∂ 0.5 ∂0.5x/∂0.5 0.5x/0.5是树的左子树 x x x。同理, ∂ 0.5 x / ∂ x ∂0.5x/∂x 0.5x/x 0.5 0.5 0.5,为树的右子树。每个偏导数返回的值存储在节点的下半部分,分别为(0.3 , 2)和0.5。

  • 图 4. 利用偏导数计算子树的影响。

图 4 (b) 显示了反向传播阶段的工作情况。在此阶段,一个恒定值 1 反向传播。在每个层次上,反向传播的值在前向传递过程中与父节点中存储的值相乘并将乘积反向传播。这个过程递归重复,直到找到叶子节点。注意每个训练案例的反向传播值可以是不同的(算例中取决于 x x x的取值)。此外,节点影响力需要是一个标量值,因此在本研究中,计算所有训练样本的回传值的简单平均值并进行回传。节点对从节点到其父节点的支路的影响值如图 4(b)所示。最后,利用这些值对节点进行排序。高影响值对应高影响部位,反之亦然。注意,在计算场地影响时只考虑导数的大小。在图 4(b) 中,高、低冲击位点用虚线标注。我们认为,通过使用所提出的方法,可以确定地选择用于交叉的最佳节点/站点(在一定程度上)。例如,在交叉过程中会选择一个高影响位点,使树的行为发生较大变化,反之亦然。我们希望使用我们的方法将GP搜索引导到有希望的区域,而不探索搜索空间的坏区域。

4.2. Validity of the claim

我们创建了一个由20个可变大小的随机子树组成的池来测试我们的声明的正确性。这些子树在随机选取的GP种群乔木的高、低影响位点处插入,利用4.1节提到的技术计算了高、低影响位点。从计算得到的影响位点列表中随机选取高、低影响位点。在树的选定的低影响和高影响位置从先前生成的池中插入子树后,记录树的输出的变化。此过程重复多次。除了验证我们的假设外,这个实验装置松散地复制了标准交叉算子的工作,其中一个随机选择的子树随机放置在另一个树中。结果取平均值,如图5所示。

绘制的结果表明,当子树放置在高影响位置时,树的输出差异始终较高,而放置在低影响位置时,树的输出差异较低。这些结果符合第4节末尾提出的假设,因而得到验证。

5. Impact aware crossover operator

最后,将提出的技术用于设计一种新的碰撞感知交叉 (Impact Aware Crossover,IAC) 算子,以提高标准GP的性能。IAC由两步组成,即:

  1. 父树中交叉位点的选择
  2. 从种群中选择供体子树

IAC首先使用预定义的选择方案选择一个父代。在选择时,对选择的父树进行评估,并使用上述技术(见第4节)计算其所有子树的影响。综合考虑父树的语义误差和子树的影响,选择合适的父树交叉点。如果父树的输出与目标输出(高语义错误)相距较远,则要求树的输出发生较大变化,从而选择影响较大的站点,否则选择影响较小的站点。

区分高影响区和低影响区需要一个阈值。在本研究中,我们通过使用hit和trial方法进行实证计算。我们的实验设置为0.1。这是一个参数,必须在运行前设置。如果语义误差大于0.1,则选择高影响点,否则选择低影响点。小于0.1的语义误差意味着父向量的输出接近目标向量,需要进行微小的调整以改进。因此,必须选择低影响场地进行交叉。

8. Conclusion

本文提出基于反向传播的技术来计算树的子树对其输出的影响。结果表明,所提出的技术准确地计算了子树的影响。这在后来被用来定义一个新的交叉算子。用IAC增强的GP在所有测试问题上都表现出一致的性能改进。我们认为,这是由于通过考虑树输出中的语义误差来智能选择交叉点。

目前,供体子树的选择过程是随机的。我们认为,通过在一次交叉过程中生成所需上下文的子树,可以进一步提高GP的性能。这一方向将在今后的工作中进一步探索。

补充

Background 部分不错

本文中原理还未弄明白

References

Majeed H, Wali A, Beg M. Optimizing genetic programming by exploiting semantic impact of sub trees[J]. Swarm and Evolutionary Computation, 2021, 65: 100923.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值