论文解读(LR2E)《Learning to Reweight Examples for Robust Deep Learning》

发布时间 2023-09-09 11:28:59作者: Wechat~Y466551

Note:[ wechat:Y466551 | 可加勿骚扰,付费咨询 ]

论文信息

论文标题:Learning to Reweight Examples for Robust Deep Learning
论文作者:Mengye Ren、Wenyuan Zeng、Bin Yang、Raquel Urtasun
论文来源:2021 
论文地址:download 
论文代码:download
视屏讲解:click

?1-介绍 

  动机:面对类不平衡和标签噪声等问题,之前是通过 正则化器 或者 示例重加权 算法解决,但是需要不断调整超参取得较好的效果。本文提出了基于元学习的算法,基于梯度方向调整权重。具体做法是需要保证获得一个足够干净的小样本数据集,每经过一轮小批量大小的训练就基于当前的权重,执行元梯度下降来最小化在这个干净无偏差的验证集上的损失。这个方法避免了额外的超参调整,在类不平衡和标签噪声问题上可以有很好的效果,仅需要的是一个很小数量的干净的验证集。

?2-介绍 

  对于标签噪声和类不平衡问题的方法存在相互矛盾的观点:

    • 在噪声标签问题中,更喜欢训练损失较小的例子,因为更可能是干净的数据;
    • 在类不平衡问题中,优先考虑训练损失较高的例子,因为更可能是少数类;

  在训练集既不平衡又有噪声的情况下,现有方法将产生错误的模型假设。事实上,如果没有对无偏测试集的适当定义,解决训练集偏差问题本质上是不定义的。由于该模型不能区分是非,更强的正则化通常可以在某些合成噪声设置中惊人地工作。在这里,本文认为,为了学习一般形式的训练集偏差是必要的,有必要有一个小的无偏验证来指导训练。实际上,构建一个有两部分的数据集并不罕见:一个是相对较小但标记非常准确,另一个是大量但粗糙的标记。

  注意:重加权样本的一个关键优势是对训练集偏差的鲁棒性。

?3-方法

?3.1 基本策略

  定义:设 $\Phi(x, \theta)$ 是神经网络模型,$\theta$ 是模型参数,损失函数 $C(\hat{y}, y)$ ,网络输出 $\hat{y}=\Phi(x, \theta)$;

  标准训练:目标是最小化训练集的预期损失:

    $\frac{1}{N} \sum_{i=1}^{N} C\left(\hat{y}_{i}, y_{i}\right)=\frac{1}{N} \sum_{i=1}^{N} f_{i}(\theta)$ 

  其中,每个输入示例的权重相等,$f_{i}(\theta)$ 代表与数据 $x_{i}$ 关联的损失函数;

  本文:目标是最小化加权损失:

    $\theta^{*}(w)=\arg \min _{\theta} \sum_{i=1}^{N} w_{i} f_{i}(\theta)$

  其中,$w_{i}$ 为超参数,代表每个样本损失的权重。

  $w$ 的最优选择是基于其验证集性能:

    $w^{*}=\underset{w, w \geq 0}{\text{arg min}} \; \frac{1}{M} \sum_{i=1}^{M} f_{i}^{v}\left(\theta^{*}(w)\right) $

  其中,$w_{i} \ge 0$,确保损失不为 负,避免训练不稳定;

?3.2 优化策略

  问题:计算最优的 $w_{i}$ 需要两个嵌套的循环,这导致计算成本代价高;

  目的:通过一个单一的优化循环来适应在线 $w$,减少成本;

  思路:对于每次训练迭代,我们在训练损失面局部检查一些训练实例的下降方向,并根据它们与验证损失面下降方向的相似性对其重新加权;

  小批量 SGD 优化:

    $\theta_{t+1}=\theta_{t}-\alpha \nabla\left(\frac{1}{n} \sum_{i=1}^{n} f_{i}\left(\theta_{t}\right)\right)$

  为了解 示列 $i$ 在步骤 $t$ 对验证集性能的影响,根据 Koh et al 分析,考虑对小批量中的每个样本 $i$ 的权重使用 $\epsilon_{i}$ 进行权重干扰:

    $\begin{array}{l}f_{i, \epsilon}(\theta) & =\epsilon_{i} f_{i}(\theta)\\ \hat{\theta}_{t+1}(\epsilon) & =\theta_{t}-\left.\alpha \nabla \sum_{i=1}^{n} f_{i, \epsilon}(\theta)\right|_{\theta=\theta_{t}}\end{array}$

  然后,可以在步骤 $t$ 步寻找使验证损失 $f^{v}$ 最小化的最优 $\epsilon^{*}$:

    $\epsilon_{t}^{*}= \underset{\epsilon}{\text{arg min}}  \frac{1}{M} \sum_{i=1}^{M} f_{i}^{v}\left(\theta_{t+1}(\epsilon)\right) $

  为在步骤 $t$ 得到一个 $w_{i}$ 的廉价估计数,本文在小批量验证集上采取一个单一的梯度下降步骤,得到一个非负的权重:

    $\begin{array}{l}u_{i, t} & =-\left.\eta \frac{\partial}{\partial \epsilon_{i, t}} \frac{1}{m} \sum_{j=1}^{m} f_{j}^{v}\left(\theta_{t+1}(\epsilon)\right)\right|_{\epsilon_{i, t}=0} \\\tilde{w}_{i, t} & =\max \left(u_{i, t}, 0\right) \end{array}$

  为了匹配原始的训练步长,对一个小批量中所有例子的权重进行归一化,使它们的总和为 $1$:

    $w_{i, t}=\frac{\tilde{w}_{i, t}}{\left(\sum_{j} \tilde{w}_{j, t}\right)+\delta\left(\sum_{j} \tilde{w}_{j, t}\right)}$

  其中,$\delta(\cdot)$ 是为了防止当一个小批中的所有 $w_{i}$ 都为零时的退化情况,即,如果 $a=0$,则 $\delta(a)=1$,否则等于 $0$。在没有批归一化步骤的情况下,算法可能会修改其对训练进度的有效学习率,而我们的一步展望在学习率的选择方面可能过于保守。此外,通过批处理归一化,能有效地消除了元学习率参数 $\eta$。

  例子:

    

  算法:

    

?4 实验

  略