思考无标注数据的可用极限

技术讨论 hello_uncle ⋅ 于 1周前 ⋅ 507 阅读

最近在做一些数据相关的研究,所以很自然会关注无标注数据是否可以被利用起来,能被利用的极限在哪里。这篇文章里,我对目前利用无标注/弱标注数据的工作进行一些回顾和总结,并且从我的角度对未来的工作方向做一些思考。

无标注数据主要有以下几种(看起来比较work的)利用方法:

1、标了它,让它不再是无标注数据,然后开始supervised learning;
2、半监督学习 —— 这要求在target domain上已经有一部分有标注数据,且无标注数据跟这部分数据是同源,且有相同label space;
3、弱监督学习 —— 主要分为noisy supervision和high-level supervision,或者是两者的融合。前者主要是标注质量不高,后者是指标签比较abstract。这样的数据既可能是标出来的,也可能是爬下来以后进行了一些自动化的清洗。
4、自监督学习 (self-supervised learning)—— 无监督学习的一种,单独拿出来是因为它看起来比无监督学习work一些。通常意义的unsupervised learning主要指聚类之类的无signal的representation learning,但self-supervised learning是有信号的,但这个信号来自于数据自己。怎么给则是人设计的,可以是“做完形填空”(denoise corrupted data, e.g. BERT),也可以是“玩拼图游戏” (jigsaw puzzle),或者是“填色”(colorization),等等。

另外,所有的这些,都可以用来训练一个强大的pre-training model,然后和transfer learning结合一下,在target task上再用有标注数据做训练,通常可以获得不错的结果(这也是目前CV和NLP的共同思路)。

我首先简短地谈一下方法1,也就是数据标注,这是大多数人不会去考虑的事,主要是因为涉及到比较高的人力成本;而且大家都是搞算法的,做数据集这个事的确离搞算法有一定的距离,所以不想碰。但是,前者实际上是可以通过技术手段克服的,我目前就在做相关的工作,我们利用机器和人的交互,是可以大大降低标注的成本,提高标注的质量的;后者的话,我只能说,深入理解数据集的性质和关系,可能是未来算法的一个新风潮:在model-centered research告一段乱之后,data-centered research可能会逐渐体现出它的本质性和重要性。标注相关的就不多说了,之后会再写一篇文章仔细谈谈。

回到无标注数据的问题。直接利用无标注数据来训练,最核心的想法就是创造出supervision signal —— loss是什么?只要能够构造出有效的supervision,还是可以挖掘出一些无标注数据的信息的。一般来说,我更愿意按照创造supervision signal的方法,把利用无标注数据的工作分成以下几种:

  1. pseudo-labeling [5][7][8]

  2. adversarial training [4]

  3. regularized augmented data (based on consistency)[2][3]

  4. denoising or restoring the corrupted data [10][12]

不同的方法,能够挖掘出的信号自然也不一样,适合的task也不一样。你可能会问我,那对于特定的数据集,特定的task,该怎么设计supervision signal (loss)呢?我只能告诉你,现在还没解决的很好,需要在各个task上的 domain expertise。这个很有意思,它意味着比如你要利用起人脸的无标注数据,你首先得是一个supervised learning训练高手(不说大师了),才能理解、设计出好的算法。具体来说,目前CV总体而言没有什么好的方法,而NLP中BERT的成功已经说明了denoising(完形填空)是个不错的方法,不过肯定也还有更好的。

其实我要说的所有内容到这里就结束了,剩下的是对每个细分领域的几个比较有代表性的工作回顾以下,并扣一下标题,看看它们的极限在哪里。谈极限,不仅仅是SOTA,而是从SOTA以及相关的工作入手,来看这个技术的优缺点以及长远发展。限于个人能力,其实每个方法谈的都不是很深入,重在想法,以及一些对未来的展望。


半监督学习 Semi-supervised learning (SSL)

这是一个大家相对比较熟悉的领域,一般的setting时,对于在同一个domain里, 有一些labeled data,还有一些(通常是很多)unlabeled data,他们往往有着相同的label space。然后我们要试图利用起这些数据来做训练,最终在同domain的某个test set上进行测试。它跟supervised learning唯一的区别就是我们有一堆同源unlabeled data可以利用。跟其他利用无标注数据的方法相比,它的特点可以总结为:同分布 (P(X)),同label (y)。

这个领域在近年来有重新流行的趋势,主要原因是因为一些新的SSL方法使得对无标注数据的利用更充分了,从而开始逼近乃至超越用了更多有标注数据的supervised learning的结果。

这些最新的工作创造supervision signal的想法非常多样,涵盖了前述的前三种方法。首先是adversarial training,它是由一篇叫Virtual Adversarial Training [4] (VAT)的文章提出的,一经提出就被疯狂魔改,之后已经发展出了各种性能更优良但本质想法一样的版本。VAT的主要想法是把adversarial training用到无标注数据上,怎么用呢?

如果采取与adversarial training一样的方法,目标函数是:file ,这里的 file

但是,注意到真实分布 file 是不可知的,而当有标注数据足够多的时候,output distributionfile可以近似它。这样的话, file 对有标注、无标注数据都可以计算,这里 file,也就是virtual adversarial perturbation。

一个关键的问题是如何去计算这个 file,文章里借助数值代数的知识给出了一个快速近似的方法。其实就是幂级数近似,但之后又被多次提升变得性能更高,这里就不多介绍了。

VAT是我非常喜欢的一个工作,所以笔墨多了一些。另外一种思路是去做augmentation,然后对augmented data基于某些consistency的假设加上loss(其实adversarial training也可以算作这一类)。主要有[2][3],这里可以谈谈比较典型的[2] Unsupervised Data Augmentation (UDA)。UDA最重要的就是把最新最强的增广方法AutoAugment [11] 给用了起来,即对数据做增广,然后要求增广后的数据与原数据prediction相同,loss如下:

file

从它文章的实验也可以看出,AutoAugment是它性能提升的本质原因。

再看pseudo-label的思路。最近的一篇文章 Billion-scale semi-supervised learning for image classification [5]在这个思路的基础上做了一次scale上的尝试。他们的主要想法跟之前的data distillation [6]有点类似,就是先用有标注数据训练一个模型A,用A在无标注数据上做predict,得到pseudo-labeled dataset,再用它pre-training模型B,最后再把B在有标注数据上fine-tune。只是其无标注的数据集非常大,是billion-scale的,当然最终的performance也是非常的好。

file
▲SSL希望达到的图景

现在我们来谈谈这个领域的问题。首先,这个领域的特点也是它的局限:很难处理非同源数据集,甚至label space的小变动都会带来比较大的performance degradation[1]。但我们知道,多数实际的应用场景里,第一很难知道label space,第二总是存在domain shift的,这导致了SSL算法很难直接在实际场景中实用。其次,文章[1]指出,在很多情况下,不用unlabled data,仅仅在有标注数据上做transfer learning就已经可以outperform所有半监督的算法了,这似乎也让SSL的光芒有所减弱。


弱监督学习

弱监督学习是个old idea,但近年来它的重新兴起来源于Kaiming的一篇文章 Exploring the limits of weakly supervised pretraining [7]。文中,作者从Instagram上爬取了大量数据,然后选取了各种hashtag作为标签来训练模型(可以认为是一种pseudo-label,或者noisy label),学到的representation再去在target task fine-tune,成功在ImageNet上top-1 acc到了85.4%,COCO上的AP到了45.2%,实现全面涨点。

这次实践说明了弱监督是work的(至少在classification和detection上),给大家带来了希望,也inspire了很多相关的工作。

事实上,弱监督不仅仅是noisy supervision,还有另一个分支叫high-level supervision,即用比较抽象的,或者high-level的信息来做监督。比如,下图中的几种监督信号,都可以用来训练instance segmentation,但是不同的监督强度需要的数据量肯定不同,可能达到的效果不同。(一个比较有意思的研究是,给定相同的annotation budget,哪种监督方式是更有效的?)

file

关于弱监督学习,我个人觉得它是很有前景的。只是在有些领域,可能没法找到弱监督信号,比如人脸识别问题,这限制了它的应用范围。它还存在着另外一些问题,我会放到文末一起说。


自监督学习

自监督学习也是个old idea,但GPT-2 [12]和BERT[9]在NLP上的全面成功让这一类方法得到了重视,现在Google和Facebook是self-supervised learning的中坚力量,在NLP的成功之后,大家都希望在视觉领域建立起下一个BERT。

自监督学习的本质就是围绕如何在完全没有有标注数据时 如何建立supervision signal的。在NLP上,目前最成功的方法就是denoising corrupted data,在最新的NLP transfer learning工作T5 [13]中,作者对各种unsupervised objective做了调研,发现目前最work的还是denoising。虽然这方面的研究依然会继续,但鉴于已经取得的巨大成功,我估计NLP方面短时间内更多人的注意力还是会放在transfer learning相关上。

在图像领域,self-supervised learning就没那么work了。目前看似比较work的方法只有jigsaw puzzle和colorization(用灰度图预测有色图),还有人试图把BERT的想法迁移到CV上来[15],但[14]给目前的self-supervised learning工作泼了盆冷水:在classification等问题上,self-supervised learning离supervised learning还有很大距离。文中的分析是self-supervised learning目前还只能extract low-level semantic information(所以在surface normal等问题上已经超越了supervised learning)。另一方面,在视频领域,由于帧与帧之间可以插值,很容易找到天然的supervision信号,相对来说就更work一些,也有不少应用的工作,我这里不多说了。

一个很美好的想法是,我们能不能自动地学出如何建立一个好的unsupervised objective(文章标题可以叫:learning to create supervision signal for unlabeled data),我对目前状况的理解是:还没到这个时候。因为我们对问题本身的理解还太浅了,至少还需要一到两年,才会有相应的工作出现。(要是我能继续在这个领域做下去,说不定……)


简单谈谈迁移学习

虽然不是直接利用起无标注数据,但可以大大减少有标注数据的利用。是目前为止ML中少有的几个经历了时间考验,(似乎)真正work的idea。加个“似乎”,是因为很多时候training from scratch可能一样奏效[16]。最近的T5 [13] 可以说是NLP里transfer learning的一个milestone了,而视觉领域ImageNet pre-training早就几乎是一个default选项。

迁移学习的发展让我们产生一种未来对数据的需求会变得越来越少的感觉。所以有人提出,我们应该去build更大、更高质量的公开数据集用来做pre-training(类似ImageNet++的感觉)[17]。但是,从很多large-scale的工作[7][17]可以看出,large-scale classification-level pre-training的gain是随着数据集的增大exponentially dimish的。换句话说,收集很大量的pre-training数据可能margin并不大,相反我们应该去更多的收集target domain的数据 [16]。

总之,未来迁移学习会变得很重要,人们应该也会越来越重视target task上数据的搜集(各家大厂的壁垒会越来越高)。


无标注数据存在的问题

最后,我想花点时间谈一谈in general, 无标注数据存在的一些问题。

最本质的一点,就是对无标注数据的控制非常困难,这种控制包括了bias, style, qualitydistribution等等characteristics。而需求是千变万化的,这也意味着我们必须对数据集有比较强的控制能力才能掌握话语权。这导致了在实际应用中的不稳定和不可靠,因此工业界目前还很少有拿无标注数据来训练、落地的。这跟academia中定义清晰、很多年都一直不变的学术benchmark非常不同。另外,像之前说的,很多时候无标注数据并不是所谓的"unlimited",可靠的无标注数据一样很少,弱标注数据甚至就不存在。

从这个角度看,有标注数据肯定还是未来比较长时间里的主旋律,毕竟目前来看,一个有标注数据集就定义了一个benchmark/task。同时,标出了一份数据,就是一份重要的信息量,它是不随模型、算法的更新换代而改变的。

但不管怎样,无标注数据的研究的确是非常interesting,总能够吸引大家的目光,而且从学术趋势来看,未来几年,应该会迎来相关研究的一个小井喷期。大家也赶紧动手吧!

[1] Realistic Evaluation of Deep Semi-Supervised Learning Algorithms

[2] Unsupervised Data Augmentation for Consistency Training

[3] MixMatch: A Holistic Approach to Semi-Supervised Learning

[4]Virtual Adversarial Training: A Regularization Method for Supervised and Semi-Supervised Learning

[5] Billion-scale semi-supervised learning for image classification

[6] Data Distillation: Towards Omni-Supervised Learning

[7] Exploring the limits of weakly supervised pretraining

[8] Automatic labeling of data for transfer learning

[9] BERT: pre-training of deep bidirectional transformers for language understanding

[10] Scaling and benchmarking self-supervised visual representation learning

[11] AutoAugment: Learning Augmentation Policies from Data

[12]Language Models are Unsupervised Multitask Learners

[13] Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer

[14] Scaling and Benchmarking Self-Supervised Visual Representation Learning

[15] Selfie: Self-supervised Pretraining for Image Embedding

[16] Rethinking ImageNet Pre-training

[17] Revisiting unreasonable effectiveness of data in deep learning era


作者:Andre
来源:Dive Deep @ 知乎专栏


推荐阅读:
让机器 “一叶知秋”:弱监督视觉语义分割
NIPS 2018 入选论文:对深度半监督学习算法的现实评价
ECCV18 | 无监督难分样本挖掘改进目标检测

file
△ 关注极市平台
获得最新CV干货

大叔

成为第一个点赞的人吧 :bowtie:
回复数量: 0
暂无回复~
您需要登陆以后才能留下评论!