说明

本文的指令 instruction,即对应树型 GP 中的某个函数 ,语境(context)是指语义的集合

ABSTRACT

用于求解典型遗传规划任务的指令 (instructions) 具有很强的数学性质。在本研究中,我们利用这样的性质之一:可逆性。提出了一种执行关于程序片段的近似反向执行的搜索算子,试图通过这种方式在程序执行的中间阶段确定所需的语义 (部分结果)。以这种方式确定的所需语义指导替换旧程序片段的子程序的选择。在 20 个符号回归和布尔域问题上的大量计算实验表明,提出的随机期望算子优于传统变异和交叉算子的所有典型组合。

3. DESIRED SEMANTICS

在这一部分我们对期望语义的概念进行了更详细的描述。首先,我们展示了 oracle’s answers 的可能类型。这些考虑在一定程度上决定了本文所使用的期望语义的表示,我们随后对此进行了描述。最后,对于所谓的部分可逆指令 (invertible instructions),我们给出了一种计算期望语义的简单方法。

3.1 Possible Situations

一般而言,我们可以很方便地假设,在使用特定的上下文进行查询时, oracle 返回一个想要的集合值。之所以这样选择,是因为我们不得不考虑以下四种可能的情况:

  1. 只有一个值使得上下文返回正确的输出。
  2. 存在多个这样的值(它们有有限个或无限个)。
  3. 任何输入到上下文中的值都会导致整个程序的语义到达目标。换言之,该语境中缺失的部分是内含子 (intron),对程序的最终行为没有任何影响。
  4. 不管是什么被反馈到上下文中,产生的程序都不会实现目标。在这样的情况下,语境必须做出改变才能成为可能。

为了说明上述情况,我们假设任务是演化出一个恒等于零的实值数学表达式,即其目标语义 t = 0 t = 0 t=0。对于这个问题,我们可以很容易地设计表示上述类别的语境,如图 1 所示。第一个上下文编码表达式 1 × (#-1),其中 # 是缺失的子树,并且只接受一种语义 —— 只有用返回 1 的子树替换 # 才能得到等于 0 的表达式。接下来的两个语境接受一个以上的值。然而,上下文 1 - # 2 ^2 2 只接受两种可能的语义:-1 和 1,而上下文 1 - cos(#) 接受返回 2πn,n∈Z 的任意子树 (因此,在这种情况下可以接受无穷多个值)。在下一个例子中,上下文为 0 × sin(#),无论子树是否被粘贴到 # 中,整个表达式都将返回零。最后一个例子展示了一个结果表达式总是大于 1 的情况,不考虑替换 # 的语义。这种语境不能用来构建我们的解决方案。

  • 图 1:oracle’s answers 对于零值目标(即 t = 0 t = 0 t=0)的四种情况示例。图中小标题展示了接受值的数量。虚线圆 (节点’ # ') 表示上下文缺失的子树。

由于所需的语义包含了 oracle 对每个适应度情况的回答,那么它的每个元素都应该能够表达所考虑的所有 4 种情况。然而,一个语境接受许多价值的情况 (特别地,无穷多个) 不方便编码。此外,这可能导致内存需求的指数增长和通过计算所需语义的方法所需计算的复杂性。为了避免这样的问题,从现在起,我们采用了一种技术上可行但形式上不完整的解决方案,其中每个适应度情况所需的语义从 oracle 返回的集合中至多存储一个任意选择的值。

这种简化的期望语义的元素被允许表达三种情况之一(而不是 4 种):

  • 只有一个具体值是可以接受的(可能是一个任意选择的)。
  • 任何值都是可接受的(i.e., ‘don’t care’) —— 这样的元素在下文中会被称为不重要的。
  • 没有一个值是可以接受的 —— 这样的元素是不一致的。

简化的期望语义可以表示为一个列表(类似于第 2 节中介绍的常规程序语义),其中列表中的每个元素都是一个具体的值或者用来编码未定义元素的两个特殊值之一:不显著的 (‘不在乎’),不一致的。在下面我们将用它的简化版本来识别所需的语义,它不需要对替代值进行编码。

需要注意的是,切换到简化的期望语义会引入一定的偏见并遗漏潜在的好的部分。为了说明这一点,让我们继续前面的例子,其中的目标是进化一个返回零 (见图 1 b ) 的表达式。对于上下文 1 - # 2 ^2 2,我们简化的期望语义将包含 -1 或 1 (另一个值将被丢弃)。同理,对于上下文 1 - cos(#),简化后的期望语义将包含特定的 2π (例如, 0) 重数,返回不同 2π (例如 -2π) 重数的部分将被视为犯了某种错误。

3.2 Calculating the Desired Semantics

让我们暂时假设对于单个指令,给出了一种计算期望输入值的方法。在这种情况下,设计一个计算整个上下文所需语义的算法变得非常简单。该算法从根节点开始,沿着到上下文缺失子树 (#) 的路径进行。在每一步中,计算路径上后续节点的期望语义。这样,一开始,就有了对于位于根节点的指令想要的参数进行计算(给定的目标语义同时是根的期望语义)。然后,递归地处理路径上所有连续的节点。对于每个节点,其所有子树(参数)的语义都是已知的,因此,每个节点唯一未知的是所求的期望语义。最后计算得到的值构成了上下文未知的期望语义。算法 1 给出了该过程的伪代码。在这个 “语义反向传播” 的过程中,计算出的期望语义的特殊的不重要和不一致的值被直接传播。

为了计算上下文的期望语义,上述路径上的所有指令都应该是可逆的。当我们有一个可逆的指令时,它的反转将具有与数学中的反函数相同的性质。这意味着,在给定所有其他输入(函数的剩余参数)和期望输出(函数的结果)的情况下,必须能够计算每个使用的函数(指令)的期望输入。对于部分可逆的函数,计算得到的期望语义的某些元素可能是模糊的或不一致的( cf .图 1 中的例子)。还需要注意的是,可逆性要求意味着使用的函数不能是黑盒子- -我们必须知道如何计算期望的参数才能得到一个期望的函数值(即,我们必须知道反函数)。

作为算法 1 进行计算的一个例子,考虑演化表达式 x 2 − x x^2 - x x2−x (或者,确切地说,演化一个语义等价于 x 2 − x x^2 - x x2−x 的表达式) 的符号回归任务, 唯一的输入变量是 x x x,有三种适应度情况, x x x 分别假设为 -1、0 和 1。因此,终端节点 x x x 的语义为 [-1 , 0 , 1],目标节点的语义为 [2, 0, 0]。图 2 展示了一个示例上下文 (# × x − x ×~ x-x × x−x) ,其所有子树的语义表示为纯文本(这里只有终端)。对于从根节点到上下文缺失部分的路径上的连续节点计算的期望语义用粗体标出。从根节点开始,[2,0,0] 既是空上下文(空程序)的期望语义,同时也是问题的目标语义。上下文 (# - x) 所需的语义为 [1 , 0 , 1]。最后,上下文 (# × x − x ×~ x-x × x−x) 的期望语义为 [-1, ? ,1],问号表示不重要的值。不管缺失子树的语义的第二个元素是什么,因为这个元素的任何值都乘以零,并且总是产生零。

  • 图 2:具有计算期望语义的示例上下文(粗体)。任务的目标语义为 [2,0,0],自变量的语义为 [-1 , 0 , 1],上下文期望语义为 [-1 , ? , 1]。

4. RANDOM DESIRED OPERATOR

前几节提出了期望语义的概念框架。在这里,我们通过设计一个具体的搜索算子,将它们嵌入到进化上下文中,称为随机期望算子( RDO )。

期望语义决定了程序中特定位置的偏好语义属性,但无法综合出合适的部分(子树)。RDO不是合成这样的部件,而是依赖于一个动态变化的 repository of ready-to-use parts,我们称之为库(library),包含从当前种群中的个体中提取的子树。从技术上讲,在每一代中,首先收集来自当前所有个体的所有子树。接着,消除语义重复:如果两个或多个子树具有相同的语义,则仅子树 depth1 最小的那个子树保留在集合中,其他的则被丢弃。这种对具有唯一行为的极小子树的归约极大地减小了库的规模。原因有二。首先,整个进化群体中的大部分程序片段以多个拷贝存在。其次,不同的基因型往往映射为等价的表型,即句法上不同的程序可以具有相同的语义。为了创建新的解决方案,RDO 将从单个父代个体中提取的选定上下文和每一代重新构建的库中的最佳匹配子树相结合。RDO类似于标准的子树替换变异算子 [6]。具体来说,RDO 从父树中移除一个随机选择的子树,但它不是生成一个新的随机子树来代替旧的子树,而是在库中寻找一个子树。从那里可用的部分中,它选择从移除旧的子树(见算法 2 )中产生的具有最相似上下文所需语义的部分。

  • 1 我们使用子树深度准则是因为我们对进化过程施加了相同类型的约束,即我们限制了最大树深度。其他措施,如最大节点数,也可能更合适。

在计算语义距离时,忽略期望语义中未定义的(即,既不显著又不一致)元素。

注意,给定构建库的方法,RDO 最有可能插入来自其他个体的子树。因此,RDO可以看作是一个专门的交叉算子(抛弃第二个孩子),它对伙伴子树的"语义效用"进行一定的择偶操作。

5. THE EXPERIMENT

5.1 The Benchmarks

在接下来的实验中,我们将RDO与标准的GP搜索算子进行比较。为此,我们从实值函数和逻辑函数两个不同的领域来测试它们。在每个领域中,我们有十个问题实例(任务)。

Boolean Problems

在布尔域中,这里研究了四种不同的问题:偶数奇偶性(even parity)、多路复用器(multiplexer)、多数(majority)和比较器(comparator)。其中前三种来自文献[6],最后一种是 Walker 和 Miller [13]提出的数字比较器的简化版本。在下文中,我们将使用与 “自变量” 在符号回归语境中使用相同含义的术语 “论元” (‘argument’) 和 “位” (‘bit’)。

偶奇偶性(PAR)问题的目标是合成一个函数使其返回真当且仅当它的一个偶数个参数为真。PAR可以被看作是Not-Exclusive-Or 函数对两个以上参数的推广。我们考虑具有4、5和6位(即具有4、5或6个输入参数)的实例,分别记为PAR4、PAR5和PAR6。

在多路复用器问题 (MUX) 中,程序参数被分为两个块:地址位和数据位。其目标是将地址位解释为二进制数,并使用该数索引并返回合适数据位的值。我们考虑该问题的两个变体 6-bit(MUX6) 和 11-bit(MUX11)。在前者中有2个地址位和4个数据位。在后- 3A和8Bits。

多数任务(MAJ)问题是创建一个函数,如果超过一半的输入参数为真,则返回true。注意,对于偶数个参数,如果恰好有一半(或更少)为真,函数应该返回false。我们考虑该问题的三种变体:5比特( MAJ5 ),6比特( MAJ6 )和7比特( MAJ7)。

本文使用的最后一个布尔问题是比较器。这里的目标是将输入比特解释为两个二进制整数,并且只有当第一个数字大于第二个数字时返回 true。我们使用了6位 (CMP6) 和 8 位 (CMP8) 的变体,这意味着我们比较了3位数(CMP6)或4位数(CMP8)。

在表 2 中,所有的十个问题都显示在一起,以及将要评估解决方案的 fitness cases 的数量。一个解被认为是理想的,只有当它对所有的适应度情况返回正确的结果。

布尔域实验中使用的终端集合包括每个输入比特 (D 1 _1 1​ … D 11 _{11} 11​取决于比特数) 的一个终端。非终端指令为:AND、OR、NAND、NOR。与回归问题类似,上述所有问题的区域解也都可以在假设的解空间中找到。

7. CONCLUSIONS

所提出的方法所提供的加速和整体质量的提高是由于利用了给定问题的某些特性,更具体地说,是由于构成所考虑的编程语言的指令的特性。我们证明,考虑到这些隐含的、但往往容易获得的特征,可以帮助克服遗传编程的一些弱点,至少在某些领域和应用中。

正如我们在引言中已经提到的,令人惊讶的是,在遗传规划中很少考虑这样的补充2 和易于利用的性质。“one fits all” 的态度占了上风,特别是在操作符设计方面,这在 No Free Lunch 定理的遗产中令人费解。因此,我们相信这种创新的方法是对GP的一个重要贡献,并且本着这种精神开发的其他方法将导致遗传编程领域的本质突破。

本研究可以发展的方向有几个。在这里提出的RDO的变体中,我们以非常严格的方式使用所需的语义,搜索库中与所需值(即使整个程序返回正确输出的值)完全匹配的部分。然而,为了利用所提出的思想,一个全知全能的神谕是不必要的。只缩小所考虑部分的空间可能就足够了,这样遗传算子可以更快地选择要插入到父个体中的部分。因此,我们的方法也可以应用于指令不容易可逆的问题,我们打算在未来的研究中进行研究。

  • 2 补充性在程序执行不需要乘法算子等的可逆性的意义上

Reference

Wieloch B, Krawiec K. Running programs backwards: instruction inversion for effective search in semantic spaces[C]//Proceedings of the 15th annual conference on genetic and evolutionary computation. 2013: 1013-1020.

RDO 原理

首先介绍如何计算路径节点的期望语义 DESIREDSEMANTICS(c, t)

DESIREDSEMANTICS(c, t):针对语境 c 下,根节点目标语义为 t,求从目标语义 t 对应节点到 ‘#’ 节点路径上所有节点的期望语义,并将最终节点的期望语义存储到 d 中进行返回。

下图表示求从根节点到 ‘#’ 节点路径上所有节点的期望语义(semantic), 除了此路径上节点外的其他节点语义已知,共同组成的集合表示为语境(context) 代码思路通过下图进行介绍,首先在语境 c 中,将从根节点到 # 节点路径上的节点组成 list ,传给 L,即下图的 [‘-’, ‘x’, ‘#’] 节点。目标语义 t 赋值给 d,将 d 作为当前的目标语义,即 d = [2, 0, 0]。通过 for 循环,遍历 L 中的每一个节点 n,将当前节点 n 的所有子树 x 中,除了 L 中包含的节点外的其他节点语义赋值给 S,如根节点为 [2,0,0], 子树语义为 [1, 0, 1] 与 [-1, 0, 1], 将 [-1, 0, 1] 赋值给 S ,通过 S [-1, 0, 1] 与 目标语义 [2, 0, 0],计算出左边节点的期望语义 [1, 0, 1],计算方法为:如 d 中第一个值为 2,子树 x 语义中第一个值为 -1, 目标语义节点的操作符为 ‘-’,所以 ? - 2 = -1, ? = -1 + 2 = 1,所以左节点第一个值为 1,同理计算后续值,并计算后续节点

在程序 p 中随机选择一个节点 r, 通过函数 CONTEXT(p, r):提取去除节点 r 后的所有节点的语义,存储到 c 中,构成语境。通过 DESIREDSEMANTICS(c, t),计算出在目标语义 t 以及语境 c 下,节点 r 的期望语义赋值给 s,再传到 SEARCHLIBRARY(s),找出与 r 期望语义相同或类似的语义对应的节点进行返回为 r ′ r^{'} r′, 利用 r ′ r^{'} r′ 代替原节点。

2013,GECCO,Running programs backwards: instruction inversion for effective search in semantic spaces相关推荐

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

    ABSTRACT 本文研究了遗传编程 (GP) 中几种语义感知选择方法的性能.特别地,我们考虑不依赖于完全 GP 语义(也就是说, 一个程序为 fitness cases 产生的输出元组)),而是依赖 ...

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

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

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

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

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

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

  5. Visual Studio 2013开发 mini-filter driver step by step (2) - 编译,部署,运行

    编译driver 一个基本的mini filter项目创建好了以后,就可以编译,部署和运行了,在部署之前,我们要先确定在什么样的系统上运行,我有一台windows 2008 r2拟机,所以我的运行的目 ...

  6. 【Microsoft Word】Aurora插入公式点击Refresh,提示Problems running LaTex解决方法

    Aurora插入公式点击Refresh,提示Problems running LaTex,可能是因为默认的调用Miktex的路径不对,因此需要重新设置Miktex的路径.操作如下: 1.首先在LaTe ...

  7. 【系统架构设计师】软考高级职称,一次通过,倾尽所有,2013年下半年系统架构设计师考试论文真题(论软件可靠性设计技术的应用)

    [系统架构设计师]软考高级职称,一次通过,倾尽所有,看完这篇就够了,学习方法和技巧这里全都有. 2013年下半年系统架构设计师考试论文真题(论软件可靠性设计技术的应用) 论软件可靠性设计技术的应用 随 ...

  8. eZ Publish 2013.4 发布,CMS 内容管理系统

    eZ Publish 2013.4 修复了 60 个bug,62 个 pull-request 合并和两个增强. eZ publish是一个专业的开源内容管理系统(CMS)和一个开发框架(CMF).作 ...

  9. 2013 HTML5 峰会,HTML5 守望者的盛宴

    2013,HTML5 峰会再度来袭,一场属于 HTML5 守望者的盛宴!HTML5 作为新兴技术,未来光明但道路曲折.不管 HTML5 是遥不可及的幻想,还是眼下移动互联网的救命稻草?需要我们携手共建 ...

最新文章

  1. 点击拖动放大该图片大小
  2. NHibernate初学二之简单执行SQL及HQL、Linq
  3. c mysql封装 jdbc_利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现
  4. ASP.NET获取客户端、服务器端基础信息集合
  5. JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十三)自动答题
  6. iOS----------UITextField实现过滤选中状态拼音
  7. 重新添加MySQL服务
  8. 工作闲了觉得无聊,忙了觉得累......
  9. Java中文件复制的一个汇总
  10. MyEclipse从数据库反向生成实体类通过Hibernate的方式----mysql数据库实例
  11. 巴士电台开放接口API
  12. 中药说明书实体识别抽取top1
  13. 51nod1118--简单DP
  14. unity 安装遇到问题
  15. java 保存图片_java后台接受到图片后保存方法
  16. PID系统稳定性和零极点的关系
  17. 解锁三星bl锁有几种方法_三星Note5解锁教程_三星Note5 CROM解BL锁的方法
  18. html:简易制作拼多多登录页面
  19. “x经济”的2021:Z世代成价值载体,增量发掘与存量博弈共存
  20. 【责任链模式】责任链模式原来如此简单

热门文章

  1. table表格中实现圆角效果
  2. Python数据分析技术入门
  3. 欧盟电源适配器外部电源2019/1782/EU ERP欧洲能效认证
  4. android横向滑动换页,[转载]Android 左右滑动切换页面或Activity的效果实现
  5. mapgis明码文件转为点线面文件_MAPGIS平台点线面符号数据导出与绘制
  6. firewalld 火墙策略(二)
  7. 科济药业冲刺港股上市:累计亏损超18亿元,高瓴资本突击入股
  8. 腾讯入股京东对抗阿里 将改变电商格局
  9. 廖雪峰历时3个月打磨出价值1980的数据分析教程,终终终于免费啦!
  10. 拼音域名中双拼域名的价值是最高的吗?