System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及智能系统安全领域,具体涉及一种基于知识蒸馏的代码预训练模型对抗样本生成方法及系统。
技术介绍
1、知识蒸馏(knowledge distillation,简记为kd)是一种经典的模型压缩方法,核心思想是通过引导轻量化的学生模型模仿性能更好、结构更复杂的教师模型(或多模型的ensemble),在不改变学生模型结构的情况下提高其性能。训练学生模型模仿教师模型的行为,从而将教师模型中的知识转移到学生模型中。知识蒸馏方法包括但不限于,通过老师模型对训练样本的推理,产生每个样本在每个分类上的预测概率作为软标签,使用软标签对特定结构的学生模型进行训练。
2、预训练模型是指训练过程包括预训练和微调两个阶段的深度学习模型。预训练模型包括自编码语言模型和自回归语言模型。其中,自编码语言模型大多基于神经网络实现,也就是本专利技术中采用的模型。此前研究发现,神经网络容易受到对抗攻击,对输入数据进行很小的、不易被人注意的修改可能会使神经网络做出完全不同的预测,从而产生安全隐患。这不仅限制了神经网络在高安全性要求的环境中的应用,也降低了神经网络作为数据分析、处理工具的可靠性。神经网络模型对于对抗攻击的抵抗能力即为神经网络安全性。现有的预训练模型知识蒸馏技术并没有关注神经网络安全性。
3、近年来,研究人员开始尝试将自然语言处理领域的对抗性攻击方法应用到代码处理领域,试图构造可能误导代码模型的输入,从而导致模型做出错误的判断。在代码模型中,攻击者故意对输入代码进行小扰动。这种扰动可能会导致模型误解代码,从而导致安全漏洞、
4、近年来,研究人员开始探索使用模糊测试和梯度优化等技术来生成对抗性示例。模糊测试随机生成输入示例以查找可能干扰模型的示例。梯度优化方法利用模型的梯度信息逐步优化输入,生成对抗性输入。其中,alert和carrot是已被证明比其他方法更有效的方法。但是他们在攻击成功率和效率方面较低,需要进一步的提升,攻击效果不好。
技术实现思路
1、专利技术目的:本专利技术目的是提供一种鲁棒性高、样本可迁移、攻击效果好的基于知识蒸馏的代码预训练模型对抗样本生成方法及系统。
2、技术方案:本专利技术所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,所述的方法包括以下步骤:
3、s1、获取开源数据集,所述开源数据集包括若干个样本;
4、s2、获取预训练代码模型,基于鲁棒性感知的知识蒸馏建立预训练代码模型对应的若干个最优学生模型;
5、s3、使用开源数据集中的样本攻击所述最优学生模型,提取攻击成功的样本作为对抗样本;
6、s4、使用所述对抗样本攻击所述预训练代码模型,提取攻击成功的对抗样本组成对抗集合。
7、进一步的,步骤s1中,所述开源数据集的获取包括以下步骤:
8、s11、收集适用于代码模型不同的下游任务的初始数据集,所述下游任务包括缺陷检测、代码作者归属、克隆检测;
9、s12、对所述初始数据集进行预处理,进行包括剔除无关语言的代码文件、调整正负样本的比例操作后,输出开源数据集。
10、进一步的,从开源仓库和/或对抗攻击研究的专门平台和竞赛中收集所述初始数据集。
11、进一步的,所述预训练代码模型中有若干组参数组合,每一组参数组合对应一个学生模型,步骤s2中,获取所述最优学生模型包括以下步骤:
12、s21、分析所述预训练代码模型中的若干组参数组合,计算每组参数组合对应的核心参数,并根据核心参数的大小选择对应的参数组合形成搜索空间;
13、s22、基于遗传算法寻找搜索空间中最优的参数组合,作为最优解;
14、s23、基于所述最优解建立若干个最优学生模型。
15、进一步的,步骤s22具体包括以下步骤:
16、s221、种群初始化:基于所述搜索空间建立初始种群,所述初始种群包括n个初始个体,每个初始个体为搜索空间中随机选择的一组参数组合;
17、s222、适应度评价:设计适应度函数用于对学生模型和预训练代码模型的适应度进行评估,所述适应度函数公式如下:
18、fitness(m)=ω1d(d)+ω2d(mhm(d))+ω3(-wm)
19、式中,fitness()指适应度函数;ω1、ω2、ω3为适应度函数中三个因素的权重;mhm表示一种简单的对抗攻击技术;m是适应度函数的自变量,为需要进行适应度计算的模型,包括蒸馏后的学生模型s,以及预训练代码模型t;d为下游任务对应的数据集;wm指模型m的参数大小;d()函数代表所选择模型的预测结果;
20、s223、自然选择:基于竞赛选择算法随机在所述初始种群中选择t个初始个体组成竞赛组;
21、在所述竞赛组内进行n次竞赛,所述竞赛为从竞赛组中选择m个初始个体作为竞赛者,分别计算m个竞赛者的适应度值,并选择最大适应度值对应的竞赛者,作为获胜者n号,直到n满足数量条件后,将所有获胜者构建为父代种群;所述父代种群包括n个父代个体,且每个父代个体为一个获胜者;
22、其中,选择竞赛者的公式如下:
23、winner=argmaxi∈tournamentf(indi)
24、其中,winner为竞赛选择算法;arg max函数用来处理张量;tournament为竞赛组;indi为锦标赛竞赛组中的第i个个体;f(indi)为个体indi的适应度值;
25、s224、迭代进化:通过遗传操作更新并替换所述父代种群,形成子代种群,所述子代种群包括若干个子代个体,计算所述子代个体的适应度值fitness(s);
26、步骤s224中,所述遗传操作包括交叉操作和变异操作,所述交叉操作将父代种群中任意两个父代个体组合更新为子代个体,公式如下:
27、c(p1,p2)=(p1[1:k]+p2[k+1:])
28、其中p1,p2为两个父代个体;c(p1,p2)为对p1、p2个体进行交叉操作,产生子代个体;k为一个随机选择的交叉点;[1:k]和[k+1:]为选择的交叉内容;
29、所述变异操作改变父代个体的某些基因或参数,公式如下:
30、m(p)=p+△
31、本文档来自技高网...
【技术保护点】
1.一种基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,所述的方法包括以下步骤:
2.根据权利要求1所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,步骤S1中,所述开源数据集的获取包括以下步骤:
3.根据权利要求2所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,从开源仓库和/或对抗攻击研究的专门平台和竞赛中收集所述初始数据集。
4.根据权利要求1所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,所述预训练代码模型中有若干组参数组合,每一组参数组合对应一个学生模型,步骤S2中,获取所述最优学生模型包括以下步骤:
5.根据权利要求4所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,步骤S22具体包括以下步骤:
6.根据权利要求1所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,步骤S3中,具体包括以下步骤:
7.根据权利要求6所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,所述精度函数公式如下:
8.根
9.根据权利要求8所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,步骤S4中,具体包括以下步骤:使用所述对抗样本攻击所述预训练代码模型,并基于所述攻击成功率函数计算每个对抗样本对应的攻击成功率,根据攻击成功率提取攻击成功的对抗样本组成对抗集合。
10.一种基于知识蒸馏的代码预训练模型对抗样本生成系统,其特征在于,所述系统包括:
...【技术特征摘要】
1.一种基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,所述的方法包括以下步骤:
2.根据权利要求1所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,步骤s1中,所述开源数据集的获取包括以下步骤:
3.根据权利要求2所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,从开源仓库和/或对抗攻击研究的专门平台和竞赛中收集所述初始数据集。
4.根据权利要求1所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,所述预训练代码模型中有若干组参数组合,每一组参数组合对应一个学生模型,步骤s2中,获取所述最优学生模型包括以下步骤:
5.根据权利要求4所述的基于知识蒸馏的代码预训练模型对抗样本生成方法,其特征在于,步骤s22具体包括以下步骤:
【专利技术属性】
技术研发人员:孙小兵,刘欣炜,薄莉莉,刘湘月,李斌,
申请(专利权)人:扬州大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。