传统程序评估局限性与行为程序合成框架解析
传统程序评估的局限性
在实际问题中,给定搜索算法的行为往往更为复杂。由于搜索算子存在各种偏差,结果向量之间的转换并非简单的可能或不可能,而是有不同的可能性。在遗传编程(GP)中,搜索算子的随机性也是导致这种情况的原因之一。
为了探究上述特性在现实世界领域是否存在,我们通过实验为选定的现实问题构建了类似的图。以布尔域和由{and, or, nand, nor}指令组成的程序为例,构建图的步骤如下:
1. 使用传统的斜坡一半一半方法生成深度最多为8的10000000个随机程序样本。
2. 对每个生成的程序p进行变异,得到程序p′。
3. 计算结果向量o(p)和o(p′),并收集整个样本中结果向量之间转换的统计信息。
我们采用了GP中常用的子树替换变异算子,该算子使用深度限制为8的斜坡一半一半方法生成随机子树。
以布尔3位多路复用器问题(mux3)为例,其程序输入包含三个变量,第一个变量作为“地址线”,决定将其余两个输入变量中的哪一个传递到输出。该问题的目标函数值在0到8之间变化。尽管mux3对于当代程序合成方法来说很简单,但该领域的程序行为已经相当丰富,有256种可能的结果向量。图2.3展示了该问题结果向量转换图的最上面三层,分别对应评估值为0(最优解)、1和2的结果向量。这些顶层对于程序合成的成功至关重要,因为在实践中搜索往往会卡在一两个失败的测试上,无法取得进一步进展。
图2.3中节点的空间排列与图2.2类似,但箭头的宽度反映了转换的估计概率。节点的标签为估计的改进对数优势,计算公式为:
[ - \left(\log_{10} \frac{n^-}{n^+}
行为程序合成框架解析
超级会员免费看
订阅专栏 解锁全文
964

被折叠的 条评论
为什么被折叠?



