提纲
1 简介
2 Multi-Task Hybrid Loss Training
2.1 Retrieval and Reranking Loss
2.2 STS and PairClassification Loss
2.3 Classification and Clustering Loss
3 实验结果
4 讨论
1 简介
在之前我们所接触到大部分embedding模型的训练损失都是围绕着对比学习进行的,不同任务之间的差异其实就是Prefix有所不同,或者是否使用in-batch negative,有点大同小异的感觉。但是Piccolo系列模型就不同,它们采用了一种高效的多任务混合训练训练策略,对于不同类型的任务,会采用不同的训练损失,尽可能地利用到训练数据汇总的信息,并通过实验验证其优越性。
2 Multi-Task Hybrid Loss Training
整个Multi-Task Hubrid Loss Traing策略将embedding模型所涉及的任务分为三种类型,针对不同类型的任务设计不同的训练损失,具体如下。
2.1 Retrieval and Reranking Loss
对于检索跟重排任务,训练时采用的依旧是对比学习中标准的InfoNCE损失,希望q跟对应的正文档d+足够接近,同时让q跟对应的负文档d-以及同个batch里的其它负文档足够疏远。
2.2 STS and PairClassification Loss
这两类都是文本相似度任务,以往的做法会直接套用InfoNCE损失,将互相矛盾的句子对作为负样本,而将相互蕴含或者中性的句子对作为正样本,然后STS跟pair-classification task有更加细粒度的标签信息(例如相似度得分可以有1,2,3,4,5种等级),直接将其转换为正样本或者负样本会带来信息损失,进而影响模型性能。于是研究人员为该类任务另外配置一个排序损失,从而尽可能的利用这些数据中的细粒度标签信息。
2.3 Classification and Clustering Loss
对于分类跟聚类任务而言,虽然依旧采用的标准的InfoNCE损失。但对于每个文本q,正文档就是对应的标签文本,而负文档则是不相关的标签文本,也就是这里的样本对主要文本跟标签之间的关联,而不是文本之间的关联。另外,这里不在使用in-batch negative,为了防止同个batch里存在两个相同标签的文本所带来的冲突。
按照上述方式整理对应的训练数据,最终不同类型任务的数据格式如下
3 实验结果
**研究人员通过实验,会发现针对不同类型的任务设计不同的训练损失比起原来的做法还是有明显受益的,并且这种收益最终是在所有任务上都取得明显提升的。**
4 讨论
Multi-task Hybrid Loss Training这种做法,针对不同类型的任务定制不同的训练损失,充分利用到任务本身的特性以及训练数据中的信息,从效果上也验证了它的优越性。
这跟上一篇文章里提到的各种训练技巧相比,其实也算是其中一个训练技巧。至于为什么很多其它模型都只采用InfoNCE一种训练损失,我猜可能是由于很多训练数据都是合成的,本身就缺乏高质量的细粒度标签信息,所以使用对比学习损失也不会带来过多的信息损失。另外就是可能这里优化带来的提升没有对模型结构或者训练数据构建优化带来的提升明显,所以大家把更多精力放在其他地方了。