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