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

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

Info

Publication number
CN115905926A
CN115905926A CN202211612114.2A CN202211612114A CN115905926A CN 115905926 A CN115905926 A CN 115905926A CN 202211612114 A CN202211612114 A CN 202211612114A CN 115905926 A CN115905926 A CN 115905926A
Authority
CN
China
Prior art keywords
sample
training
code
interpreter
difference
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211612114.2A
Other languages
English (en)
Inventor
李珍
张茹茜
邹德清
金海�
李洋瑞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN202211612114.2A priority Critical patent/CN115905926A/zh
Publication of CN115905926A publication Critical patent/CN115905926A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

基于样本差异的代码分类深度学习模型解释方法及系统
技术领域
本发明涉及深度学习模型解释方法中基于特征选择的模型解释技术领域,尤其涉及一种基于样本差异的代码分类深度学习模型解释方法及系统。
背景技术
在过去的几年里,不同类型的神经网络已经被集成到代码应用中,例如代码功能分类、代码作者归属、源代码漏洞检测等。虽然深度学习在这些任务上优于人类,但它的性能和应用也因其缺乏可解释性而受到质疑。对于普通用户来说,机器学习,尤其是深度神经网络,就像一个黑匣子。它根据接收的输入反馈一个决策结果,但决策的过程和决策的依据对于用户来说都是不透明的。这种不透明性引起了对其结果可靠性的严重担忧,阻碍了深度学习在安全相关应用中的推广使用。
现有的源代码分类模型的解释方法主要可以分为基于扰动的特征显著性方法、基于注意力的方法和基于程序缩减的方法。以下非专利文件可作为本申请的引证文件:
引证文件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.
引证文件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.
引证文件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.
引证文件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.
在上述引证文件中,引证文件1公开了基于扰动的特征显著性方法,基于扰动的方法通过扰动代码样本中的特征并观察预测值的变化获取特征的重要性分数;引证文件2公开了基于注意力的方法,基于注意力的方法将神经网络中的注意力分数作为特征的重要性分数;而引证文件3和4公开了基于程序缩减的方法,基于程序缩减的方法使用增量调试技术将程序减少到最少的语句集,并且仍然保留初始模型预测。
但以上这些方法都存在着一定的局限性。
首先是扰动导致输入位于训练集分布外的问题。基于扰动的特征显著性方法和基于注意力的方法都使用了扰动作为评估特征重要性的方法之一,其主要思想是,屏蔽输入中对预测很重要的特征会导致准确性的大幅降低。然而在进行特征扰动的同时引入了分布外的输入,无法确定精度下降是源于信息删除还是分布外的输入。
其次是脆弱性的问题。一方面,对于局部解释方法,如基于扰动的特征显著性方法和基于程序缩减的方法,每个输入样本预测的解释都是独立优化的,因此容易过度拟合单个输入样本内的噪声,使得解释结果在输入样本轻微修改后发生显著变化;另一方面,全局解释方法,如基于注意力的方法,往往试图逼近模型的决策行为来解释模型的全局决策逻辑,但这种逼近过程往往不够准确,解释器与决策模型的不一致性给攻击者提供了可乘之机。
此外,一方面由于对本领域技术人员的理解存在差异;另一方面由于申请人做出本发明时研究了大量文献和专利,但篇幅所限并未详细罗列所有的细节与内容,然而这绝非本发明不具备这些现有技术的特征,相反本发明已经具备现有技术的所有特征,而且申请人保留在背景技术中增加相关现有技术之权利。
发明内容
针对现有技术之不足,考虑到对抗训练及集成训练可以显著提高深度学习模型的鲁棒性,本发明提供了一种基于样本差异的代码分类深度学习模型解释方法及系统,其目的在于,为代码分类深度学习模型提供通用的高保真度的解释方法,同时能显著提高解释的鲁棒性,解决现有的代码分类模型解释方法中存在的上述局限和不足。
本发明公开了一种基于样本差异的代码分类深度学习模型解释方法,其包括如下步骤:
(1)离线解释器模型训练步骤:对训练集中的每个代码样本,构造代码变换生成差异样本,通过删除特征生成差异样本并计算特征重要分数,通过片段截取生成差异样本并计算特征重要分数,将原始样本、差异样本与特征重要分数输入神经网络进行训练,得到训练好的解释器;
(2)在线代码样本解释步骤:对目标代码样本片段使用解释器提取代码样本中的重要特征,然后使用基于影响函数的方法查找训练集中对测试样本预测贡献最大的训练样本,比较得到的重要特征和对预测贡献最大的训练样本,最后生成目标样本的解释结果。
本发明使用深度学习模型自动进行特征选择,不依赖于专家知识,且普遍适用于各种代码分类模型。使用与原始分类模型结构相同的逼近器来辅助解释器的训练,评估解释结果,缓解了扰动样本引入的输入处于训练集分布外问题,提高了解释结果的保真度。同时,构造代码变换生成差异样本计算稳定度,通过删除特征与截取片段获取特征重要分数计算相似度,在训练解释器的过程中加入稳定度和相似度,提高了解释器的鲁棒性。
根据一种优选实施方式,所述步骤(1)包含如下分步骤:
构造代码变换生成差异样本:对于输入的代码样本,扫描所有符合变换条件的代码变换点,生成若干个对应维度的变换向量,根据生成的变换向量进行代码变换,对生成的差异样本进行筛选,删除不符合预期的样本得到差异样本集合。
根据一种优选实施方式,所述步骤(1)包含如下分步骤:
删除特征计算特征重要分数:分别删除代码样本中的每个特征生成差异样本,得到与特征数量对应的差异样本,将差异样本输入待解释模型中进行预测,根据删除特征前后预测值的变化生成对应特征的重要性分数。
根据一种优选实施方式,所述步骤(1)包含如下分步骤:
进行片段截取计算特征重要分数:对代码样本,以其中的每一个特征为截取点,截取样本的第一个特征到截取点之间的特征,得到截取的代码片段,对截取后代码片段末尾补零生成固定长度的向量后,输入待解释模型中进行预测,根据截取点移动前后预测值的变化生成对应特征的重要性分数。
根据一种优选实施方式,所述步骤(1)包含如下分步骤:
训练鲁棒的解释器:构建解释器和两个逼近器深度神经网络结构,定义损失函数,然后固定两个逼近器,训练解释器,之后固定解释器,训练两个逼近器,循环迭代训练,直至损失收敛,以最终获得训练好的解释器。
根据一种优选实施方式,解释器和两个逼近器的模型结构设计为,逼近器的结构与原始的待解释模型相同,解释器的模型结构取决于输入数据的具体格式,其中,若输入数据为序列形式,解释器的结构设计为循环神经网络形式;若输入数据为抽象语法树形式,解释器的结构设计为基于抽象语法树的卷积神经网络形式。
根据一种优选实施方式,所述步骤(2)包括以下分步骤:
提取目标样本中的重要特征:将目标样本向量输入到训练好的解释器中获取特征重要分数向量,提取重要分数较高的特征,得到目标样本中的重要特征;
查找对目标样本预测贡献最大的训练样本:根据影响函数计算移除任一训练样本对预测样本上损失的影响,从而得到对目标样本预测贡献最大的训练样本;
综合重要特征和训练样本,生成解释结果,其中,所述解释结果能够以可视化方式呈现。
本发明公开了一种基于样本差异的代码分类深度学习模型解释系统,其设置的处理器包括:
离线解释器模型训练模块,用于对训练集中的每个代码样本,构造代码变换生成差异样本,通过删除特征生成差异样本并计算特征重要分数,通过片段截取生成差异样本并计算特征重要分数,将原始样本、差异样本与特征重要分数输入神经网络进行训练,得到训练好的解释器;
在线代码样本解释模块,用于对目标代码样本使用解释器提取代码样本中的重要特征,然后使用基于影响函数的方法查找训练集中对测试样本预测贡献最大的训练样本,比较得到的重要特征和对预测贡献最大的训练样本,最后生成目标样本的解释结果。
根据一种优选实施方式,所述离线解释器模型训练模块包括:
训练样本代码变换差异样本生成模块,用于对训练样本构造代码变换生成差异样本,对每个训练样本进行不改变标签的代码变换,对生成的差异样本进行筛选,删除预测类别发生改变的样本,生成代码变换差异样本集合;
训练样本特征删除重要分数生成模块,用于通过删除训练代码样本中的特征,观察删除前后预测模型的预测值变化获取特征的重要分数;
训练样本片段截取重要分数生成模块,用于通过截取训练代码样本片段,观察不同片段预测值的差异获取特征的重要分数;
训练神经网络模型模块,用于将训练代码样本、差异样本、特征重要性分数和训练代码样本的标签输入到神经网络模型训练,通过调节各参数,获得训练好的解释器,用于提取代码样本中的重要特征。
根据一种优选实施方式,所述在线代码样本解释模块包括:
目标样本重要特征提取子模块,用于将目标样本按照待解释模型要求转化为向量后输入到训练好的解释器中获取特征重要性分数,提取重要性分数较高的特征,获取目标样本中的重要特征;
目标样本最相关训练样本查找子模块,用于计算影响函数,得到移除每个训练样本对目标样本预测损失的影响,根据影响函数查找对目标样本预测影响最大的训练样本;
目标样本解释结果生成子模块,用于综合目标样本中提取得到的重要特征和对目标样本预测影响最大的训练样本,生成可视化的解释结果,增强解释结果的可理解性。
附图说明
图1为本发明实施例公开的一种基于样本差异的代码分类深度学习模型解释方法流程示意图;
图2为本发明实施例公开的一种通过删除特征计算特征重要分数的流程示意图;
图3为本发明实施例公开的一种通过片段截取计算特征重要分数的流程示意图;
图4为本发明实施例公开的一种训练解释器的流程示意图;
图5为本发明实施例公开的一种基于样本差异的代码分类深度学习模型解释系统的部分结构示意图。
附图标记列表
1000:基于样本差异的代码分类深度学习模型解释系统;100:离线解释器模型训练模块;110:训练样本代码变换差异样本生成子模块;120:训练样本特征删除重要分数生成子模块;130:训练样本片段截取重要分数生成子模块;140:训练神经网络模型子模块;200:在线代码样本解释模块;210:目标样本重要特征提取子模块;220:目标样本最相关训练样本查找子模块;230:目标样本解释结果生成子模块。
具体实施方式
下面结合附图进行详细说明。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互结合。
根据一种优选实施方式,本发明公开了一种基于样本差异的代码分类深度学习模型解释方法,如图1所示为所述方法的流程示意图,其包括以下步骤:
(1)离线解释器模型训练步骤:对训练集中的每个代码样本,构造代码变换生成差异样本,通过删除特征生成差异样本并计算特征重要分数,通过片段截取生成差异样本并计算特征重要分数,将原始样本、差异样本与特征重要分数输入神经网络进行训练,得到训练好的解释器;
(2)在线代码样本解释步骤:对目标代码样本片段使用解释器提取代码样本中的重要特征,然后使用基于影响函数的方法查找训练集中对测试样本预测贡献最大的训练样本,比较得到的重要特征和贡献最大的训练样本,最后生成目标样本的解释结果。
本发明使用深度学习模型自动进行特征选择,不依赖于专家知识,且普遍适用于各种代码分类模型。使用与原始分类模型结构相同的逼近器来辅助解释器的训练,评估解释结果,缓解了扰动样本引入的输入处于训练集分布外问题,提高了解释结果的保真度。同时,构造代码变换生成差异样本计算稳定度,通过删除特征与截取片段获取特征重要分数计算相似度,在训练解释器的过程中加入稳定度和相似度,提高了解释器的鲁棒性。
搭载本发明的服务器型号为Dell Precision 7920Tower,其中央处理器CPU为Intel(R)Xeon(R)Gold 6226R CPU@2.90GHz,图形处理器GPU为RTX A6000,内存容量为256GB DDR4 RAM,存储容量为1TB SSD+8TB HDD。
本发明一般用于在代码分类深度学习模型部署在服务器上并大规模推广使用前的调试测试阶段以及模型广泛推广使用后的使用阶段,为代码分类服务提供商以及使用分类服务的用户提供模型的分类依据,具体应用场景如下:
当代码分类服务提供商在对训练好的代码分类模型大规模推广使用前对模型进行调试测试时,包括但不限于代码漏洞检测、代码功能分类、代码作者归属等分类模型,本方法可为参与测试的代码样本标注重要特征并查找最相关的训练样本以帮助服务提供商判断模型预测错误的原因以及鉴别模型预测是否存在偏见。以代码漏洞检测为例,供应商使用本方法提取分类错误的代码样本中的重要特征和对此次错误预测贡献最大的训练样本,通过对特征和训练样本的分析得出导致模型出现分类错误的原因,如训练集中存在错误标签的训练样本、模型存在通过文件名称或变量名等不相关信息进行预测的偏见等,供应商可进一步根据错误原因做出相应的措施以改进分类模型。
当用户使用代码分类工具对代码进行分类时,本方法可为用户标注输入代码样本中的重要特征及对预测贡献最大的训练样本,为分类结果提供依据,提高用户对预测结果的信任度。同样以代码漏洞检测为例,用户使用本方法提取输入的代码样本中的重要特征及对该样本分类贡献最大的训练样本,通过比较输入样本和训练样本的差异并综合分析重要特征,定位漏洞点的可能触发处,用户对触发处的代码进行人工分析,辨别漏洞类型,了解分类工具的分类依据,提高用户对分类工具给出的分类结果的信任度。
搭载本发明的处理器处理的数据可以是文本(.txt)、源代码(.c\.cpp\.py\.java)等可存储源代码文本序列的文件以及层次数据(.h5\.h5df)等可存储深度学习模型的文件。在服务器后端,构建数据读取单元(主要由Python编程语言实现),其通过调用平台API接口的方式进行系统间的通信,从而交互采集上述数据,所用到的应用层网络协议为HTTPS,其相对于HTTP的好处是有利于保护数据的安全性,保护用户的隐私。在此基础上,数据读取单元将通过接口接收上述格式的文件并从文件中读取源代码文本序列及源代码分类深度学习模型,将读取到的数据处理进行标准化处理后,在服务器内部交付给处理器进行后续的工作。
优选地,步骤(1)可具体包含以下步骤:
(1.1)构造代码变换生成差异样本:对于输入的代码样本,扫描所有符合变换条件的代码变换点,生成若干个对应维度的变换向量,根据生成的变换向量进行代码变换,然后对生成的差异样本进行筛选,删除不符合预期的样本得到差异样本集合。
生成变换向量的具体实施方式为使用随机数生成若干个互不相等的向量,其中向量的维度与步骤(1.1)扫描得到代码变换点的个数相等,数值为1或0。
生成的变换向量进行代码变换的具体实施方式为对输入的代码样本,变换向量的每一维度对应代码样本中的一个代码变换点,若某一维度的数值为1,则表示在该维度对应的代码变换点处进行变换,否则不进行变换。
对生成的差异样本进行筛选的具体实施方式为将经过代码变换生成的差异样本输入到待解释模型中进行预测,比较预测标签与未经过变换的原始样本的标签是否相同,保留变换前后预测类别与标签相同的差异样本,删除变换前后预测类别与标签不同的差异样本。
(1.2)删除特征计算特征重要分数,参考图2所示:分别删除代码样本中的每个特征生成差异样本,得到与特征数量相等的差异样本,将差异样本输入待解释模型中进行预测,根据删除特征前后预测值的变化生成对应特征的重要性分数。
计算特征重要分数的具体实施方式为分别将特征删除前和特征删除后的样本输入待解释模型中获取标签对应的预测置信度,计算两个样本之间置信度的差值,即为被删除特征对应的重要分数。
(1.3)进行片段截取计算特征重要分数,参考图3所示:对代码样本,以其中的每一个特征为截取点,截取样本的第一个特征到截取点之间的特征,得到截取的代码片段,对截取后代码片段末尾补零生成固定长度的向量后,输入待解释模型中进行预测,根据截取点移动前后预测值的变化生成对应特征的重要性分数。
计算特征重要分数的具体实施方式为分别将以待计算的特征的前一个特征为截取点的代码片段和以待计算的特征为截取点的代码片段输入待解释模型中获取标签对应的预测置信度,计算两个样本之间置信度的差值,即为待计算特征的重要分数。
(1.4)训练鲁棒的解释器,参考图4所示:构建解释器和两个逼近器深度神经网络结构,定义损失函数,然后固定两个逼近器,训练解释器,之后固定解释器,训练两个逼近器,循环迭代训练,直至损失收敛,最终获得训练好的解释器。
解释器和两个逼近器的模型结构设计为逼近器的结构与原始的待解释模型相同,解释器的模型结构取决于输入数据的具体格式。其中,若输入数据为序列形式,解释器的结构设计为循环神经网络形式;若输入数据为抽象语法树形式,解释器的结构设计为基于抽象语法树的卷积神经网络形式。
解释器与两个逼近器的输入输出为解释器的输入为代码样本,输出为代码样本中特征重要性向量,根据特征重要性向量生成重要特征掩码,逼近器A的输入为重要特征掩码与原始输入向量的乘积,即选中的重要特征,输出为待解释模型对代码样本的预测类别,逼近器B的输入为代码样本中为重要特征掩码求反后再与原始输入向量的乘积,即未被选中的不重要特征,输出为待解释模型对代码样本的预测类别。
设计损失函数的具体实施方式为使用步骤(1.1)生成的差异样本计算稳定度,使用步骤(1.2)和步骤(1.3)生成的特征重要分数计算相似度,固定逼近器,训练解释器的过程中,损失函数定义为逼近器A的损失减逼近器B的损失;固定解释器,训练逼近器的过程中,损失函数定义为逼近器A的损失和逼近器B的损失之和,减去稳定度和相似度,其中参数的具体值根据任务进行调整,以达到最好的训练效果。
损失函数定义中计算稳定度的具体实施方式为解释器E相对于单条输入样本生成差异样本集合
Figure BDA0003991953540000091
的稳定度表示为
Figure BDA0003991953540000092
计算公式如下:
Figure BDA0003991953540000101
其中xi和xj为差异样本集合
Figure BDA0003991953540000102
中的任意两个样本,E(xi)和E(xj)分别为使用解释器E提取得到的xi和xj中的重要特征,card(E(xi)∩E(xj))对两组重要特征求交集并计算交集中元素的个数,之后使用
Figure BDA0003991953540000103
计算待解释模型对这两个样本预测的置信度的差值,使用交集元素个数除以置信度差值得到归一化后的交集大小。对差异样本集合中的每两条样本都计算如上归一化交集大小并求平均值得到解释器E单条输入样本生成差异样本集合的稳定度ST(Xi)。
解释器相对于整个差异样本集合的稳定度表示为ST(E),计算公式如下:
Figure BDA0003991953540000104
其值为相对于每个单条输入样本生成差异样本集合的稳定度的平均值。ST(E)越大,解释器在该数据集上越稳定。
损失函数定义中计算相似度的具体实施方式为首先分别识别步骤(1.2)和步骤(1.3)中重要分数值较大的特征,得到两组重要特征,再将原始样本输入到解释器中输出一组重要特征,对这三组重要特征求交集,计算交集中元素的个数。最后对交集中元素个数求平均值得到此轮迭代训练过程中的相似度值。计算公式如下:
Figure BDA0003991953540000105
其中E(xi)表示使用解释器E从代码样本xi中提取到的重要特征,E1(xi)表示通过删除特征方法计算代码样本xi的特征重要分数后选取的分数较高的重要特征,E2(xi)表示通过截取片段方法计算代码样本xi的特征重要分数后选取的分数较高的重要特征。
作为一种优选实施方式,步骤(2)具体包括以下步骤:
(2.1)提取目标样本中的重要特征。将目标样本向量输入到步骤(1.4)训练好的解释器中获取特征重要分数向量,提取重要分数较高的特征,得到目标样本中的重要特征。
(2.2)查找对目标样本预测贡献最大的训练样本。根据影响函数计算移除某个训练样本对预测样本上损失的影响,从而得到对目标样本预测贡献最大的训练样本。
(2.3)综合重要特征和训练样本,生成解释结果。通过综合步骤(2.1)得到的重要特征和步骤(2.2)得到的对目标样本预测贡献最大的训练样本,生成可视化的解释结果。
优选地,如图5所示为基于样本差异的代码分类深度学习模型解释系统1000的部分结构示意图,其主要展示了处理器的组成结构,其中,所述处理器包括以下模块:
离线解释器模型训练模块100,用于对训练集中的每个代码样本,构造代码变换生成差异样本,通过删除特征生成差异样本并计算特征重要分数,通过片段截取生成差异样本并计算特征重要分数,将原始样本、差异样本与特征重要分数输入神经网络进行训练,最后得到解释器;
在线代码样本解释模块200,用于对目标代码样本片段使用解释器提取代码样本中的重要特征,然后使用基于影响函数的方法查找训练集中对测试样本预测贡献最大的训练样本,比较得到的重要特征和贡献最大的训练样本,最后生成目标样本的解释结果。
进一步地,离线模型解释器训练模块包括:
训练样本代码变换差异样本生成子模块110,对训练样本构造代码变换生成差异样本,对每个训练样本进行不改变标签的代码变换,对生成的差异样本进行筛选,删除预测类别发生改变的样本,生成代码变换差异样本集合;
训练样本特征删除重要分数生成子模块120,通过删除代码样本中的特征,观察删除前后预测模型的预测值变化获取特征的重要分数;
训练样本片段截取重要分数生成子模块130,通过截取代码样本片段,观察不同片段预测值的差异获取特征的重要分数;
训练神经网络模型子模块140,将训练样本、差异样本、特征重要性分数和训练样本的标签输入到神经网络模型训练,通过调节各参数,获得训练好的解释器,用于提取代码样本中的重要特征。
进一步地,在线代码样本解释模块200包括:
目标样本重要特征提取子模块210,将目标样本按照待解释模型要求转化为向量后输入到训练好的解释器中获取特征重要性分数,提取重要性分数较高的特征,获取目标样本中的重要特征;
目标样本最相关训练样本查找子模块220,计算影响函数,得到移除每个训练样本对目标样本预测损失的影响,根据影响函数查找对目标样本预测影响最大的训练样本;
目标样本解释结果生成子模块230,综合目标样本中提取得到的重要特征和对目标样本预测影响最大的训练样本,生成可视化的解释结果,增强解释结果的可理解性。
在上述处理过程完成后,服务器将处理完的数据传输给SSD、HDD等磁盘阵列存储系统,将训练好的解释器模型、源代码文本序列及其对应重要特征和对预测贡献最大的训练样本通过MYSQL数据库管理系统进行保存。
优选地,处理结束后,训练好的解释器模型以层次数据格式存储在数据库中,为数据提供重组和管理服务。源代码文本序列及其对应的重要特征和对预测贡献最大的训练样本通过键值对形式存储在数据库中,并通过API接口传输给代码分类深度学习模型解释系统提供预测分析服务。
进一步地,基于上述一种或多种设置,可以实现源代码分类原因分析、代码分类深度学习模型错误分析等服务,最终应用于代码分类深度学习模型解释系统的科技成果转化及应用示范中,为政府单位或企业个人提供全方位的模型分析服务。
根据一种优选实施方式,本发明还公开了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述的离线解释器模型训练步骤或在线代码样本解释步骤。
优选地,上述为本实施方式的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与离线解释器模型训练步骤或在线代码样本解释步骤的技术方案属于同一构思,存储介质的技术方案可选用现有技术中常规的设置。
根据一种优选实施方式,本发明还公开了一种芯片,其存储有计算机指令,该指令被处理器执行时实现如前所述的离线解释器模型训练步骤或在线代码样本解释步骤。
根据一种优选实施方式,本发明可公开一种分类模型训练装置,其至少包括离线解释器模型训练模块100,以执行如前所述的离线解释器模型训练步骤。
根据一种优选实施方式,本发明可公开一种目标代码接受装置,其至少包括在线代码样本解释模块200,以执行如前所述的在线代码样本解释步骤。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要注意的是,上述具体实施例是示例性的,本领域技术人员可以在本发明公开内容的启发下想出各种解决方案,而这些解决方案也都属于本发明的公开范围并落入本发明的保护范围之内。本领域技术人员应该明白,本发明说明书及其附图均为说明性而并非构成对权利要求的限制。本发明的保护范围由权利要求及其等同物限定。本发明说明书包含多项发明构思,诸如“优选地”、“根据一种优选实施方式”或“可选地”均表示相应段落公开了一个独立的构思,申请人保留根据每项发明构思提出分案申请的权利。在全文中,“优选地”所引导的特征仅为一种可选方式,不应理解为必须设置,故此申请人保留随时放弃或删除相关优选特征之权利。

Claims (10)

1.一种基于样本差异的代码分类深度学习模型解释方法,其特征在于,其包括如下步骤:
离线解释器模型训练步骤:对训练集中的每个代码样本,构造代码变换生成差异样本,通过删除特征生成差异样本并计算特征重要分数,通过片段截取生成差异样本并计算特征重要分数,将原始样本、差异样本与特征重要分数输入神经网络进行训练,得到训练好的解释器;
在线代码样本解释步骤:对目标代码样本片段使用解释器提取代码样本中的重要特征,然后使用基于影响函数的方法查找训练集中对测试样本预测贡献最大的训练样本,比较得到的重要特征和对预测贡献最大的训练样本,最后生成目标样本的解释结果。
2.根据权利要求1所述的方法,其特征在于,所述离线解释器模型训练步骤包含如下分步骤:
构造代码变换生成差异样本:对于输入的代码样本,扫描所有符合变换条件的代码变换点,生成若干个对应维度的变换向量,根据生成的变换向量进行代码变换,对生成的差异样本进行筛选,删除不符合预期的样本得到差异样本集合。
3.根据权利要求1或2所述的方法,其特征在于,所述离线解释器模型训练步骤包含如下分步骤:
删除特征计算特征重要分数:分别删除代码样本中的每个特征生成差异样本,得到与特征数量对应的差异样本,将差异样本输入待解释模型中进行预测,根据删除特征前后预测值的变化生成对应特征的重要性分数。
4.根据权利要求1~3任一项所述的方法,其特征在于,所述离线解释器模型训练步骤包含如下分步骤:
进行片段截取计算特征重要分数:对代码样本,以其中的每一个特征为截取点,截取样本的第一个特征到截取点之间的特征,得到截取的代码片段,对截取后代码片段末尾补零生成固定长度的向量后,输入待解释模型中进行预测,根据截取点移动前后预测值的变化生成对应特征的重要性分数。
5.根据权利要求1~4任一项所述的方法,其特征在于,所述离线解释器22CN1054AF定稿
December 8,2022
模型训练步骤包含如下分步骤:
训练鲁棒的解释器:构建解释器和两个逼近器深度神经网络结构,定义损失函数,然后固定两个逼近器,训练解释器,之后固定解释器,训练两个逼近器,循环迭代训练,直至损失收敛,以最终获得训练好的解释器。
6.根据权利要求1~5任一项所述的方法,其特征在于,解释器和两个逼近器的模型结构设计为,逼近器的结构与原始的待解释模型相同,解释器的模型结构取决于输入数据的具体格式,其中,若输入数据为序列形式,解释器的结构设计为循环神经网络形式;若输入数据为抽象语法树形式,解释器的结构设计为基于抽象语法树的卷积神经网络形式。
7.根据权利要求1~6任一项所述的方法,其特征在于,所述在线代码样本解释步骤包括以下分步骤:
提取目标样本中的重要特征:将目标样本向量输入到训练好的解释器中获取特征重要分数向量,提取重要分数较高的特征,得到目标样本中的重要特征;
查找对目标样本预测贡献最大的训练样本:根据影响函数计算移除任一训练样本对预测样本上损失的影响,从而得到对目标样本预测贡献最大的训练样本;
综合重要特征和训练样本,生成解释结果,其中,所述解释结果能够以可视化方式呈现。
8.一种基于样本差异的代码分类深度学习模型解释系统,其特征在于,其设置的处理器包括:
离线解释器模型训练模块(100),用于对训练集中的每个代码样本,构造代码变换生成差异样本,通过删除特征生成差异样本并计算特征重要分数,通过片段截取生成差异样本并计算特征重要分数,将原始样本、差异样本与特征重要分数输入神经网络进行训练,得到训练好的解释器;
在线代码样本解释模块(200),用于对目标代码样本使用解释器提取代码样本中的重要特征,然后使用基于影响函数的方法查找训练集中对测试样本预测贡献最大的训练样本,比较得到的重要特征和对预测贡献最大的训练样本,最后生成目标样本的解释结果。
9.根据权利要求8所述的系统,其特征在于,所述离线解释器模型训练22CN1054AF定稿
December 8,2022
模块(100)包括:
训练样本代码变换差异样本生成模块(110),用于对训练样本构造代码变换生成差异样本,对每个训练样本进行不改变标签的代码变换,对生成的差异样本进行筛选,删除预测类别发生改变的样本,生成代码变换差异样本集合;
训练样本特征删除重要分数生成模块(120),用于通过删除训练代码样本中的特征,观察删除前后预测模型的预测值变化获取特征的重要分数;
训练样本片段截取重要分数生成模块(130),用于通过截取训练代码样本片段,观察不同片段预测值的差异获取特征的重要分数;
训练神经网络模型模块(140),用于将训练代码样本、差异样本、特征重要性分数和训练代码样本的标签输入到神经网络模型训练,通过调节各参数,获得训练好的解释器,用于提取代码样本中的重要特征。
10.根据权利要求8或9所述的系统,其特征在于,所述在线代码样本解释模块(200)包括:
目标样本重要特征提取子模块(210),用于将目标样本按照待解释模型要求转化为向量后输入到训练好的解释器中获取特征重要性分数,提取重要性分数较高的特征,获取目标样本中的重要特征;
目标样本最相关训练样本查找子模块(220),用于计算影响函数,得到移除每个训练样本对目标样本预测损失的影响,根据影响函数查找对目标样本预测影响最大的训练样本;
目标样本解释结果生成子模块(230),用于综合目标样本中提取得到的重要特征和对目标样本预测影响最大的训练样本,生成可视化的解释结果,增强解释结果的可理解性。
CN202211612114.2A 2022-12-09 2022-12-09 基于样本差异的代码分类深度学习模型解释方法及系统 Pending CN115905926A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211612114.2A CN115905926A (zh) 2022-12-09 2022-12-09 基于样本差异的代码分类深度学习模型解释方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211612114.2A CN115905926A (zh) 2022-12-09 2022-12-09 基于样本差异的代码分类深度学习模型解释方法及系统

Publications (1)

Publication Number Publication Date
CN115905926A true CN115905926A (zh) 2023-04-04

Family

ID=86487859

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211612114.2A Pending CN115905926A (zh) 2022-12-09 2022-12-09 基于样本差异的代码分类深度学习模型解释方法及系统

Country Status (1)

Country Link
CN (1) CN115905926A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116226726A (zh) * 2023-05-04 2023-06-06 济南东方结晶器有限公司 一种结晶器铜管的应用性能评估方法、系统、设备及介质
CN116704208A (zh) * 2023-08-04 2023-09-05 南京理工大学 基于特征关系的局部可解释方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020039075A1 (en) * 2018-08-24 2020-02-27 Siemens Aktiengesellschaft Code quality assessment method and apparatus, system, and storage medium
CN112270358A (zh) * 2020-10-29 2021-01-26 南京航空航天大学 面向基于深度学习的代码注释生成模型鲁棒性提升方法
CN112989358A (zh) * 2021-03-10 2021-06-18 华中科技大学 提高基于深度学习的源代码漏洞检测健壮性的方法及装置
US20210240826A1 (en) * 2020-01-31 2021-08-05 Palo Alto Networks, Inc. Building multi-representational learning models for static analysis of source code
CN114170333A (zh) * 2021-11-24 2022-03-11 西安理工大学 基于直推式半监督深度学习的图像哈希编码方法
CN114745205A (zh) * 2022-05-26 2022-07-12 哈尔滨工业大学(深圳) 恶意代码对抗样本检测方法、系统及存储介质
CN115438743A (zh) * 2022-09-21 2022-12-06 中国人民解放军陆军工程大学 基于cnn基分类器改进的串行集成方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020039075A1 (en) * 2018-08-24 2020-02-27 Siemens Aktiengesellschaft Code quality assessment method and apparatus, system, and storage medium
US20210240826A1 (en) * 2020-01-31 2021-08-05 Palo Alto Networks, Inc. Building multi-representational learning models for static analysis of source code
CN112270358A (zh) * 2020-10-29 2021-01-26 南京航空航天大学 面向基于深度学习的代码注释生成模型鲁棒性提升方法
CN112989358A (zh) * 2021-03-10 2021-06-18 华中科技大学 提高基于深度学习的源代码漏洞检测健壮性的方法及装置
CN114170333A (zh) * 2021-11-24 2022-03-11 西安理工大学 基于直推式半监督深度学习的图像哈希编码方法
CN114745205A (zh) * 2022-05-26 2022-07-12 哈尔滨工业大学(深圳) 恶意代码对抗样本检测方法、系统及存储介质
CN115438743A (zh) * 2022-09-21 2022-12-06 中国人民解放军陆军工程大学 基于cnn基分类器改进的串行集成方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
DEQING ZOU 等: ""μμVulDeePecker: A Deep Learning-Based System for Multiclass Vulnerability Detection"", 《IEEE TRANSACTIONS ON DEPENDABLE AND SECURE COMPUTING》, vol. 18, no. 5, 23 September 2019 (2019-09-23) *
REIKO HAGAWA 等: ""Multi-staged deep learning with created coarse and appended fine categories"", 2015 3RD IAPR ASIAN CONFERENCE ON PATTERN RECOGNITION (ACPR), 9 June 2016 (2016-06-09) *
乔延臣;姜青山;古亮;吴晓明;: "基于汇编指令词向量与卷积神经网络的恶意代码分类方法研究", 信息网络安全, no. 04, 10 April 2019 (2019-04-10) *
马丹: ""基于深度学习的恶意代码检测方法研究"", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》, 15 May 2022 (2022-05-15) *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116226726A (zh) * 2023-05-04 2023-06-06 济南东方结晶器有限公司 一种结晶器铜管的应用性能评估方法、系统、设备及介质
CN116704208A (zh) * 2023-08-04 2023-09-05 南京理工大学 基于特征关系的局部可解释方法
CN116704208B (zh) * 2023-08-04 2023-10-20 南京理工大学 基于特征关系的局部可解释方法

Similar Documents

Publication Publication Date Title
CN109033305B (zh) 问题回答方法、设备及计算机可读存储介质
CN115905926A (zh) 基于样本差异的代码分类深度学习模型解释方法及系统
US20220277576A1 (en) Automated classification and interpretation of life science documents
US10720150B2 (en) Augmented intent and entity extraction using pattern recognition interstitial regular expressions
JP4490876B2 (ja) コンテンツ分類方法、コンテンツ分類装置、コンテンツ分類プログラムおよびコンテンツ分類プログラムを記録した記録媒体
CN107229627B (zh) 一种文本处理方法、装置及计算设备
CN110110038B (zh) 话务预测方法、装置、服务器及存储介质
CN111199474A (zh) 一种基于双方网络图数据的风险预测方法、装置和电子设备
CN111222976A (zh) 一种基于双方网络图数据的风险预测方法、装置和电子设备
CN110675269A (zh) 文本审核方法以及装置
JP2023015340A (ja) ノード情報推定方法、ノード情報推定プログラムおよび情報処理装置
CN114357170A (zh) 模型训练方法、分析方法、装置、设备及介质
US11645322B2 (en) Method and analytical engine for a semantic analysis of textual data
CN112783513A (zh) 一种代码风险检查方法、装置及设备
CN110929499B (zh) 文本相似度获取方法、装置、介质及电子设备
CN116167336B (zh) 基于云计算的传感器数据加工方法、云服务器及介质
US20210149793A1 (en) Weighted code coverage
CN110083807B (zh) 合同的修改影响自动预测方法、装置、介质及电子设备
CN114741697A (zh) 恶意代码分类方法、装置、电子设备和介质
CN114663194A (zh) 产品信息推荐方法、装置、计算机设备及存储介质
CN114625860A (zh) 一种合同条款的识别方法、装置、设备及介质
Ivanytska et al. Study of Methods of Complex Data Analysis that Based on Machine Learning Technologies
CN116451678B (zh) 数据关系识别及数据表整合方法
Leung et al. Incorporating Prior Knowledge into Speaker Diarization and Linking for Identifying Common Speaker
CN113378543B (zh) 数据分析方法、训练数据分析模型的方法及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination