CN115905926B - 基于样本差异的代码分类深度学习模型解释方法及系统 - Google Patents
基于样本差异的代码分类深度学习模型解释方法及系统 Download PDFInfo
- Publication number
- CN115905926B CN115905926B CN202211612114.2A CN202211612114A CN115905926B CN 115905926 B CN115905926 B CN 115905926B CN 202211612114 A CN202211612114 A CN 202211612114A CN 115905926 B CN115905926 B CN 115905926B
- Authority
- CN
- China
- Prior art keywords
- sample
- code
- training
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000013136 deep learning model Methods 0.000 title claims abstract description 24
- 238000012549 training Methods 0.000 claims abstract description 154
- 230000009466 transformation Effects 0.000 claims abstract description 50
- 230000006870 function Effects 0.000 claims abstract description 26
- 238000013528 artificial neural network Methods 0.000 claims abstract description 18
- 239000012634 fragment Substances 0.000 claims abstract description 13
- 238000012360 testing method Methods 0.000 claims abstract description 10
- 239000013598 vector Substances 0.000 claims description 35
- 238000012217 deletion Methods 0.000 claims description 10
- 230000037430 deletion Effects 0.000 claims description 10
- 230000008859 change Effects 0.000 claims description 9
- 238000003062 neural network model Methods 0.000 claims description 7
- 125000004122 cyclic group Chemical group 0.000 claims description 6
- 238000012216 screening Methods 0.000 claims description 6
- 238000000605 extraction Methods 0.000 claims description 4
- 230000000007 visual effect Effects 0.000 claims description 4
- 238000013527 convolutional neural network Methods 0.000 claims description 3
- 230000002194 synthesizing effect Effects 0.000 claims description 2
- 230000000306 recurrent effect Effects 0.000 claims 1
- 238000013145 classification model Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003094 perturbing effect Effects 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (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相对于单条输入样本生成差异样本集合的稳定度表示为/>计算公式如下:
其中xi和xj为差异样本集合中的任意两个样本,E(xi)和E(xj)分别为使用解释器E提取得到的xi和xj中的重要特征,card(E(xi)∩E(xj))对两组重要特征求交集并计算交集中元素的个数,之后使用/>计算待解释模型对这两个样本预测的置信度的差值,使用交集元素个数除以置信度差值得到归一化后的交集大小。对差异样本集合中的每两条样本都计算如上归一化交集大小并求平均值得到解释器E单条输入样本生成差异样本集合的稳定度ST(Xi)。
解释器相对于整个差异样本集合的稳定度表示为ST(E),计算公式如下:
其值为相对于每个单条输入样本生成差异样本集合的稳定度的平均值。ST(E)越大,解释器在该数据集上越稳定。
损失函数定义中计算相似度的具体实施方式为首先分别识别步骤(1.2)和步骤(1.3)中重要分数值较大的特征,得到两组重要特征,再将原始样本输入到解释器中输出一组重要特征,对这三组重要特征求交集,计算交集中元素的个数。最后对交集中元素个数求平均值得到此轮迭代训练过程中的相似度值。计算公式如下:
其中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 (8)
1.一种基于样本差异的代码分类深度学习模型解释方法,其特征在于,其包括如下步骤:
离线解释器模型训练步骤:对训练集中的每个代码样本,构造代码变换生成差异样本,通过删除特征生成差异样本并通过分别将特征删除前和特征删除后的样本输入待解释模型中获取标签对应的预测置信度,计算两个样本之间置信度的差值的方式计算特征重要分数,通过片段截取生成差异样本并通过分别将以待计算的特征的前一个特征为截取点的代码片段和以待计算的特征为截取点的代码片段输入待解释模型中获取标签对应的预测置信度,计算两个样本之间置信度的差值的方式计算特征重要分数,将原始样本、差异样本与特征重要分数输入神经网络以通过构建解释器和两个逼近器深度神经网络结构,定义损失函数,然后固定两个逼近器,训练解释器,之后固定解释器,训练两个逼近器,循环迭代训练,直至损失收敛的方式进行训练,得到训练好的解释器;
在线代码样本解释步骤:对目标代码样本片段使用解释器提取代码样本中的重要特征,然后使用基于影响函数的方法计算移除某个训练样本对预测样本上损失的影响以查找训练集中对测试样本预测贡献最大的训练样本,比较得到的重要特征和对预测贡献最大的训练样本,最后生成目标样本的解释结果,
所述离线解释器模型训练步骤包含如下分步骤:
构造代码变换生成差异样本:对于输入的代码样本,扫描所有符合变换条件的代码变换点,生成若干个对应维度的变换向量,根据生成的变换向量进行代码变换,对生成的差异样本进行筛选,删除不符合预期的样本得到差异样本集合。
2.根据权利要求1所述的方法,其特征在于,所述离线解释器模型训练步骤包含如下分步骤:
删除特征计算特征重要分数:分别删除代码样本中的每个特征生成差异样本,得到与特征数量对应的差异样本,将差异样本输入待解释模型中进行预测,根据删除特征前后预测值的变化生成对应特征的重要性分数。
3.根据权利要求1或2所述的方法,其特征在于,所述离线解释器模型训练步骤包含如下分步骤:
进行片段截取计算特征重要分数:对代码样本,以其中的每一个特征为截取点,截取样本的第一个特征到截取点之间的特征,得到截取的代码片段,对截取后代码片段末尾补零生成固定长度的向量后,输入待解释模型中进行预测,根据截取点移动前后预测值的变化生成对应特征的重要性分数。
4.根据权利要求1所述的方法,其特征在于,解释器和两个逼近器的模型结构设计为,逼近器的结构与原始的待解释模型相同,解释器的模型结构取决于输入数据的具体格式,其中,若输入数据为序列形式,解释器的结构设计为循环神经网络形式;若输入数据为抽象语法树形式,解释器的结构设计为基于抽象语法树的卷积神经网络形式。
5.根据权利要求1所述的方法,其特征在于,所述在线代码样本解释步骤包括以下分步骤:
提取目标样本中的重要特征:将目标样本向量输入到训练好的解释器中获取特征重要分数向量,提取重要分数较高的特征,得到目标样本中的重要特征;
查找对目标样本预测贡献最大的训练样本;
综合重要特征和训练样本,生成解释结果,其中,所述解释结果能够以可视化方式呈现。
6.一种基于样本差异的代码分类深度学习模型解释系统,其特征在于,其设置的处理器包括:
离线解释器模型训练模块(100),用于对训练集中的每个代码样本,构造代码变换生成差异样本,通过删除特征生成差异样本并通过分别将特征删除前和特征删除后的样本输入待解释模型中获取标签对应的预测置信度,计算两个样本之间置信度的差值的方式计算特征重要分数,通过片段截取生成差异样本并通过分别将以待计算的特征的前一个特征为截取点的代码片段和以待计算的特征为截取点的代码片段输入待解释模型中获取标签对应的预测置信度,计算两个样本之间置信度的差值的方式计算特征重要分数,将原始样本、差异样本与特征重要分数输入神经网络以通过构建解释器和两个逼近器深度神经网络结构,定义损失函数,然后固定两个逼近器,训练解释器,之后固定解释器,训练两个逼近器,循环迭代训练,直至损失收敛的方式进行训练,得到训练好的解释器;
在线代码样本解释模块(200),用于对目标代码样本使用解释器提取代码样本中的重要特征,然后使用基于影响函数的方法计算移除某个训练样本对预测样本上损失的影响以查找训练集中对测试样本预测贡献最大的训练样本,比较得到的重要特征和对预测贡献最大的训练样本,最后生成目标样本的解释结果,
所述离线解释器模型训练模块(100)能够对于输入的代码样本,扫描所有符合变换条件的代码变换点,生成若干个对应维度的变换向量,根据生成的变换向量进行代码变换,对生成的差异样本进行筛选,删除不符合预期的样本得到差异样本集合。
7.根据权利要求6所述的系统,其特征在于,所述离线解释器模型训练模块(100)包括:
训练样本代码变换差异样本生成模块(110),用于对训练样本构造代码变换生成差异样本,对每个训练样本进行不改变标签的代码变换,对生成的差异样本进行筛选,删除预测类别发生改变的样本,生成代码变换差异样本集合;
训练样本特征删除重要分数生成模块(120),用于通过删除训练代码样本中的特征,观察删除前后预测模型的预测值变化获取特征的重要分数;
训练样本片段截取重要分数生成模块(130),用于通过截取训练代码样本片段,观察不同片段预测值的差异获取特征的重要分数;
训练神经网络模型模块(140),用于将训练代码样本、差异样本、特征重要性分数和训练代码样本的标签输入到神经网络模型训练,通过调节各参数,获得训练好的解释器,用于提取代码样本中的重要特征。
8.根据权利要求6所述的系统,其特征在于,所述在线代码样本解释模块(200)包括:
目标样本重要特征提取子模块(210),用于将目标样本按照待解释模型要求转化为向量后输入到训练好的解释器中获取特征重要性分数,提取重要性分数较高的特征,获取目标样本中的重要特征;
目标样本最相关训练样本查找子模块(220),用于计算影响函数,得到移除每个训练样本对目标样本预测损失的影响,根据影响函数查找对目标样本预测影响最大的训练样本;
目标样本解释结果生成子模块(230),用于综合目标样本中提取得到的重要特征和对目标样本预测影响最大的训练样本,生成可视化的解释结果,增强解释结果的可理解性。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211612114.2A CN115905926B (zh) | 2022-12-09 | 2022-12-09 | 基于样本差异的代码分类深度学习模型解释方法及系统 |
US18/475,447 US20240192929A1 (en) | 2022-12-09 | 2023-09-27 | Sample-difference-based method and system for interpreting deep-learning model for code classification |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211612114.2A CN115905926B (zh) | 2022-12-09 | 2022-12-09 | 基于样本差异的代码分类深度学习模型解释方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115905926A CN115905926A (zh) | 2023-04-04 |
CN115905926B true CN115905926B (zh) | 2024-05-28 |
Family
ID=86487859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211612114.2A Active CN115905926B (zh) | 2022-12-09 | 2022-12-09 | 基于样本差异的代码分类深度学习模型解释方法及系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240192929A1 (zh) |
CN (1) | CN115905926B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116226726B (zh) * | 2023-05-04 | 2023-07-25 | 济南东方结晶器有限公司 | 一种结晶器铜管的应用性能评估方法、系统、设备及介质 |
CN116704208B (zh) * | 2023-08-04 | 2023-10-20 | 南京理工大学 | 基于特征关系的局部可解释方法 |
Citations (8)
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 | 华中科技大学 | 提高基于深度学习的源代码漏洞检测健壮性的方法及装置 |
CN114021718A (zh) * | 2021-11-04 | 2022-02-08 | 北京香侬慧语科技有限责任公司 | 模型行为可解释性方法、系统、介质及设备 |
CN114170333A (zh) * | 2021-11-24 | 2022-03-11 | 西安理工大学 | 基于直推式半监督深度学习的图像哈希编码方法 |
CN114692621A (zh) * | 2022-04-12 | 2022-07-01 | 南京工业大学 | Nlp中基于样本的序列到序列任务的影响函数解释方法 |
CN114745205A (zh) * | 2022-05-26 | 2022-07-12 | 哈尔滨工业大学(深圳) | 恶意代码对抗样本检测方法、系统及存储介质 |
CN115438743A (zh) * | 2022-09-21 | 2022-12-06 | 中国人民解放军陆军工程大学 | 基于cnn基分类器改进的串行集成方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11615184B2 (en) * | 2020-01-31 | 2023-03-28 | Palo Alto Networks, Inc. | Building multi-representational learning models for static analysis of source code |
-
2022
- 2022-12-09 CN CN202211612114.2A patent/CN115905926B/zh active Active
-
2023
- 2023-09-27 US US18/475,447 patent/US20240192929A1/en active Pending
Patent Citations (8)
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 | 华中科技大学 | 提高基于深度学习的源代码漏洞检测健壮性的方法及装置 |
CN114021718A (zh) * | 2021-11-04 | 2022-02-08 | 北京香侬慧语科技有限责任公司 | 模型行为可解释性方法、系统、介质及设备 |
CN114170333A (zh) * | 2021-11-24 | 2022-03-11 | 西安理工大学 | 基于直推式半监督深度学习的图像哈希编码方法 |
CN114692621A (zh) * | 2022-04-12 | 2022-07-01 | 南京工业大学 | Nlp中基于样本的序列到序列任务的影响函数解释方法 |
CN114745205A (zh) * | 2022-05-26 | 2022-07-12 | 哈尔滨工业大学(深圳) | 恶意代码对抗样本检测方法、系统及存储介质 |
CN115438743A (zh) * | 2022-09-21 | 2022-12-06 | 中国人民解放军陆军工程大学 | 基于cnn基分类器改进的串行集成方法 |
Non-Patent Citations (4)
Title |
---|
"基于深度学习的恶意代码检测方法研究";马丹;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20220515;全文 * |
"Multi-staged deep learning with created coarse and appended fine categories";Reiko Hagawa 等;2015 3rd IAPR Asian Conference on Pattern Recognition (ACPR);20160609;全文 * |
"μμVulDeePecker: A Deep Learning-Based System for Multiclass Vulnerability Detection";Deqing Zou 等;《IEEE Transactions on Dependable and Secure Computing》;20190923;第18卷(第5期);全文 * |
基于汇编指令词向量与卷积神经网络的恶意代码分类方法研究;乔延臣;姜青山;古亮;吴晓明;;信息网络安全;20190410(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115905926A (zh) | 2023-04-04 |
US20240192929A1 (en) | 2024-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115905926B (zh) | 基于样本差异的代码分类深度学习模型解释方法及系统 | |
CN107229627B (zh) | 一种文本处理方法、装置及计算设备 | |
CN113450147B (zh) | 基于决策树的产品匹配方法、装置、设备及存储介质 | |
CN115146282A (zh) | 基于ast的源代码异常检测方法及其装置 | |
CN114357170A (zh) | 模型训练方法、分析方法、装置、设备及介质 | |
CN112990281A (zh) | 异常投标识别模型训练方法、异常投标识别方法及装置 | |
CN114691525A (zh) | 测试用例的选择方法及装置 | |
CN112036169A (zh) | 事件识别模型优化方法、装置、设备及可读存储介质 | |
CN116150651A (zh) | 基于ai的深度合成检测方法和系统 | |
CN111723182B (zh) | 一种用于漏洞文本的关键信息抽取方法及装置 | |
CN113420295A (zh) | 恶意软件的检测方法及装置 | |
CN109992778B (zh) | 基于机器学习的简历文档判别方法及装置 | |
Nowak et al. | Conversion of CVSS Base Score from 2.0 to 3.1 | |
CN111949770A (zh) | 一种文档分类方法及装置 | |
CN111460268A (zh) | 数据库查询请求的确定方法、装置和计算机设备 | |
CN114118049B (zh) | 信息获取方法、装置、电子设备及存储介质 | |
CN110083807B (zh) | 合同的修改影响自动预测方法、装置、介质及电子设备 | |
CN114741697A (zh) | 恶意代码分类方法、装置、电子设备和介质 | |
CN114266643A (zh) | 基于融合算法的企业挖掘方法、装置、设备及存储介质 | |
CN114548307A (zh) | 分类模型训练方法和装置、分类方法和装置 | |
CN112632229A (zh) | 文本聚类方法及装置 | |
KR20220050356A (ko) | 문서 인식 장치 및 방법 | |
CN113378543B (zh) | 数据分析方法、训练数据分析模型的方法及电子设备 | |
CN117271778B (zh) | 基于生成式大模型的保险外呼会话信息输出方法及装置 | |
US11847861B2 (en) | Method and system for providing signature recognition and attribution service for digital documents |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |