Foret P., Kleiner A., Mobahi H., Neyshabur B. Sharpness-aware minimization for efficiently improving generalization. In International Conference on Learning Representations.

在训练的时候对权重加扰动能增强泛化性.

主要内容

如上图所示, 一般的训练方法虽然能够收敛到一个不错的局部最优点, 但是往往这个局部最优点附近是非常不光滑的, 即对权重\(w\)添加微小的扰动\(w+\epsilon\) 可能就会导致不好的结果, 作者认为这与模型的泛化性有很大关系(实际上已有别的文章提出这一观点).

作者给出如下的理论分析:

在满足一定条件下有

\[L_{\mathscr{D}} (w) \le \max_{\|\epsilon \|_2 \le \rho} L_{\mathcal{S}} (w + \epsilon) + h(\|w\|_2^2/\rho^2).
\]

其中\(h\)是一个严格单调递增函数, \(L_{\mathcal{S}}\)是在训练集\(\mathcal{S}\)上的损失,

\[L_{\mathscr{D}}(w) = \mathbb{E}_{(x, y) \sim \mathscr{D}} [l(x, y;w)].
\]

如果把\(h(\|w\|_2^2/\rho^2)\)看成\(\lambda \|w\|_2^2\)(即常用的weight decay), 我们的目标函数可以认为是

\[\min_w L_{\mathcal{S}}^{SAM} (w) + \lambda \|w\|_2^2,
\]
\[L_{\mathcal{S}}^{SAM}(w) := \max_{\|\epsilon \|_p \le \rho} L_{\mathcal{S}} (w + \epsilon),
\]

注: 这里\(\|\cdot \|_p\)而并不仅限于\(\|\cdot \|_2\).

采用近似的方法求解上面的问题(就和对抗样本一样):

\[\epsilon^* (w)
:= \mathop{\arg \max} \limits_{\|\epsilon\|_p\le \rho} L_{\mathcal{S}}(w + \epsilon)
\approx \mathop{\arg \max} \limits_{\|\epsilon\|_p\le \rho} L_{\mathcal{S}}(w) + \epsilon^T \nabla_w L_{\mathcal{S}}(w)
= \mathop{\arg \max} \limits_{\|\epsilon\|_p\le \rho} \epsilon^T \nabla_w L_{\mathcal{S}}(w).
\]

就是一个对偶范数的问题.

虽然\(\epsilon^*(w)\)实际上是和\(w\)有关的, 但是在实际中只是当初普通的量带入, 这样就不用计算二阶导数了, 即

\[\nabla_w L_{\mathcal{S}}^{SAM}(w) \approx \nabla_w L_{\mathcal{S}}(w) |_{w + \hat{\epsilon}(w)}.
\]

实验结果非常好, 不仅能够提高普通的正确率, 在标签受到污染的情况下也能有很好的鲁棒性.

代码

原文代码

最新文章

  1. Linux文件管理命令笔记
  2. 从ord()中对Unicode编码的理解
  3. [原] wmic: Invalid XSL format (or) file name错误解决方法
  4. Intel VT-x 基本概念
  5. IN和EXISTS的详解
  6. swift 同步加载图片
  7. hdu 4946 Just a Joke(数学+物理)
  8. angular directive指令相互独立
  9. TcxDBVerticalGrid优秀的编辑控件
  10. UI2_UITextField
  11. NHibernate统一类封装代码
  12. kobox : key_wq.c -v1 如何使用工作队列 workqueue
  13. MySQL5.6新特性Index conditontion pushdow
  14. 人工智能技术实践篇:espeak开发环境调试
  15. AspNetCore中使用Ocelot之 IdentityServer4(1)
  16. mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
  17. iframe ios中h5页面 样式变大
  18. 更改TestStep的request header和获取TestStep的response header
  19. Map、Set、List区别
  20. 在ServiceModel客户端配置部分中,找不到引用协定“”的默认终结点元素

热门文章

  1. 巩固javaweb的第二十一天
  2. JavaScript中var与let的异同点
  3. vue开发多页面应用 - hash模式和history模式
  4. 【leetcode】1217. Minimum Cost to Move Chips to The Same Position
  5. android studio 生成aar和引用aar
  6. git删除了本地文件,从远程仓库中恢复
  7. 在调用系统相册时,UIIMagePickerController使用中偷换StatusBar颜色的问题
  8. Mybatis-运行原理
  9. zabbix之模板制作(memcache redis)
  10. @NotBlank 注解不生效