Learning to Reweight Examples for Robust Deep Learning

一、总结

用meta learning做的可解释性学习,很不错

二、翻译

abstract

深度神经网络已被证明是非常强大的建模工具,为许多监督学习任务涉及复杂的输入模式。然而,它们也可以很容易地过度适应训练集的偏差和标签噪声。除了各种正则化器外,示例重加权算法是解决这些问题的流行解决方案,但它们需要仔细调整额外的超参数,例如挖掘计划(mining schedule)和正则化超参数。与过去的重加权方法不同,过去的重加权通常由每个例子的成本值的函数(cost function)组成,在本工作中,我们提出了一种新的元学习算法,学习基于梯度方向为训练样本分配权重。为了确定示例权值,我们的方法对当前的mini-batch样本权值(从零初始化)执行一个元梯度下降步骤,以最小化一个干净的无偏验证集上的损失。我们提出的方法可以很容易地在任何类型的深度网络上实现,不需要任何额外的超参数微调,并且在只有少量干净验证数据的类不平衡和标签损坏问题上实现了令人印象深刻的性能。

introduction

深度神经网络(DNNs)由于其建模复杂输入模式的强大能力,已被广泛应用于机器学习应用。尽管它们成功了,但已经表明dnn容易产生训练集偏差,即训练集的分布p(x,y)p(x,y)p(x,y),不同于验证集的分布p(xv、yv)p(x^v、y^v)p(xv、yv)。这种分布不匹配可能有许多不同的形式。训练集中的类不平衡就是一个非常常见的例子。在自动驾驶中的物体检测等应用中,绝大多数训练数据都由标准车辆组成,但模型也需要非常高精度地识别罕见的类别,如紧急车辆或动物。这有时会导致有偏移的训练模型在实践中表现不佳。
另一种流行的训练集偏差类型是标签噪声。为了训练一个合理的监督深度模型,我们在理想情况下,需要一个具有高质量标签的大数据集,这需要许多昂贵的人类质量保证(QA)。虽然粗标签便宜且可用性高,但噪声的存在会损害模型的性能。张等人已经表明,一个标准的CNN可以在训练集中拟合任何比例的标签翻转噪声,并最终导致较差的泛化性能。
训练集的偏差和错误规范有时可以通过数据集重采样来解决。选择正确比例的标签去训练一个网络,或者更一般地说,通过为每个样本设定一个权重然后最小化加权后的损失。示例权重通常是基于训练损失计算的,如许多经典算法,如AdaBoost、硬负挖掘、自节奏学习(self-paced learning)和其他近期工作。
然而,在基于训练损失的训练方法中,存在着两种相互矛盾的观点。在噪声标签问题中,我们更喜欢训练损失较小的例子,因为它们更有可能是干净的图像;然而,在类不平衡问题中,如硬负挖掘的算法优先考虑训练损失较高的例子,因为它们更有可能是少数类。在训练集既不平衡又有噪声的情况下,这些现有的方法会有错误的模型假设。事实上,如果没有对无偏测试集的正确定义,解决训练集偏差问题本质上是不能正确定义的。由于模型不能区分是非,更强的正则化通常可以在某些合成噪声设置下效果很好。在这里,我们认为,为了学习一般形式的训练集偏差,有必要有一个小的无偏验证来指导训练。实际上,构建一个带有两部分的数据集并不罕见——一个相对较小但标记非常准确,另一个是大量但标记粗糙。粗糙的标签可以来自廉价的众包服务或弱监督的数据。
与现有的基于训练损失的方法不同,我们遵循一个元学习范式,而建模最基本的假设:最佳样本加权应该尽量减少一组无偏干净验证样本的损失。传统上,验证是在训练结束时执行的,如果我们将样本权值视为一些超参数来优化,这可能会非常昂贵;为了规避这一点,我们在每次训练迭代中执行验证,以动态确定当前批的样本权重。为了实现这个目标,我们提出了一种在线重加权方法,该方法利用一个额外的小验证集,并自适应地为每次迭代中的例子分配重要性权重。我们对类不平衡和标签损坏问题进行了实验,发现我们的方法显著提高了对训练集偏差的鲁棒性。

Learning to Reweight Examples

在本节中,我们从一个元学习目标中推导出我们的模型,转到一个在线近似,可以适应任何常规的监督训练。我们给出了一个适用于任何深度网络类型的实际实现,并提供了算法收敛速度为O(1ϵ)O(\frac{1}{\epsilon})O(ϵ1​)的理论保证。请注意,这与随机梯度下降(SGD)相同。

From a meta-learning objective to an online approximation

(x,y)(x,y)(x,y)是输入对,{(xi,yi),1≤i≤N}\{(x_i,y_i),1\leq i\leq N\}{(xi​,yi​),1≤i≤N}是训练集。我们假设有一个小的无偏和干净的验证集{(xiv,yvi),1≤i≤M}\{(x_i^v,y^i_v),1\leq i \leq M\}{(xiv​,yvi​),1≤i≤M}和M≪NM\ll NM≪N。此后,我们将使用上标v表示验证集,下标i表示第i个数据。我们假设训练集包含验证集;否则,我们总是可以将这个小的验证集添加到训练集中,并在训练期间利用更多的信息。
设Φ(x,θ)\Phi (x,\theta)Φ(x,θ)为我们的神经网络模型,θ\thetaθ为模型参数。我们考虑一个损失函数C(y^,y)C(\hat y,y)C(y^​,y)在训练过程中最小化,其中y^=Φ(x,θ)\hat y=\Phi(x,\theta)y^​=Φ(x,θ)。
在标准训练中,我们的目标是将训练集的预期损失最小化:1N∑i=1NC(y^i,yi)=1N∑i=1Nfi(θ)\frac{1}{N}\sum_{i=1}^NC(\hat y_i,y_i)=\frac{1}{N}\sum_{i=1}^Nf_i(\theta)N1​∑i=1N​C(y^​i​,yi​)=N1​∑i=1N​fi​(θ),其中每个输入例子的权重相同,fi(θ)f_i(\theta)fi​(θ)代表与数据xix_ixi​相关的损失函数。在这里,我们的目标是学习输入的重新加权。我们最小化加权损失θ∗(w)=arg min⁡θ∑i=1Nwifi(θ)\theta^{*}(w)=\argmin_\theta\sum_{i=1}^Nw_if_i(\theta)θ∗(w)=θargmin​i=1∑N​wi​fi​(θ)wiw_iwi​在开始时未知。请注意,{wi}i=1N\{w_i\}_{i=1}^N{wi​}i=1N​可以理解为训练超参数,w是基于其验证性能的最佳选择:w∗=arg min⁡w,w>01M∑i=1Mfiv(θ∗(w))w^{*}=\argmin_{w,w>0}\frac{1}{M}\sum_{i=1}^Mf_i^v(\theta^{*}(w))w∗=w,w>0argmin​M1​i=1∑M​fiv​(θ∗(w))对于所有的i,都需要wi≥0w_i\geq0wi​≥0,因为最小化负训练损失通常会导致不稳定的行为。

Online approximation

计算最优wiw_iwi​需要两个嵌套的优化循环,而每个循环都可能非常昂贵。我们的方法的动机是通过一个优化循环来适应在线w。对于每一次训练迭代,我们在训练损失表面局部检查一些训练实例的下降方向,并根据它们与验证损失表面下降方向的相似性对它们进行重加权。
对于大多数深度神经网络的训练,SGD或其变体被用来优化这种损失函数。在训练的每一步t中,采样一小批训练示例{(xi,yi),1≤i≤n}\{(x_i,y_i),1\leq i\leq n\}{(xi​,yi​),1≤i≤n},其中n为batch size,n≪Nn\ll Nn≪N,然后根据mini-batch上预期损失的下降方向对参数进行调整。让我们考虑原始的SGD:θt+1=θ−▽(1N∑i=1Nfi(θt))\theta_{t+1}=\theta-\bigtriangledown(\frac{1}{N}\sum_{i=1}^Nf_i(\theta_t))θt+1​=θ−▽(N1​i=1∑N​fi​(θt​))
我们想了解训练样本i在训练步骤t时对验证集的性能有什么影响。根据与Koh&Liang(2017)类似的分析,我们考虑给mini-batch中每个训练样本的增加扰动加权ϵi\epsilon_iϵi​,fi,ϵ=ϵifi(θ),θ^t+1(ϵ)=θt−▽∑i=1nfi,ϵ(θ)∣θ=θtf_{i,\epsilon}=\epsilon_if_i(\theta),\hat\theta_{t+1}(\epsilon)=\theta_t-\bigtriangledown\sum_{i=1}^nf_{i,\epsilon}(\theta)|_{\theta=\theta_t}fi,ϵ​=ϵi​fi​(θ),θ^t+1​(ϵ)=θt​−▽∑i=1n​fi,ϵ​(θ)∣θ=θt​​
然后我们可以寻找最优的ϵi\epsilon_iϵi​,在步骤t中减少验证损失fvf^vfv:ϵt∗=arg min⁡ϵ1M∑i=1Mfiv(θt+1(ϵ))\epsilon^{*}_t=\argmin_\epsilon\frac{1}{M}\sum_{i=1}^Mf_i^v(\theta_{t+1}(\epsilon))ϵt∗​=ϵargmin​M1​i=1∑M​fiv​(θt+1​(ϵ))不幸的是,这仍然可能相当耗时。为了在步骤t处得到wiw_iwi​的廉价估计,我们在一小批验证样本上采取了一个单一的梯度下降步骤。然后校正输出,得到一个非负的权重:ui,t=−η∂∂ϵi,t1m∑j=1mfjv(θt+1(ϵ))∣ϵi,t=0u_{i,t}=-\eta\frac{\partial}{\partial \epsilon_{i,t}}\frac{1}{m}\sum_{j=1}^mf_j^v(\theta_{t+1}(\epsilon))|_{\epsilon_{i,t}=0}ui,t​=−η∂ϵi,t​∂​m1​j=1∑m​fjv​(θt+1​(ϵ))∣ϵi,t​=0​w~i,t=max⁡(ui,t,0)\widetilde{w}_{i,t}=\max(u_{i,t},0)wi,t​=max(ui,t​,0)为了匹配原始的训练步长,在实践中,我们可以考虑将训练批中所有实例的权重归一化,以便它们的总和为一个。换句话说,我们选择在集合{w:∥w∥1=1}∪{0}\{w:\|w\|_1=1\}∪\{0\}{w:∥w∥1​=1}∪{0}内有一个硬约束wi,t=w~i,t∑jw~j,t+δ∑jw~j,tw_{i,t}=\frac{\widetilde w_{i,t}}{\sum_j\widetilde w_{j,t}+\delta\sum_j\widetilde w_{j,t}}wi,t​=∑j​wj,t​+δ∑j​wj,t​wi,t​​其中,δ(⋅)\delta(\cdot)δ(⋅)是为了防止当一个mini batch中的所有wiw_iwi​都为零时的退化情况,即。如果a=为0,则δ(a)\delta(a)δ(a)为1,否则等于0。如果没有批归一化步骤,该算法可能会修改其对训练进度的有效学习率,而我们的一步展望在学习率的选择方面可能过于保守(Wuetal.,2018)。此外,通过批处理归一化,我们有效地取消了元学习率参数η\etaη。

Learning to Reweight Examples for Robust Deep Learning相关推荐

  1. 浅层学习(shallow learning) 与深度学习(deep learning ) 的不同

    主要参考文献:http://blog.csdn.net/zouxy09/article/details/8775360(从一到八):http://www.csdn.net/article/2013-0 ...

  2. 深度学习经典论文deep learning!入门必读!:deep learning yann lecun 深度学习

    深度学习 YannLeCun, Yoshua Bengio & Geoffrey Hinton 深度学习能够让多层处理层组成的计算模型学习多级抽象的数据的表达.这些方法极大地提高了语音识别,视 ...

  3. 人工智能(Artificial Intelligence-AI)、机器学习(Machine Learning)、深度学习(Deep Learning)之间区别

    2020年,不论你是否主动关注AI,机器学习,深度学习还是数据科学,但在媒体的无限吹捧中一定有所耳闻.此处为在Google trend中搜索这些关键字,可见火爆程度逐年增加. 一.人工智能的概念提出到 ...

  4. Towards Deep Learning Models Resistant to Adversarial Attacks(PGD adversarial training)

    目录 Introduction 内容简介 An Optimization View on Adversarial Robustness 内容介绍 Towards Universally Robust ...

  5. PGD_Towards deep learning models resistant to adversarial attacks_CSDN

    Towards Deep Learning Models Resistant to Adversarial Attacks Towards Deep Learning Models Resistant ...

  6. (zhuan) Where can I start with Deep Learning?

    Where can I start with Deep Learning? By Rotek Song, Deep Reinforcement Learning/Robotics/Computer V ...

  7. Deep Learning(深度学习)学习笔记整理系列

    一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫游一样,是人类最美好的梦想之一.虽然计算机技术已经取得了长足的进步,但是到目前为止,还没有一台电脑能产生& ...

  8. Deep Learning for Computer Vision with Caffe and cuDNN

    转载自:Deep Learning for Computer Vision with Caffe and cuDNN | Parallel Forall http://devblogs.nvidia. ...

  9. 吴恩达深度学习1.2练习_Neural Networks and Deep Learning

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_42432468 学习心得: 1.每周的视频课程看一到两遍 2.做笔记 3.做每周的作业 ...

  10. 机器学习(Machine Learning)深度学习(Deep Learning)资料(Chapter 2)

    机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2) - tony的专栏 - 博客频道 - CSDN.NET 注:机器学习资料篇目一共 ...

最新文章

  1. 详解 Mysql LEFT JOIN和JOIN查询区别及原理
  2. 详解Makefile 函数的语法与使用
  3. Linux命令 —— 输出一组系统信息(uname -a)
  4. 初学Java Web(5)——cookie-session学习
  5. 用户关联角色操作-流程分析
  6. Photoshop图层学习总结
  7. 产品设计体会(2011)网络推广实战
  8. 怎样计算一个整数的位数并把每一位上的数字保存下来
  9. Git仓库完整迁移,包括分支和标签和日志
  10. html5好看表格样式,CSS实现的清爽、漂亮的表格样式分享
  11. vue js 前端实现PDF文件下载的三种方式 解决vue下载pdf文件打开文件后空白
  12. 国内自动化、计算机部分期刊排名
  13. 教你搭建个人/企业私有云盘-seafile
  14. 速看!deep learning(rnn、cnn)调参的经验
  15. 给科研背景出身公司创始人的九条干货建议
  16. 手机pptv如何切换视频和音频
  17. Idea中使用maven打包出现Cleaning up unclosed ZipFile for archive?
  18. 数据库 视图基础概念
  19. 【魔方攻略】三阶魔方教程之关键步骤(原创)
  20. sqlmap蜜罐原理与实现

热门文章

  1. 树莓派CM4和CM4IO上手
  2. C语言数字转扑克牌字符,C语言编程:扑克牌魔术
  3. java 多线程抢票_多线程抢票详解
  4. go 学习笔记之10 分钟简要理解 go 语言闭包技术
  5. python 学习笔记之手把手讲解如何使用原生的 urllib 发送网络请求
  6. js 深浅拷贝的整理
  7. Python批量删除docx文档中所有页眉和页脚
  8. Arcgis使用教程(十)ARCGIS地图制图之颜色样式选择设计与保存
  9. 7-2 列出叶结点 (俺没有测试样例,别想了)
  10. 用户管理和数据库安全(一)