【2019年12月18日最新修改】
看完其他回答,我也来谈谈我对无监督或者自监督研究的看法。
大的方面来说,目前无监督(预)训练性能处于SOTA的有两大流派的方法。
一个是以“预测变换”作为自监督信号进行训练的模型,代表是Rotation Net (RotNet)[1] 和AutoEncoding Transformations (AET) [2,3]。
这类基于“变换”的自编码方法,可以看作是一种无监督的数据增强,不用依赖于被增强样本的标注,这样一方面扩大了可以做增强的样本范围,另外也增大了变换适用的范围:因为在无监督数据增强下,我们不需要关心变换后的样本是否会改变样本的语义标注,进而可以探索更大范围内的变换下,图像样本各种可能的增强。
除此之外,第二种达到SOTA性能就是以contrastive loss为代表的通过辨别不同instance来对实现自监督的训练。Momentum Contrast和其前身方法NCE[5]都是属于这类方法,最近提出的一些其他这里方法, 如contrastive Multiview coding。这类方法最早是收到ExamplarCNN [7]的启发,把每个样本看作是一个个独立的伪类别,用来无监督的训练网络。不同的是ExamplarCNN是直接训练一个最后一层FC来区分这些伪类,而基于contrastive loss的方法是把它看成一个retrieval by example的问题。
通过辨别Instance,进而实现无监督训练,可以看成是deep clustering方法的一种极端情况。即,可以每个样本看做是一个独立的clusters。从这点上来看,deep clustering通过辨别更精细的聚类结构,结合contrastive loss,也许有更大的性能空间可以挖掘,比如 local aggregation 这个工作就是在这方面的一种有益的探索。
这两类方法各有千秋,在公平的比较下(同样的网络、同样的数据集),各种都有互有胜负。不过后者,因为要辨别不同的instance,需要额外借助memory bank或者一个队列来存储过去的样本,而第一类的预测变换的方法则不需要。第一类方法也同时揭示了变换共变的性质,而且很容易扩展到半监督学习上[6],并取得了超越mean-teacher的性能,这些都使得它通过无监督数据增强在挖掘无标注数据上具有一定的优势。
值得注意的是,两类方法都用到了变换来做增强。对于第一类方法而言,如上所述,直接可以看作是无监督的数据增强。对第二类方法而言,包括Momentum Contrast,在从一组数据(如memory bank或者sequence)中retrieve一个特定样本是,query和数据库中的样本都是做过某种变换了,这个可以防止出现trivial 的样本retrieval,对无监督训练起到了核心和关键的作用。
这样看来,充分挖掘变换下样本特征的本质,进而实现无监督或有监督特征学习的最优化,是一个特征学习领域的一个重要方向。另外,如何把上述两类方法,在变换和instance 两个维度充分结合起来,实现两类方法的有机融合也是一个非常值得探讨的方向。
[1] Spyros Gidaris, Praveer Singh, Nikos Komodakis. Unsupervised Representation Learning by Predicting Image Rotations.
[2] Liheng Zhang, Guo-Jun Qi, Liqiang Wang, Jiebo Luo. AET vs. AED: Unsupervised Representation Learning by Auto-Encoding Transformations rather than Data, in Proceedings of IEEE Conference on Computer Vision and Pattern Recognition (CVPR 2019), Long Beach, CA, June 16th - June 20th, 2019.
[3] Feng Lin, Haohang Xu, Houqiang Li, Hongkai Xiong, and Guo-Jun Qi. AETv2: AutoEncoding Transformations for Self-Supervised Representation Learning by Minimizing Geodesic Distances in Lie Groups.
[4] Guo-Jun Qi, Liheng Zhang, Chang Wen Chen, Qi Tian. AVT: Unsupervised Learning of Transformation Equivariant Representations by Autoencoding Variational Transformations, in Proceedings of International Conference in Computer Vision (ICCV 2019), Seoul, Kore, Oct. 27 – Nov. 2, 2019.
[5] Zhirong Wu, Yuanjun Xiong, Stella Yu, and Dahua Lin. Unsupervised Feature Learning via Non-parametric instance discrimination.
[6] Guo-Jun Qi, Learning Generalized Transformation Equivariant Representations via Autoencoding Transformations [pdf]
[7] Alexey Dosovitskiy, Philipp Fischer, Jost Tobias Springenberg, Martin Riedmiller, Thomas Brox, Discriminative Unsupervised Feature Learning with Exemplar Convolutional Neural Networks [pdf]
(待续)
Update: 实现了一下Momentum Contrast和Instance Discrimination, 代码分享出来一并放在CMC的repo下面了, 感兴趣的可以戳这里.
我把文中很多地方提到的Kaiming改成了Kaiming及合作者,或者MoCo. Kaiming是主要作者,但credit应该是所有作者的.
============================
趁着作业写得痛苦的间隙,来分享个人一些小小的想法。
利益相关:Accuracy/Tradeoff图中的CMC (contrastive multiview coding) 是我们的工作, 很欣慰暂时还在Kaiming及合作者的曲线上面,代码有release.
Kaiming的很多工作总是一如既往地硬核,总是非常solid地在解决实际问题!超越supervised pretraining一直是我们做unsupervised的动力之一,很出色的成绩.
但罗马并不是一天就建成的.先介绍一些contrastive learning的背景吧,lecun2007的论文提出的contrastive 的想法(有可能还有更早的)是把positive match在一起,negative分开,不过他的办法是基于margin的(需要设置)
最近大家讨论更多的contrastive loss (包括kaiming及合作者的论文),据我所知,是NIPS 2016率先提出的k-pair loss, "Improved Deep Metric Learning with Multi-class N-pair Loss Objective", NIPS 2016,用在metric learning中:
(但这个k-pair loss很简单, 就是softmax + negative log likelihood, 相似的想法在我的学长Yi Sun的一些face recognition工作中也用到了, 虽然形式并不是完全一样. "Deep Learning Face Representation from Predicting 10,000 Classes" CVPR 2014, "Deep Learning Face Representation by Joint Identification-Verification" NIPS 2014.).
然后包括后来Tong Xiao他们的person re-id也用到了这个loss.但这个loss真正work的关键点就是你要sample很多negative,mini-batch很小又没有办法怎么办呢?Zhirong Wu和Yuanjun Xiong的instance discrimination非常机智地引入了memory bank机制,并且真正地把这个loss用到了unsupervised learning而且还把参数都调好了,可以说是这一波的开篇之作,非常赞.后来的CPC, CPC V2, AMDIM也都是用的这个k-pair contrastive loss来学特征,但更进一步地提出了数学上面的insight, 即是maximize mutual information.(我觉得CPC挺好的,但貌似这次他们的CPC V2投ICLR悲剧了,openreview说他们比cpcv1没有太多novelty,但问题是cpcv1也被拒了至今还没中,这还让不让人发表了:( )
总结起来,以上这些contrastive loss的工作(可能有遗漏,我这里主要梳理了重点的几篇), 包括凯明的工作,都可以理解成你有两个variable, 和 ,并且你有一堆从相应的联合分布采集的sample ,给定一个 , 现在从y这边去选择,对应的 就是正样本,不对应的 就是负样本.然后对每一个这样本,我们都配对N个负样本去学习一个softmax loss.
有了这么个框架,那么instance discrimination可以把 理解成当前的第i张图片的随机crop, 理解成过去epochs对第i张图片的smooth aggregation(或者第i张图片的另一个crop). CPC, CPCv2就可以把一个image patch理解成 , 把他的context理解成 .我们的CMC可以把一个modality,比如rgb, 理解成 ,另外一个modality,比如光流,理解成 .这个框架也启发我做了一个Knowledge Distillation的side project ("contrastive representation distillation"), 可以把teacher理解成 , 把student理解成 .同样的MoCo里面的两个encoder,也可以其中一个理解成 ,另外一个是 .关于怎么样选取x和y,我们的CMC论文里面有讨论,我们的猜测是应该有一个很有意思的sweet point,感兴趣的可以看看我们的论文.
所以有了这样的背景,就可以大概看出其中的key, query只是取的名字而已,本质只是x和y.并且大家之前已经explore很多了.我认为MoCo这篇最创新的地方,就是解决了一个非常重要但以前又没有思路的工程问题,就是怎么节省内存节省时间搞到大量的negative sample。之前的memory bank虽然机智,但是必须存下来整个数据集,空间开销O(N),所以处理不了Instagram级别的数据,这个问题困扰我很久而且我没找到有效策略,我试过跟MoCo一样用一个queue,也是存过去m个batch的sample,这个其实很容易想到,但我发现效果不好,问题就是我只有一个encoder,我没有像他一样在不断update这个encoder的同时保存一个它的历史smooth的版本。这点说透了后听起来就没那么复杂, 但在他们发现这点之前这个办法并不显然, kaiming在这些地方总是尤为厉害, 哎真的学不来。 (又跟同学学习了一下, 这个相似trick在Q-learning里面就很多被用到, 大家update Q-function的时候就是用类似的momentum去做的,看来是我学得太少)。以后有了MoCo这个momentum encoder机制,大家就又可以放开刷了, 应该可以跟其他方法互补。另外一个重大的贡献就是我觉得他系统性地研究了这样的pre-training在各种downstream task下面transfer的效果, 间接帮做自监督学习的人验证了目前的进展. 以前大家的自监督方法,比如旋转和上色, 都很难超过imagenet预训练的模型. 最近的Contrast方法确实work,但在前面pretraining这步训练就耗得半死, 大家都没有精力太去测各种task的transfer. 只能说羡慕FAIR.
MoCo的工作一出来,我心情挺复杂的.一来这篇因为作者们的名气会引起大家更多地关注unsupervised learning,更多人投入进来也能把这个领域做的更加出色.另外一方面可能自己辛苦搞了很久的工作又要被忽视了,其实我觉得如果完全公平地比较,CMC应该在imagenet比MoCo好,并且transfer也应该比MoCo好.不过遗憾的是我自己一个人拿着学校的4卡机器慢慢跑所有实验(此处要感谢学校同学有时候让出的资源),太累了,也没有精力去试试transfer.希望还是不要太快被淹没在历史的潮流里面 , ICCV被拒,这重投又似乎要被拒,太难了,kaiming他们这么一搞,以后有可能发不出去了.
最后关于以后可以做的,我个人还是觉得Multimodal representation learning是值得尝试的方向,并且相信老板对multiview的sense是对的.其实在cognition以及developmental psychology领域,大家都讨论了很多关于婴儿如何利用multimodal的redundancy去teach不同modal的neural system去学习的话题.另外一个关于contrastive loss的研究方向,我觉得还可以尝试新的采样的策略,我个人认为之所以从1百万到1亿的数据增加并没有带来太多的提高,也是因为负样本都是随机选取的,所以从1亿里面取的并没有更有信息量太多,可能这里需要结合聚类来做. 初步的探索已经包括: Local Aggregation of unsupervised learning of visual embeddings.