对比学习问题思考

对比学习主要是通过对比,拉近相似样本之间的距离,推远不相似样本之间的距离。而相似样本的构造,又可以分为有监督与无监督两种:

有监督对比学习:通过将监督样本中的相同label的样本作为正样本,不同label的样本作为负样本,来进行对比学习;

无监督对比学习:由于没有监督信号(label),此时,我们对同一个样本构造两个view,让同一样本构造的两个view互为正样本,而其他样本构造的view则全部为负样本,以此来进行对比学习。而由同一个样本构造两个view,又是数据扩增的过程,所以也可以称作是数据扩展对比学习。而不管那种范式,通常对比学习都是在batch内进行。

无监督对比学习
通过对样本进行eda(随机替换、随机删除、随机重复和随机互换),来构造不同view,由此进行对比学习。实验失败后,笔者也提到失败的可能原因主要有两点:batch size太小且样本上直接进行操作,获得的新样本与原来的语义可能由较大的差别甚至是完全的反义。如:“我不会再爱你” –> “我会再爱你”,而强行让这两个样本的语义距离相互靠近,效果自然不会好;而batch size太小的问题,一来是换大的GPU,二来可以尝试在算法层面进行优化,如将Adam 替换为AdaFactor,re-compute等,这不是本文的重点,所以就不再细说了。

而针对直接对样本进行修改会导致语义不一致的问题,其主要原因是NLP中,样本的输入是one-hot形式的,我们的相似样本应该是语义上相似,对应的修改后的语义距离应该尽可能“小”,而直接对one-hot形式进行修改,对应的距离恒定是2‾√ ,怎么看也不小。一种解决方法是借鉴对抗训练在NLP中的方式,将修改放在Embedding 层,由于one-hot与Embedding的对应关系,就能够获得“相似语义”的样本了

而做数据扩增时,最常用的两个方式随机删除与随机互换,而位置编码在transformer 中起到的作用不是关键性的,且直接互换位置也会带来语义变化较大的风险,那只使用随机删除策略做数据扩增,进行对比学习效果如何呢?答案是非常好!女神陈丹琦最近的论文SimCSE: Simple Contrastive Learning of Sentence Embeddings,只使用dropout ,对同一个样本构造两个不同的view,然后进行对比学习,最终的效果在非监督学习任务下8个点提升起步,在监督任务下4个点提升起步,此外,苏神在中文任务上也进行了实验,再次验证了该方法的有效性

https://xv44586.github.io/2021/07/06/cl2rdrop/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jianafeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值