Sharpness-Aware Minimization for Efficiently Improving Generalization
2024-09-08 06:12:04
概
在训练的时候对权重加扰动能增强泛化性.
主要内容
如上图所示, 一般的训练方法虽然能够收敛到一个不错的局部最优点, 但是往往这个局部最优点附近是非常不光滑的, 即对权重\(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).
\]
:= \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)}.
\]
\]
实验结果非常好, 不仅能够提高普通的正确率, 在标签受到污染的情况下也能有很好的鲁棒性.
代码
最新文章
- Linux文件管理命令笔记
- 从ord()中对Unicode编码的理解
- [原] wmic: Invalid XSL format (or) file name错误解决方法
- Intel VT-x 基本概念
- IN和EXISTS的详解
- swift 同步加载图片
- hdu 4946 Just a Joke(数学+物理)
- angular directive指令相互独立
- TcxDBVerticalGrid优秀的编辑控件
- UI2_UITextField
- NHibernate统一类封装代码
- kobox : key_wq.c -v1 如何使用工作队列 workqueue
- MySQL5.6新特性Index conditontion pushdow
- 人工智能技术实践篇:espeak开发环境调试
- AspNetCore中使用Ocelot之 IdentityServer4(1)
- mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
- iframe ios中h5页面 样式变大
- 更改TestStep的request header和获取TestStep的response header
- Map、Set、List区别
- 在ServiceModel客户端配置部分中,找不到引用协定“”的默认终结点元素
热门文章
- 巩固javaweb的第二十一天
- JavaScript中var与let的异同点
- vue开发多页面应用 - hash模式和history模式
- 【leetcode】1217. Minimum Cost to Move Chips to The Same Position
- android studio 生成aar和引用aar
- git删除了本地文件,从远程仓库中恢复
- 在调用系统相册时,UIIMagePickerController使用中偷换StatusBar颜色的问题
- Mybatis-运行原理
- zabbix之模板制作(memcache redis)
- @NotBlank 注解不生效