[发明专利]基于强化学习的编译器缺陷定位方法有效
| 申请号: | 202010880640.1 | 申请日: | 2020-08-27 |
| 公开(公告)号: | CN112181420B | 公开(公告)日: | 2022-06-28 |
| 发明(设计)人: | 陈俊洁;马昊阳 | 申请(专利权)人: | 天津大学 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F11/36;G06N3/04;G06N3/08 |
| 代理公司: | 天津市北洋有限责任专利代理事务所 12201 | 代理人: | 李素兰 |
| 地址: | 300072*** | 国省代码: | 天津;12 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 强化 学习 编译器 缺陷 定位 方法 | ||
1.一种基于强化学习的编译器缺陷定位方法,其特征在于,该方法包括以下步骤:
步骤1、执行结构变异过程,具体包括以下步骤:
步骤1.1、创建材料池,即首先从GCC开发者提供的测试程序中抽取if、while语句和函数体,组成材料池;
步骤1.2、分析程序以选择有效的插入行,具体为:将函数体外的代码行视为无效插入行;除了禁止的printf语句、return语句、__builtin_abort语句的代码行之外,其余代码行均为有效插入行;调用本步骤的代码用于在构建代码的抽象语法树后表示各个结点,并记录节点信息;
步骤1.3,选择待插入的语句,进行语句中的变量重命名,具体为:从材料池中选择if语句、while语句和函数体、构建goto语句,随后将这些语句中的变量重命名为原始测试程序中的类型能兼容的变量;
如果程序中的变量数量不足以供重命名,则报错并重新进行选择;
步骤2、基于强化学习生成变异程序,具体步骤如下:
学习者的多个学习状态在上一轮学习过程中环境给予的奖赏后步入新的学习状态,状态由一个数组表示,该数组存储着每一个变异规则生成编译成功的变异程序的数量,作为ANN神经网络的输入,进行本轮学习中动作的概率分布的预测,并根据这一分布选择一动作;根据步骤1所选择出的最优的变异规则,从而生成能够有效定位编译器缺陷的变异程序,计算得到环境给予的奖赏;同时,将动作输入CNN神经网络,预测选择这一动作能够获得的奖赏,进而获得优势损失函数;
奖赏由生成的变异程序的多样性以及变异程序与原始测试程序的相似性决定;
多样性与相似性分别由公式(1)和公式(2)定义如下:
其中,pi和pj表示生成的变异程序,f表示原始测试程序,dist()表示两个程序之间的距离,dist()由公式(3)定义:
其中,cova和covb分别表示程序a和程序b的编译覆盖情况,
在第t轮学习过程中,奖赏由以下三个公式定义:
Qt=n(α·divt+(1+α)·simt) (4)
ΔQt=Qt-Qt-1
=(n-1)(α·Δdiv+(1-α)·Δsim)+(α·divt+(1-α)·simt) (5)
Δdivt=divt-divt-1,Δsimt=simt-simt-1
其中,α表示divt和simt线性组合的参数,n表示已经生成的编译成功的变异程序的数量,Qt表示本轮学习情况的得分,该得分将作为奖赏的重要考量标准,ΔQt表示本轮Qt和上一轮Qt-1的差值;Rewardt表示第t轮的奖赏,T(mi)表示历史上选择了变异规则mi的次数;
每一轮学习过程中,利用公式(4)和公式(5)挑选高效的变异程序,移除了ΔQt<0对应的变异程序;
优势损失函数的定义如公式(7)所示:
其中,γ表示未来可能奖赏的权重,PRt表示利用当前神经网络预测的第t轮学习所获得的奖赏,PRt+u表示采用当前CNN对于第t+u轮奖赏的预估值;
步骤3、实现基于编译覆盖情况的缺陷定位,即由步骤2生成多个编译成功的变异程序后,分析它们的编译覆盖情况,以定位缺陷;采用公式(9)和公式(10)对于每一个参与编译过程的编译器文件进行打分,该得分表示文件的可疑值,可疑值越高表示该文件越有可能含有缺陷;
编译器文件的某一条语句s的可疑值的计算公式如下:
其中,efs表示运行了语句s且编译失败的变异程序的数量;nfs表示未运行语句s且编译失败的变异程序的数量;eps表示运行了语句s并编译成功的变异程序的数量;
每一个参与编译的编译器文件的可疑值的计算公式如下:
其中,nf表示在编译过程中,编译器文件f涉及到的全部语句的数量;
在计算了全部文件的可疑值后,将全部文件按照该值从大到小的顺序排序,可疑值排名位列前j名的文件含有缺陷,j受制于开发人员的实验标准。
2.如权利要求1所述的基于强化学习的编译器缺陷定位方法,其特征在于,所述步骤2采用了估值的策略,利用本轮的神经网络CNN预测未来几轮的奖赏;通过公式(8)所示的参数更新策略,在每一轮学习过程中得到环境的反馈后更新神经网络的参数ω,表达式如下:
其中,ω表示神经网络的参数,β表示学习率,Pω(at|st)表示在第t轮学习中,学习者处于状态st并选择执行动作at的概率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津大学,未经天津大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010880640.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种半导体铜背靶加工方法
- 下一篇:数据处理方法及装置





