Adversarial Detection methods
- Kernel Density (KD)
- Local Intrinsic Dimensionality (LID)
- Gaussian Discriminant Analysis (GDA)
- Gaussian Mixture Model (GMM)
- SelectiveNet
- Combined Abstention Robustness Learning (CARL)
- Energy-based Out-of-distribution Detection
- Confidence-Calibrated Adversarial Training: Generalizing to Unseen Attacks (CCAT)
Kernel Density (KD)
作者认为普通样本的特征和对抗样本的特征位于不同的流形中, 故可以通过密度估计的方法, 估计出普通样本的密度函数, 然后求得样本各自的置信度, 选择合适的阈值(通过ROC-AUC之类的), 便有了区分普通样本和对抗样本的方法.
假设
\]
为将样本\(x\)提取为特征\(z\)
- 选取合适的样本数目\(x_1, \cdots, x_N\);
- 提取特征\(z_1, \cdots, z_N\);
- 构建核密度估计函数:
k_{\sigma}(z, z') = \frac{1}{(2\pi)^{\frac{d}{2}}\sigma^d}\exp (-\frac{\|z' - z\|^2}{2\sigma^2}).
\]
选择合适的阈值\(t\), 对于样本\(x\), 判定其为对抗样本, 若\(\hat{f}(x) < t\).
有些时候, 可以对每一类构建一个\(\hat{f}(x)\), 但这个情况也就只能用在ROC-AUC了.
Local Intrinsic Dimensionality (LID)
Gaussian Discriminant Analysis (GDA)
作者假设特征\(z=h(x)\)(所属类别为\(c\))满足后验分布:
\]
即
\]
注意到对于不同的\(c\), 协方差矩阵\(\Sigma\)是一致的(这个假设是为了便于直接用于分类, 但是与detection无关, 便不多赘述).
均值和协方差矩阵通过如下方式估计:
\]
故可以用
\]
来区分\(x\)是否为abnormal的样本(对抗的或者偏离训练分布的样本).
在文中用的是log化(且去掉比例系数)的指标:
\]
改方法可以进一步拓展(实际上光用这个指标看实验结果似乎并不理想):
- Input pre-processing:
对于输入的样本进行如下变换:
\]
有点像fgsm生成对抗样本, 但感觉这么做的原因是让\(\hat{f}(x)\)之间的区别大一点.
- Feature ensemble:
即对不同层的特征\(h_l(x)\)都进行如上的操作, 然后得到\(\hat{f}_1, \cdots, \hat{f}_L\), 并通过SVM来训练得到权重\(\alpha_l\), 最后的score为
\]
注: 文中实际为\(M_l(x)\).
Gaussian Mixture Model (GMM)
类似的, 对于特征\(z=h(x)\), 假设其服从GMM:
\]
并用EM算法来估计.
注: 对每一个类别都需要估计一个GMM模型.
于是
\]
当其小于给定的threshold的时候, 便认为其不属于类别\(c\).
问: 所以当所有的\(c\)都被拒绝的时候, 就可以认为是对抗样本了?
SelectiveNet
本文的模型解释起来有点复杂, 在一个普通的判别网络\(f\)的基础上:
\left \{
\begin{array}{ll}
f(x) & \text{if } g(x) = 1, \\
\text{don't know} & \text{if } g(x) = 0.
\end{array}
\right .
\]
其中\(g\)是一个用来选择是否判断的模块.
作者给出了两个指标:
Coverage:
\]
以及
Selective Risk:
\]
Coverage不能太低, 因为如果全部拒绝判断模型就没有意义了, 然后\(R(f, g)\)自然是越低越好, 但是注意到, 虽然一味拒绝回答能够使得分子接近0, 但是分母也会接近0, 所以需要一个平衡.
二者的经验估计如下:
\phi(g|S_N):= \frac{1}{N}\sum_{i=1}^N g(x_i).
\]
注: 在实际使用中, \(g\)的取值往往在\([0, 1]\)间, 此时可以选取threshold t来选择是否判断.
作者设计了一个结构如下:

其中:
Prediction: \(f\);
Selection: \(g\);
Auxiliary: \(h\), 作者说此为别的任务来帮助训练的.
最后的损失:
\mathcal{L}_{(f, g)} = \hat{r}_{\ell} (f, g|S_N) + \lambda \Psi(c - \hat{\phi}(g | S_N)) \\
\Psi(a) = \max(0, a)^2 \\
\mathcal{L}_h = \hat{r}(h|S_N) = \frac{1}{N}\sum_{i=1}^N \ell (h(x_i), y_i).
\]
Combined Abstention Robustness Learning (CARL)
假设\(f\)将样本\(x\)映射为\(\mathcal{Y} \bigcup \{a\}\), 其中\(a\)表示弃权(don't know).
则我们可以定义:
\mathcal{R}_{adv}(f) := \mathbb{E}_{(x, y) \sim \mathcal{D}} \max_{\tilde{x} \in \mathcal{B}_{\epsilon}(x)} \mathbf{1}\{f(\tilde{x} \not = y \text{ and } f(\tilde{x}) \not = a\}.
\]
很自然的, 我们可以通过优化下列损失
\]
来获得一个带有弃权功能的判别器. 并且通过权重\(c\)我们可以选择更好的natural精度或者更保守但更加安全的策略.
直接优化上面的损失是困难的, 故选择损失来替换. 作者采用普通的交叉熵损失来代替nat:
\]
用下列之一替代adv:
\ell = \{\ell^{(1)}, \ell^{(2)}\} \\
\ell^{(1)} = -\log (p_y (\tilde{x}) + p_a (\tilde{x})) \\
\ell^{(2)} = (-\log (p_y (\tilde{x})) \cdot (-\log p_a (\tilde{x})) \\
\]
Adversarial Training with a Rejection Option
凸relax.
Energy-based Out-of-distribution Detection
普通的softmax分类网络可以从energy-based model的角度考虑:
E(x, y) = -f_y(x), \\
\]
Helmholtz free energy:
\]
实际上, 通过\(E(x;f)\)我们可以构建\(x\)的能量模型:
\]
故我们可以通过\(p(x)\)来判断一个样本是不是OOD的.
特别的, 由于对于所有的\(x\)
\]
都是一致的, 所以我们只需要比较
\]
的大小就可以了.
特别的, 作者指出为什么用\(p(y|x)\)来作为判断是否OOD的依据不合适:
\log \max_y p(y|x) &= \log \max_y \frac{e^{f_y(x)}}{\sum_i e^{f_i(x)}} \\
&= \log \frac{e^{f_{\max}(x)}}{\sum_i e^{f_i(x)}} \\
&= E(x;f(x) - f^{\max}(x)) \\
&= E(x;f) + f^{max}(x) \\
&= -\log p(x) + f^{max}(x) - \log Z \\
&\not\propto -\log p(x).
\end{array}
\]
WOW!
Confidence-Calibrated Adversarial Training: Generalizing to Unseen Attacks (CCAT)
假设\(f(x)\)为预测的概率向量, CCAT通过如下算法优化:
- 输入: \((x_1, y_1), \cdots, (x_B, y_B)\);
- 将其中一半用于对抗训练, 一半用于普通训练:
\]
- 其中
\tilde{y}_b = \lambda(\delta_b) \text{ one\_hot}(y_b) + (1 - \lambda(\delta_b)) \frac{1}{K}, \\
\delta_b = \mathop{\arg \max} \limits_{\delta_{\infty} \le \epsilon} \max_{k \not= y_b} f_k(x_b + \delta), \\
\lambda (\delta_b) := (1 - \min(1, \frac{\|\delta_b\|_{\infty}}{\epsilon}))^{\rho}. \\
\]
\(\tilde{y}\)是真实标签和均匀分布的一个凸组合, 这个还是挺有道理的.
最后, 倘若如果
\]
即置信度比较小的话, 拒绝判断(这个可靠的原因是目标函数让对抗样本趋于均匀分布).
Adversarial Detection methods的更多相关文章
- 论文解读(ARVGA)《Learning Graph Embedding with Adversarial Training Methods》
论文信息 论文标题:Learning Graph Embedding with Adversarial Training Methods论文作者:Shirui Pan, Ruiqi Hu, Sai-f ...
- [转]Jailbreak Detection Methods
Source: http://blog.spiderlabs.com/2014/10/jailbreak-detection-methods.html Many iOS applications co ...
- 生成对抗网络资源 Adversarial Nets Papers
来源:https://github.com/zhangqianhui/AdversarialNetsPapers AdversarialNetsPapers The classical Papers ...
- CVPR 2011 Global contrast based salient region detection
Two salient region detection methods are proposed in this paper: HC AND RC HC: Histogram based contr ...
- 文本分类实战(七)—— Adversarial LSTM模型
1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...
- Anomaly Detection
数据集中的异常数据通常被成为异常点.离群点或孤立点等,典型特征是这些数据的特征或规则与大多数数据不一致,呈现出“异常”的特点,而检测这些数据的方法被称为异常检测. 异常数据根据原始数据集的不同可以分为 ...
- PP: Time series clustering via community detection in Networks
Improvement can be done in fulture:1. the algorithm of constructing network from distance matrix. 2. ...
- (转) AdversarialNetsPapers
本文转自:https://github.com/zhangqianhui/AdversarialNetsPapers AdversarialNetsPapers The classical Pap ...
- [转]GAN论文集
really-awesome-gan A list of papers and other resources on General Adversarial (Neural) Networks. Th ...
随机推荐
- 关于redis HSCAN count参数不生效的问题
这的确是个坑,HSCAN是为了处理大量数据而设计的,可能也是因为这个原因,在数据量较少的情况下count参数并不会生效,具体阈值是多少并没有实际测验过不过可以断定的是一百条数据一下估计是不会生效的.
- Scala(五)【集合的高级使用】
目录 一.集合属性 size length contains mkString 二.集合方法 drop.dropRight distinct:去重 head.last:获取第一个.最后一个元素 tai ...
- Angular中@Output()的使用方法
子component中的html文件 <button (click)="Send()">送出</button><br> 子component中的 ...
- OC-引用计数器,内存管理,野指针
总结 全局断点 →-->+-->Add Exception Breakpoint 开启僵尸监听 打开Edit scheme -->Diagnostics-->Enable Zo ...
- HUD总结
HUD 指示器/HUD/遮盖/蒙板 半透明的指示器如何实现 指示器的alpha = 1.0; 指示器的背景色是半透明的 1. 创建颜色 直接创建对应的颜色 + (UIColor *)blackColo ...
- spring boot springMVC扩展配置 。WebMvcConfigurer ,WebMvcConfigurerAdapter
摘要: 在spring boot中 MVC这部分也有默认自动配置,也就是说我们不用做任何配置,那么也是OK的,这个配置类就是 WebMvcAutoConfiguration,但是也时候我们想设置自己的 ...
- Spring中Bean的装配方式
一.基于xml的装配 Student.java package com.yh; public class Student implements People { public void breath( ...
- 『学了就忘』Linux系统管理 — 84、Linux中进程的管理
目录 1.Linux系统中的信号 2.杀掉进程的命令 (1)kill命令 (2)killall命令 (3)pkill命令 1.Linux系统中的信号 Linux系统中可以识别的信号较多,我们可以使用命 ...
- NEEPU-CTF 2021公开赛 writeup
没打这场比赛,但是题目质量挺高的.赛后赶紧学习一波. RUSH B Linux入门 考linux指令的. cat hint.txt 提示让访问根目录. ls / 发现flag cat flag 提示说 ...
- 【 二进制】Windows API 记录
FindWindow 原型: HWND FindWindow( LPCTSTR lpClassName, LPCTSTR lpWindowName ); 该函数获得一个顶层窗口的句柄,该窗口的类名和窗 ...