面向深度学习模型中毒攻击的检测方法、装置及系统

文档序号:25300914发布日期:2021-06-04 13:08阅读:300来源:国知局
面向深度学习模型中毒攻击的检测方法、装置及系统

1.本发明属于中毒检测领域,具体涉及一种面向深度学习模型中毒攻击的检测方法、装置及系统。


背景技术:

2.深度学习逐渐成为人工智能领域的研究热点和主流发展方向。深度学习是由多个处理层组成的计算模型,学习具有多个抽象层次的数据表示的机器学习技术。深度学习代表了机器学习和人工智能研究的主要发展方向,给机器学习和计算机视觉等领域带来了革命性的进步。人工智能技术在计算机视觉和自然语言处理等领域取得突破,使人工智能迎来了新一轮的爆炸式发展。深度学习是这些突破的关键。其中,基于深度卷积网络的图像分类技术已经超过了人眼的精度,基于深度神经网络的语音识别技术已经达到了95%的精度,基于深度神经网络的机器翻译技术已经接近了人类的平均翻译水平。随着精度的迅速提高,计算机视觉和自然语言处理已经进入产业化阶段,并带动了新兴产业的兴起。
3.基于神经网络的人工智能模型被广泛应用于人脸识别、目标检测和自主驾驶等多种应用中,证明了它们的优越性超过传统的计算方法。越来越多的人倾向于相信人工智能模型在生活各个方面的应用都起着至关重要的作用。随着复杂性和功能的增加,培训此类模型需要在收集训练数据和优化性能方面作出巨大努力。因此,预先训练的模型正在变为供应商(例如google)和开发人员分发、共享、重用甚至出售以获取利润的有价值的物品。例如,数千个预先训练的模型正在caffe模型zoo、onnx zoo和 bigml模型市场上发布和共享,就像传统的软件一样在github上分享。这些模型可以由信誉良好的供应商、机构甚至个人进行培训。
4.然而预先训练的智能系统模型可能包含通过训练或通过转换内部神经元权重注入的后门。当提供常规输入时,这些木马模型正常工作,当输入被印上触发器的特殊模式时,对特定的输出标签进行错误分类。例如,想象一个基于深度神经网络(dnns)的面部识别系统,它被训练成每当一个非常特定的符号在人脸上或附近被检测到时,它将人脸识别为“比尔盖茨”,或者一种可以将任何交通标志变成绿灯的贴纸。后门可以在训练时插入到模型中,例如由公司的流氓员工负责培训模型,或在最初的模型培训之后插入后门,若完成得很好,这些后门对正常输入的分类结果的影响很小,使得它们几乎无法检测。
5.因此,对于智能系统模型的中毒检测就至关重要,可以提高模型的安全性。尤其是类似自动驾驶问题,对安全性要求极强,所以迫切需要对深度学习模型的中毒检测方法,来检测模型是否受到中毒攻击。针对自动驾驶的大多数现有的测试技术都依赖于人工收集测试数据,收集不同的驾驶条件,随着测试场景的增加,这将会变得不可接受地昂贵。同时现有的测试技术都是基于触发器可见的中毒攻击的检测,对于触发器不可见的特征嵌入攻击检测效果很差,同时需要获取大部分测试数据集,在检测过程中存在耗时长,效率低等问题。


技术实现要素:

6.鉴于上述,本发明的目的是提供一种面向深度学习模型中毒攻击的检测方法、装置及系统,来实现对面向深度学习模型中毒攻击的快速准确检测。
7.为实现上述发明目的,本发明提供以下技术方案:
8.第一方面,一种面向深度学习模型中毒攻击的检测方法,包括以下步骤:
9.(1)获取样本集和待检测深度学习模型;
10.(2)构建与待检测深度学习模型结构相同的良性模型,并采用样本集预训练良性模型;
11.(3)从样本集中获取部分样本数据进行数据增广,针对每类样本获得相同数量的新样本数据,组成新样本数据集;
12.(4)将新样本数据集的每一类新样本数据作为目标类,剩下的所有类新样本数据作为源类,对预训练后的良性模型进行目标类的多种中毒攻击,获得多种中毒模型和中毒模型对应的多种中毒样本;
13.(5)利用中毒模型对其他中毒模型生成的中毒样本进行检测,获得中毒样本在所有非所出中毒模型下的检测结果,依据检测结果筛选并构建中毒模型池和中毒样本池;
14.(6)将中毒样本池中的中毒样本输入至待检测深度学习模型中,依据中毒样本在待检测深度学习模型的检测结果和中毒样本在非所出中毒模型下的检测结果来判断待检测深度学习模型是否中毒。
15.优选地,所述样本集为图像数据集,所述待检测深度学习模型为深度学习模型,采用样本集预训练良性模型时,以样本数据的预测结果和真实标签的交叉熵作为损失函数来更新良性模型的网络参数。
16.优选地,对样本集中获取部分样本数据进行图像翻转、旋转、局部变形处理实现数据增广,针对每类别获得m张新样本数据,总计获得m*n 个新样本数据,组成新样本数据集,n为类别数。
17.优选地,在中毒攻击时,选取第i类的m张新样本数据作为目标类,取第j类m张样本作为源类,其中,i∈[1,2,...,n

1,n],j∈[1,2,...,n

1,n],且 j≠i,依次将源类作为预训练后的良性模型的输入,并采用多种中毒攻击方法对良性模型进行趋向于目标类的中毒攻击,针对每种中毒攻击方法获取n*(n

1)个中毒模型m
poison_1
={m1,m2,...,m
n*(n

1)
}和n*(n

1)种中毒样本,共计 m*n*(n

1)张中毒样本x
poison_1
={x1,x2,...,x
m*n*(n

1)
},针对c种中毒方法,则共获得n*(n

1)*c个中毒模型,m*n*(n

1)*c张中毒样本。
[0018]
优选地,采用的中毒攻击方法包括带触发器的中毒攻击、特征嵌入的无明显触发器的中毒攻击以及修改类标方式的中毒方法。
[0019]
优选地,将同一种中毒攻击方法下生成m*n*(n

1)张中毒样本x
k
依次输入至n*(n

1)

1个中毒模型m
p
中进行测试,k∈[1,2,...,n*(n

1)],p∈[1,2,...,n*(n

1)],且p≠k,获得中毒样本在不同中毒模型下的检测结果,并依据检测结果筛选出检测结果低于0.5的中毒样本与对应的中毒模型构建中毒样本池和中毒模型池。
[0020]
优选地,步骤(6)中,当中毒样本在待检测深度学习模型的检测结果与中毒样本在非所出中毒模型下的检测结果相差小于设定阈值时,则表明待检测深度学习模型中毒。
[0021]
第二方面,一种面向深度学习模型中毒攻击的检测装置,包括:
[0022]
获取模块,用于获取样本集和待检测深度学习模型;
[0023]
预训练模块,用于采用样本集预训练与待检测深度学习模型结构相同的良性模型;
[0024]
数据集增广模块,用于从样本集中获取部分样本数据进行数据增广,针对每类样本获得相同数量的新样本数据,组成新样本数据集;
[0025]
生成中毒样本池和中毒模型池模块,用于将新样本数据集的每一类新样本数据作为目标类,剩下的所有类新样本数据作为源类,对预训练后的良性模型进行目标类的多种中毒攻击,获得多种中毒模型和中毒模型对应的多种中毒样本,并利用中毒模型对其他中毒模型生成的中毒样本进行检测,获得中毒样本在所有非所出中毒模型下的检测结果,依据检测结果筛选并构建中毒模型池和中毒样本池;
[0026]
测试模块,用于将中毒样本池中的中毒样本输入至待检测深度学习模型中,依据中毒样本在待检测深度学习模型的检测结果和中毒样本在非所出中毒模型下的检测结果来判断待检测深度学习模型是否中毒。
[0027]
第三方面,一种面向深度学习模型中毒攻击的检测装置,包括存储器、处理器以及存储在所述存储器中并可在所述计算机处理器上执行的计算机程序,所述处理器执行所述计算机程序时实现上述面向深度学习模型中毒攻击的检测方法。
[0028]
与现有技术相比,本发明具有的有益效果至少包括:
[0029]
本发明提供的面向深度学习模型中毒攻击的检测方法、装置及系统,通过根据中毒样本与中毒模型的迁移性生成中毒样本池和中毒模型池来实现对深度学习模型的中毒检测,在真实深度学习模型上的实验结果表明,该方法具有良好的适用性,能够有效的判断模型是否中毒,取得较好的检测效果。
附图说明
[0030]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动前提下,还可以根据这些附图获得其他附图。
[0031]
图1是本发明实施例提供的面向深度学习模型中毒攻击的检测方法的流程图。
[0032]
图2是本发明实施例提供的面向深度学习模型中毒攻击的检测装置的结构图。
具体实施方式
[0033]
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
[0034]
图1是本发明实施例提供的面向深度学习模型中毒攻击的检测方法的流程图。如图1所示,实施例提供的面向深度学习模型中毒攻击的检测方法包括以下步骤:
[0035]
步骤1,获取样本集和待检测深度学习模型。
[0036]
1.1)获取的样本集为图像数据集,包含获取mnist数据集,cifar10 数据集和driving数据集等,同时提取一部分数据作为良性测试集样本 data
oracle
。待检测深度学习
模型m
oracle
可以是用于识别任务或分类任务的模型,例如可以用于自动驾驶领域的识别任务,人脸识别任务,目标检测任务等。
[0037]
步骤2,构建与待检测深度学习模型结构相同的良性模型,并采用样本集预训练良性模型。
[0038]
实施例中,构建与待检测深度学习模型结构相同的良性模型,然后采用样本集预训练良性模型。训练时,将图片数据集按预设比例划分为训练集和测试集,通过one

hot编码将图片数据集中每个样本的标签转化为一维向量。
[0039]
选取基于预测分类和样本标签的交叉熵为损失函数,其格式采用 one

hot编码表示,如[0,0,1,0,0,0]表示的样本的标签为6个类别中的第3 个,然后通过计算所有样本交叉熵的平均值达到当前训练数据的损失函数.
[0040]
训练时,对选取的深度学习模型进行训练,训练时采用小批量梯度下降(mini

batch gradient descent,mbgd)的训练方法,每次从训练集中随机选择一批数据用于模型的训练,既可避免随机梯度下降(stochasticgradient descent,sgd)产生的训练震荡,也可避免批量梯度下降(batchgradient descent,bgd)对资源的过度消耗,批的大小选择128。训练目标是通过梯度的前向和反向传播调整网络的结构参数,不断降低模型的损失函数值。为避免实验偶然性的干扰,实验采用十折交叉验证,即将数据集分成10份,每次选取其中的9份用于训练,一份用于测试。
[0041]
步骤3,对部分样本数据进行数据增广,获得新样本数据集。
[0042]
实施例中,获取的一小部分良性测试集样本data
oracle
对其进行图像翻转、旋转、局部变形等方法进行数据扩充,获得每类样本m张新样本数据,若数据集有n类,则获得共m*n个新样本数据。
[0043]
步骤4,构建毒模型池和中毒样本池。
[0044]
实施例中,从经过数据扩充得到的m*n个样本中依次选取第i类m 张样本作为目标类,其中i∈[1,2,...,n

1,n],选取第j类m张样本作为源类,其中j∈[1,2,...,n

1,n]并且j≠i。依次对步骤2.1)中获取的训练后的良性模型进行某类中毒攻击,可获得n*(n

1)个中毒模型m
poison_1
={m1,m2,...,m
n*(n

1)
} 和m*n*(n

1)张中毒样本x
poison_1
={x1,x2,...,x
m*n*(n

1)
}。
[0045]
针对不同类型的中毒攻击,例如badnets等带触发器的中毒攻击和特征嵌入的无明显触发器的中毒攻击以及修改类标方式的mislabel中毒方法,均用于攻击预训练好的良性模型,以生成中毒样本x
poison_1
,x
poison_2
,...,x
poison_c
和中毒模型m
poison_1
,m
poison_2
,...,m
poison_c
,其中c表示有c类中毒攻击方法,则共获得n*(n

1)*c个中毒模型,m*n*(n

1)*c张中毒样本。
[0046]
根据n*(n

1)*c个中毒模型和m*n*(n

1)*c张中毒样本,对中毒模型和中毒样本进行迁移性分析,将同一中毒攻击方法下生成的中毒样本例如: x
poison_1
={x1,x2,...,x
m*n*(n

1)
},依次将x
k
,其中k∈[1,2,...,n*(n

1)]输入模型m
p
,其中p∈[1,2,...,n*(n

1)]并且p≠k中进行测试,获得中毒样本在不同中毒模型下的检测率,并筛选出迁移性高的中毒样本与中毒模型构建中毒样本池和中毒模型池。实施例中,一般情况下,模型的预测精度也就是预测结果 0

1的数,一般低于50%表示就模型将样本类别预测错误了,基于此,认为检测结果低于0.5的中毒样本即为迁移性高的中毒样本。
[0047]
步骤5,待检测深度学习模型的中毒检测。
[0048]
将中毒样本池中的中毒样本输入到待检测模型中,通过中毒样本在待检测模型中的测试结果与中毒样本在中毒样本池中的检测结果进行对比判断待检测模型是否中毒。具体地,将当中毒样本在待检测模型的检测结果与中毒样本在非所出中毒模型下的检测结果相差小于设定阈值时,则表明待检测模型中毒。产生中毒样本a的中毒模型为所出中毒模型,其他中毒模型不产生中毒样本a,则为非所出中毒模型。
[0049]
非所出中毒模型是指不产生中毒样本的模型
[0050]
图2是本发明实施例提供的面向深度学习模型中毒攻击的检测装置的结构图。如图2所示,实施例还是提供的面向深度学习模型中毒攻击的检测装置,包括:
[0051]
获取模块,其包含第一获取单元和第二获取单元,分别用于获取样本集和待检测深度学习模型;
[0052]
预训练模块,用于采用样本集预训练与待检测深度学习模型结构相同的良性模型;
[0053]
数据集增广模块,用于从样本集中获取部分样本数据进行数据增广,针对每类样本获得相同数量的新样本数据,组成新样本数据集;
[0054]
生成中毒样本池和中毒模型池模块,其包含多个生成单元,用于将新样本数据集的每一类新样本数据作为目标类,剩下的所有类新样本数据作为源类,对预训练后的良性模型进行目标类的多种中毒攻击,获得多种中毒模型和中毒模型对应的多种中毒样本,并利用中毒模型对其他中毒模型生成的中毒样本进行检测,获得中毒样本在所有非所出中毒模型下的检测结果,依据检测结果筛选并构建中毒模型池和中毒样本池;
[0055]
测试模块,用于将中毒样本池中的中毒样本输入至待检测深度学习模型中,依据中毒样本在待检测深度学习模型的检测结果和中毒样本在非所出中毒模型下的检测结果来判断待检测深度学习模型是否中毒。
[0056]
需要说明的是,上述实施例提供的面向深度学习模型中毒攻击的检测装置在进行面向深度学习模型中毒攻击的检测时,应以上述各功能模块的划分进行举例说明,可以根据需要将上述功能分配由不同的功能模块完成,即在终端或服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的面向深度学习模型中毒攻击的检测装置与面向深度学习模型中毒攻击的检测方法实施例属于同一构思,其具体实现过程详见面向深度学习模型中毒攻击的检测方法实施例,这里不再赘述。
[0057]
实施例还提供了一种面向深度学习模型中毒攻击的检测系统,包括存储器、处理器以及存储在所述存储器中并可在所述计算机处理器上执行的计算机程序,所述处理器执行所述计算机程序时实现上述面向深度学习模型中毒攻击的检测方法。
[0058]
实际应用中,计算机存储器可以为在近端的易失性存储器,如ram,还可以是非易失性存储器,如rom,flash,软盘,机械硬盘等,还可以是远端的存储云。计算机处理器可以为中央处理器(cpu)、微处理器 (mpu)、数字信号处理器(dsp)、或现场可编程门阵列(fpga),即可以通过这些处理器实现面向深度学习模型中毒攻击的检测步骤。
[0059]
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1