Conan-embedding: 我需要更多跟更高质量的hard negative

大模型机器学习数据库

提纲

1 简介

2 方法

2.1 Weak-supervised Pre-training

2.2 Supervised Finetuning

3 实验

4 实验结论

5 讨论

参考文献

1 简介

很多之前的text embedding工作都强调过了hard negative挖掘策略的重要性,但这些策略通常只会被应用到数据预处理阶段。于是就有研究人员提出了  **conan-embedding,通过利用更多跟更高跟更高质量的hard negative来提升模型能力,一方面提出了动态的hard negative策略,另一方面提出了Cross-GPU Balancing Loss。最终训练得到的模型在中文MTEB榜单多个任务上表现非常优异。**

picture.image

图1: CMTEB榜单(2024.10.10)

2 方法

跟很多之前工作一样,conan-embedding采用的也是多阶段训练策略,包括两个阶段,依次是Weak-supervised training跟supervised training,如下图所示。

picture.image

图2: Conan-embedding训练流程

2.1 Weak-supervised Pre-training

在预训练阶段,研究人员搜集了7.5亿的文本对数据,不仅包括常见的(Title, Content),(Input, Output)跟(Question, answer)这些类型的文本对数据,还引入LLM的高质量的指令数据(Prompt, response)。  **为了提升数据质量,研究人员通过利用bge-large-zh-v1.5这个embedding模型计算这些训练文本对的相似度,过滤掉其中分数低于0.4的低质量数据。**

这个阶段采用的是传统的InfoNCE损失函数,将同个batch内的其他文本对作为负样本,没有hard negative。

‍‍

2.2 Supervised Finetuning

在finetune阶段,将训练数据分为两种任务类型,分别是retrieval(非对称型)跟STS(对称型),其中retrieval类数据依旧采用InfoNCE损失,而STS采用的是CoSENT损失。

在这个过程中,研究人员提出了两种优化技巧,这也是该模型最大的特别之处 ,具体如下。

picture.image

 **Dynamic hard negative mining**   



训练每经过一段时间,会重新计算在最新模型下hard negative的得分,如果得分太低了,就需要重新抛弃该hard negative并重新进行挖掘。hard negative会随着模型的优化也变得不再具有挑战性,所以才需要动态更新,




  **Cross-GPU Batch Balance Loss**


由于训练过程中涉及到两种不同损失,经常会导致训练时模型优化方向不一致,模型更新来回震荡。于是研究人员提出了下图所示的一种联合损失去平衡这两种训练损失,最小化它们之间的差异。  

picture.image

图3: Cross-GPU Batch Balance Loss

3 实验

Conan-embedding采用了Bert-Large作为基底模型,额外添加一层全连接将隐状态维度从1024放大到1792。同时,采用了目前火热的Matryoshka Representation Learning

Matryoshka Embedding Models: 可以自由截断embedding长度 ,支持用户自定义词向量尺寸。

4 实验结论

1.在中文MTEB榜单上,Conan-embedding以Bert的参数规模,在诸多任务上都取得了sota性能。

picture.image

2.通过进一步的消融实验,可以发现第二阶段的finetune以及两种优化技巧都能模型性能带来明显实验。尤其是在非对称的检索跟重排任务下,由于训练过程见到了更多更具挑战性的hard negative,显著提升了模型这方面的能力。

picture.image

5 讨论

Conan-embedding的两个特别之处,其一是动态的hard negative挖掘策略,保证了模型训练过程中hard negative的质量,让模型不会轻易松懈,其二是经过平衡的联合损失函数,避免模型更新在两个不同损失所对应方向上反复横跳,找到一个整体更合理的优化方向。

在之前也讲过SFR- Embedding-Mistral公布的训练技巧了SFR-Embedding-Mistral: 都来看看吧,大佬们把炼丹秘籍都坦白了。。这两者还是有很多异曲同工之妙的,有兴趣的朋友可以细品。之前的模型会保证每个batch里数据都来源于同个任务或者领域,而Conan-embedding则是采用了一个联合损失,文中训练时所用到平衡不同损失之间的策略或者超参数不一定能直接迁移到其他模型或者数据中去,模型性能对于这个应该会很敏感,如何找到这种平衡策略需要再慎重思考下。

参考文献

1 Conan-embedding: General Text Embedding with More and Better Negative Samples

https://arxiv.org/abs/2408.15710

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 XR 技术的探索与实践
火山引擎开发者社区技术大讲堂第二期邀请到了火山引擎 XR 技术负责人和火山引擎创作 CV 技术负责人,为大家分享字节跳动积累的前沿视觉技术及内外部的应用实践,揭秘现代炫酷的视觉效果背后的技术实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论