1 簡介
句向量技術(shù)是將連續(xù)的文本轉(zhuǎn)化為固定長度的稠密向量,將句子映射到同一個向量空間中,從而應(yīng)用到各種下游任務(wù),例如分類,聚類,排序,檢索,句子相似度判別,總結(jié)等任務(wù),一種優(yōu)異的句向量技術(shù)可以明顯提升諸多下游任務(wù)的性能。關(guān)于如何利用語言模型輸出文本的句向量,在21年底的時候?qū)戇^一篇基于Bert的句向量文章,里面介紹了諸多種基于encoder-only的Bert相關(guān)方法Bert系列之句向量生成。
但是之前的句向量技術(shù),泛化能力相對有限,當(dāng)遷移到新任務(wù)或者新領(lǐng)域后,總需要進(jìn)一步的訓(xùn)練才能保證效果。最近發(fā)現(xiàn)了一種新的句向量技術(shù),在輸入中加入跟任務(wù)跟領(lǐng)域相關(guān)的instruction,來指導(dǎo)語言模型生成適配下游任務(wù)的句向量,而不需要進(jìn)行額外的訓(xùn)練,在MTEB榜單的表現(xiàn)可以媲美openai最新的text-embedding-ada-002模型。為了更好地理解Instructor,在這里梳理了Instructor的一個技術(shù)演化過程,從Sentence-T5到GTR,再到Instructor,這幾種模型都在MTEB榜單上有不錯的表現(xiàn),有興趣的讀者可以自行查詢。
2 Sentence-T5?????????
Encoder-decoder結(jié)構(gòu)的T5雖然在seq2seq的任務(wù)中表現(xiàn)優(yōu)異,但是如何從T5中獲取合適的句向量依舊未知。于是就有研究嘗試了幾種從T5中獲取句向量的方式,具體如圖所示,
a)Encoder-only first,利用T5 最后一層encoder第一個token的特征輸出作為句向量。不同于Bert,T5模型沒有CLS 的token。所以拿第一個token的輸出來當(dāng)句向量看起來就不靠譜。
b)Encoder-only mean,利用T5最后一層encoder所有token的特征輸出平均值作為句向量。
c)Encoder-Decoder first,利用T5最后一層decoder的第一個token的輸出作為句向量。為了獲得這個token的輸出,需要將input文本輸入encoder,還需要將代表start的token喂給decoder。
圖2: T5模型結(jié)構(gòu)跟3種句向量變體
利用的前面提及的幾種句向量變種可以獲得固定長度的句子表征,在加上一個全連接層跟Normalization層就可以得到歸一化的句向量。訓(xùn)練采用的是雙塔模型結(jié)構(gòu),但是左右兩邊共用同一個模型跟參數(shù)。
圖3: dual encoder結(jié)構(gòu)
訓(xùn)練方法采用的是常見的對比學(xué)習(xí),同一個batch內(nèi),希望同個instance(sentence1, sentence2)的兩個相關(guān)句子之間的距離足夠接近(分子部分),不同instance里的不相關(guān)句子之間的距離足夠疏遠(yuǎn)。如果同個instance還有強(qiáng)不相關(guān)的sentence,也希望不相關(guān)的句子之間距離足夠疏遠(yuǎn)。同時了,為了研究增加額外訓(xùn)練數(shù)據(jù)的影響,采用了兩階段的訓(xùn)練方式,第一個階段現(xiàn)在通用領(lǐng)域的問答數(shù)據(jù)訓(xùn)練(Community QA),第二階段才在人工標(biāo)注的數(shù)據(jù)(NLI)訓(xùn)練。
圖4: 損失函數(shù)
部分實驗結(jié)論
a)T5 Encoder-only mean的效果明顯優(yōu)于BERT系列,大部分?jǐn)?shù)據(jù)集上也優(yōu)于其余兩種T5句向量變體,在更多數(shù)據(jù)上finetune能給模型帶來巨大的提升,從而解決模型T5的句向量坍塌問題。(作者猜測encoder-decoder結(jié)構(gòu)里,encoder更傾向于生成通用性的表征,更具泛化能力,而decoder更聚焦于針對下游任務(wù)優(yōu)化。
b)在大部分任務(wù)上,增加T5模型的規(guī)??梢赃M(jìn)一步提升性能。
c)除此之外,還發(fā)現(xiàn)了實驗中訓(xùn)練過程使用了巨大的batch size,第一階段的batch size是2048,第二階段的batch size是512,遠(yuǎn)超simcse實驗中的最佳參數(shù)配置64。
圖5: Sentence T5實驗效果對比
3 GTR????????
還是sentence T5的那批人,發(fā)現(xiàn)T5的encoder-only mean產(chǎn)生的句向量效果還不錯后,就繼續(xù)在這上面做進(jìn)一步研究,進(jìn)一步探索這種句向量模型在檢索任務(wù)上的遷移能力。模型沒變,訓(xùn)練數(shù)據(jù)把第二階段換成了另外的檢索相關(guān)的數(shù)據(jù)集,MS Macro(Bing的搜索數(shù)據(jù))跟Natural Questions(常用于檢索的問答數(shù)據(jù)集)。
訓(xùn)練方法雖然還是用的對比學(xué)習(xí),但是具體計算過程跟simcse有所差異,由于每一個instance都包含(query, pos, neg),pos跟neg分別是query對應(yīng)的相關(guān)文檔positive跟強(qiáng)不相關(guān)文檔hard negative,對應(yīng)的對比學(xué)習(xí)的損失由兩部分,
a)同一個instance里的query跟pos是正樣本,query跟同個batch里的所有neg之間都是負(fù)樣本。
b)同一個instance里的pos跟query是正樣本,pos跟同個batch里其他instance的query之間都是負(fù)樣本。
部分實驗結(jié)論
a)隨著模型規(guī)模的增加,在領(lǐng)域外的性能提升明顯,換言之,更大的模型具有更強(qiáng)大的泛化能力。同時,也發(fā)現(xiàn)GTR對于數(shù)據(jù)的利用非常高效,在MS Macro數(shù)據(jù)集上只使用10%的數(shù)據(jù)也能達(dá)到很不錯的效果。
圖6: GTR在BEIR榜的表現(xiàn)
b)做完兩階段訓(xùn)練的GTR強(qiáng)于只做第一階段或者第二階段訓(xùn)練的模型,在領(lǐng)域內(nèi)跟領(lǐng)域外的表現(xiàn)都比較一致,隨著模型規(guī)模增加也有一定的提升,同時也說明了第二階段的高質(zhì)量數(shù)據(jù)對于模型的幫助。
圖7: 不同訓(xùn)練階段的GTR效果對比(GTR- FT跟GTR- PT分別是只進(jìn)行第二階段跟第一階段訓(xùn)練的模型)
c)隨著模型規(guī)模的增加,召回的文檔長度也有增加的趨勢。
d)依舊巨大的batch size,兩個階段的訓(xùn)練batch size都是2048。
4 Instructor?????????
目前的大模型,在給定instruction后會按照指令生成相應(yīng)的內(nèi)容,那么對于句向量模型而言,同樣一句話,可以通過給定模型不同的instruction,讓模型生成適合下游任務(wù)的句向量嘛?instructor就實現(xiàn)了這個設(shè)想。
圖8: Instructor
Instructor采用了前面的GTR作為初始模型,訓(xùn)練方法也依舊保持,只是原本的模型接受文本作為輸入,instructor同時接受instruction跟文本作為輸入,從而生成符合指令的句向量
Instructor的訓(xùn)練數(shù)據(jù)是一個數(shù)據(jù)集集合MEDI,里面包含330個來自SuperNaturalInstructions的數(shù)據(jù)集跟30個現(xiàn)存的用于句向量訓(xùn)練的數(shù)據(jù)集。每個數(shù)據(jù)集都包括對應(yīng)的instruction,數(shù)據(jù)集中的每個instance都是如下格式,
Instance = {“query”: [instruction_1, sentence_1],
“pos”:[instruction_2, sentence_2],
“neg”:[Instruction_2, sentence_3]}
如果是類似句子相似度的對稱類任務(wù),那就只有一個instruction,示例中的instruction_1跟instruction_2就是同一個,如果是類似檢索的非對稱任務(wù),那么query跟doc都各有一個instruction,instruction_1跟instruction_2就是兩個不同的instruction。Sentence_2表示是跟sentence_1相關(guān)的文本,而sentence_3則是不相關(guān)的文本。
通過這種數(shù)據(jù)集構(gòu)造,可以保證每個instance都有自身的hard negative,以及同個batch內(nèi)其他instance充當(dāng)簡單負(fù)樣本。在訓(xùn)練過程過程,為了提高難度,會保證同個batch里所有instance都來自于同個數(shù)據(jù)集。
部分結(jié)論如下:
a)Instructor在三個榜單的平均表現(xiàn)最佳,在多個不同任務(wù)上的呈現(xiàn)出強(qiáng)大的通用能力。
b)加上instruction的模型訓(xùn)練,讓模型在對稱類任務(wù)跟非對稱類任務(wù)上都取得明顯提升。
c)訓(xùn)練數(shù)據(jù)加入了330來自SUPERNATURALINSTRUCTION數(shù)據(jù)集的多個instruction使得模型具備處理不同類型跟風(fēng)格的instruction的能力,幫助模型更好的能泛化到新領(lǐng)域。同時,instruction的內(nèi)容越詳細(xì)豐富,instructor效果越好。
圖9:三個榜單的模型表現(xiàn)比較
圖10: instructor在新領(lǐng)域的表現(xiàn)
5 總結(jié)?????????????
instruction的引入,使得句向量模型能更好地遷移到新的任務(wù)跟領(lǐng)域,而不需要額外的訓(xùn)練。從Instructor的演化進(jìn)程,不難看出從encoder-deocder模型中選擇Encoder-only mean方法,生成的句向量效果明顯優(yōu)于Bert系列的方案,猜測這是由于其中的encoder更傾向于生成更通用的特征,而不是針對下游任務(wù)。同時也可以看到雖然還是沿用的對比學(xué)習(xí)方案,但是訓(xùn)練數(shù)據(jù)也逐漸從之前的(query,pos)pair對轉(zhuǎn)換為(query, pos, neg)的三元組,通過設(shè)置較大的batch,既能保證訓(xùn)練難度,也能保證訓(xùn)練效率。
Instructor看起來還是蠻吸引人的,不由聯(lián)想到語言模型的instruction tuning工作,有點異曲同工之意。本文提及的這三種方案是循序漸進(jìn)的,雖然模型都已經(jīng)開源,但遺憾的是都不支持中文。最近也看到一個中文的句向量開源方案,采用跟instructor類似的訓(xùn)練思路。
審核編輯:劉清
-
CLS
+關(guān)注
關(guān)注
0文章
9瀏覽量
9718 -
GTR
+關(guān)注
關(guān)注
1文章
19瀏覽量
11153
原文標(biāo)題:Instructor: 能遵循instruction的句向量模型
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論