2015,GECCO,Comparison of Semantic-aware Selection Methods in Genetic Programming

ABSTRACT

本文研究了遗传编程 (GP) 中几种语义感知选择方法的性能。特别地,我们考虑不依赖于完全 GP 语义(也就是说, 一个程序为 fitness cases 产生的输出元组)),而是依赖于二进制结果向量的方法,这些结果向量仅表示给定的测试是否被程序通过。这使得我们可以将协同进化算法领域中通常考虑的基于测试的问题联系起来,并有望解决更广泛的实际问题,特别是期望程序输出未知的问题(例如, evolving GP controllers)。本文考虑的选择方法包括隐式适应度共享(Implicit Fitness Sharing,IFS)、派生目标发现(Discovery Of derived objectives,DOC )、词汇选择(lexicase selection,lex) 以及后两者的混合。这些技术,连同一些变体,在一系列离散的基准问题上进行了实验比较,并与传统的 GP 进行了比较。结果表明,lex 和 IFS 的性能较优,DOC 的一些变体表现出一定的潜力。

2. TESTS AND SEMANTICS

我们假设程序合成任务是通过提供一个测试集 T (fitness cases) 来完成的,其中每个测试 ( i n i 、 o u t i ) ∈ T (in_i、out_i)∈T (iniouti)T 是由输入到程序和相应的期望输出组成的一对。与以往大多数关于语义 GP 的研究一致,在本文中,程序语义(语义学简称)是指给定程序 p p p 对于给定的测试集(fitness cases) ( i n i 、 o u t i ) ∈ T (in_i、out_i)∈T (iniouti)T 返回的输出向量(元组),即:
s ( p ) = ( p ( i n 1 ) , p ( i n 2 ) , . . . , p ( i n ∣ T ∣ ) ) (1) s(p) = (p(in_1), p(in_2), ..., p(in_{|T|})) \tag{1} s(p)=(p(in1),p(in2),...,p(inT))(1)

语义GP方法依赖于种群多样化和设计搜索算子等。

本文考虑的方法仅间接依赖于程序语义。与其检查程序产生的特定输出值,他们只关心给定的测试是否已经通过。我们将这种程序特征形式化为 结果向量 (outcome vector)
o ( p ) = ( [ p ( i n 1 ) = o u t 1 ] , . . . , [ p ( i n ∣ T ∣ ) = o u t ∣ T ∣ ] ) , (2) o(p) = ([p(in_1) = out_1], ..., [p(in_{|T|}) = out_{|T|}]), \tag{2} o(p)=([p(in1)=out1],...,[p(inT)=outT]),(2)

式中:[·] 为 Iverson 括号,例如:
[ x ] = { 1 , if  x  is true 0 , otherwise [x]= \begin{cases} 1, &\text{if $x$ is true} \\ 0, & \text{otherwise} \end{cases} [x]={ 1,0,if x is trueotherwise

因此,结果向量是一个向量,其中 1 和 0 分别对应通过和失败的测试。传统的统计通过测试次数的目标函数可以形式化为
f ( p ) = ∑ i = 1 ∣ T ∣ o i ( p ) , (3) f(p) = \sum_{i=1}^{|T|} o_i(p), \tag{3} f(p)=i=1Toi(p),(3)

其中 o i ( p ) o_i(p) oi(p) 表示结果向量 o ( p ) o(p) o(p) 的第 i i i 个元素.

下面,我们将使用类似于 o ( p ) o(p) o(p) 的形式:通过 p p p 的检验集 T ( p ) ⊆ T T(p) \subseteq T T(p)T,即:
T ( p ) = { ( i n , o u t ) ∈ T : p ( i n ) = o u t } T(p) = \{(in, out) \in T: p(in) = out\} T(p)={(in,out)T:p(in)=out}

反之,用 P ( t ) ⊆ P P(t) \subseteq P P(t)P 表示种群 P P P 中通过检验 t = ( i n , o u t ) ∈ T t = ( in , out)∈T t=(in,out)T 的程序集,即:
P ( t ) = { p ∈ P : p ( i n ) = o u t } P(t) = \{p \in P:p(in) = out\} P(t)={ pP:p(in)=out}

3. THE METHODS

3.1 Implicit Fitness Sharing

Smith等 [19] 提出并由 McKay [14、13] 在 GP 中进一步探讨的内隐适应度共享(IFS)源于对特定测验难度可能不同的观察。尽管在实际问题中,测试难度均匀分布的问题比难度因测试而异的问题更不常见,但传统的适应度函数(式 (3))忽略了这一事实,对 T T T 中的每个测试都给予相同的 1 的奖励。这可能导致早熟收敛,因为种群中的程序自然倾向于先学习如何通过更容易的测试。为了吸引一个搜索过程来解决更困难的测试,就需要增加求解它们的奖励。然而,哪里可以获得关于测试难度的可靠信息?引言中讨论的客观困难和主观困难在这里几乎没有用处, 估计其中任何一个都需要运行一个程序样本,因此需要额外的计算成本。

IFS 利用 working population P P P 中 candidate programs 与 T T T 中测试的交互结果,得到后者的难度估计值。这些交互无论如何都必须进行,即 P P P 中的程序必须应用于 T T T 中的测试,因为需要它们来评估程序的性能。从这个意义上说,IFS 不需要额外的计算成本。

给定这些信息,IFS 定义了自己的评价函数。定义程序 p ∈ P p∈P pP 适应度的 IFS-fitness 为:
f IFS ( p ) = ∑ t ∈ T ( p ) 1 ∣ P ( t ) ∣ (4) f_{\text{IFS}}(p) = \sum_{t \in T(p)} \frac{1}{|P(t)|} \tag{4} fIFS(p)=tT(p)P(t)1(4)

注意公式 4 中分母永不为零,因为如果 p p p 求解给定的 t t t,则 P ( t ) P(t) P(t) 必须至少包含 p p p

(4) 式中的 1 ∣ P ( t ) ∣ \frac{1}{|P(t)|} P(t)1 是 IFS 关于测试 t t t 难度的度量,它与 t t t 失败的程序数量成倒数非线性关系。重要的是,IFS 从程序的 working population 中估计难度,这是在特定的选择压力下进化出来的。

通过将测试难度表示为一个比率,可以将 IFS 中的测试比喻为有限的资源:种群中的个体共享解决它们的奖励,其中奖励可以从 1 ∣ P ( t ) ∣ \frac{1}{|P(t)|} P(t)1 到 1 个包含。对于很少被种群成员(小 ∣ P ( t ) ∣ |P(t)| P(t))求解的测试给予较高的奖励,对于经常被(大 ∣ P ( t ) ∣ |P(t)| P(t))求解的测试给予较低的奖励。然而,奖励的分配取决于当前 population 的能力,因此随着时间的推移而变化。这与传统的进化算法形成了强烈的对比,其中候选解的评估通常是上下文无关的,即不依赖于其他候选解。因此,IFS 可以被看作是 协同进化算法 的一种简单形式 [18],其中个体相互竞争测试。从某种意义上说,IFS 进行自主塑造,因为它通过改变对解决特定测试的贡献来修改自己的 training experience [22]。

IFS 通常被认为是一种多样性维持技术:解决了少量测试的个体,如果其能力稀缺,仍然可以生存。这样,IFS 有助于减少拥挤和早熟收敛。它与文献 [3] 中提出的显式适应度共享这个目标,其中通过监测个体之间的基因型或表型距离来鼓励种群多样性。通过允许同一个程序在进化运行的两代中获得不同的适应度,IFS 还可以帮助逃离局部最小值。

3.2 Discovery of Objectives by Clustering

由 Krawiec and Liskowski [9] 提出的通过聚类来发现搜索目标的方法,是一种通过对种群中程序之间的交互结果和测试结果进行聚类来自主推导新的搜索目标的方法。每个派生目标旨在捕捉项目在群体中其他个体的情境中表现出的"能力"的子集。导出的目标取代了传统的适应度函数(公式 3 ),并随后用于以单目标或多目标的方式驱动选择过程。DOC 是受到我们前期工作协同进化算法的启发, 并且基于我们在 [12] 中为基于测试的问题设计的方法。

DOC 要求每个程序 p ∈ P p∈P pP 对于给定的测试集 ( i n i 、 o u t i ) ∈ T (in_i、out_i)∈T (iniouti)T 返回的输出聚集在一个交互矩阵 G G G 中。对于 m m m 个程序和 n n n 个测试集, G G G 是一个 m × n m × n m×n 矩阵,其中 g i j = [ p i ( i n j ) = o u t j ] g_{ij} = [p_i(in_j) = out_j] gij=[pi(inj)=outj]。加入 DOC 的 GP 算法中的评估阶段总结在算法 1中 。

G ′ G^′ G 的列隐含地定义了表征 P P P 中程序的 k k k 个派生目标,并构成从 P P P 中选择最有前途的程序的基础。在最简单的情况下,它们可以作为传统多目标进化方法的目标,如 NSGA-II [2]。

衍生目标 d 1 , d 2 , . . , d k ∈ D d_1,d_2,..,d_k∈D d1d2..dkD 也可以用来驱动单目标选择,为此使用程序性能的超体积,即
h ( p ) = ∏ i = 1 k d i ( p ) (6) h(p) = \prod_{i=1}^k d_i(p) \tag{6} h(p)=i=1kdi(p)(6)

使用程序性能的超体积作为搜索目标可以被看作是一种在所有派生目标上促进平衡性能的方法。

通过避免聚合适应度函数 (第一节)中根深蒂固的补偿问题,DOC 被设计为对测试固有难度敏感。为此,DOC 将原目标函数给出的单目标问题转化为多目标问题,以便于优势关系的使用:

p 1 ≻ D p 2    ⟺    ∀ d ∈ D : d ( p 1 ) ≥ d ( p 2 ) ∧ ∃ d ∈ D : d ( p 1 ) > d ( p 2 ) p_1\succ _D p_2 \iff \forall_{d \in D}: d(p_1) \geq d(p_2) \wedge \exist_{d\in D}: d(p_1) \gt d(p_2) p1Dp2dD:d(p1)d(p2)dD:d(p1)>d(p2)

派生的目标形成了当前测试集种群背景下候选解的多目标表征,然而,它们并不能保证保持在测试空间中定义的原始支配关系。由于聚类的结果,可以丢失一些关于优势结构的信息,但是这种不一致性带来了一个关键的优点:产生的衍生目标的数量较低,因此它们能够共同对进化种群施加有效的搜索梯度。此外,通过在派生目标空间中实施选择,具有不同 "‘skills’ "的候选解可以在群体中共存,即使其中一些方案在通过测试的数量上明显优于其他方案。

3.3 Lexicase Selection

Lexicase Selection (下面的 lex)是 Spector [20] 最近推出的一种语义感知选择技术。最近 Helmuth 等 [4] 的实验证明了 LEX 在问题解决和多样性维护方面的优势。

在测试集 T T T 下对给定的种群 P P P 应用 lex 的单个行为,使用第 2 节中提供的形式进行表述,如算法 2 所示。

每个选择动作(用单个程序产生)都需要独立运行上述算法。在最坏情况下,由算法第 2~4 行组成的循环需要迭代所有测试。与 DOC 类似,除了对求解测试用例的程序进行奖励外,Lexicase Selection 促进了通过随机选择子集测试的多样化程序。这样,在每个选择事件中强调不同的测试。一个通过竞争对手很少通过的测试的个体,即使在其他许多测试中表现不佳,也有很大的机会向下一代传播。例如,如果单个个体在特定情况下具有最好的误差,那么无论该个体在其他情况下的误差如何,只要该个体在随机排序中最先出现,就会被选中。这是一种极端的情况- -往往不会仅仅是单个的个体,而/或成套的案例会具有相关性。

注意,与 IFS 和 DOC 不同,lex 没有显式定义任何目标或替代适应度函数。从这个意义上说,它是 ‘natively’ 的一种选择方法。

3.4 Hybridizing DOC with LEX

在其原始形式中,DOC 识别的派生目标基于不相交的测试子集,并以单目标或多目标的方式驱动选择过程。在早期的研究中,我们通常将其与 NSGA-II [2] 相结合,以避免所有测试的交互结果的聚合转化为单个标量值, 这是 1 中所讨论的传统目标函数的特点。算法选择的主要动机之一也是为了避免这种聚合,而算法 2 基于特定迭代的决策是基于不同的测试。这些观察鼓励将这两种方法结合成一种混合方法,对派生目标进行 lexicase selection。

技术上,我们首先使用算法 1 推导出新的搜索目标。随后,我们应用算法 2,使用特定的派生目标 d i d_i di,好像它们是 lexicase selection 中的测试用例。在每次迭代中,导出的目标是随机绘制的。然后,在该目标上没有达到最佳性能的种群中的个体被淘汰。如果剩余一个以上的个体,则该过程重复进行,淘汰任何未在随机绘制的下一个派生目标上达到最佳性能的剩余个体。这个过程一直持续到只剩下一个个体并被选中,或者直到所有派生目标都被处理,在这种情况下,从剩余的程序中选择一个随机程序。

完整流程如算法 3 所示。在下文中,我们将其称为 DOCLEX。

6. CONCLUSIONS

在本文中,我们探索和比较了几种选择方法,这些方法或多或少地避免了程序和测试之间的交互结果(适应度案例)的聚合。所有这些技术的平均表现都优于配备锦标赛选择的基线 GP,而锦标赛选择是基于传统的标量目标函数,即简单地统计通过测试的次数。我们认为拓宽 “evaluation bottleneck” [11] 的方法值得追求。一种能够更好地了解候选解的详细特征的选择方法可以帮助在不断进化的种群中保持多样化的技能,同时仍然对其施加有效的梯度。

为了操作,本文考虑的方法只需要种群中程序的结果向量(式 2 )。程序语义的精确知识(公式 1 )不需要(尽管人们可能会想出一些扩展来考虑这些信息)。一方面,这剥夺了这些方法关于程序行为的更详细的信息,这些信息可能被用来提高搜索过程的效率,正如语义 GP 的典型方法所实践的那样。特别是几何语义 GP [15]。另一方面,结果向量允许包含更广泛的一类问题,其中期望的语义(即所求程序的语义)是未知的。例如在典型的控制问题中,最优控制信号没有明确给出。控制器的性能只能通过在给定的环境(对应本文的一个测试)中运行来评估。这种相互作用的结果,以领域特定的性能度量表示,决定了结果向量的一个元素。依赖结果向量的语义感知方法允许超越典型的语义 GP 设置,放松程序合成任务的原始形式。

References

Liskowski P, Krawiec K, Helmuth T, et al. Comparison of semantic-aware selection methods in genetic programming[C]//Proceedings of the Companion Publication of the 2015 Annual Conference on Genetic and Evolutionary Computation. 2015: 1301-1307.

没啥知识含量

猜你喜欢

转载自blog.csdn.net/qq_46450354/article/details/129945503