如何评价Kaiming He的Momentum Contrast for Unsupervised?

作者:168社区 2019-11-16 浏览:540
导读: https://arxiv.org/pdf/1911.05722.pdf-----------以下......
https://arxiv.org/pdf/1911.05722.pdf

-----------以下是答案----------

--回答1--

一些不成熟的浅见:

主体提取 key/query feature 并选择合适的损失函数训练的模式算是 representation learning 中很常用的方法,在人脸等领域其实也在广泛使用,但是似乎很少看到在 key 和 query 上用不同 feature extractor 的,从论文看 momentum encoder 似乎至关重要。选择 key/query pair 上用了林达华老师组的 《Unsupervised Feature Learning via Non-Parametric Instance Discrimination》 的想法,算是 instance discrimination 的进一步挖掘,或许这才是这篇论文的起点。Shuffling BN 应该是个大坑,不懂多少实验砸进去才得到这个技巧。性能提升上 Detection 同规模数据不是很明显,但是对 keypoints/densepose 提升显著,大概是因为 imagenet features 的分类能力对 detection 帮助很大,但是对其他任务不一定是最合适的。不过堆上工业级数据(Instagram)就可以超过Imagenet了。可能过几年回头看,这篇文章是真正开启 post-Imagenet 时代的工作。何老师一直呼吁 representation 上有所突破,看了这篇才明白到底是什么,只能说何老师真的厉害。不过不止何老师,作者团队可以说是群星璀璨。

不过似乎这也预示着,视觉学术界连 unsupervised learning 都要打不过工业界了,不仅没数据没机器,这个论文的代码实现估计相当复杂,因为考虑多机多卡(64 GPUs)和各种tricks,一般学生估计没法轻松复现。

(待续

--回答2--

下游的Person Search / ReID领域终于间接启发一下了上游的representation learning :D

如何评价Kaiming He的Momentum Contrast for Unsupervised?


一些小的想法:

momentum encoder确实很巧妙,让这个方法扩展到了大数据集 个人感觉loss里面的tau会是比较重要的超参,特别是网络初始化不好的话reid里面结合softmax loss和triplet loss会有帮助,没准也能应用到representation learning

--回答3--

趁着作业写得痛苦的间隙,来分享个人一些小小的想法。

利益相关:Accuracy/Tradeoff图中的CMC (contrastive multiview coding) 是我们的工作, 很欣慰暂时还在Kaiming的曲线上面,代码有release.

如何评价Kaiming He的Momentum Contrast for Unsupervised?

恺明的工作总是一如既往地硬核,总是非常solid地在解决实际问题!超越supervised pretraining一直是我们做unsupervised的动力之一,很出色的成绩.

但罗马并不是一天就建成的.先介绍一些contrastive learning的背景吧,lecun2007的论文提出的contrastive 的想法(有可能还有更早的)是把positive match在一起,negative分开,不过他的办法是基于margin的(需要设置)

如何评价Kaiming He的Momentum Contrast for Unsupervised?

最近大家讨论更多的contrastive loss (包括kaiming的论文),据我所知,是NIPS 2016率先提出的k-pair loss, "Improved Deep Metric Learning with Multi-class N-pair Loss Objective", NIPS 2016,用在metric learning中:

如何评价Kaiming He的Momentum Contrast for Unsupervised?

包括后来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理解成 .同样的kaiming的两个encoder,也可以其中一个理解成 ,另外一个是 .关于怎么样选取x和y,我们的CMC也有讨论,我们的猜测是应该有一个很有意思的sweet point,感兴趣的可以看看我们的论文.

所以有了这样的背景,就可以大概看出其中的key, query只是取的名字而已,本质只是x和y.并且大家之前已经explore很多了.我认为kaiming这篇最创新的地方,就是解决了一个非常重要但以前又没有思路的工程问题,就是怎么节省内存节省时间搞到大量的negative sample。之前的memory bank虽然机智,但是必须存下来整个数据集,空间开销O(N),所以处理不了Instagram级别的数据,这个问题困扰我很久而且我没找到有效策略,我试过跟Kaiming一样用一个queue,也是存过去m个batch的sample,这个其实很容易想到,但我发现效果不好,问题就是我的两个encoder完全share weights,我没有像他一样一个update快,一个update慢。以后有了Kaiming这个momentum encoder机制,大家就又可以放开刷了, 应该可以跟其他方法互补.

Kaiming的工作一出来,我心情挺复杂的.一来这篇会引起大家更多地关注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亿里面取的并没有更有信息量太多,可能这里需要结合聚类来做.

--回答4--

核心思想跟我们CVPR19的文章 [1] 非常类似,都是基于instance discrimination 来做unsupervised representation learning,同样类似的文章还有examplar CNN [2] 和 NCE [3], 但是kaiming大神用momentum的实在巧妙。简单介绍一下instance discrimination的发展史,下面是详细分析:

ExamplarCNN [2]: 早期用instance discrimination的思想来做无监督学习的,对每一个instance 学习一个classifier weight,效率比较低NCE [3]: 引入 memory bank的去替代上面的classifier weights, 把前一个step 学习到的instance feature存储起来,然后在下一个step把这些存储的memory去学习,效率有所提升Invariant and Spreading Instance Feature [1]: 我们在今年CVPR19 上提出了一种新的学习的方式,可以直接在instance feature level 上进行学习。 我们直接用random data augmented instance feature做为“classifier weights”进行学习,并且采用了一个Siamese的network 去训练,这样两个网络的instance feature 可以实时的进行比较和学习。学习效率和准确性都有所提高,我们的文章也对上述两个方法的优缺点有详细的分析。相关代码也在github开源了。Momentum Contrast: kaiming 大神用momentum的思想很好的弥补了我们方法的缺陷,从而使得模型在学习的过程中避免学习classifier weights 和memory bank,同时又保证可以handle大规模的数据!其中的shuffle batch normalization 应该也是进一步稳定这个training过程的一个很重要的trick。类似的做法也在deepCluster [4]论文里面每个epoch对classifier 重新做random initialization,两种做法应该有类似的效果,使得学习到的特征稳定性和泛化性都能有所提升

[1] Mang Ye, Xu Zhang, Pong C Yuen, and Shih-Fu Chang. Unsupervised embedding learning via invariant and spreading instance feature. In CVPR, 2019.

[2] Alexey Dosovitskiy, Philipp Fischer, Jost Tobias Springenberg, Martin Riedmiller, and Thomas Brox. Discriminative unsupervised feature learning with exemplar convolutional neural networks. In IEEE TPAMI, 2016.

[3] Zhirong Wu, Yuanjun Xiong, Stella Yu, and Dahua Lin. Unsupervised feature learning via non-parametric instance discrimination. In CVPR, 2018.

[4] Mathilde Caron, Piotr Bojanowski, Armand Joulin, and Matthijs Douze. Deep clustering for unsupervised learning of visual features. In ECCV, 2018.

--回答5--

这个地方拍马屁的风气还是很盛行啊,大佬说什么都是香的? 最好还是放弃虚名,考察一下方法的核心到底在哪里吧。为什么通过个体间的discrimination,就可以完成这个任务,这个过程应该如何理解? 直觉上,让我想起广义相对论中只需要知道每一点光的方向就可以在一定程度上重构时空的度量这个结论,但具体如何理解,只通过discrimination,到底可以重构出实际数据空间的什么结构,还需要仔细想一想。我个人觉得这个是比单纯靠实验验证这种方法可以无监督的完成训练任务更有意义的问题,难道大家不想这个问题么?我看很多回答偏重于就事论事,有点过于注重技术细节了,对整体的理论上的问题考虑的似乎少了点。

工作还是何一贯的风格,就是开发面向应用的有效方法。这个方法应该还是在做嵌入,相比于强调保持个体自身信息的自编码器,这里更多强调不同个体之间的关系,直观上理解应该就是在嵌入空间每个个体都把其他个体尽量往外推,从而使得样本间距离在嵌入空间达到一个平衡的分布。这个有一些 relational theory的味道。

至于具体的技术细节,比如采用 momentum更新,其实还是对系统加了阻尼,要求推起来要费点劲,增加了系统的稳定性。

如果说有问题,好像还是在对个体间距离的设定上,是否仅仅通过要求每个个体与他人的距离尽量远这一条就可以保证得到好的嵌入呢?毕竟还是有相似的图像,按照这个方法得到的嵌入能否忠实的表达图像之间相似程度的差异?会不会因为要求距离尽量远的准则过于简单粗暴导致嵌入空间对图像间距离的扭曲? 此外,由于方法仅仅直接要求距离的分布,没有对嵌入空间对数据信息表达的完整性的要求,会不会导致丢失一些必要信息? 还是感觉单靠一个discrimination的特征不足以完成可靠的嵌入,一定需要结合其他的trick才有这个可能。比如,既然都编码了,为何不直接把解码器也弄上,至少保证信息不丢失啊。

另外,非常反感这个领域胡乱弄些唬人名词的做法,什么表示学习?有必要弄个新名词么?其实就是充分统计量加上复杂度约束而已,弄新名词唬人有意思么?还有什么 self-supervise,其实只要不是外界提供监督信息,其他的所有监督信息都是挖掘数据本身的某种相容性特征来构造的,没有本质的差异,弄那么多乱七八糟的名词干什么?

最后,这个工作闻起来同时有一丝 GAN 和 attention的味道,两个网络竞争, 以及嵌入到线性空间求点积,越看越眼熟, 究竟应该如何和这两个东西结合起来看,需要想一下。

PS,还是感觉这就个GAN啊,query和 key的变换网络本别是G和D,D其实是把数据映射到嵌入空间并将嵌入空间看作欧氏空间构造了对每一个样本的判决函数,G则是要尽量生成和目标样本相似的数据,然后二者博弈,并且为了GAN的收敛,二者还是要紧密关联,这里是靠所谓 momentum更新来实现的。

另一个理解是,这就是个attention,就是要保证要把给定的query的注意力注意到对应的key上去而尽量忽略无关的key。

转载请注明出处:168社区,如有疑问,请联系(QQ:263033212)。
本文地址:https://www.whjxqc168.com/shuma/226.html

添加回复:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。