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不同,此损失使用批量负采样策略,即从批次中采样负对。性能更好。