程序行为模式挖掘与代码复用
1. 程序行为模式挖掘
在程序合成中,我们可以通过挖掘程序行为的模式来评估程序的质量和潜力。这涉及到将执行记录转换为机器学习数据集,并使用分类器归纳和评估函数来分析程序。
1.1 数据集作为执行记录的表示层
数据集在程序评估中充当执行记录和机器学习归纳算法之间的“适配器”。对于基于树的遗传编程(GP)和简单数据类型(布尔值、整数、实数),数据集基本上是透明的,它一对一地复制执行记录和期望输出。如果期望输出形成一个复合实体(如列表),则需要映射到多个决策属性。
1.2 分类器归纳
前一阶段的结果是一个包含 m 个示例的传统机器学习数据集 D,每个示例由 n′ 个属性(其中 n ≤ n′ 是执行记录的列数)和一个决策属性描述。我们的目标是评估数据集 D 中的属性对于预测依赖属性(即程序的期望输出)的有用性。通过对 D 应用归纳算法(归纳器),我们可以得到一个训练好的分类器。
归纳得到的分类器模拟了中间执行步骤和期望输出之间的依赖关系,从而隐式地检测执行跟踪中与程序合成任务目标相关的模式。在一定约束下,许多类型的归纳器都可以用于训练分类器。在相关实验中,采用了决策树归纳算法。
以一个整数符号回归任务为例,程序树中的指令下方的彩色列表显示了四个测试产生的中间执行状态。这些状态组合形成执行记录,包含七列,与程序树中的节点数量相同。执行记录随后被转换为一个包含四个属性(x1 到 x4)的机器学习数据集,其中冗余列(x1 的多次出现)被移除,对应程序输出的蓝色列也被丢弃,以专注于中间执行状态。使用决策树归纳算法,以名义变量解释属性,得到的决策树的特征为 fe = 0 和 fc =
超级会员免费看
订阅专栏 解锁全文
637

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



