Tsiligkaridis T., Roberts J. Second Order Optimization for Adversarial Robustness and Interpretability. arXiv preprint axXiv 2009.04923, 2020.

也算是一种对抗训练吧, 有区别的是构造对抗样本的方式, 以及用的是惩罚项而非仅用对抗样本训练.

主要内容

考虑干净样本\(x\)和扰动\(v\), 则我们自然希望

\[\tag{*}
\min_{\theta} \max_{\|v\|\le \epsilon} \ell(x+v;\theta)- \ell(x),
\]

其中\(\ell\)是分类损失. 注意到右端项的二阶近似为

\[\tag{3}
Q(v;x):= \nabla_x \ell(x) \cdot v + \frac{1}{2} v^T \nabla_x \ell(x) v.
\]

故我们可以转而优化此近似项. 当然, 一般的AT方法是用project gradient去逼近右端项, 假设前者

\[\tag{4}
v_Q = \arg \max_{\|v\|_p \le \epsilon} Q(v;x),
\]

后者

\[v_A = \arg \max_{\|v\|_p \le \epsilon} \ell (x+v).
\]

那么二者的差距有下面的定理保证

说实话, 这个定理没多大意义.

如果单纯优化(*)没法带来精度, 所以构造一个正则化项

\[\min_{\theta} \mathbb{E}_{x\sim \mathcal{D}} [\ell(x)+r \cdot \ell_Q(x)],
\]

其中\(\ell_Q(x)=\ell(x+v_Q)-\ell(x)\).

注: 有一个疑问, 按照道理\(r \in (0, 1)\), 可是论文的实验是\((0.5, 1.5)\), 而且有几个实验挑了的确大于1, 这不就意味着需要\(\min (1-r)\ell(x)\), 这不就让分类变差了?

(4)式的求解

作者利用Frank-Wofle (FW) 去求解(4)式, 即

\[\tag{7}
\left \{
\begin{array}{l}
s^k := \arg \max_{\|s\|_p\le \epsilon} \: s \cdot \nabla_v Q(v^k)\\
v^{k+1} := (1-\gamma^k) v^k + \gamma^k s^k,
\end{array} \right.
\]

其中\(v^k=\frac{2}{k+2}\), \(v^0=\epsilon g/\|g\|_p, \: g=\nabla_x \ell(x)\). (7)式的第一步式可以显示求解的

\[\tag{8}
s^k=P_{FW}(v^k;p)=\alpha \cdot \mathrm{sgn} (\nabla_v Q(v^k)_i) |\nabla_v Q(v^k)_i|^{p/q},
\]

其中\(\alpha\)使得\(\|s^k\|_p=\epsilon\), \(|x|^m\)是逐项的.

因为

\[\tag{9}
\nabla_x Q(v) = \nabla_x \ell(x) + \nabla^2_x \ell(x)v,
\]

而计算hessian矩阵需要大量的计算, 故采用差分逼近

FE:

\[\tag{10}
\nabla_x^2 \ell(x)v \approx \frac{\nabla_x \ell(x+hv)-\nabla_x \ell(x)]}{h},
\]

CD:

\[\tag{11}
\nabla_x^2 \ell(x)v \approx \frac{\nabla_x \ell(x+hv)-\nabla_x \ell(x-h)]}{2h}.
\]

超参数

\((h, r)\).

CIFAR10:

\(L_2\): FE(3): (1.15, 1.05) , CD(3): (0.95, 0.999);

\(L_{\infty}\): FE(3): (1.05, 1.05), CD(3): (0.95, 1.15).

最新文章

  1. oracle 资源学习汇总
  2. 基于Java Netty框架构建高性能的部标808协议的GPS服务器
  3. ASProtect注册码使用教程|ASProtect SKE(加壳脱壳工具) 2.56 汉化注册版
  4. 机器学习实战--logistic回归
  5. mysql的隐式转化
  6. Url转Link的C#正则表达式
  7. 1、Hibernate之生成SessionFactory源码追踪
  8. 广义线性模型 GLM
  9. shell编程基础练习
  10. javascript之Boolean
  11. CRM 2013 切换显示语言
  12. matlab imshow()函数显示白色图像问题
  13. openstack私有云布署实践【16.2 Ubuntu1404 只有根分区镜像制作】
  14. Apache 代理(Proxy) 转发请求
  15. TableML-GUI篇(Excel编译/解析工具)
  16. MySQL字符串相关函数学习一
  17. 开发工具类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等
  18. Oracle WorkFlow(工作流)(二)
  19. JS 作用域及作用域链
  20. xgboost中XGBClassifier()参数详解

热门文章

  1. 带你全面了解 OAuth2.0
  2. day06 模板层
  3. 零基础学习java------38---------spring中关于通知类型的补充,springmvc,springmvc入门程序,访问保护资源,参数的绑定(简单数据类型,POJO,包装类),返回数据类型,三大组件,注解
  4. 数组的高阶方法map filter reduce的使用
  5. oracle 预安装命令
  6. jquery的each和js原生for循环性能对比
  7. VScode 使用 CMake 入门
  8. 远程连接mysql库问题
  9. 在html页面通过绝对地址显示图片
  10. 【C/C++】PAT A1025 Ranking/算法笔记