解锁竞赛新姿势-伪标签技术

2020-07-06 16:17:57 浏览数 (1)

1 简介

伪标签技术现在几乎在所有的Kaggle数据竞赛中都会被提到或者使用到,而且很多情况下都可以帮助选手拿到更好的分数,伪标签技术作为一种半监督的方法,其实在很久之前就已经被提出来使用了,那么为什么伪标签技术究竟是怎么做的呢?为什么有效呢?什么时候有效,什么时候可能无效?阅读本文,帮你更好地理解这种神奇的操作。

1.1 三种伪标签操作

关于伪标签的使用,从kaggle赛后的讨论,或者从kaggle GM的分享中,我们发现当训练集的数据不是非常多的时候,使用能带来不错的提升;当数据集比较多的时候,有时候也会有帮助,但提升并不会非常明显,那么该操作是怎么做的呢?

1.1.1 基础版

  1. 使用有标签的数据集训练得到自己最好的模型(可以是单个也可以是多个),然后对测试集进行预测;
  2. 筛选出测试集合中的高概率的预测样本(例如二分类中,我们选出预测概率大于0.99的样本,并标注为1);
  3. 将伪标签样本加入模型一起训练,然后预测提交。

上述这种操作,一般效果不会比直接使用有标签的样本训练效果差,所以早期大家也都是这么用的。

1.1.2 升级版

上面的操作,有一个升级版本,迭代版本。基本的操作是类似的,就是会迭代多轮。

  1. 使用有标签的数据集训练得到自己最好的模型(可以是单个也可以是多个),然后对测试集进行预测;
  2. 筛选出测试集合中的高概率的预测样本(例如二分类中,我们选出预测概率大于0.99的样本,并标注为1);
  3. 将伪标签样本加入模型一起训练再得到自己最好的模型,然后对测试集进行预测,再回到步骤2.

这个操作,如果有效的话,第一轮和第二轮还是较为明显的,但是一般第三轮之后效果就变化不大了(参考kaggle GM在kaggle Days上的分享),在某些特定情况下,该操作带来的提升相较于第一版还是挺明显的。

1.1.3 微调版本¶

上面两个版本大多数情况下效果不错,但也有一个问题,就是大家实践中会发现,每次筛选样本的时候,概率阈值较难定,而且影响很大,那么怎么办呢?此处我们再讲述一个微调版本。

  1. 使用有标签的数据集训练得到自己最好的模型(可以是单个也可以是多个),然后对测试集进行预测;
  2. 不再做筛选,我们把所有预测的样本拿过来,重新训练,训练的时候,我们将loss修改为:loss(训练集合) a * loss(伪标签集合);
  3. 微调a,提交测试。

这种方法在神经网络的模型中经常使用,而且大量实践中也都取得了不错的效果。

1.2 伪标签技术为什么有效?

1.2.1 Chris的解释

很多人很好奇,为什么伪标签技术是有效的,Chris有一篇关于伪标签为什么有效的解释,

With more points, QDA can better estimate the center and shape of each ellipsoid (and consequently make better preditions afterward).Pseudo labeling helps all types of models because all models can be visualized as finding shapes of target=1 and target=0 in p-dimensional space. See here for examples. More points allow for better estimation of shapes.

好奇的可以去参考他的notebook。

1.2.2 如果不是非常明白,我们看一下论文的解释

伪标签技术是一种半监督的方法,那么半监督学习是希望用无标签的数据来提升模型的泛化性能,而cluster assumption中说,如果我们的决策边界在低密度(low-density)区域的时候,我们就可以提升模型的泛化性能。伪标签技术和entropy 正则非常相似。熵正则化(Grandvalet和Bengio,2005)是另一种半监督学习技术,它鼓励分类器对未标记的数据进行自信预测。例如,我们希望一个未标记的点被分配到一个特定类中的高概率,而不是分散在多个类中的概率。其目的是利用数据按类聚类的假设(在半监督学习中称为“聚类假设”)。因此,邻近点具有相同的类,不同类中的点之间的距离更大,使得真正的决策边界穿过输入空间的低密度区域

可视化

  • 未加入伪标签
  • 加入伪标签

从上面两张图看来,伪标签可以使得我们的获得更好的泛化效果。

1.2.3 如果还是不明白...

我们把a设置为0,那么微调版本就是我们原始的问题,也就是说优化原来的问题使我们伪标签技术的一个特例,再换句话说,我们微调版本的最优解包含了原来监督版本的最优解,所以伪标签技术是大概率会有效。

1.3 何时伪标签技术有奇效,何时无效?

1.3.1 伪标签技术何时有效?

从作者的实验中,我们发现,当我们的数据样本相对较少的时候,那么我们的伪标签技术带来的提升是非常大的,当我们的数据足够多的时候,伪标签技术能带来的提升相对有限。作者在论文中,使用100张图片训练可以拿到1.5%左右的提升,600张图片可以拿到0.15%的提升,因为600张图片差不多就可以refine得到我们的结构。

1.3.2 伪标签什么时候会失效?

从论文中,我们发现100张图片可以带来很大的提升,但是也极其不稳定,也就是说伪标签对于初始的预测是十分敏感的,所以如果我们的初始预测很差的时候(例如我们的训练样本极少(例如5,6个样本),预测很差的情况,那么伪标签技术很大概率会失效。

2 参考资料

  1. Chris:https://www.kaggle.com/cdeotte/pseudo-labeling-qda-0-969
  2. Grandvalet and Bengio (2005). Semi-supervised learning by entropy minimization.
  3. Lee (2013). Pseudo-Label: The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks.
  4. Oliver et al. (2018). Realistic Evaluation of Semi-Supervised Learning Algorithms.
  5. Why does using pseudo-labeling non-trivially affect the results?:https://stats.stackexchange.com/questions/364584/why-does-using-pseudo-labeling-non-trivially-affect-the-results
  6. 伪标签(Pseudo-Labelling)介绍:一种半监督机器学习技术:http://www.atyun.com/8381.html
  7. 伪标签半监督学习:https://www.jianshu.com/p/fd4cae0d0e85

0 人点赞