浅聊对比学习 (一)

2022-07-21 19:44:20 浏览数 (1)

每天给你送来NLP技术干货!


©作者 | 吴桐

研究方向 | 推荐系统

来自 | PaperWeekly

什么是对比学习?

Metrics learning self-supervised learning

对比学习在解决什么问题?

● 如何学习 representation ● 解决数据稀疏的问题 ● 如何更好的利用没有label的数据

  • 未打标的数据远远多于打标的数据,不用简直太浪费了,但是要打标又是一个耗时耗力耗钱的事儿

● 有监督学习的缺点:

  • 泛化能力
  • spurious correlations(伪相关)
  • adversarial attacks(对抗攻击)

为什么现有的方法解决不了这个问题?

  • 有监督学习天然所带来的问题:泛化能力、过拟合、对抗攻击等等 
  • 有监督学习本身就无法使用无标签的数据

现有的对比学习方法

实验结果就没贴了,肯定是牛逼呗,而且因为是比较老的 paper 了,所以看这些 paper 的实验不如看 SOTA 的 paper 的实验结果,但是为什么要看老 paper——温故而知新。

4.1 Noise-contrastive estimation: A new estimation principle for unnormalized statistical models (NCE)

不重复造轮子之 paper 讲解传送门(这篇论文的证明很不错,很值得学习)

知乎:

https://zhuanlan.zhihu.com/p/58369131

CSDN:

https://blog.csdn.net/littlely_ll/article/details/79252064

One Sentence Summary:给现有的样本加上噪声,作为负样本,模型对原本真实的样本和新增的负样本进行区分,从而将 softmax 这种低效的计算转化成二分类的 logloss,计算效率更高,下面公式里的 代表真实的样本, 代表加了 noise 后的样本。

但是这里会出现一个问题,如果我们的 noise 分布选的不好,效果可能并不一定会好,所以在这篇 paper 里作者也提到了在增加 noise 的时候,尽量和现有的数据分布相似,这样能最大程度上提高训练的效果

Intuitively, the noise distribution should be close to the data distribution, because otherwise, the classification problem might be too easy and would not require the system to learn much about the structure of the data. As a consequence, one could choose a noise distribution by first estimating a preliminary model of the data, and then use this preliminary model as the noise distribution.

这个方法在推荐里的应用,个人观点是可以在召回里来尝试,毕竟现在的召回面临着很大的 selection bias 问题(有朋友在召回里尝试过,效果一般,只能说明老 paper 时间比较久了,已经被现在的 SOTA beat 掉了,不过这篇文章的 idea 很有意思,数学证明也很不错,可以学习下)。

4.2 Representation Learning with Contrastive Predictive Coding (InfoNCE)

不重复造轮子之 paper 讲解传送门:

https://zhuanlan.zhihu.com/p/317711322

One Sentence Summary:提出 CPC 框架,将 representation 的学习从一个生成模型,转换成了分类模型,用于下游的其他任务。

文章优化的目标从最大化 预测 的概率 变成优化最大化 和 之间的互信息 ,通过最大化互信息,可以抽取出输入之间的一些共性的潜变量。

由于没有办法获得到 的联合概率,因此文章通过建模两种样本的密度比的方式来绕过联合概率(两种样本:真实样本和采样出来的负样本),其中 表示 的预测和未来 的相似程度, 是将 转换到 空间,然后用内积来表示相似程度,文章也证明了 。

▲ f_k 正比于密度比的证明

本文训练的loss

从而将一个生成模型 转变成了分类模型 。

训练出来的 和 可以用于下游的任务:比如分类任务等等。

文章比较有意思的点:证明了互信息的下界和总样本数是有关的,N 越大,互信息越大。

4.3 LEARNING DEEP REPRESENTATIONS BY MUTUAL IN- FORMATION ESTIMATION AND MAXIMIZATION (Deep InfoMax)

不重复造轮子之 paper 讲解传送门:

https://zhuanlan.zhihu.com/p/277660074

One Sentence Summary:加入了更细致的 local feature 与 output 的互信息,加上了先验,让先验服从一定的分布,从而能更好的具有编码空间。

(我对这一点有点 concern,什么样的编码空间是 更好的空间呢?这个先验也只能去拍,怎么去拍,只能不断的去尝试吗,是不是可以学成一个动态的空间,如果我们的数据是多峰的,可能一个分布就不太能拟合,混合高斯分布会不会更优?感觉都是可以改进的方向)

▲ Global

▲ local

主要思想和 InfoNCE 差不多,多了 local/prior matching,和具体场景有关,感觉更像是在 bagging loss。

global MI/local MI:这俩没啥好介绍的,global 是拿输入和全局的 feature 去做MI的计算,local 是拿中间的 feature 和全局的 feature 去做 MI 的计算。

  • 多的这部分 local 的 loss,我个人的理解其实也是换了种方式来增大样本数量,进而带来了收益

Prior matching(adversarial autoencoders):拍了一个 feature 的先验分布,训练一个 discriminator,然后让这个 discriminator 和模型学到的全局 feature 进行 battle(对抗学习的 min-max 方式),编码器的输出更符合先验的分布,感觉这个就有点玄学了~

▲ Prior matching

Loss:前面两项分别对应 global 和 local,最后一项对应 Prior matching

对比学习在推荐里的应用场景 

在召回阶段: 

  • 负采样逻辑优化:现在很多推荐系统里的负采样都是随机采样的,虽然随机采样已经能拿到不错的效果了,但是一定还有优化空间,比如 InfoNce 文章中提到的增大负采样的个数能够提升互信息的下界,同时在工业界的 best practice 中,往往也能发现 batch_softmax 的效果也很不错。
  • i2i 召回:基于 item2item 召回的时候,往往是基于 item1 的 embedding 去召回与 item1 相似的 items,这时候 embedding 的相似性就显得尤为重要,但是这里有个问题,如何选择构造与 item1 相似的 item 作为正样本?(用户点击过的作为 item 作为相似的样本也不合理,毕竟用户的兴趣是多维的,点过的每个样本不可能都属于同一个类别或者相似的,虽然通过推荐的大量数据,协同过滤可能可以在全局找到一个还不错的结果,但是直接拿用户序列作为正样本来做一定是不合理的)。

一点小思考

对比学习的优势: 

  • 可以比较好的单独优化 representation,和下游任务无关,能够最大程度上的保留 meta-information,如果一旦做有监督的学习,那抽取出来的信息就是和当前目标相关的,不排除可能学到一些噪音特征。
  • 在做 data augumentation,模型见到了更多的样本,记忆的东西更全,效果好也是预期之中的。
  • 去噪

参考文献

[1] Gutmann M, Hyvärinen A. Noise-contrastive estimation: A new estimation principle for unnormalized statistical models[C]//Proceedings of the thirteenth international conference on artificial intelligence and statistics. JMLR Workshop and Conference Proceedings, 2010: 297-304.

[2] Oord A, Li Y, Vinyals O. Representation learning with contrastive predictive coding[J]. arXiv preprint arXiv:1807.03748, 2018.

[3] Hjelm R D, Fedorov A, Lavoie-Marchildon S, et al. Learning deep representations by mutual information estimation and maximization[J]. arXiv preprint arXiv:1808.06670, 2018.

[4] Hjelm R D, Fedorov A, Lavoie-Marchildon S, et al. Learning deep representations by mutual information estimation and maximization[J]. arXiv preprint arXiv:1808.06670, 2018.

[5] GitHub - asheeshcric/awesome-contrastive-self-supervised-learning: A comprehensive list of awesome contrastive self-supervised learning papers.

https://github.com/asheeshcric/awesome-contrastive-self-supervised-learning

[6] 张俊林:对比学习(Contrastive Learning):研究进展精要:

https://zhuanlan.zhihu.com/p/367290573


0 人点赞