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

文档序号:33742918发布日期:2023-04-06 10:35阅读:35来源:国知局
基于样本差异的代码分类深度学习模型解释方法及系统

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


背景技术:

1、在过去的几年里,不同类型的神经网络已经被集成到代码应用中,例如代码功能分类、代码作者归属、源代码漏洞检测等。虽然深度学习在这些任务上优于人类,但它的性能和应用也因其缺乏可解释性而受到质疑。对于普通用户来说,机器学习,尤其是深度神经网络,就像一个黑匣子。它根据接收的输入反馈一个决策结果,但决策的过程和决策的依据对于用户来说都是不透明的。这种不透明性引起了对其结果可靠性的严重担忧,阻碍了深度学习在安全相关应用中的推广使用。

2、现有的源代码分类模型的解释方法主要可以分为基于扰动的特征显著性方法、基于注意力的方法和基于程序缩减的方法。以下非专利文件可作为本技术的引证文件:

3、引证文件1:deqing zou,yawei zhu,shouhuai xu,zhen li,hai jin,andhengkai ye.2021.interpreting deep learning-based vulnerability detectorpredictions based on heuristic searching.acm transactions on softwareengineering and methodology(tosem)30,2(2021),1–31.

4、引证文件2:nghi dq bui,yijun yu,and lingxiao jiang.2019.autofocus:interpreting attention-based neural networks by code perturbation.in 201934th ieee/acm international conference on automated software engineering(ase).ieee,38–41.

5、引证文件3:sahil suneja,yunhui zheng,yufan zhuang,jim a laredo,andalessandro morari.2021.probing model signal-awareness via prediction-preserving input minimization.in proceedings of the 29th acm joint meeting oneuropean software engineering conference and symposium on the foundations ofsoftware engineering.945–955.

6、引证文件4:md rafiqul islam rabin,vincent j hellendoorn,and mohammadamin alipour.2021.understanding neural code intelligence through programsimplification.in proceedings of the 29th acm joint meeting on europeansoftware engineering conference and symposium on the foundations of softwareengineering.441–452.

7、在上述引证文件中,引证文件1公开了基于扰动的特征显著性方法,基于扰动的方法通过扰动代码样本中的特征并观察预测值的变化获取特征的重要性分数;引证文件2公开了基于注意力的方法,基于注意力的方法将神经网络中的注意力分数作为特征的重要性分数;而引证文件3和4公开了基于程序缩减的方法,基于程序缩减的方法使用增量调试技术将程序减少到最少的语句集,并且仍然保留初始模型预测。

8、但以上这些方法都存在着一定的局限性。

9、首先是扰动导致输入位于训练集分布外的问题。基于扰动的特征显著性方法和基于注意力的方法都使用了扰动作为评估特征重要性的方法之一,其主要思想是,屏蔽输入中对预测很重要的特征会导致准确性的大幅降低。然而在进行特征扰动的同时引入了分布外的输入,无法确定精度下降是源于信息删除还是分布外的输入。

10、其次是脆弱性的问题。一方面,对于局部解释方法,如基于扰动的特征显著性方法和基于程序缩减的方法,每个输入样本预测的解释都是独立优化的,因此容易过度拟合单个输入样本内的噪声,使得解释结果在输入样本轻微修改后发生显著变化;另一方面,全局解释方法,如基于注意力的方法,往往试图逼近模型的决策行为来解释模型的全局决策逻辑,但这种逼近过程往往不够准确,解释器与决策模型的不一致性给攻击者提供了可乘之机。

11、此外,一方面由于对本领域技术人员的理解存在差异;另一方面由于申请人做出本发明时研究了大量文献和专利,但篇幅所限并未详细罗列所有的细节与内容,然而这绝非本发明不具备这些现有技术的特征,相反本发明已经具备现有技术的所有特征,而且申请人保留在背景技术中增加相关现有技术之权利。


技术实现思路

1、针对现有技术之不足,考虑到对抗训练及集成训练可以显著提高深度学习模型的鲁棒性,本发明提供了一种基于样本差异的代码分类深度学习模型解释方法及系统,其目的在于,为代码分类深度学习模型提供通用的高保真度的解释方法,同时能显著提高解释的鲁棒性,解决现有的代码分类模型解释方法中存在的上述局限和不足。

2、本发明公开了一种基于样本差异的代码分类深度学习模型解释方法,其包括如下步骤:

3、(1)离线解释器模型训练步骤:对训练集中的每个代码样本,构造代码变换生成差异样本,通过删除特征生成差异样本并计算特征重要分数,通过片段截取生成差异样本并计算特征重要分数,将原始样本、差异样本与特征重要分数输入神经网络进行训练,得到训练好的解释器;

4、(2)在线代码样本解释步骤:对目标代码样本片段使用解释器提取代码样本中的重要特征,然后使用基于影响函数的方法查找训练集中对测试样本预测贡献最大的训练样本,比较得到的重要特征和对预测贡献最大的训练样本,最后生成目标样本的解释结果。

5、本发明使用深度学习模型自动进行特征选择,不依赖于专家知识,且普遍适用于各种代码分类模型。使用与原始分类模型结构相同的逼近器来辅助解释器的训练,评估解释结果,缓解了扰动样本引入的输入处于训练集分布外问题,提高了解释结果的保真度。同时,构造代码变换生成差异样本计算稳定度,通过删除特征与截取片段获取特征重要分数计算相似度,在训练解释器的过程中加入稳定度和相似度,提高了解释器的鲁棒性。

6、根据一种优选实施方式,所述步骤(1)包含如下分步骤:

7、构造代码变换生成差异样本:对于输入的代码样本,扫描所有符合变换条件的代码变换点,生成若干个对应维度的变换向量,根据生成的变换向量进行代码变换,对生成的差异样本进行筛选,删除不符合预期的样本得到差异样本集合。

8、根据一种优选实施方式,所述步骤(1)包含如下分步骤:

9、删除特征计算特征重要分数:分别删除代码样本中的每个特征生成差异样本,得到与特征数量对应的差异样本,将差异样本输入待解释模型中进行预测,根据删除特征前后预测值的变化生成对应特征的重要性分数。

10、根据一种优选实施方式,所述步骤(1)包含如下分步骤:

11、进行片段截取计算特征重要分数:对代码样本,以其中的每一个特征为截取点,截取样本的第一个特征到截取点之间的特征,得到截取的代码片段,对截取后代码片段末尾补零生成固定长度的向量后,输入待解释模型中进行预测,根据截取点移动前后预测值的变化生成对应特征的重要性分数。

12、根据一种优选实施方式,所述步骤(1)包含如下分步骤:

13、训练鲁棒的解释器:构建解释器和两个逼近器深度神经网络结构,定义损失函数,然后固定两个逼近器,训练解释器,之后固定解释器,训练两个逼近器,循环迭代训练,直至损失收敛,以最终获得训练好的解释器。

14、根据一种优选实施方式,解释器和两个逼近器的模型结构设计为,逼近器的结构与原始的待解释模型相同,解释器的模型结构取决于输入数据的具体格式,其中,若输入数据为序列形式,解释器的结构设计为循环神经网络形式;若输入数据为抽象语法树形式,解释器的结构设计为基于抽象语法树的卷积神经网络形式。

15、根据一种优选实施方式,所述步骤(2)包括以下分步骤:

16、提取目标样本中的重要特征:将目标样本向量输入到训练好的解释器中获取特征重要分数向量,提取重要分数较高的特征,得到目标样本中的重要特征;

17、查找对目标样本预测贡献最大的训练样本:根据影响函数计算移除任一训练样本对预测样本上损失的影响,从而得到对目标样本预测贡献最大的训练样本;

18、综合重要特征和训练样本,生成解释结果,其中,所述解释结果能够以可视化方式呈现。

19、本发明公开了一种基于样本差异的代码分类深度学习模型解释系统,其设置的处理器包括:

20、离线解释器模型训练模块,用于对训练集中的每个代码样本,构造代码变换生成差异样本,通过删除特征生成差异样本并计算特征重要分数,通过片段截取生成差异样本并计算特征重要分数,将原始样本、差异样本与特征重要分数输入神经网络进行训练,得到训练好的解释器;

21、在线代码样本解释模块,用于对目标代码样本使用解释器提取代码样本中的重要特征,然后使用基于影响函数的方法查找训练集中对测试样本预测贡献最大的训练样本,比较得到的重要特征和对预测贡献最大的训练样本,最后生成目标样本的解释结果。

22、根据一种优选实施方式,所述离线解释器模型训练模块包括:

23、训练样本代码变换差异样本生成模块,用于对训练样本构造代码变换生成差异样本,对每个训练样本进行不改变标签的代码变换,对生成的差异样本进行筛选,删除预测类别发生改变的样本,生成代码变换差异样本集合;

24、训练样本特征删除重要分数生成模块,用于通过删除训练代码样本中的特征,观察删除前后预测模型的预测值变化获取特征的重要分数;

25、训练样本片段截取重要分数生成模块,用于通过截取训练代码样本片段,观察不同片段预测值的差异获取特征的重要分数;

26、训练神经网络模型模块,用于将训练代码样本、差异样本、特征重要性分数和训练代码样本的标签输入到神经网络模型训练,通过调节各参数,获得训练好的解释器,用于提取代码样本中的重要特征。

27、根据一种优选实施方式,所述在线代码样本解释模块包括:

28、目标样本重要特征提取子模块,用于将目标样本按照待解释模型要求转化为向量后输入到训练好的解释器中获取特征重要性分数,提取重要性分数较高的特征,获取目标样本中的重要特征;

29、目标样本最相关训练样本查找子模块,用于计算影响函数,得到移除每个训练样本对目标样本预测损失的影响,根据影响函数查找对目标样本预测影响最大的训练样本;

30、目标样本解释结果生成子模块,用于综合目标样本中提取得到的重要特征和对目标样本预测影响最大的训练样本,生成可视化的解释结果,增强解释结果的可理解性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1