本文关于推理攻击领域关于深度学习的隐私性的全面分析《Comprehensive Privacy Analysis of Deep Learning》,以及介绍Deepfool对抗样本构造算法的《DeepFool: a simple and accurate method to fool deep neural networks》。

1. 《Comprehensive Privacy Analysis of Deep Learning》

本文综合介绍了针对深度学习的推理攻击方法,主要的研究点是评估白盒攻击条件下的针对独立学习(stand-alone)和联邦学习(federated)的攻击效果。

(为保证完整性保留上星期的部分阅读笔记,即第1.1段)

1.1 文章概述

深度学习在各行各业中广泛应用,而深度学习必须大量的相关数据集。这些数据集里可能会包含用户的各类隐私资料,比如病历、银行账户、图像、声音、社会关系和地理位置等等。文章作者想要回答的是,在深度学习框架下用户隐私的泄露程度如何,即当前深度学习模型有多大程度泄露出其训练数据。

作者将某一模型的敏感隐私信息泄露定义为:攻击方能够通过该模型得到这一隐私数据,而不能从其他以相同分布训练其他数据的其他模型中得到。前者反映的是效用增加(utility gain),后者反映的是隐私损失(privacy loss)。(这段有些没懂)

针对机器学习算法的推理攻击有分为两大类:1)跟踪攻击(成员推理攻击) 2)重建攻击。在重建攻击中,攻击算法的目的是推理重建训练数据的某些属性信息;在成员推理攻击中,攻击算法的目的是推断某一特定数据是否存在于训练数据集中。这是一个决策性问题,这直接反映了一个模型对于训练数据的泄露程度。因此作者选择这类攻击方式用作作者测试模型隐私性的基本手段。

近段时间的研究结果大都是在黑盒攻击模式下完成的,然而这类黑盒攻击对泛化性良好的深度学习模型攻击效果不佳。并且,在现实世界中,攻击者有时能够看到深度学习模型的相关参数,比如在联邦学习的条件下,多个数据提供者通过向聚合器分享他们的数据来训练一个全局模型。

本文的贡献在于:作者在本文提出了一个综合性的深度学习隐私性评价框架,这个框架基于白盒攻击条件下的推理攻击。本文中作者不仅仅局限于对训练完成的模型进行推理攻击这一种情况,而是针对了许多种在训练、微调(fine-tuning)和升级模型过程中常见情况进行了实验,比如:训练过程中只有一个参与者或者有多个参与者;攻击方仅仅能够观测到模型更新信息,或攻击方能够对目标模型施加影响从而提取更多信息;攻击方是否拥有更多的先验性知识。总之,无论条件的不同,这些攻击方的目的是惟一的,那就是成员推理攻击。

从作者的以往经验来看,激活函数的泛化速度非常快,在白盒条件下使用和黑盒条件下一样的攻击手段将不会给攻击带来明显的提升。在训练模型的头几层只会提取一些不明显的特征,这些特征并不能代表特定的训练数据集。而在训练模型的最后一层激活函数提取了复杂且抽象的特征,这些特征应该包含着更多关于训练数据集的信息。这些信息或多或少与泄露的信息有所关联。

作者设计的白盒条件下的攻击手段利用了SGD算法对于隐私的脆弱性。SGD算法中,每一个数据点都会影响许多模型参数。SGD算法中利用每一个数据从梯度方向保证最终整个模型的损失接近于零。总之,每一个数据训练集中的样本都会在模型参数的损失函数梯度上留下明显的痕迹。

作者在这次的攻击算法设计中运用了这种梯度向量作为主要特征。作者设计的深度学习攻击算法能够从目标模型不同的层中提取梯度特征,并最后将它们的信息整合起来,用来计算特定数据作为原始训练数据集成员的概率。这一方法能够针对已知信息丰富度不同的攻击方,如果攻击方已经知道训练集的某一子集,那么该攻击算法能够以监督的方式进行训练;对于对目标模型缺乏有效信息的攻击方,该攻击算法能够以一种无监督的方式进行训练,在这一过程中,算法将训练一种来计算各个成员对于任何数据的embedding信息,并用一种聚类算法来将成员与非成员区分开来。

作者介绍了算法的实验结果,结果表明,本文的推理攻击算法在白盒攻击条件下,能够有效针对独立学习与联邦学习模型,即:深度学习模型存在训练数据隐私泄露的问题。

1.2 推理攻击

本段主要介绍了推理攻击的构造以及推理攻击的攻击环境。作者对每一个攻击环境设置的不同点进行评价,并在后文进行相应的实验并展示实验结果。

1.2.1 黑盒攻击与白盒攻击

这一段作者描述了黑盒攻击与白盒攻击模式下的异同。对于一个模型来说,输入任意数据点x,会得到输出结果f(x ; W),其中W表示模型的中间参数。在黑盒攻击模式下,攻击者仅能知道输入数据x与输出结果f(x ; W);在白盒攻击模式下,攻击者不仅知道输入数据x与输出结果f(x ; W),也能够知道模型中间层的计算结果。

在之前的研究成果中,已经有在黑盒攻击模式下针对模型进行的推理攻击手段了。那么能不能直接将这种手段运用在白盒攻击模式呢?即:对所有激活函数层进行这种手段的运算(而不是黑盒条件下仅对输出进行运算)。答案是效果不好。因为激活函数的结果可能不会包含所有对成员推断有用的信息。而且一个正则化良好的模型中,激活函数是可以泛化的,这就导致激活函数的结果和不可见数据之间的联系不再紧密。因此,作者在本文建议,在白盒模式下的推理攻击应该把SGD算法作为切入口。SGD算法的作用不再赘述,作者在这里主要是关注到:在拥有非常多参数(中间层)的模型中,SGD算法的计算结果维度非常高,是不太容易被泛化的。这就表示,即使模型分类器的泛化程度很高,对于数据集成员与非数据集成员而言,它们的梯度结果会很不同。

1.2.2 独立学习与联邦学习

对于独立学习来说,通常会存在微调(fine-tuning)步骤,即先用原始数据集D训练出模型f,再用新数据集DΔ微调出新的模型fΔ。因此我们要测量新的模型Δf对于整个训练集D∪DΔ的信息泄漏程度。而在实际应用中,可能是先用一个公开数据集训练出原始模型,再在原始模型的基础上用敏感数据微调出新模型,因此攻击者可能仅对新数据集DΔ感兴趣。同时由于模型f和fΔ都存在两种状态,即微调前和微调后,我们还希望测量可以从两个模型的snapshots中了解到的关于训练数据的额外信息(这句没读懂)。

作者同时强调,针对独立学习(微调模型)的推理攻击是针对联邦学习的推理攻击的一种特殊形式。在这两种情况下,攻击者都能观察到目标模型的多个版本。

联邦学习的运行模式不再赘述。在本文中,作者构想攻击者可能会有两种存在形式:1)攻击者是中央参数服务器。这就使得攻击者能在每个时间段都观察到各个节点上传的信息,并且能够提取某一参与节点更多额外的信息(就如同主动攻击模式下的能力)。2)攻击者是某一参与节点。这使得攻击者只能在某一单位时间内观察到全局参数,并修改自身的参数,以达到获取其他所有参与者信息的目的。

因此,在针对联邦学习的攻击中,攻击者会随时间观察到目标模型的多个版本。攻击者能够对每一个版本的模型进行攻击并最终结合攻击结果完成推理攻击。但是这有可能无法捕获各个参数之间的相关性从而无法帮助攻击者进行推理攻击。作者在本文中用的方法是:每一个攻击单元(比如负责计算第i层梯度的某一攻击单元)要掌握随时间变化的目标模型的所有版本的目标参数,举个例子:某一攻击单元负责计算目标模型的损失函数L,那么如果目标模型随时间变化了T次,那么这一攻击单元就应该会得到T个结果,并将这T个结果打包输入攻击算法进行下一步计算得到最终结果。在这一方法下,推理攻击得到的结果会是T倍于针对独立学习进行攻击所得到的结果(所以作者说针对独立学习(微调模型)的推理攻击是针对联邦学习的推理攻击的一种特殊形式)。

1.2.3 被动推理攻击与主动推理攻击

推理攻击大部分都是被动攻击,它们仅仅观察数据而不改变学习进程。比如针对已经训练完成的模型进行的推理攻击(比如上文提到的独立学习情况下的推理攻击),就属于被动推理攻击。

主动推理攻击中,攻击者参与了模型的训练过程,并影响目标模型来提取出更多信息。这常常在针对联邦学习的推理攻击中发生。在这一环境设置下,攻击者占据的中央参数服务器或者子节点能够更改参数来进行后续的推理攻击。对于被动攻击和主动攻击而言,推理攻击架构是相同的(为啥?)。

主动攻击能够利用SGD算法。作者是这么想的:如果人为地让某一上传参数造成很大的损失(loss),那么SGD就会改变某些参数来适应(因为SGD算法总是希望损失能尽可能小)。因此如果一个数据点是目标模型训练中没看到过的数据,那么该数据点的梯度就会逐渐变化。这可以被用来进行成员推理攻击。

设:攻击方是某一参与节点,X是本地的一个数据。攻击方人为地对X进行梯度上升操作,使损失增大:

接下里攻击方上传这条被恶意修改过的数据给中央参数服务器,中央参数服务器会将这条数据与其他节点上传的数据聚合起来。注意,攻击方可以对一批数据都进行这种恶意梯度上升的操作。

如果X是另外某一节点的训练数据,那么该一节点的SGD算法在收到被恶意篡改的数据之后,会主动尝试降低数据X的损失梯度,而这个操作会被推理攻击算法探测到(因为接受了这个节点上传的数据),从而达到成员推理攻击的效果。在联邦学习的环境下重复这种主动攻击,就能高置信地完成推理攻击任务。

1.2.4 先验知识:有监督学习与无监督学习

为了完成推理攻击模型的构建,攻击者必须掌握目标模型在某一数据点上的行为与该数据点是否从属于训练数据集的映射关系。达成这一目标最直接的方法,就是利用一组属于原始训练数据集的数据、和一组同分布的但不属于训练数据集数据,在这两组数据的对照下,来研究上文提到的该种映射关系。

假设攻击方拥有一个数据集D‘,这一数据集与目标模型的训练数据集D有重叠的地方,在本段,作者主要讨论攻击方如何利用数据集D’来训练推理攻击模型。

对于有监督学习, 如果给定了数据集D‘中存在的与D重叠的部分,那么作者主要考虑的问题是如何将攻击者的均方损失最小化:(这段没看懂,以后补充)

如果攻击方不知道D‘中哪些数据从属于原始数据集D,那么就有两种方法:1)无监督学习 2)影子模型。在有监督学习条件下,作者主要讨论影子模型方法。影子模型的输出结果是一个成员推断概率:

对于影子模型攻击构造方法另寻文献:《Membership inference attacks against machine learning models,2017》。

在无监督学习的环境下,作者提出了一个替代影子模型的方法:同样,该方法下,假设前提是攻击方不知道D‘中哪些数据从属于原始数据集D。作者在后文揭示了他提出的这个无监督学习模型的架构,类似于无监督学习中自动编码器。(本段在读完影子模型攻击文献之后再对比学习)

1.3 推理攻击模型

给定目标数据(x,y),攻击的目标是确定其是否属于目标模型f的原始数据集D。攻击者对目标模型f输入x,并接下来计算所有隐藏层hi(x)、模型的输出f(x)和损失函数L ( f(x) , y ; W)。攻击者通过计算每层的∂L/∂W来确定损失梯度。这些参数与y的one-hot向量一同组成了推理攻击的输入特征参数。推理攻击模型则由卷积神经网络(CNN)和全连接网络(FCN)两部分组成。对于攻击联邦学习和微调模型来说,攻击者会观察每个攻击所需的特征参数T次,并将它们打包。例如,损失特征组成为L={L{1}、L{2}、···…、L{T} }。CNN层和FCN层的输出打包在一起,然后再传给全连接层。全连接层的输出就是最后推理攻击的结果。

1.4 我的想法

本文针对白盒攻击环境下的推理攻击作了一个完整评估。非常值得学习的是作者首先考虑到了推理攻击在各个环境设置下的不同,并根据这些不同来进行具体分析,从而指导下一步的实验。本文还有一个亮点在于作者完整设计了一整套关于推理攻击的实验方案,包括讨论攻击环境设置、提出算法构造思想、分场景构造推理攻击算法、提出新的推理攻击模型、构造实验结果的评估算法、对实验结果进行评估。这一套流程使作者的实验结论具有相当的说服力,同时在这些步骤中,作者都提出了自己原创的解决方案,使本文具有相当的前瞻性。我认为作者的目的是尝试解决一个“问题”(也可以说是想要完成一个系统性的工程),而不仅仅是想要提出一种新的“方法”。本文实验的完整性、前期讨论过程中的严谨性值得学习。

2. 《DeepFool: a simple and accurate method to fool deep neural networks》

本文的主要看点是提出了一种对抗样本构造方法DeepFool,以及提出了一种考察模型鲁棒性的方法。

2.1 算法核心思想

DeepFool的核心思想是基于超平面的思想,来寻找可以使分类器产生误判的最小扰动。这里和FGSM进行比较,在FGSM算法中,作者主要是想实现“让分类器误判”这唯一一个目标,因此可能会出现增加的扰动过大,即增加了不必要的多余扰动这种情况,在FGSM算法中,添加扰动大小纯粹是通过作者设置的比例系数来控制的,因此不太灵活。在DeepFool中,可以认为添加最小扰动的方向就是垂直于分类面的扰动(在线性二分类问题中),那么只需要对着分类面做一条“垂线”,在“垂线”方向将样本x推过去,就可以最小程度上影响x的同时使分类器误判。当然作者还讨论了线性多分类以及非线性多分类问题上的DeepFool算法,但核心思想一致。

2.1.1 线性二分类问题

2.1.2 线性多分类问题

分别计算 x0 到其他三个面的距离,并取其中最小的一个值作为最小扰动。

2.1.3 非线性多分类问题

在针对非线性多分类问题上,作者考虑运用迭代的方法,在每次迭代中,都计算每个非线性超平面的近似线性超平面(化曲为直),并根据这一组线性超平面来计算添加的扰动,并再进行下一次迭代。

2.2 模型鲁棒性考察方法

原文算式:

针对样本,样本标签,遵循以下标准来生成对抗样本:

可以被称为分类器在x处的鲁棒性(即x到分类边界的距离),分类器的鲁棒性也可以表达为:

2.3 我的想法

DeepFool算法显然能够比FGSM添加的扰动更小。文中提到,FGSM算法只能提供一个粗略的估计,其执行梯度的方法,有时会得到一个局部的最优解。同时,如果使用不精确的方法来计算对抗样本扰动,并以此来评估模型的鲁棒性是不可取的。对于原文提到的根据样本点与分类边界的距离来计算模型的鲁棒性,我认为有一定的道理,但是我认为有必要通过计算批量样本点在分类边界内的分布情况再来评估模型的鲁棒性(对于一个鲁棒性较强的模型,样本点在分类边界内的分布是否会围绕分类中心以正态分布或是什么其他分布散开?)。DeepFool确实是个构造对抗样本的好方法,我想先阅读CW attack以及之后新提出的算法,再来比较这些新算法与DeepFool相比改进了哪些方面。

3. 下一步打算

首先《Comprehensive Privacy Analysis of Deep Learning》这篇文章有些结论还没看懂,需要继续阅读。在对抗样本构造方面我打算继续阅读新文献,不过希望能阅读新的构造方法(而不是时间比较久的经典方法),以此来进行比较。下周我想阅读泛用(universal)的对抗样本构造方法来看看具体是怎么构造的,以及重新回头看看CW对之前方法做出的改进。

《Comprehensive Privacy Analysis of Deep Learning》补完以及Deepfool对抗样本构造算法相关推荐

  1. Biological network analysis with deep learning(使用深度学习的生物网络分析)

    Biological network analysis with deep learning(使用深度学习的生物网络分析)很少有关于生物网络的综述类论文,这是今年发在 Briefings in Bio ...

  2. 【读点论文】Fawkes: Protecting Privacy against Unauthorized Deep Learning Models 添加像素扰动来实现图片的对抗AI识别

    Fawkes: Protecting Privacy against Unauthorized Deep Learning Models 当今强大的面部识别系统的激增对个人隐私构成了真正的威胁.正如C ...

  3. Hierarchical Roofline Performance Analysis for Deep Learning Applications

    Roofline 模型是劳伦斯伯克利国家实验室在2008年提出的一个性能模型,后续很多工作亦出自该实验室.考虑到分层 Roofline 这一概念已在先前的 Hierarchical Roofline ...

  4. A Comparative Analysis of Deep Learning Approaches for Network Intrusion Detection Systems (N-IDSs)

    论文阅读记录 数据类型 在预定义时间窗口中,按照传输控制协议/互联网协议(TCP/IP)数据包将网络流量数据建模成时间序列数据. 数据:KDDCup-99/ NSL-KDD/ UNSW-NB15 NI ...

  5. Turbo Autoencoder: Deep learning based channel code for point-to-point communication channels

    Turbo Autoencoder: Deep learning based channel code for point-to-point communication channels Abstra ...

  6. 【Paper】Deep Learning for Anomaly Detection:A survey

    论文原文:PDF 论文年份:2019 论文被引:253(2020/10/05) 922(2022/03/26) 文章目录 ABSTRACT 1 Introduction 2 What are anom ...

  7. 个人阅读的Deep Learning方向的paper整理

    http://hi.baidu.com/chb_seaok/item/6307c0d0363170e73cc2cb65 个人阅读的Deep Learning方向的paper整理,分了几部分吧,但有些部 ...

  8. DGM: A deep learning algorithm for solving partial differential equations

    论文信息 题目: DGM: A deep learning algorithm for solving partial differential equations 作者及单位: Justin Sir ...

  9. Bayes deep learning的理解

    Bayes方法的理解: 目录 Bayes方法的理解: 序言 回到Bayes方法: 频率学派: Bayes学派: bayes推断和边际化: 后验分布在实际中如何使用: MAP估计: 预测分布(Full ...

最新文章

  1. 为什么大家看到不错的文章更愿意收藏而不是点赞?
  2. The property delegate of CALayer cause Crash.
  3. 解决新浪微博API调用限制 突破rate_limit_status瓶颈
  4. java 百度poi_Android应用中使用百度地图API之POI(三)
  5. 【转】Oracle当中扫描数据的方法
  6. %02 java_Java基础02—变量、运算符和数据类型转换(示例代码)
  7. 2月11日 TensorBoard+DNN+CNN
  8. js实现网页中元素缩放(zoom vs scale)
  9. Windows设置自动开关机
  10. 爬虫高级应用(15. 基于Charles抓包软件抓取手机APP数据)
  11. word2016 尾注后加致谢
  12. RTX 3080和RTX 2080 Ti哪个好
  13. 神奇智能搜索引擎:perplexity智能搜索引擎(ChatGPT与Edge合体——联网版chatGPT)
  14. 引起内存不能“read”的原因及“written”的解决方案
  15. 西山小菜鸟之Scrapy学习笔记---爬取企查查网站公司基本信息
  16. js怎么实现对html代码加密解密,JS实现Base64加密解密
  17. 深入理解PHP之strpos
  18. 贝叶斯学习的简单介绍
  19. Springboot启动报错[ main] o.s.boot.SpringApplication: Application run failed
  20. Liunx——参考数据与延伸阅读

热门文章

  1. 一个平庸程序员自白:我不牛逼但那又怎样?
  2. 输出自新中国成立以来至今所有的闰年年份。
  3. oracle学习笔记(二)--创建数据库
  4. 给pyechart添加标题和副标题
  5. GCC 编译报错:程序中有游离的 \357’ \273’ \277’
  6. MATLAB与高等数学--获得渐进线
  7. [2011-3-20]开篇点题
  8. dell 摄像头黑屏
  9. java实现简繁字体转换
  10. PostCSS使用教程