深度学习·神经网络·计算机视觉神经网络与深度学习深度学习-推荐系统-CV-NLP

论文 | NeurIPS2019 Meta-Weight-Net

2021-12-08  本文已影响0人  与阳光共进早餐

一 写在前面

未经允许,不得转载,谢谢~~~

今天这篇paper是NeurIPS2019的一篇paper,虽然时间有点久了,但是看完paper还是有觉得值得借鉴的地方,还是简单记录一下📝。

二 主要内容

2.1 backgrounds

deep learning容易对biased data产生过拟合的现象。

这里作者重点归纳了两种biased data情况:

  1. noisy data 标签有噪声数据
  2. long-tail data 长尾分布数据

这种过拟合自然会导致模型的生成泛化能力受到影响,而为了解决这个问题的一个思路就是进行sample reweighting,也就是对不同的样本设置不同的权重。 那reweighting的方法本质要学习的就是从不同样本到权重之间的映射关系,然后通过最小化加权之后的损失函数来优化模型参数。

2.2 related work

目前主要的sample reweighting方法可以分为两大类:

  1. 以focal loss为代表:
  1. 以SPL为代表:

下图以focal loss和SPL为例,直观给出了两类方法的差别,focal loss递增,SPL递减。


2.3 motivation

作者首先总结了现有方法的两大缺点:
1) 在现实无法预知data具体分布(long-tail还是noisy)的情况下,不知道要选递增型还是递减型。更何况,现实中可能出现的是long-tail并且noisy的数据分布;
2) 不管是哪一类方法,都需要超参数。

针对以上两点,该文的motivation就是能否设计一个自适应的且不需要超参数的reweighting方法,即找到一种从loss到weight的映射关系。

三 文章方法 Meta-Weighting-Net (MW-Net)

3.1 key idea

为了提出这样一个自适应的且不需要超参数的reweighting方法,文章的主要想法是用MLP来充当weight fucntion的作用,即让MLP自动学习从loss到weight之间的映射关系。然后用unbiased meta data来引导MLP的参数学习。

如下图所示,文章确实可以做到可以同时处理不同分布的数据(long-tail/noisy)。


3.2 具体方法

记整个分类网络为f(), 用于预测样本loss权重的MLP网络为\theta(), 网络的整体训练过程如下图:

可以重点关注箭头的颜色,红色的表示的是meta-weight-net的参数更新过程,而黑色的表示的整体分类网络的参数更新过程。对于时间t而言,最重要的几个步骤如下:

1) 对于分类网络f的参数w, 用从训练集中采出的minibatch data进行网络参数的更新,得到\hat w, 注意这里是暂时更新的\hat w,并没有替换原来f的参数w,可以理解为是一个临时变量。(图中step5)
2) 对于MLP网络为\theta(),用当前的\hat w预测得到的loss作为MLP网络的输入,得到输出的loss weights,用meta-dataset构建出来的minibatch data更新参数\theta, 得到t+1时刻的\theta,替换原来\theta()中的网络参数。(图中step6)
3) 用t+1时刻的\theta()和t时刻的w, 再次用训练集中采出的minibatch data进行网络参数的更新,得到w,这次的w才真正作为t+1时刻的w, 替换原来f()中的网络参数。(图中step7)

具体的公式可能看起来稍微有点复杂,但其实就是SGD在mini-batch上的优化。

最终的伪代码如下所示:

四 写在最后

整个思路还是比较巧妙的,而且之前的实验结果图也确实验证了方法能对不同分布的数据都有效。

目前还存在两点问题:
1) meta-dataset具体什么怎么构造的,为什么在更新MLP的时候不能用正常的mini-batch,而要用meta-dataset;
2) 参数更新为什么一定要分3步,直接a)更新w;2)更新\theta是不可以的吗

太细节的地方可能没有get到,欢迎知道的小伙伴多多交流。

上一篇下一篇

猜你喜欢

热点阅读