句子嵌入训练 常用损失函数

1 single sentences +class

单句子+标签

BatchAllTripletLoss

BatchAllTripletLoss 接收包含(句子,标签)对的批次,并计算所有可能的有效三元组的损失,即锚点和正例必须具有相同的标签,锚点和负例必须具有不同的标签。标签必须是整数,相同的标签表示句子属于同一类。您的训练数据集必须包含每个标签类至少 2 个示例。

2 (anchor, positive)

锚,正例

MultipleNegativesRankingLoss

适用于只有正对,例如,只有相似文本对,如释义对、重复问题对、(查询、响应)对或(源语言、目标语言)对。

此损失函数非常适合训练具有正对(例如(query,relevant_doc))的检索设置的嵌入,因为它会在每批n-1负文档中随机抽样。

性能通常随着批次大小的增加而提高

GISTembedLoss

它以一个模型和一个引导模型作为输入,并使用引导模型来引导批量负样本选择。余弦相似度用于计算损失,温度参数用于缩放余弦相似度

CachedMultipleNegativesRankingLoss

相当于MultipleNegativesRankingLoss,但具有允许更大批量大小的缓存(从而获得更好的性能)而无需额外的内存使用。训练速度比MultipleNegativesRankingLoss慢大约 2 到 2.4 倍

3 (anchor, positive, negative) triplets  三元组,无标签

  锚,正例 ,负例 

4 single sentences

单句

ContrastiveTensionLoss

此损失仅期望单个句子,没有任何标签。通过随机抽样自动创建正对和负对,这样正对由两个相同的句子组成,负对由两个不同的句子组成。创建编码器模型的独立副本,用于编码每对的第一个句子。原始编码器模型编码第二个句子。使用生成的标签(如果为正则为 1,如果为负则为 0)使用二元交叉熵目标比较和评分嵌入

ContrastiveTensionLossInBatchNegatives

与ContrastiveTensionLoss不同,此损失使用批量负采样策略,即从批次中采样负对。性能更好。

交叉熵损失函数和三元组损失函数是两种常用损失函数,它们在不同的场景中有不同的应用。 交叉熵损失函数常用于分类任务,特别是多分类问题。它通过计算模型的预测结果与真实标签之间的差异来反映模型的训练效果。交叉熵损失函数可用于将模型的预测值与真实标签进行比较,并通过最小化损失函数来调整模型的参数。在训练过程中,交叉熵损失函数会根据模型预测的概率分布与真实标签之间的差异来调整模型参数,使得预测结果更接近真实情况。 三元组损失函数主要用于度量学习任务,特别是人脸识别、图像检索等问题。在度量学习中,我们需要学习一个嵌入空间,使得相似样本之间的距离更近,不相似样本之间的距离更远。三元组损失函数通过计算锚样本、正样本和负样本之间的距离关系来衡量模型学习到的嵌入空间的质量。具体来说,对于每个锚样本,我们选取一个正样本(与锚样本相似)和一个负样本(与锚样本不相似),通过最小化锚样本与正样本之间的距离,最大化锚样本与负样本之间的距离来优化模型的参数。 当需要同时解决分类任务和度量学习任务时,我们可以联合使用交叉熵损失函数和三元组损失函数进行训练。具体做法是,在训练过程中同时计算交叉熵损失和三元组损失,并将两者的权重进行调整。这样可以使得模型在分类任务中预测准确性更高,在度量学习任务中学习到更好的嵌入空间。通过联合训练,我们可以更好地利用数据中的信息,提升模型的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值