騰訊屠榜MTEB,嵌入模型告別BERT,擁抱LLM
- 訓(xùn)練一個(gè)好的向量模型的重點(diǎn)在于最大限度地利用了更多、更高質(zhì)量的負(fù)樣本,來訓(xùn)練模型。
- 騰訊提出的Conan-embedding,采用了動(dòng)態(tài)硬負(fù)樣本挖掘方法,以便在整個(gè)訓(xùn)練過程中向模型展示更多具有挑戰(zhàn)性的負(fù)樣本。
- 最近發(fā)布Conan-embedding-V2版本,在MTEB榜單上已經(jīng)超越了BGE等一眾傳統(tǒng)豪強(qiáng)。
- 支持中、英雙語
一、Conan-embedding-V2
- V1版本主要基于通用預(yù)訓(xùn)練的雙向Bert模型進(jìn)行Embedding任務(wù)的訓(xùn)練。
- V2版本從頭訓(xùn)練了原創(chuàng)詞表和模型結(jié)構(gòu)的大模型基座——Conan-1.4B,在此基礎(chǔ)上進(jìn)行了中、英、多語言的Embedding任務(wù)的訓(xùn)練。
- 上下文長(zhǎng)度從v1版本的512,提升到了32k。
訓(xùn)練的4個(gè)階段
- 第1和第2階段,大語言模型(LLM)訓(xùn)練階段
加入嵌入數(shù)據(jù),以更好地使LLM與嵌入任務(wù)對(duì)齊
設(shè)計(jì)了Conan-1.4B,包含8層Attention Layers,Hidden Size為3584,最長(zhǎng)上下文32k。
參數(shù)量是1.4B,能夠在較少的參數(shù)下提供更大的Embedding維度。
從基礎(chǔ)的字母、符號(hào)上,在約40萬條多語言語料上訓(xùn)練了Conan的BBPE分詞器,目標(biāo)詞表大小15萬,完成了詞表訓(xùn)練。
- 第3階段,弱監(jiān)督訓(xùn)練階段
使用與LLM監(jiān)督微調(diào)(SFT)相同的配對(duì)數(shù)據(jù),并應(yīng)用軟掩碼來彌合LLM與嵌入模型之間的差距。
使用gte-Qwen2-7B-instruct模型進(jìn)行評(píng)分,并丟棄得分低于0.4的數(shù)據(jù)
訓(xùn)練中采用了InfoNCE損失函數(shù),并結(jié)合In-Batch Negative采樣
- 第4階段,監(jiān)督訓(xùn)練階段
引入了跨語言檢索數(shù)據(jù)集和動(dòng)態(tài)硬負(fù)例挖掘方法,以提高數(shù)據(jù)的多樣性和價(jià)值
針對(duì)不同的下游任務(wù)進(jìn)行任務(wù)特定的微調(diào)。
將任務(wù)分為四類:檢索、跨語言檢索、分類和語義文本相似度(STS)。
前三類任務(wù):包括一個(gè)查詢、一個(gè)正例文本和一些負(fù)例文本,使用經(jīng)典的InfoNCE損失函數(shù)。
STS任務(wù)涉及區(qū)分兩個(gè)文本之間的相似度,采用CoSENT損失來優(yōu)化。
為了更好的對(duì)比Conan-embedding提升了哪些內(nèi)容,下面也簡(jiǎn)單介紹一下Conan-embeddingV1,尤其注意一下難例數(shù)據(jù)挖掘的方法,v2版本也是用同樣的方法
二、Conan-embeddingV1
總共分為:預(yù)訓(xùn)練和微調(diào)兩個(gè)階段
2.1 預(yù)訓(xùn)練階段
- 篩選數(shù)據(jù):bge-large-zh-v1.5模型評(píng)分,丟棄所有得分低于 0.4 的數(shù)據(jù)。
- 使用帶批內(nèi)負(fù)樣本的 InfoNCE 損失進(jìn)行訓(xùn)練,它利用小批量?jī)?nèi)的其他樣本作為負(fù)樣本優(yōu)化模型。
- 即,在每個(gè)小批量中,除了目標(biāo)樣本的正樣本對(duì)之外的所有樣本都被視為負(fù)樣本。
- 通過最大化正樣本對(duì)的相似性并最小化負(fù)樣本對(duì)的相似性,批內(nèi)負(fù)樣本 InfoNCE 損失可以有效地提高模型的判別能力和表示學(xué)習(xí)性能。
- 此方法通過充分利用小批量?jī)?nèi)的樣本,提高了訓(xùn)練效率,減少了生成額外負(fù)樣本的需求。
2.2 監(jiān)督微調(diào)
監(jiān)督微調(diào)時(shí)對(duì)不同的下游任務(wù)執(zhí)行特定的微調(diào)任務(wù)。將任務(wù)分為兩類:
- 檢索任務(wù):
包括查詢、正文本和負(fù)文本,經(jīng)典的損失函數(shù)是 InfoNCE 損失。
- STS 任務(wù):
涉及區(qū)分兩個(gè)文本之間的相似性,經(jīng)典的損失函數(shù)是交叉熵?fù)p失。
CoSENT 損失略優(yōu)于交叉熵?fù)p失,因此采用 CoSENT 損失來優(yōu)化 STS 任務(wù)。
三、難例數(shù)據(jù)挖掘
一種動(dòng)態(tài)難樣本挖掘方法介紹:
- 對(duì)于每個(gè)數(shù)據(jù)點(diǎn),記錄當(dāng)前相對(duì)于查詢的難樣本的平均分?jǐn)?shù)。
- 每 100 次迭代,如果分?jǐn)?shù)乘以 1.15 小于初始分?jǐn)?shù),并且分?jǐn)?shù)的絕對(duì)值小于 0.8,將認(rèn)為負(fù)樣本不再困難,并進(jìn)行新一輪的難樣本挖掘。
- 在每次動(dòng)態(tài)困難負(fù)例挖掘過程中,如果需要替換困難負(fù)例,使用 (i-1)\times n + 10到i\times n +10 的案例作為負(fù)例,其中 i表示第 i次替換,而 n表示每次使用的困難負(fù)例數(shù)量。
- 上圖展示了動(dòng)態(tài)困難負(fù)例挖掘與標(biāo)準(zhǔn)困難負(fù)例挖掘中正例和負(fù)例的得分-步數(shù)曲線
- 隨著步驟的增加,標(biāo)準(zhǔn)困難負(fù)例挖掘中負(fù)例的得分停止下降并開始振蕩,表明模型已經(jīng)完成了從該批負(fù)例中學(xué)習(xí)。
- 相反,動(dòng)態(tài)困難負(fù)例挖掘一旦檢測(cè)到負(fù)例不再對(duì)模型構(gòu)成挑戰(zhàn),就會(huì)替換這些困難負(fù)例。
??https://arxiv.org/pdf/2408.15710??
本文轉(zhuǎn)載自??CourseAI??,作者:CourseAI
