对比表示学习必知的几种训练目标

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


干货

作者:炼丹小生

来自:炼丹笔记

对比学习的主要思想就是相似的样本的向量距离要近,不相似的要远.对比学习在有监督/无监督场景下都取得了非常亮眼的成绩,所以是我们炼丹的必备知识.早期的对比学习是只有一个正样本和一个负样本进行对比,最近的训练目标变成了一个batch内多个正/负样本进行训练.

Contrastive Loss

819142d998a58485c53a750c219c1c4c.png

有一系列样本{xi},它们的label yi = {1, ..., L}, L类,还有个函数f将样本xi映射成embedding,有着相同yi的样本有着相似的embedding, 因此对比学习loss定义如下:

34c40a0a69d477d14a2b10b70a93aa65.png

Triplet Loss

83f169dfe5e963808299f9099414e815.png

Triplet loss大家应该并不陌生,最早出现在FaceNet的论文里,这篇论文主要学习人脸表达,需要同一个人在不同角度位置的表达都很相近.

1a1c4338afd289e3fdad29dc9cbe20b9.png

定义一个锚点(anchor) x,有个正例x+和一个负例x-,所以目标函数就是要最小化x和x+的距离,最大化x和x-的距离,定义如下所示:

4ad656387822e0b1bba346fac44f82b2.png

Lifted Structured Loss

f149d42307624df88745923fd8bde9a2.png

该loss为了更好的计算效率,充分利用了一个batch内所有pairwise的边.

fd7d1c8624c166b4527998e5a63fab36.png

Dij = || f(xi) - f(xj) ||2, Loss函数定义如下:

eb4bfc3ecafd761259857d1f1f604790.png

红色部分是为了挖掘hard负样本,但是不是很平滑,难收敛,因此可以改为下式:

9dae03ae6b09fe2fa6e1061e17dbc89c.png

N-pair Loss

8c74c4a2797031d6c92b79921514a1ae.png

在负样本同时有多个的时候,{x,x+, x1-, ..., x(N-1)-},包含1个正样本和N-1个负样本,N-pair loss定义如下所示:

75250a2abb8d696e7fb14767cb79f05e.png

NCE

614f2eb76a67b8d69ff42e54b95065e3.png

NCE本身是统计模型做参数估计的方法,思想就是用罗杰斯特回归来区分数据和噪声.非噪声样本的概率用P表示,噪声样本的概率用q表示,如下所示:

e60b5612ba7699e7c5265ff0cc7a10e4.png

29f5e0e7709ff07230269f8ddec3b860.png

所以NCE的loss函数定义如下:

c6f65f727f3a59c50a310aedcdec6c9d.png

e9f72e625951c008cc098d214033b09d.png

我们看到NCE loss只对一个正样本和一个噪声样本生效.

InfoNCE

0b3c609705fe8d226f8aa77734ecd826.png

受到NCE的启发,InfoNCE使用了交叉熵损失,用在一个正样本和一系列噪声样本上.给定一个上下文环境c,我们可以得到条件概率p(x|c),N-1的负样本直接从概率分布p(x)提取,独立于c. 我们有个样本集合X = {xi},i=1~N, 其中只有一个正样本x_pos, 我们能得到下式

e069d1db5a52ad9e2ea09ecc88faa9a6.png

f(x,c)就是模型的打分函数,所以InfoNCE loss优化log loss,如下式:

4d199da008bf1ec123b5310ccb0e6524.png

Soft-Nearest Neighbors Loss

ab289c1f90098d511f23f0c0618d0009.png

该loss扩展到包含多个正样本,假设有个batch {xi, yi} i = 1~B, 该loss会有个温度系数控制,如下所示:

e87fc2186d2619b3e150ce358410b81d.png

温度τ用于调整特征在表示空间中的集中程度。例如,当温度较低时,损失主要是由小距离造成的,而大范围分离的表示不能起到很大作用。

下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!  后台回复【五件套】
下载二:南大模式识别PPT  后台回复【南大模式识别】

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

3f88baf9b9a4c55296ccee261802bd64.png

记得备注呦

整理不易,还望给个在看!
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对比学习是一种用于学习具有相似性度量的模型的方法,常用于度量学习和验证学习任务。以下是几种常见的对比学习损失函数: 1. 三元组损失(Triplet Loss):三元组损失是最经典的对比学习损失函数之一。它使用三个样本:锚样本(anchor)、正样本(positive)和负样本(negative)。损失函数的目标是使锚样本与正样本之间的距离小于锚样本与负样本之间的距离,以增加相似样本之间的距离,减小不相似样本之间的距离。 2. N-pair损失(N-pair Loss):N-pair损失是一种扩展的对比学习损失函数,它使用N个样本进行训练,其中每个正样本对应于一个锚样本,而负样本对应于其他N-1个样本。它通过最小化每个正样本和其对应负样本之间的差异来增加正样本对之间的相似性,减小正样本与负样本对之间的相似性。 3. 中心损失(Center Loss):中心损失结合了类别标签和特征向量之间的距离,目标是将同一类别的特征向量彼此靠近,并将不同类别的特征向量彼此分开。中心损失通过学习每个类别的中心向量,将样本的特征向量与其所属类别的中心向量之间的距离最小化。 4. 对比分类损失(Contrastive Cross-Entropy Loss):对比分类损失是一种结合了对比学习和分类任务的损失函数。它通过最小化正样本对之间的距离,并最大化负样本对之间的距离,来增加相似样本之间的距离,减小不相似样本之间的距离。 这些是对比学习中常用的一些损失函数,每个损失函数都有其适用的场景和特点。具体选择哪种损失函数取决于任务要求、数据集特点和模型设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值