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 (ini​、outi​)∈T 是由输入到程序和相应的期望输出组成的一对。与以往大多数关于语义 GP 的研究一致,在本文中,程序语义(语义学简称)是指给定程序 p p p 对于给定的测试集(fitness cases) ( i n i 、 o u t i ) ∈ T (in_i、out_i)∈T (ini​、outi​)∈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(in∣T∣​))(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(in∣T∣​)=out∣T∣​]),(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=1∑∣T∣​oi​(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)={p∈P: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 p∈P 适应度的 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)=t∈T(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 p∈P 对于给定的测试集 ( i n i 、 o u t i ) ∈ T (in_i、out_i)∈T (ini​、outi​)∈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 d1​,d2​,..,dk​∈D 也可以用来驱动单目标选择,为此使用程序性能的超体积,即
h ( p ) = ∏ i = 1 k d i ( p ) (6) h(p) = \prod_{i=1}^k d_i(p) \tag{6} h(p)=i=1∏k​di​(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) p1​≻D​p2​⟺∀d∈D​:d(p1​)≥d(p2​)∧∃d∈D​: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.

没啥知识含量

2015,GECCO,Comparison of Semantic-aware Selection Methods in Genetic Programming相关推荐

  1. 2019,GECCO,Linear scaling with and within semantic backpropagation-based genetic programming for SR

    ABSTRACT 语义反向误差传播网络 (SB) 是最近在基于树的遗传编程中促进有效变异的技术.SB 的基本思想是通过使用沿途遇到的函数的倒数将期望的根节点输出传播回指定的节点,从而提供关于指定树节点 ...

  2. 2013,GECCO,Running programs backwards: instruction inversion for effective search in semantic spaces

    说明 本文的指令 instruction,即对应树型 GP 中的某个函数 ,语境(context)是指语义的集合 ABSTRACT 用于求解典型遗传规划任务的指令 (instructions) 具有很 ...

  3. 2018,GECCO,Where are we now? A large benchmark study of recent symbolic regression methods

    ABSTRACT 在本文中,我们在最先进的机器学习方法的背景下,为符号回归提供了最近遗传编程方法的广泛 benchmarking .我们使用了从网上开源知识库中剔除的近100个回归基准问题.我们对最近 ...

  4. 2022, GECCO,Taylor Genetic Programming for Symbolic Regression

    ABSTRACT 问题: 遗传规划(GP)是求解符号回归(SR)问题的常用方法.与求解 SR 问题依赖于预定义模型和训练数据集的机器学习或深度学习方法相比,GP 更专注于在搜索空间中寻找解.虽然 GP ...

  5. 成功解决Visual Studio 2015安装时,点击vs_community.exe 没有反应

    成功解决Visual Studio 2015安装时,点击vs_community.exe 没有反应 目录 解决问题 解决方法 解决问题 Visual Studio 2015安装时,点击vs_commu ...

  6. Visual Studio 2015专业版创建Win32控制台应用程序,C,C++源文件

    原配的Visual Studio 2015专业版不像之前的版本,在新建项目里面是找不到Win32模板的,那么怎么才能新建Win32项目和Win32控制台应用程序呢?今天我就带大家做一简单介绍. 先看如 ...

  7. Visio studio 2015企业版,汉语版下载,安装,破解,搞定了

    安装Visio studio  Visio studio 2015企业版,汉语版 下载地址: 链接:https://pan.baidu.com/s/1in5MM48HAbUwm5tw-EL_XQ 密码 ...

  8. 2012, PPSN,Geometric Semantic Genetic Programming,GSGP

    Abstract 摘要 问题: 传统的遗传程序设计 (Genetic Programming,GP) 通过使用操纵语法表示的搜索算子来搜索函数/程序的空间,而不考虑它们的实际语义/行为.最近,语义感知 ...

  9. javaone_JavaOne 2015继续进行,Java将永远存在(……也许是长篇大论)

    javaone 好的. 也许我的标题太夸张了. 我确实相信Java,生态系统,社区,虚拟机和母编程语言将会存在很长一段时间. 有什么可以偏离的? 假定在我的酒店房间中花费很多时间,在我的演讲中增加技巧 ...

最新文章

  1. ThinkPHP读取数据库数据到模板文件
  2. 深入理解Java注解Annotation之注解处理器
  3. 评价cnblogs.com的用户体验
  4. 语言解决猜神童年龄的问题_JavaScript语言基础:Promise是如何解决回调地狱问题的?...
  5. dataframe 众数的方法_数据分析师最常用的数据分析方法。你都掌握了吗?
  6. Pytorch 实现 MLP
  7. python中等于列表的某一个值为真,python – 获取值等于特定值的列表中的所有元素...
  8. python tkinter-单选、多选
  9. 一个JavaScript读取XML的问题
  10. shell脚本for循环的基础格式以及取值列表的多种取值方式
  11. vue el-descriptions 样式问题
  12. 离散信号(八)| 离散傅里叶变换DFT性质(圆周移位、圆周卷积)
  13. 过招多家大厂提炼的iOS面试心经(答案版)
  14. Webpack 使用
  15. 卷积,反卷积,空洞卷积
  16. 什么是脚本语言?什么是解释性语言?什么是编译性语言?
  17. 华南师范大学计算机学院男生宿舍,最全!广东68所本科高校宿舍汇总!你的宿舍豪华还是简陋?...
  18. 考研复试(控制工程专硕)及大学本科(物联网工程)知识点回顾(五)——其他重点内容
  19. wpa.b.qq.com/cgi/wpa.php,QQ在线状态代码
  20. linux查询80端口,Linux 查看 80 端口的占用情况

热门文章

  1. 机试指南 cha3 哈夫曼
  2. 【java代码规范】
  3. 微信储存卡已拔出,如何解决
  4. 2019_GDUT_新生专题IV数论 G
  5. 易飞ERP Msg Type:E and ID:201403 not found!故障处理
  6. python htmlparser怎么用,在Python中高效地使用HTMLParser
  7. Cscope使用方法小结
  8. Django使用pip安装
  9. 山东大学软件学院计算机组成原理实验3
  10. 手机S60第三版教程集合