对比学习(一)损失函数
原文博客:https://lilianweng.github.io/posts/2021-05-31-contrastive/
感谢大佬的分享。
对比表示学习的目标是学习一个嵌入空间,其中相似的样本对彼此靠近,而不同的样本对相距很远。对比学习可以应用于有监督和无监督的情况。在处理无监督数据时,对比学习是自监督学习中最强大的方法之一。
一些符号:
:要学习的参数为的网络
:输入样本,锚点(anchor)
:锚点的正样本,与锚点同类别
:锚点的负样本,与锚点类别不同
:温度参数,用于调整特征在表示空间中的集中程度,超参数
:是一个超参数,定义了不同类别样本之间的下界距离
:互信息:
信息论中,信息(information)是消除事件不确定性的一个量,信息熵(entropy)表示信息量,变量的不确定越大,信息熵越大,因为要搞清楚一件不确定的事情,需要的信息量很大。
信息熵的计算公式:
对于两个变量X和Y,已知Y,X的不确定性会降低,降低的程度取决于XY的相关性,即互信息(mutual information):
对比学习目标函数对比
Loss | Contrastive Loss | Triplet Loss | Lifted Structured Loss | N-pair Loss | NCE | infoNCE | Soft-Nearest Neighbors Loss |
---|---|---|---|---|---|---|---|
输入形式 |
Contrastive Loss
最早的以对比方式用于深度度量学习的训练目标。
给定输入样本列表 ,每个样本在 L 个类中都有对应的标签 。我们想学习一个函数 ,它将 编码为一个特征嵌入向量,使得来自同一类的示例具有相似的特征,而来自不同类的样本具有不同的特征。因此,对比损失的输入是一对 ,并在它们来自同一类时最小化距离,来自不同类时最大化距离。
Triplet loss
最初是在 FaceNet 论文中提出的,用于学习同一个人在不同姿势和角度下的人脸识别。
Triplet loss 学习最小化 anchor 和正 之间的距离,同时最大化 anchor 和负 之间的距离,公式如下:
Lifted Structured Loss
利用一个训练 batch 中的所有成对连接来提高计算效率。也就是,在计算 loss 时,同时计算 anchor 与batch 内所有负样本的 loss。
定义 , structured loss function 定义为
其中, 是正样本对集合, 是负样本对集合。 也就相当于 ,也就是负样本对中距离最近的一对。
那么 意思是找出 与所有负样本对中距离最小的那个,loss 的组成就包括来自同一正样本集的 间的距离,和与所有负样本对的最小距离(的负数)。Lifted Structure Loss对于每个正样本对i和j,会考虑mini-batch中所有的negative样本。
上面的公式容易导致模型陷入较差的局部最优,于是作者使用了平滑上界函数来代替:
N-pair Loss
在 triplet loss 里加入多个负样本
如果只有一个负样本,就相当于 softmax loss。
NCE
Noise Contrastive Estimation,idea是利用逻辑回归来区分目标数据和噪声。
NCE提出的场景是:在一句话中,预测一个词的下一个词,当神将网络是个多分类的分类器时,这个类别的数量会变得和词的数量一样多,会导致计算量巨大,softmax也很难计算。
为了解决这个问题,NCE将多项分类问题转换为二分类问题,分类器不是预测下一个词,而是简单地预测一对词是好是坏。
假设样本 的分布是,噪声样本的分布是 (其他不是目标类别的样本都可以看作是噪声)。目标时通过学习一个分类器(优化θ)来区分真实数据样本和人工生成的噪声样本。
在这种情况下,我们想从目标数据分布而不是噪声分布中计算样本 的 logit(未归一化的概率):
再加上 sigmoid,应用交叉熵损失,可以得到:
其他参考:
https://www.zhihu.com/question/50043438
InfoNCE
受 NCE 的启发,使用分类交叉熵损失来识别一组不相关的噪声样本中的正样本。
给定上下文向量 ,正样本从条件分布 中抽取,而 个负样本从则从独立于语境的提议分布中抽取。为了简洁起见,将所有样本标记为 其中只有一个是正样本。
我们正确检测到正样本的概率是
InfoNCE损失优化了对正样本进行正确分类的负对数概率:
估计的是密度比,与互信息优化有关系。为了使输入和上下文向量之间的相互信息最大化,我们有:
,其中蓝色的对数项由估计。
Soft-Nearest Neighbors Loss
拓展到了多个正样本。
函数 用于测量两个输入之间的相似性:
温度用于调整特征在表示空间中的集中程度。例如,当温度较低时,损失由小距离主导,相隔甚远的表征不能做出很大贡献,变得无关紧要。
Supervised Contrastive Learning
让同一类别的归一化嵌入比不同类别的嵌入更接近。
根据实验,Supervised Contrastive Learning:
- 确实优于基础交叉熵,但只是一小部分。
- 在鲁棒性基准(ImageNet-C,它将噪声、模糊和对比度变化等常见的自然扰动应用于 ImageNet 数据集)上优于交叉熵。
- 对超参数变化不太敏感。