【论文笔记】(2015,防御蒸馏)Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks

有关蒸馏 (Distillation)的论文:

摘要

本文提出了 防御蒸馏(defensive distillation),主要思想为:使用从DNN中提取的知识来降低生成对抗样本时的梯度,如果这个对抗梯度很高,那么扰动很大,DNN的输出不稳定;为了抵抗这种扰动,需要减少输入周围的变化,即使用防御蒸馏来平滑训练得到的模型,提高模型的泛化能力,从而令模型对对抗样本具有高弹性。此外,作者还理论推导+实验证明了防御蒸馏的有效性。

本文是较早的对抗文章,作者十分详细的介绍了神经网络、对抗样本、对抗攻击、对抗训练、蒸馏等基本概念,此笔记不过多重复叙述这些基础知识。

1. Defending DNNs using distillation

A)防御对抗样本

1)在本文中,作者认为具有对抗鲁棒性的模型应该具有以下能力:

  • 对训练集内外的数据都应有高准确率;
  • 很平滑(smooth),即对给定样本附近(neighborhood)的输入进行相对一致的分类。

这里的neighborhood是根据合适的范数所定义,neighborhood范围越大,模型的鲁棒性越高。

2)防御对抗扰动的设计要求:

  • 对网络结构影响小
  • 保持网络的准确率
  • 保持网络的计算速度
  • 防御与训练数据相对接近的对抗样本(很远的样本与安全性无关)

B)蒸馏用作防御

防御蒸馏与传统蒸馏的区别在于:使用相同的模型结构来训练原来的网络和蒸馏网络。防御蒸馏的概述如图1所示。

【论文笔记】(2015,防御蒸馏)Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks

图1. 防御蒸馏的概述:首先在数据 (X) 上使用硬标签训练一个初始网络 (F),softmax 的 temperature 为 (T)。然后使用概率向量 (F(X))作为软标签,以在相同数据 (X) 和相同的 (T) 训练蒸馏网络 (F^d)。

2. Analysis of defensive distillation

分析分为三个方面研究 (1) 网络训练(2) 模型敏感度(sensitivity)(3) 网络的泛化能力

A)网络训练

1)考虑模型 (F),数据集为 (\mathcal{X}),给定一组带正确标签的样本 ({(X,Y(X))|X\in \mathcal{X}}),即(Y(X))为(X)的正确标签向量(硬标签),训练目标为(最小化负对数似然):

[\arg\min_{\theta_F} -\frac{1}{|\mathcal{X}|}\sum_{X\in \mathcal{X}}\;\sum_{i\in 0…N} Y_i(X)\log F_i(X) \tag{1} ]

(\theta_F) 为模型的参数集合,(Y_i) 是 (Y) 的第 (i) 个元素,(F_i(X)) 是 (F(X)) 的第 (i) 个元素,即表示 (X) 是第 (i) 个类别的概率。优化的目标是调整模型参数 (\theta_F)。

由于(Y(X))为(X)的正确标签向量,即one-hot向量,只有正确类别的元素才是1,其余都为0,所以公式(1)可以简化为:

[\arg\min_{\theta_F} -\frac{1}{|\mathcal{X}|}\sum_{X\in \mathcal{X}} \log F_{t(x)}(X) \tag{2} ]

其中 (t(X)) 是向量 (Y(X)) 中唯一等于 1 的元素的索引。

2)引入对抗蒸馏后,蒸馏模型记为 (F^d),训练的数据集仍为 (\mathcal{X}),但样本 (X \in \mathcal{X}) 的标签变为 (F(X))(软标签),训练目标变为:

[\arg\min_{\theta_F} -\frac{1}{|\mathcal{X}|}\sum_{X\in \mathcal{X}}\;\sum_{i\in 0…N} F_i(X)\log F_i^d(X) \tag{3} ]

同样的,(F_i^d) 是 (F^d) 的第 (i) 个元素。 对于一个包含了两个或多个类别特征的样本,网络有时会十分自信的预测出一个类别,作者认为,上述的蒸馏训练能避免这种情况,从而提高网络的泛化能力。
训练目标实际就是令 (F^d = F),也就是最小化交叉熵。

B)模型敏感度

模型对输入变化的敏感度由其Jacobian矩阵计算,在 temperature (=T) 时,模型 (F) 的 Jacobian矩阵的第 ((i,j)) 元素为:

[\begin{aligned} \left.\frac{\partial F_i(X)}{\partial X_j}\right|{T} &= \frac{\partial }{\partial X_j}\left ( \frac{ e^{z_i/T}}{\sum{l=0}^{N-1}e^{z_l/T}}\right )\ &= \frac{1}{T}\frac{e^{z_i/T}}{(\sum_{l=0}^{N-1}e^{z_l/T})^2}\left ( \sum_{l=0}^{N-1}\left ( \frac{\partial z_i}{\partial X_j}-\frac{\partial z_l}{\partial X_j} \right )e^{z_l/T} \right ) \end{aligned} \tag{4} ]

其中 (z_0,…,z_{N-1}) 是logits 层的输出。公式(4)说明了,当 (z_0,…,z_{N-1}) 不变时,增加 (T) 的值会降低Jacobian矩阵内所有元素的绝对值,从而降低了模型对其输入的微小变化的敏感度。
作者认为,使用较高的 (T) 进行训练,可以将这种敏感度信息编码在模型参数中,因此在测试时,令(T=1),仍可以保持其敏感性。

C)泛化能力

Shalev-Schwartz等人证明了 learnability 和 stability 之间的联系:考虑一个学习问题 ((Z=X\times T, \mathcal{H},l)),其中 (X) 是输入空间,(Y) 是输出空间,(\mathcal{H}) 是假设空间,(l) 是将 ((w,z) \in \mathcal{H}\times Z) 映射为一个正实数的损失函数。对于给定的一组训练集 (S={z_i: i\in[n]}),定义一个经验损失(empirical loss) (L_S(w)=\frac{1}{n}\sum_{i\in[n]} l(w,z_i)),将最小经验风险记为 (L_S^ = \min_{w\in \mathcal{H}}L_S(w))。现在给出以下两个定义和一个定理:
定义1 Asymptotic Empirical Risk Minimizer*:a learning rule (A) is an asymptotic empirical risk minimizer, if there is a rate function (\varepsilon (n)) (means a function that non-increasingly vanishes to 0 as n grows) such that for every training set (S) of size (n),

[L_S(A(S))-L_S^*\leq \varepsilon (n) ]

定义2 Stability:we say that a learning rule (A) is (\varepsilon (n)) stable if for every two training sets (S), (S′) that only differ in one training item, and for every (z \in Z),

[|l(A(S),z)-l(A(S’),z)|\leq \varepsilon (n) ]

其中 (h=A(S)) 是 (A) 在训练集 (S) 上的输出,(l(A(S),z)=l(h,z)) 是损失函数。

定理1 If there is a learning rule (A) that is both an asymptotic empirical risk minimizer and stable, then (A) generalizes, which means that the generalization error (L_D(A(S))) converges to (L^∗D =\min{ h\in \mathcal{H}} L_D(h)) with some rate (\varepsilon (n)) independent of any data generating distribution (D).

根据这个定理可以知道,通过适当的设置 (T),对于任何数据集 (S) 和 (S’),新生成的训练集 ((X,F^S(X))) 和 ((X,F^{S’}(X))) 满足很强的稳定性条件。反过来就是,对于任意的 (X\in \mathcal{X}),(F^S(X)) 和 (F^{S’}(X)) 在统计上是接近的。可以看出,防御蒸馏训练满足上述定义的稳定性条件。

此外,从防御蒸馏的目标函数可以推出,该方法将经验风险降至最低。将这两个结论与定理1结合可以得出:本文的蒸馏模型具有很好地泛化能力。

3. Evaluation

对防御蒸馏进行试验评估:
数据集:使用 MNIST 和 CIFAR10,每个数据集对应一个网络结构,即两个DNN,前者网络的准确率为 99.51%,后者的诶80.95%;
攻击策略JSMA
Temperature:(T=20),蒸馏之后,MNIST的准确率为99.05%,CIFAR为81.39%,测试时(T=1),也就是不使用temperature。
主要评估了以下方面:

  1. 防御蒸馏是否在保持分类准确的同时,提升了网络对对抗样本的防御力?
    蒸馏将第一个网络的攻击成功率从 95.89% 降低到 0.45%,将第二个网络从 87.89% 降低到 5.11%。自然样本上的准确率只比原本的网络低1.37%,可忽略不计。
  2. 防御蒸馏是否能降低 DNN 对输入的敏感性?
    降低了,实验表明,在高(T)时进行蒸馏可以使对抗梯度的幅度降低(10^{30})倍。
  3. 防御蒸馏是否使DNN更鲁棒?
    防御蒸馏提高了第一个网络的鲁棒性790%,第二个网络的鲁棒性556%(这里的鲁棒性指的是为生成对抗而扰动的输入特征的平均最小百分比)。

其他的实验包括temperature取值对攻击成功率的影响、对模型准确率的影响、对对抗梯度的影响、对模型鲁棒性的影响等

Original: https://www.cnblogs.com/setdong/p/16408564.html
Author: 李斯赛特
Title: 【论文笔记】(2015,防御蒸馏)Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578618/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【演讲】2020年马云谈疫情过后的新风口

    2020年马云谈疫情过后的新风口 【关键词】:疫情、新风口、数字化趋势、传统行业转型、教育 一、演讲背景 背景 2020线上智博会,马云8分钟演讲30次提到数字化 原视频 2020…

    Linux 2023年6月13日
    0113
  • MSSQL中游标的语法结构

    | 0.21分钟 | 342.4字符 | 1、引言&背景 2、开箱即用的游标结构 3、声明与参考资料 | SCscHero | 2022/4/30 PM10:3 | 系列 …

    Linux 2023年6月14日
    090
  • Golang 实现 Redis(7): 集群与一致性 Hash

    本文是使用 golang 实现 redis 系列的第七篇, 将介绍如何将单点的缓存服务器扩展为分布式缓存。godis 集群的源码在Github:Godis/cluster 单台服务…

    Linux 2023年5月28日
    0101
  • Linux实用命令

    Linux实用命令 关于 Linux 中单双引号的区别: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 双引号里可以有变量,双引号里可以出现转义字符 反引号 pa…

    Linux 2023年6月13日
    086
  • IDEA如何切换到括号外

    一般我们输入完括号后都会习惯性Enter或者Shift + Enter切换到括号外,结果却变成了: public void nothing() Enter → public voi…

    Linux 2023年6月13日
    094
  • Go 字符串切割技巧

    标准库专门提供了一个包 strings 进行字符串的操作,随着go1.18新增的 Cut 函数,字符串处理也更加方便了。 Cut 函数的签名如下: 将字符串 s 在第一个 sep …

    Linux 2023年6月6日
    085
  • DNS 查询原理详解

    你可能会问,难道 DNS 服务器(比如 1.1.1.1)保存了世界上所有域名(包括二级域名、三级域名)的 IP 地址? 当然不是。DNS 是一个分布式系统,1.1.1.1 只是用户…

    Linux 2023年6月8日
    068
  • Java动态脚本Groovy获取Bean(奇淫技巧操作)

    前言:请各大网友尊重本人原创知识分享,谨记本人博客: 南国以南i 背景: 在Java代码中当我们需要一个Bean对象,通常会使用spring中@Autowired注解,用来自动装配…

    Linux 2023年6月14日
    0108
  • Apache Shiro反序列化漏洞(Shiro550)

    1.漏洞原理: Shiro 是 Java 的一个安全框架,执行身份验证、授权、密码、会话管理 shiro默认使用了CookieRememberMeManager,其处理cookie…

    Linux 2023年6月13日
    075
  • linux神器sed快速入门,不好用你打我!

    为什么要学习sed sed(Stream EDitor)被誉为Linux三剑客之一,负责过滤和转换文本,功能灵活又强大,搭配正则表达式更是如虎添翼。 如果你需要向1000行文本中的…

    Linux 2023年6月7日
    092
  • 同一台电脑生成多份ssh私钥和公钥,映射多个GitHub账号

    当我们使用 Git 进行代码版本控制时,经常出现一台电脑需要连接多个Git 账号的情况,此时需要在一台电脑上生成多份 ssh 私钥和密钥,同时映射多个 Git 账号;这里我们需要同…

    Linux 2023年6月14日
    082
  • role: org.apache.maven.model.validation.ModelValidator【maven】项目创建后pom一直不能build出来还爆红【转】

    role: org.apache.maven.model.validation.ModelValidator【maven】项目创建后pom一直不能build出来还爆红 问题是因为m…

    Linux 2023年6月8日
    093
  • [20211215]提示precompute_subquery补充.txt

    [20211215]提示precompute_subquery补充.txt –//前几天测试precompute_subquery,我仔细想一下好像以前看书或者别人的b…

    Linux 2023年6月13日
    076
  • 30道关于linux的基础命令小题,先练练手

    1.修改主机名为yuanlai0224命令是: 2.切换⽬录到/yuchao01/data/,再创建脚本/my_website/scripts/start.sh。 绝对路径、相对路…

    Linux 2023年5月27日
    0104
  • Ubuntu常用命令

    Ubuntu(18.04)下更改用户名和主机名 更改主机名字: (1)修改hostname文件 这个文件中的内容是用来显示主机名的,修改这个文件后,立刻重启 (2)修改hosts文…

    Linux 2023年6月13日
    089
  • 华为云服务器数据库配置远程连接

    华为云服务器数据库配置远程连接 起因 暑期购买了华为云的一台服务器进行开发 在上面部署了MySQL数据库,由于app中修改用户信息存在未修复的bug,经常会出现登录密码为空,导致账…

    Linux 2023年6月13日
    0137
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球