对比学习简介
(这篇博文用英文攥写并翻译自ChatGPT)
有关阅读材料:
The Beginner’s Guide to Contrastive Learning SimCSE: Simple Contrastive Learning of Sentence Embeddings A Simple Framework for Contrastive Learning of Visual Representations Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks 背景 对比学习旨在通过将语义上接近的邻居聚集在一起并将非邻居推开来学习有效的表示。最初,对比学习应用于计算机视觉任务。如下图所示,我们期望模型学习具有相同标签的两个图像之间的关联性,以及具有不同标签的图像对之间的差异。
这个想法与人类从经验中学习的方式非常相似。人类不仅可以从积极信号中学习,还可以从纠正负面行为中学习。
对比学习中的关键步骤是:
定义距离度量 正样本的生成/选择 负样本的生成/选择 通常情况下,样本被编码到向量空间中,欧几里得距离将被用来表示一对样本之间的距离。一旦我们找到生成/选择正负样本的策略,我们就可以定义一个三元组 $(x, x^+, x^-)$,其中包含一个锚定样本 $x$,一个正样本 $x^+$ 和一个负样本 $x^-$。三元组损失可以表示为:
$$ L = max(0, ||x - x^{+}||^2 - ||x - x^{-}||^2 + m) $$
三元组损失被广泛用作对比学习的目标函数。
SimCSE:面向NLP的对比学习框架 SimCSE包括两个版本:无监督和监督,如下图所示。
无监督SimCSE从批内负样本中预测输入句子本身,并应用不同的隐藏丢弃掩码。监督SimCSE利用NLI数据集,将蕴含(前提-假设)对作为正例,将矛盾对以及批内其他实例作为负例。
假设一组成对示例 $\mathcal{D} = {(x_i, x_i^+)}_{i=1}^m$,其中 $x_i$ 和 $x_i^+$ 语义相关。令 $\mathbf{h}_i$ 和 $\mathbf{h}_i^+$ 表示 $x_i$ 和 $x_i^+$ 的表示,$(x_i, x_i^+)$ 的训练目标与 $N$ 对小批量为: