CN117350364A - 基于知识蒸馏的代码预训练模型对抗样本生成方法及*** - Google Patents
基于知识蒸馏的代码预训练模型对抗样本生成方法及*** Download PDFInfo
- Publication number
- CN117350364A CN117350364A CN202311340360.1A CN202311340360A CN117350364A CN 117350364 A CN117350364 A CN 117350364A CN 202311340360 A CN202311340360 A CN 202311340360A CN 117350364 A CN117350364 A CN 117350364A
- Authority
- CN
- China
- Prior art keywords
- model
- fitness
- samples
- training
- challenge
- 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
Links
- 238000012549 training Methods 0.000 title claims abstract description 93
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000013140 knowledge distillation Methods 0.000 title claims abstract description 40
- 230000008447 perception Effects 0.000 claims abstract description 13
- 238000013480 data collection Methods 0.000 claims abstract description 7
- 230000006870 function Effects 0.000 claims description 67
- 230000002068 genetic effect Effects 0.000 claims description 19
- 238000001514 detection method Methods 0.000 claims description 12
- 230000035772 mutation Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000007405 data analysis Methods 0.000 claims description 4
- 230000007547 defect Effects 0.000 claims description 4
- 238000007781 pre-processing Methods 0.000 claims description 4
- 108090000623 proteins and genes Proteins 0.000 claims description 4
- 238000012216 screening Methods 0.000 claims description 4
- 230000000694 effects Effects 0.000 abstract description 6
- 238000013528 artificial neural network Methods 0.000 description 7
- 238000011156 evaluation Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 2
- 230000008485 antagonism Effects 0.000 description 2
- 235000000332 black box Nutrition 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000010353 genetic engineering Methods 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000006978 adaptation Effects 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
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/094—Adversarial learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0475—Generative networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/086—Learning methods using evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/096—Transfer learning
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Physiology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于知识蒸馏的代码预训练模型对抗样本生成方法及***。所述方法包括以下步骤:S1、获取包括多个样本的开源数据集;S2、获取预训练代码模型,并基于鲁棒性感知的知识蒸馏建立预训练代码模型对应的若干个最优学生模型;S3、使用样本攻击最优学生模型,提取攻击成功的样本作为对抗样本;S4、使用对抗样本攻击预训练代码模型,提取攻击成功的对抗样本组成对抗集合。对抗集合即为生成的对抗样本。相应地,所述***包括开源数据搜集模块、鲁棒性感知的知识蒸馏模块、攻击学生模型模块、预训练代码模型攻击模块。本发明基于知识蒸馏的代码预训练模型对抗样本生成方法及***具有鲁棒性高、样本可迁移、攻击效果好的特点。
Description
技术领域
本发明涉及智能***安全领域,具体涉及一种基于知识蒸馏的代码预训练模型对抗样本生成方法及***。
背景技术
知识蒸馏(Knowledge Distillation,简记为KD)是一种经典的模型压缩方法,核心思想是通过引导轻量化的学生模型模仿性能更好、结构更复杂的教师模型(或多模型的ensemble),在不改变学生模型结构的情况下提高其性能。训练学生模型模仿教师模型的行为,从而将教师模型中的知识转移到学生模型中。知识蒸馏方法包括但不限于,通过老师模型对训练样本的推理,产生每个样本在每个分类上的预测概率作为软标签,使用软标签对特定结构的学生模型进行训练。
预训练模型是指训练过程包括预训练和微调两个阶段的深度学习模型。预训练模型包括自编码语言模型和自回归语言模型。其中,自编码语言模型大多基于神经网络实现,也就是本发明中采用的模型。此前研究发现,神经网络容易受到对抗攻击,对输入数据进行很小的、不易被人注意的修改可能会使神经网络做出完全不同的预测,从而产生安全隐患。这不仅限制了神经网络在高安全性要求的环境中的应用,也降低了神经网络作为数据分析、处理工具的可靠性。神经网络模型对于对抗攻击的抵抗能力即为神经网络安全性。现有的预训练模型知识蒸馏技术并没有关注神经网络安全性。
近年来,研究人员开始尝试将自然语言处理领域的对抗性攻击方法应用到代码处理领域,试图构造可能误导代码模型的输入,从而导致模型做出错误的判断。在代码模型中,攻击者故意对输入代码进行小扰动。这种扰动可能会导致模型误解代码,从而导致安全漏洞、功能错误、性能下降,甚至严重的***故障。这可能会给软件开发和安全领域带来严重后果,例如数据泄露、功能故障、***崩溃,甚至威胁用户隐私和安全。为了解决这些问题,研究人员提出了一系列方法。现阶段的研究主要集中在了解攻击原理、探索不同的攻击方法和初步防御措施。后来研究人员提出了不同类型的对抗性示例生成方法。例如白盒攻击、黑盒攻击:白盒攻击是指攻击者可以获得目标模型的内部结构和参数,包括模型的架构、权重、激活函数和其他信息。黑盒攻击是指攻击者只能通过输入和输出与目标模型进行交互,而不了解模型内部结构和参数的任何信息。但使用白盒攻击和黑盒攻击可以直接攻击上述代码模型,即现有的代码模型鲁棒性并不高。
近年来,研究人员开始探索使用模糊测试和梯度优化等技术来生成对抗性示例。模糊测试随机生成输入示例以查找可能干扰模型的示例。梯度优化方法利用模型的梯度信息逐步优化输入,生成对抗性输入。其中,ALERT和CARROT是已被证明比其他方法更有效的方法。但是他们在攻击成功率和效率方面较低,需要进一步的提升,攻击效果不好。
发明内容
发明目的:本发明目的是提供一种鲁棒性高、样本可迁移、攻击效果好的基于知识蒸馏的代码预训练模型对抗样本生成方法及***。
技术方案:本发明所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,所述的方法包括以下步骤:
S1、获取开源数据集,所述开源数据集包括若干个样本;
S2、获取预训练代码模型,基于鲁棒性感知的知识蒸馏建立预训练代码模型对应的若干个最优学生模型;
S3、使用开源数据集中的样本攻击所述最优学生模型,提取攻击成功的样本作为对抗样本;
S4、使用所述对抗样本攻击所述预训练代码模型,提取攻击成功的对抗样本组成对抗集合。
进一步的,步骤S1中,所述开源数据集的获取包括以下步骤:
S11、收集适用于代码模型不同的下游任务的初始数据集,所述下游任务包括缺陷检测、代码作者归属、克隆检测;
S12、对所述初始数据集进行预处理,进行包括剔除无关语言的代码文件、调整正负样本的比例操作后,输出开源数据集。
进一步的,从开源仓库和/或对抗攻击研究的专门平台和竞赛中收集所述初始数据集。
进一步的,所述预训练代码模型中有若干组参数组合,每一组参数组合对应一个学生模型,步骤S2中,获取所述最优学生模型包括以下步骤:
S21、分析所述预训练代码模型中的若干组参数组合,计算每组参数组合对应的核心参数,并根据核心参数的大小选择对应的参数组合形成搜索空间;
S22、基于遗传算法寻找搜索空间中最优的参数组合,作为最优解;
S23、基于所述最优解建立若干个最优学生模型。
进一步的,步骤S22具体包括以下步骤:
S221、种群初始化:基于所述搜索空间建立初始种群,所述初始种群包括N个初始个体,每个初始个体为搜索空间中随机选择的一组参数组合;
S222、适应度评价:设计适应度函数用于对学生模型和预训练代码模型的适应度进行评估,所述适应度函数公式如下:
Fitness(M)=ω1d(D)+ω2d(MHM(D))+ω3(-WM)
式中,Fitness()指适应度函数;ω1、ω2、ω3为适应度函数中三个因素的权重;MHM表示一种简单的对抗攻击技术;M是适应度函数的自变量,为需要进行适应度计算的模型,包括蒸馏后的学生模型S,以及预训练代码模型T;D为下游任务对应的数据集;WM指模型M的参数大小;d()函数代表所选择模型的预测结果;
S223、自然选择:基于竞赛选择算法随机在所述初始种群中选择t个初始个体组成竞赛组;
在所述竞赛组内进行n次竞赛,所述竞赛为从竞赛组中选择m个初始个体作为竞赛者,分别计算m个竞赛者的适应度值,并选择最大适应度值对应的竞赛者,作为获胜者n号,直到n满足数量条件后,将所有获胜者构建为父代种群;所述父代种群包括n个父代个体,且每个父代个体为一个获胜者;
其中,选择竞赛者的公式如下:
Winner=argmaxi∈Tournamentf(Indi)
其中,Winner为竞赛选择算法;arg max函数用来处理张量;Tournament为竞赛组;Indi为锦标赛竞赛组中的第i个个体;f(Indi)为个体Indi的适应度值;
S224、迭代进化:通过遗传操作更新并替换所述父代种群,形成子代种群,所述子代种群包括若干个子代个体,计算所述子代个体的适应度值Fitness(S);
步骤S224中,所述遗传操作包括交叉操作和变异操作,所述交叉操作将父代种群中任意两个父代个体组合更新为子代个体,公式如下:
C(p1,p2)=(p1[1:k]+p2[k+1:])
其中p1,p2为两个父代个体;C(p1,p2)为对p1、p2个体进行交叉操作,产生子代个体;k为一个随机选择的交叉点;[1:k]和[k+1:]为选择的交叉内容;
所述变异操作改变父代个体的某些基因或参数,公式如下:
M(p)=p+△
其中M(p)表示个体p的变异后结果;△是一个小的随机扰动;
S225、计算所述预训练代码模型的适应度值Fitness(T),并与每一个所述子代个体的适应度值Fitness(S)进行比较,若Fitness(S)<Fitness(T),重复步骤S223-S225;若Fitness(S)>Fitness(T),则输出所述子代个体作为最优解。
进一步的,步骤S3中,具体包括以下步骤:
S31、设计精度函数,计算学生模型的精度;设计鲁棒性函数,计算学生模型的鲁棒性;
S32、满足一定精度与鲁棒性时,使用样本对学生模型进行攻击,设计攻击成功率函数并计算样本的攻击成功率;
S33、筛掉攻击无效的样本,保留攻击成功的样本作为对抗样本输出。
进一步的,所述精度函数公式如下:
其中,TP(True Positive)为模型正确分类为正类别的样本数量;TN(TrueNegative)为模型正确分类为负样本的样本数量;FP(False Positive)为模型错误分类为正类别的样本数量;FN(False Negative)为模型错误分类为负样本的样本数量。
所述鲁棒性函数公式如下:
Robustness=P(y=y'|x,x')
其中,P(y=y'|x,x')表示给定输入x和对抗性样本x'的情况下模型输出正确的概率。
进一步的,所述攻击成功率函数的公式如下:
其中,q(y(pred,i),y(target,i))为预测函数,如果y(pred,i)≠y(target,i),则返回1,否则返回0。
进一步的,步骤S4中,具体包括以下步骤:使用所述对抗样本攻击所述预训练代码模型,并基于所述攻击成功率函数计算每个对抗样本对应的攻击成功率,根据攻击成功率提取攻击成功的对抗样本组成对抗集合。
技术方案:本发明所述的基于知识蒸馏的代码预训练模型对抗样本生成***,包括:
开源数据搜集模块,用以获取开源数据集,所述开源数据集包括若干个样本;
鲁棒性感知的知识蒸馏模块,用以获取预训练代码模型,基于鲁棒性感知的知识蒸馏建立预训练代码模型对应的若干个最优学生模型;
攻击学生模型模块,用以使用开源数据集中的样本攻击所述最优学生模型,提取攻击成功的样本作为对抗样本;
预训练代码模型攻击模块,用以使用所述对抗样本攻击所述预训练代码模型,提取攻击成功的对抗样本组成对抗集合。
有益效果:本发明具有如下显著效果:1、鲁棒性高:本发明基于鲁棒性感知的知识蒸馏提取学生模型的最优解,更好地过滤无效的扰动样本;2、样本可迁移:本发明使用学生模型提取出的对抗样本组成的对抗集合微调教师模型,并采用对抗样本攻击微调后的模型的迁移攻击策略,发现模型可以抵御大部分对抗样本的攻击,研究了代码模型对抗性示例的可转移性,证明了预训练代码模型的对抗样本具有一定程度的可迁移性;3、攻击效果好:本发明提出的预训练代码模型的迁移攻击策略,攻击成功率提高并且降低时间成本。
附图说明
图1为本发明对抗样本生成方法的流程图;
图2为本发明采用的鲁棒性感知的知识蒸馏流程图。
具体实施方式
下面结合附图和具体实施方式,进一步阐明本发明。
请参阅图1至图2所示,本发明公开了一种基于知识蒸馏的代码预训练模型对抗样本生成方法,该方法包括以下步骤:
S1、获取开源数据集,所述开源数据集包括若干个样本。
S2、获取预训练代码模型,基于鲁棒性感知的知识蒸馏建立预训练代码模型对应的若干个最优学生模型。
S3、使用开源数据集中的样本攻击所述最优学生模型,提取攻击成功的样本作为对抗样本。
S4、使用所述对抗样本攻击预训练代码模型,提取攻击成功的对抗样本组成对抗集合。
下面对该对抗样本生成方法进行具体说明。
步骤S1中,开源数据集的获取包括以下步骤:
S11、收集适用于代码模型不同的下游任务的初始数据集,所述下游任务包括缺陷检测(Vulnerability Predition)、代码作者归属(Authorship Attribution)和克隆检测(Clone Detection)。
S12、对所述初始数据集进行预处理,进行包括剔除无关语言的代码文件、调整正负样本的比例后,输出开源数据集。
本实施例中,从开源仓库和/或对抗攻击研究的专门平台和竞赛中收集所述初始数据集。开源仓库包括GitHub,对抗攻击研究的专门平台和竞赛包括GCJ。
步骤S2中,该预训练代码模型中有若干组参数组合,每一组参数组合对应一个学生模型,获取最优学生模型包括以下步骤:
S21、分析所述预训练代码模型中的若干组参数组合,计算每组参数组合对应的核心参数,并根据核心参数的大小选择对应的参数组合形成搜索空间。
S22、基于遗传算法寻找搜索空间中最优的参数组合,作为所述学生模型的最优解。学生模型根据对应的参数组合搭建对应的体系结构。遗传算法将每个学生模型对应的体系结构视为一个独立的个体,在搜索过程中,每个体系结构相互独立,便于对若干个体系结构进行分析。主要包括以下步骤:种群初始化、适应度评价、自然选择和迭代进化。
S23、基于所述最优解建立若干最优学生模型。
其中,本实施例中,步骤S22具体包括以下步骤:
S221、种群初始化:基于所述搜索空间建立初始种群,所述初始种群包括N个初始个体,每个初始个体为搜索空间中随机选择的一组参数组合。在搜索空间中随机生成一组初始个体,构成大小为N的初始种群,这些个体通常是问题空间中的候选解或参数集合,表示为P=[p1,p2,...,p],其中pi表示第i个个体。
S222、适应度评价:设计适应度函数用于对学生模型和预训练代码模型的适应度值进行评估。在评估学生模型时,该适应度函数对初始种群中的每个初始个体进行评估,以确定其在解决问题上的适应度,适应度函数主要考虑三个因素:学生模型的准确性、鲁棒性和参数规模。在适应度函数中引入鲁棒性权重以保证遗传算法能够获得足够鲁棒的学生模型对应的参数组合。所述适应度函数公式如下:
Fitness(M)=ω1d(D)+ω2d(MHM(D))+ω3(-WM)
式中,Fitness()指适应度函数;ω1、ω2、ω3为适应度函数中三个因素的权重;MHM表示一种简单的对抗攻击技术;M是适应度函数的自变量,为需要进行适应度计算的模型,包括蒸馏后的学生模型S,以及预训练代码模型T;D为下游任务对应的数据集;WM指模型M的参数大小;d()函数代表所选择模型的预测结果。
S223、自然选择:基于竞赛选择算法随机在所述初始种群中选择t个初始个体组成竞赛组。
在所述竞赛组内进行n次竞赛,所述竞赛为从竞赛组中选择m个初始个体作为竞赛者,分别计算m个竞赛者的适应度值,并选择最大适应度值对应的竞赛者,作为获胜者n号,直到n满足数量条件后,将所有获胜者构建为父代种群。所述父代种群包括n个父代个体,且每个父代个体为一个获胜者。
其中,选择竞赛者的公式如下:
Winner=argmaxi∈Tournament f(Indi)
其中,Winner为竞赛选择算法;arg max函数用来处理张量;Tournament为竞赛组;Indi为锦标赛竞赛组中的第i个个体;f(Indi)为个体Indi的适应度值;
S224、迭代进化:通过遗传操作更新并替换所述父代种群,形成子代种群,所述子代种群包括若干个子代个体,计算所述子代个体的适应度值Fitness(S)。遗传操作模拟了生物进化中的遗传过程,以逐渐改进父代种群中的个体。
步骤S224中,所述遗传操作包括交叉操作和变异操作,所述交叉操作将父代种群中任意两个父代个体组合更新为子代个体,公式如下:
C(p1,p2)=(p1[1:k]+p2[k+1:])
其中p1,p2为两个父代个体;C(p1,p2)为对p1、p2个体进行交叉操作,产生子代个体;k为一个随机选择的交叉点;[1:k]和[k+1:]为选择的交叉内容。
变异操作改变父代个体的某些基因或参数,公式如下:
M(p)=p+△
其中M(p)表示个体p的变异后结果;△是一个小的随机扰动。
S225、计算所述预训练代码模型的适应度值Fitness(T),并与每一个所述子代个体的适应度值Fitness(S)进行比较,若Fitness(S)<Fitness(T),重复步骤S223-S225;若Fitness(S)>Fitness(T),则输出所述子代个体作为学生模型的最优解。
步骤S3中,具体包括以下步骤:
S31、设计精度函数,计算学生模型的精度。设计鲁棒性函数,计算学生模型的鲁棒性。使用测试集验证学生模型的精度是否与教师模型相近,精度用于评估模型在分类任务中的准确性和性能,衡量模型正确分类的样本数占样本总数的比率,精度越高,模型的性能越好。鲁棒性用于评估模型面对对抗性攻击的鲁棒性和抗干扰能力,衡量模型能够正确预测对抗性示例的正确标签的速率,即模型在攻击下的性能。当学生模型的精度几乎没有损失后,检测学生模型的鲁棒性,足够鲁棒的学生模型才能过滤掉部分的无效扰动样本。
S32、满足一定精度与鲁棒性时,使用样本对学生模型进行攻击,设计攻击成功率函数并计算样本的攻击成功率;
S33、筛掉攻击无效的样本,保留攻击成功的样本作为对抗样本输出。
其中,精度函数公式如下:
式中,TP(True Positive)为模型正确分类为正类别的样本数量;TN(TrueNegative)为模型正确分类为负样本的样本数量;FP(False Positive)为模型错误分类为正类别的样本数量;FN(False Negative)为模型错误分类为负样本的样本数量。
鲁棒性函数公式如下:
Robustness=P(y=y'|x,x')
式中,P(y=y'|x,x')表示给定输入x和对抗性样本x'的情况下模型输出正确的概率。
攻击成功率函数的公式如下:
式中,q(y(pred,i),y(target,i))为预测函数,如果y(pred,i)≠y(target,i),则返回1,否则返回0。
步骤S4中,具体包括以下步骤:使用所述对抗样本攻击所述预训练代码模型,并基于所述攻击成功率函数计算每个对抗样本对应的攻击成功率,根据攻击成功率提取攻击成功的对抗样本组成对抗集合。
在本发明中,还对所述对抗集合进行性能检测,具体包括以下步骤:
S51、将所述对抗集合作为训练数据微调所述预训练代码模型。微调后的预训练代码模型,可以增强鲁棒性。
S52、使用所述对抗集合对抗微调后的预训练代码模型,得到性能检测结果。本实验中,发现微调后的预训练代码模型可以抵御大部分对抗样本的攻击。
本发明还公开了一种基于知识蒸馏的代码预训练模型对抗样本生成***,所述***包括:
开源数据搜集模块,用以获取开源数据集,所述开源数据集包括若干个样本;
鲁棒性感知的知识蒸馏模块,用以获取预训练代码模型,基于鲁棒性感知的知识蒸馏建立预训练代码模型对应的若干个最优学生模型。
攻击学生模型模块,用以使用开源数据集中的样本攻击所述最优学生模型,提取攻击成功的样本作为对抗样本。
预训练代码模型攻击模块,用以使用所述对抗样本攻击所述预训练代码模型,提取攻击成功的对抗样本组成对抗集合。
本实施例中,该基于知识蒸馏的代码预训练模型对抗样本生成***有如下具体单元。
在一个实施例中,开源数据采集模块包括:
采集单元,用以从常用的开源仓库(如GitHub)和专门用于对抗攻击研究的平台和竞赛(如GCJ)中收集适用于代码模型不同下游任务的数据集,包括:缺陷检测(Vulnerability Predition)、代码作者归属(Authorship Attribution)和克隆检测(Clone Detection)。
编译单元,用于对所述初始数据集进行预处理,进行包括剔除无关语言的代码文件、调整正负样本的比例等操作后,输出开源数据集。
在一个实施例中,鲁棒性感知的知识蒸馏模块包括:
判定单元,所述预训练代码模型包括若干组参数组合,每一组参数组合对应一个学生模型。判定单元用于分析所述预训练代码模型中的若干组参数组合,计算每组参数组合对应的核心参数(如网络层数),并根据核心参数的大小选择对应的参数组合形成搜索空间。
搜索单元,用于基于遗传算法寻找搜索空间中最优的参数组合,作为最优解。确定了学生模型的参数搜索空间后,选择使用遗传算法来寻找正确的参数组合,遗传算法将每个体系结构视为一个独立的实体,每个学生模型在搜索过程中相互独立,便于对体系结构进行分析,主要包括四个步骤:种群初始化、适应度评价、自然选择和迭代进化。
模型建立单元:用于基于所述最优解建立若干个最优学生模型。
其中,搜索单元中包括种群初始化单元、适应度评价单元、自然选择单元、迭代进化单元。下面对其进行具体描述。
种群初始化单元,用于基于所述搜索空间建立初始种群,所述初始种群包括N个初始个体,每个初始个体为搜索空间中随机选择的一组参数组合。在搜索空间中随机初始化生成一组初始个体,构成大小为N的初始种群,这些个体通常是问题空间中的候选解或参数集合,可以表示为P=[p1,p2,...,p],其中pi表示第i个个体。
适应度评价单元,用于设计适应度函数用于对学生模型和预训练代码模型的适应度值进行评估。在评估学生模型时,该适应度函数对初始种群中的每个初始个体进行评估,以确定其在解决问题上的适应度,适应度函数主要考虑三个因素:学生模型的准确性、鲁棒性和参数规模。在适应度函数中引入鲁棒性权重以保证遗传算法能够获得足够鲁棒的学生模型对应的参数组合。适应度函数公式如下:
Fitness(M)=ω1d(D)+ω2d(MHM(D))+ω3(-WM)
式中,Fitness()指适应度函数;ω1、ω2、ω3为适应度函数中三个因素的权重;MHM表示一种简单的对抗攻击技术;M是适应度函数的自变量,为需要进行适应度计算的模型,包括蒸馏后的学生模型S,以及预训练代码模型T;D为下游任务对应的数据集;WM指模型M的参数大小;d()函数代表所选择模型的预测结果。
自然选择单元,基于竞赛选择算法随机在所述初始种群中选择t个初始个体组成竞赛组;
在所述竞赛组内进行n次竞赛,所述竞赛为从竞赛组中选择m个初始个体作为竞赛者,分别计算m个竞赛者的适应度值,并选择最大适应度值对应的竞赛者,作为获胜者n号,直到n满足数量条件后,将所有获胜者构建为父代种群。所述父代种群包括n个父代个体,且每个父代个体为一个获胜者。
其中,选择竞赛者的公式如下:
Winner=argmaxi∈Tournamentf(Indi)
其中,Winner为竞赛选择算法;arg max函数用来处理张量;Tournament为竞赛组;Indi为锦标赛竞赛组中的第i个个体;f(Indi)为个体Indi的适应度值。
迭代进化单元,用以通过遗传操作更新并替换所述父代种群,形成子代种群,所述子代种群包括若干个子代个体,计算所述子代个体的适应度值Fitness(S)。遗传操作模拟了生物进化中的遗传过程,以逐渐改进父代种群中的个体。
所述遗传操作包括交叉操作和变异操作,交叉操作(Crossover)将两个父代个体组合生成子代,公式如下:
C(p1,p2)=(p1[1:k]+p2[k+1:])
其中,p1,p2为两个父代个体;C(p1,p2)为对p1、p2个体进行交叉操作,产生子代个体;k为一个随机选择的交叉点;[1:k]和[k+1:]为选择的交叉内容;
变异操作(Mutation)改变父代个体的某些基因或参数,公式如下:
M(p)=p+△
其中,M(p)表示个体p的变异后结果;△是一个小的随机扰动。
循环单元,用于计算所述预训练代码模型的适应度值Fitness(T),并与每一个所述子代个体的适应度值Fitness(S)进行比较,若Fitness(S)<Fitness(T),重复自然选择单元、迭代进化单元、循环单元的操作步骤;若Fitness(S)>Fitness(T),则输出所述子代个体作为最优解。
在一个实施例中,攻击学生模型模块包括依次执行的:
精度评估单元,用于设计精度函数,计算学生模型的精度。获取到学生模型S后,使用测试集验证学生模型的精度是否与教师模型(预训练代码模型)相近,精度函数如下
其中,TP(True Positive)表示模型正确分类为正类别的样本数量,TN(TrueNegative)表示模型正确分类为负样本的样本数量,FP(False Positive)表示模型错误分类为正类别的样本数量,FN(False Negative)表示模型错误分类为负样本的样本数量。
鲁棒评估单元,用于设计鲁棒性函数,计算学生模型的鲁棒性。与教师模型(预训练代码模型)相比,学生模型的精度几乎没有损失后,检测学生模型的鲁棒性,鲁棒性函数公式如下:
Robustness=P(y=y'|x,x')
其中,P(y=y'|x,x')表示给定输入x和对抗性样本x'的情况下模型输出正确的概率;
攻击单元,用于满足一定精度与鲁棒性时,使用样本对学生模型进行攻击,基于攻击成功率函数并计算样本的攻击成功率。攻击函数计算公式如下:
其中,其中q(y(pred,i),y(target,i))是预测函数。如果y(pred,i)≠y(target,i),则返回1,否则返回0;
样本提取单元,用于筛掉无效的扰动样本,保留攻击成功的对抗样本。
在一个实施例中,预训练代码模型攻击模块包括依次执行的:
攻击单元,用于使用所述对抗样本攻击所述预训练代码模型,并基于所述攻击成功率函数计算每个对抗样本对应的攻击成功率,根据攻击成功率提取攻击成功的对抗样本组成对抗集合。
训练单元,用于将对抗集合作为训练数据微调预训练代码模型,并使用对抗样本测试微调后的预训练代码模型,发现模型可以抵御大部分的对抗样本攻击。
本发明可以更好地挖掘预训练代码模型中的对抗样本,提升预训练代码模型的鲁棒性。首先通过鲁棒性感知的知识蒸馏,得到鲁棒性更高的学生模型。使用学生模型来过滤无效扰动样本,将筛选后的对抗样本输入到预训练代码模型中进行对抗攻击,得到质量更高的对抗样本组成的对抗集合,该对抗集合中的对抗样本普适性和通用性更强,可以有效减少人工验证成本,并输出可控的变量,使实际应用领域更广、精度更高。另外,通过对抗训练可以提升预训练代码模型的鲁棒性。
综上,本发明一种基于知识蒸馏的代码预训练模型对抗样本生成方法及***具有鲁棒性高、样本可迁移、攻击效果好的特点。
Claims (10)
1.一种基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,所述的方法包括以下步骤:
S1、获取开源数据集,所述开源数据集包括若干个样本;
S2、获取预训练代码模型,基于鲁棒性感知的知识蒸馏建立预训练代码模型对应的若干个最优学生模型;
S3、使用开源数据集中的样本攻击所述最优学生模型,提取攻击成功的样本作为对抗样本;
S4、使用所述对抗样本攻击所述预训练代码模型,提取攻击成功的对抗样本组成对抗集合。
2.根据权利要求1所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,步骤S1中,所述开源数据集的获取包括以下步骤:
S11、收集适用于代码模型不同的下游任务的初始数据集,所述下游任务包括缺陷检测、代码作者归属、克隆检测;
S12、对所述初始数据集进行预处理,进行包括剔除无关语言的代码文件、调整正负样本的比例操作后,输出开源数据集。
3.根据权利要求2所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,从开源仓库和/或对抗攻击研究的专门平台和竞赛中收集所述初始数据集。
4.根据权利要求1所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,所述预训练代码模型中有若干组参数组合,每一组参数组合对应一个学生模型,步骤S2中,获取所述最优学生模型包括以下步骤:
S21、分析所述预训练代码模型中的若干组参数组合,计算每组参数组合对应的核心参数,并根据核心参数的大小选择对应的参数组合形成搜索空间;
S22、基于遗传算法寻找搜索空间中最优的参数组合,作为最优解;
S23、基于所述最优解建立若干个最优学生模型。
5.根据权利要求4所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,步骤S22具体包括以下步骤:
S221、种群初始化:基于所述搜索空间建立初始种群,所述初始种群包括N个初始个体,每个初始个体为搜索空间中随机选择的一组参数组合;
S222、适应度评价:设计适应度函数用于对学生模型和预训练代码模型的适应度进行评估,所述适应度函数公式如下:
Fitness(M)=ω1d(D)+ω2d(MHM(D))+ω3(-WM)
式中,Fitness()指适应度函数;ω1、ω2、ω3为适应度函数中三个因素的权重;MHM表示一种简单的对抗攻击技术;M是适应度函数的自变量,为需要进行适应度计算的模型,包括蒸馏后的学生模型S,以及预训练代码模型T;D为下游任务对应的数据集;WM指模型M的参数大小;d()函数代表所选择模型的预测结果;
S223、自然选择:基于竞赛选择算法随机在所述初始种群中选择t个初始个体组成竞赛组;
在所述竞赛组内进行n次竞赛,所述竞赛为从竞赛组中选择m个初始个体作为竞赛者,分别计算m个竞赛者的适应度值,并选择最大适应度值对应的竞赛者,作为获胜者n号,直到n满足数量条件后,将所有获胜者构建为父代种群;所述父代种群包括n个父代个体,且每个父代个体为一个获胜者;
其中,选择竞赛者的公式如下:
Winner=arg maxi∈Tournamentf(Indi)
其中,Winner为竞赛选择算法;arg max函数用来处理张量;Tournament为竞赛组;Indi为锦标赛竞赛组中的第i个个体;f(Indi)为个体Indi的适应度值;
S224、迭代进化:通过遗传操作更新并替换所述父代种群,形成子代种群,所述子代种群包括若干个子代个体,计算所述子代个体的适应度值Fitness(S);
步骤S224中,所述遗传操作包括交叉操作和变异操作,所述交叉操作将父代种群中任意两个父代个体组合更新为子代个体,公式如下:
C(p1,p2)=(p1[1:k]+p2[k+1:])
其中p1,p2为两个父代个体;C(p1,p2)为对p1、p2个体进行交叉操作,产生子代个体;k为一个随机选择的交叉点;[1:k]和[k+1:]为选择的交叉内容;
所述变异操作改变父代个体的某些基因或参数,公式如下:
M(p)=p+△
其中M(p)表示个体p的变异后结果;△是一个小的随机扰动;
S225、计算所述预训练代码模型的适应度值Fitness(T),并与每一个所述子代个体的适应度值Fitness(S)进行比较,若Fitness(S)<Fitness(T),重复步骤S223-S225;若Fitness(S)>Fitness(T),则输出所述子代个体作为最优解。
6.根据权利要求1所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,步骤S3中,具体包括以下步骤:
S31、设计精度函数,计算学生模型的精度;设计鲁棒性函数,计算学生模型的鲁棒性;
S32、满足一定精度与鲁棒性时,使用样本对学生模型进行攻击,设计攻击成功率函数并计算样本的攻击成功率;
S33、筛掉攻击无效的样本,保留攻击成功的样本作为对抗样本输出。
7.根据权利要求6所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,所述精度函数公式如下:
其中,TP为模型正确分类为正类别的样本数量;TN为模型正确分类为负样本的样本数量;FP为模型错误分类为正类别的样本数量;FN为模型错误分类为负样本的样本数量。
所述鲁棒性函数公式如下:
Robustness=P(y=y'|x,x')
其中,P(y=y'|x,x')表示给定输入x和对抗性样本x'的情况下模型输出正确的概率。
8.根据权利要求6所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,所述攻击成功率函数的公式如下:
其中,q(y(pred,i),y(target,i))为预测函数,如果y(pred,i)≠y(target,i),则返回1,否则返回0。
9.根据权利要求8所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,步骤S4中,具体包括以下步骤:使用所述对抗样本攻击所述预训练代码模型,并基于所述攻击成功率函数计算每个对抗样本对应的攻击成功率,根据攻击成功率提取攻击成功的对抗样本组成对抗集合。
10.一种基于知识蒸馏的代码预训练模型对抗样本生成***,其特征在于,所述***包括:
开源数据搜集模块,用以获取开源数据集,所述开源数据集包括若干个样本;
鲁棒性感知的知识蒸馏模块,用以获取预训练代码模型,基于鲁棒性感知的知识蒸馏建立预训练代码模型对应的若干个最优学生模型;
攻击学生模型模块,用以使用开源数据集中的样本攻击所述最优学生模型,提取攻击成功的样本作为对抗样本;
预训练代码模型攻击模块,用以使用所述对抗样本攻击所述预训练代码模型,提取攻击成功的对抗样本组成对抗集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311340360.1A CN117350364A (zh) | 2023-10-16 | 2023-10-16 | 基于知识蒸馏的代码预训练模型对抗样本生成方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311340360.1A CN117350364A (zh) | 2023-10-16 | 2023-10-16 | 基于知识蒸馏的代码预训练模型对抗样本生成方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117350364A true CN117350364A (zh) | 2024-01-05 |
Family
ID=89359131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311340360.1A Pending CN117350364A (zh) | 2023-10-16 | 2023-10-16 | 基于知识蒸馏的代码预训练模型对抗样本生成方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117350364A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117808095A (zh) * | 2024-02-26 | 2024-04-02 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 一种对抗攻击样本生成方法和装置、电子设备 |
-
2023
- 2023-10-16 CN CN202311340360.1A patent/CN117350364A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117808095A (zh) * | 2024-02-26 | 2024-04-02 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 一种对抗攻击样本生成方法和装置、电子设备 |
CN117808095B (zh) * | 2024-02-26 | 2024-05-28 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 一种对抗攻击样本生成方法和装置、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7362892B2 (en) | Self-optimizing classifier | |
CN108718310A (zh) | 基于深度学习的多层次攻击特征提取及恶意行为识别方法 | |
CN108376220A (zh) | 一种基于深度学习的恶意样本程序分类方法及*** | |
CN111292195A (zh) | 风险账户的识别方法及装置 | |
CN106570513A (zh) | 大数据网络***的故障诊断方法和装置 | |
CN1656472A (zh) | 带有监督和非监督簇分析的似真神经网络 | |
CN115348074B (zh) | 深度时空混合的云数据中心网络流量实时检测方法 | |
CN113764034B (zh) | 基因组序列中潜在bgc的预测方法、装置、设备及介质 | |
CN117350364A (zh) | 基于知识蒸馏的代码预训练模型对抗样本生成方法及*** | |
CN113742733B (zh) | 阅读理解漏洞事件触发词抽取和漏洞类型识别方法及装置 | |
CN112087447A (zh) | 面向稀有攻击的网络入侵检测方法 | |
CN114065199B (zh) | 一种跨平台恶意代码检测方法及*** | |
CN113127737B (zh) | 融合注意力机制的个性化搜索方法和搜索*** | |
CN112738092A (zh) | 一种日志数据增强方法、分类检测方法及*** | |
CN111898129B (zh) | 基于Two-Head异常检测模型的恶意代码样本筛选器及方法 | |
CN116015967B (zh) | 基于改进鲸鱼算法优化delm的工业互联网入侵检测方法 | |
CN108229170A (zh) | 利用大数据和神经网络的软件分析方法和装置 | |
CN114781611A (zh) | 自然语言处理方法、语言模型训练方法及其相关设备 | |
CN112884150A (zh) | 一种预训练模型知识蒸馏的安全性增强方法 | |
CN114065933B (zh) | 一种基于人工免疫思想的未知威胁检测方法 | |
CN115994224A (zh) | 基于预训练语言模型的钓鱼url检测方法及*** | |
Zhang | Deepmal: A CNN-LSTM model for malware detection based on dynamic semantic behaviours | |
CN111651594A (zh) | 基于键值记忆网络的案件案由分类方法及介质 | |
CN114897085A (zh) | 一种基于封闭子图链路预测的聚类方法及计算机设备 | |
CN111144453A (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 |