基于样本差异的代码分类深度学习模型解释方法及系统技术方案

技术编号:37142068 阅读:14 留言:0更新日期:2023-04-06 21:48
本发明专利技术涉及一种基于样本差异的代码分类深度学习模型解释方法及系统,该方法包括:离线解释器模型训练步骤:对训练集中的每个代码样本,构造代码变换生成差异样本,通过删除特征生成差异样本并计算特征重要分数,通过片段截取生成差异样本并计算特征重要分数,将原始样本、差异样本与特征重要分数输入神经网络进行训练,得到训练好的解释器;在线代码样本解释步骤:对目标代码样本片段使用解释器提取代码样本中的重要特征,然后使用基于影响函数的方法查找训练集中对测试样本预测贡献最大的训练样本,比较得到的重要特征和对预测贡献最大的训练样本,最后生成目标样本的解释结果。该系统包括离线解释器模型训练模块和在线代码样本解释模块。码样本解释模块。码样本解释模块。

【技术实现步骤摘要】
基于样本差异的代码分类深度学习模型解释方法及系统


[0001]本专利技术涉及深度学习模型解释方法中基于特征选择的模型解释
,尤其涉及一种基于样本差异的代码分类深度学习模型解释方法及系统。

技术介绍

[0002]在过去的几年里,不同类型的神经网络已经被集成到代码应用中,例如代码功能分类、代码作者归属、源代码漏洞检测等。虽然深度学习在这些任务上优于人类,但它的性能和应用也因其缺乏可解释性而受到质疑。对于普通用户来说,机器学习,尤其是深度神经网络,就像一个黑匣子。它根据接收的输入反馈一个决策结果,但决策的过程和决策的依据对于用户来说都是不透明的。这种不透明性引起了对其结果可靠性的严重担忧,阻碍了深度学习在安全相关应用中的推广使用。
[0003]现有的源代码分类模型的解释方法主要可以分为基于扰动的特征显著性方法、基于注意力的方法和基于程序缩减的方法。以下非专利文件可作为本申请的引证文件:
[0004]引证文件1:Deqing Zou,Yawei Zhu,Shouhuai Xu,Zhen Li,Hai Jin,and Hengkai Ye.2021.Interpreting deep learning

based vulnerability detector predictions based on heuristic searching.ACM Transactions on Software Engineering and Methodology(TOSEM)30,2(2021),1

31.
[0005]引证文件2:Nghi DQ Bui,Yijun Yu,and Lingxiao Jiang.2019.Autofocus:interpreting attention

based neural networks by code perturbation.In 2019 34th IEEE/ACM International Conference on Automated Software Engineering(ASE).IEEE,38

41.
[0006]引证文件3:Sahil Suneja,Yunhui Zheng,Yufan Zhuang,Jim A Laredo,and Alessandro Morari.2021.Probing model signal

awareness via prediction

preserving input minimization.In Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering.945

955.
[0007]引证文件4:Md Rafiqul Islam Rabin,Vincent J Hellendoorn,and Mohammad Amin Alipour.2021.Understanding neural code intelligence through program simplification.In Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering.441

452.
[0008]在上述引证文件中,引证文件1公开了基于扰动的特征显著性方法,基于扰动的方法通过扰动代码样本中的特征并观察预测值的变化获取特征的重要性分数;引证文件2公开了基于注意力的方法,基于注意力的方法将神经网络中的注意力分数作为特征的重要性分数;而引证文件3和4公开了基于程序缩减的方法,基于程序缩减的方法使用增量调试技术将程序减少到最少的语句集,并且仍然保留初始模型预测。
[0009]但以上这些方法都存在着一定的局限性。
[0010]首先是扰动导致输入位于训练集分布外的问题。基于扰动的特征显著性方法和基于注意力的方法都使用了扰动作为评估特征重要性的方法之一,其主要思想是,屏蔽输入中对预测很重要的特征会导致准确性的大幅降低。然而在进行特征扰动的同时引入了分布外的输入,无法确定精度下降是源于信息删除还是分布外的输入。
[0011]其次是脆弱性的问题。一方面,对于局部解释方法,如基于扰动的特征显著性方法和基于程序缩减的方法,每个输入样本预测的解释都是独立优化的,因此容易过度拟合单个输入样本内的噪声,使得解释结果在输入样本轻微修改后发生显著变化;另一方面,全局解释方法,如基于注意力的方法,往往试图逼近模型的决策行为来解释模型的全局决策逻辑,但这种逼近过程往往不够准确,解释器与决策模型的不一致性给攻击者提供了可乘之机。
[0012]此外,一方面由于对本领域技术人员的理解存在差异;另一方面由于申请人做出本专利技术时研究了大量文献和专利,但篇幅所限并未详细罗列所有的细节与内容,然而这绝非本专利技术不具备这些现有技术的特征,相反本专利技术已经具备现有技术的所有特征,而且申请人保留在
技术介绍
中增加相关现有技术之权利。

技术实现思路

[0013]针对现有技术之不足,考虑到对抗训练及集成训练可以显著提高深度学习模型的鲁棒性,本专利技术提供了一种基于样本差异的代码分类深度学习模型解释方法及系统,其目的在于,为代码分类深度学习模型提供通用的高保真度的解释方法,同时能显著提高解释的鲁棒性,解决现有的代码分类模型解释方法中存在的上述局限和不足。
[0014]本专利技术公开了一种基于样本差异的代码分类深度学习模型解释方法,其包括如下步骤:
[0015](1)离线解释器模型训练步骤:对训练集中的每个代码样本,构造代码变换生成差异样本,通过删除特征生成差异样本并计算特征重要分数,通过片段截取生成差异样本并计算特征重要分数,将原始样本、差异样本与特征重要分数输入神经网络进行训练,得到训练好的解释器;
[0016](2)在线代码样本解释步骤:对目标代码样本片段使用解释器提取代码样本中的重要特征,然后使用基于影响函数的方法查找训练集中对测试样本预测贡献最大的训练样本,比较得到的重要特征和对预测贡献最大的训练样本,最后生成目标样本的解释结果。
[0017]本专利技术使用深度学习模型自动进行特征选择,不依赖于专家知识,且普遍适用于各种代码分类模型。使用与原始分类模型结构相同的逼近器来辅助解释器的训练,评估解释结果,缓解了扰动样本引入的输入处于训练集分布外问题,提高了解释结果的保真度。同时,构造代码变换生成差异样本计算稳定度,通过删除特征与截取片段获取特本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于样本差异的代码分类深度学习模型解释方法,其特征在于,其包括如下步骤:离线解释器模型训练步骤:对训练集中的每个代码样本,构造代码变换生成差异样本,通过删除特征生成差异样本并计算特征重要分数,通过片段截取生成差异样本并计算特征重要分数,将原始样本、差异样本与特征重要分数输入神经网络进行训练,得到训练好的解释器;在线代码样本解释步骤:对目标代码样本片段使用解释器提取代码样本中的重要特征,然后使用基于影响函数的方法查找训练集中对测试样本预测贡献最大的训练样本,比较得到的重要特征和对预测贡献最大的训练样本,最后生成目标样本的解释结果。2.根据权利要求1所述的方法,其特征在于,所述离线解释器模型训练步骤包含如下分步骤:构造代码变换生成差异样本:对于输入的代码样本,扫描所有符合变换条件的代码变换点,生成若干个对应维度的变换向量,根据生成的变换向量进行代码变换,对生成的差异样本进行筛选,删除不符合预期的样本得到差异样本集合。3.根据权利要求1或2所述的方法,其特征在于,所述离线解释器模型训练步骤包含如下分步骤:删除特征计算特征重要分数:分别删除代码样本中的每个特征生成差异样本,得到与特征数量对应的差异样本,将差异样本输入待解释模型中进行预测,根据删除特征前后预测值的变化生成对应特征的重要性分数。4.根据权利要求1~3任一项所述的方法,其特征在于,所述离线解释器模型训练步骤包含如下分步骤:进行片段截取计算特征重要分数:对代码样本,以其中的每一个特征为截取点,截取样本的第一个特征到截取点之间的特征,得到截取的代码片段,对截取后代码片段末尾补零生成固定长度的向量后,输入待解释模型中进行预测,根据截取点移动前后预测值的变化生成对应特征的重要性分数。5.根据权利要求1~4任一项所述的方法,其特征在于,所述离线解释器22CN1054AF定稿December 8,2022模型训练步骤包含如下分步骤:训练鲁棒的解释器:构建解释器和两个逼近器深度神经网络结构,定义损失函数,然后固定两个逼近器,训练解释器,之后固定解释器,训练两个逼近器,循环迭代训练,直至损失收敛,以最终获得训练好的解释器。6.根据权利要求1~5任一项所述的方法,其特征在于,解释器和两个逼近器的模型结构设计为,逼近器的结构与原始的待解释模型相同,解释器的模型结构取决于输入数据的具体格式,其中,若输入数据为序列形式,解释器的结构设计为循环神经网络形式;若输入数据为抽象语法树形式,解释器的结构设计为基于抽象语法树的卷积神经网络形式。7.根据权利要求1~6任一项所述的方法,其特征在于,所述在线代码样本解释步骤包括以下分步骤:提取目标样本中的重要特征:将目标样本向量输入到训练...

【专利技术属性】
技术研发人员:李珍张茹茜邹德清金海李洋瑞
申请(专利权)人:华中科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1