REALM:將檢索集成到語言表示模型中
自然語言處理的最新進(jìn)展在很大程度上建立在無監(jiān)督預(yù)訓(xùn)練的能力之上,該預(yù)訓(xùn)練使用大量文本訓(xùn)練通用語言表示模型,無需人工注釋或標(biāo)簽。這些預(yù)先訓(xùn)練好的模型,例如BERT和RoBERTa,已被證明能夠記住驚人數(shù)量的世界知識(shí),例如“ Francesco Bartolomeo Conti的出生地”、“ JDK的開發(fā)者”和“ Border TV的所有者””。雖然對(duì)知識(shí)進(jìn)行編碼的能力對(duì)于某些自然語言處理任務(wù)(例如問答、信息檢索和文本生成)尤其重要,但這些模型會(huì)隱式地記憶知識(shí)——即,世界知識(shí)在模型權(quán)重中以抽象方式被捕獲——這使得它變得困難以確定存儲(chǔ)了哪些知識(shí)以及將其保存在模型中的位置。此外,存儲(chǔ)空間以及模型的準(zhǔn)確性受到網(wǎng)絡(luò)大小的限制。為了獲取更多的世界知識(shí),標(biāo)準(zhǔn)做法是訓(xùn)練更大的網(wǎng)絡(luò),這可能會(huì)非常緩慢或昂貴。
相反,如果有一種可以顯式訪問知識(shí)的預(yù)訓(xùn)練方法,例如,通過引用額外的大型外部文本語料庫,以便在不增加模型大小或復(fù)雜性的情況下獲得準(zhǔn)確結(jié)果,該怎么辦?例如,在外部文檔集合中發(fā)現(xiàn)的句子“Francesco Bartolomeo Conti 出生于佛羅倫薩”,可以被模型引用來確定音樂家的出生地,而不是依賴模型訪問存儲(chǔ)在其中的知識(shí)的不透明能力它自己的參數(shù)。檢索包含此類顯性知識(shí)的文本的能力將提高預(yù)訓(xùn)練的效率,同時(shí)使模型能夠在不使用數(shù)十億參數(shù)的情況下在知識(shí)密集型任務(wù)上表現(xiàn)良好。
在2020 年機(jī)器學(xué)習(xí)國際會(huì)議接受的“ REALM: Retrieval-Augmented Language Model Pre-Training ”中,我們分享了一種新的語言模型預(yù)訓(xùn)練范式,它用知識(shí)檢索器增強(qiáng)了語言表示模型,允許 REALM 模型從原始文本文檔中明確檢索文本世界知識(shí),而不是記住模型參數(shù)中的所有知識(shí)。我們還開源了REALM 代碼庫,以演示如何聯(lián)合訓(xùn)練檢索器和語言表示。
背景:預(yù)訓(xùn)練語言表示模型
要了解標(biāo)準(zhǔn)語言表示模型如何記憶世界知識(shí),首先應(yīng)該回顧這些模型是如何預(yù)訓(xùn)練的。自BERT發(fā)明以來,填空任務(wù),稱為掩碼語言建模,已被廣泛用于預(yù)訓(xùn)練語言表示模型。給定任何包含某些單詞的文本,任務(wù)是填補(bǔ)缺失的單詞。此任務(wù)的示例如下所示:
I am so thirsty. I need to __ water.
在預(yù)訓(xùn)練期間,模型將遍歷大量示例并調(diào)整參數(shù)以預(yù)測丟失的單詞(在上例中為 )。有趣的是,填空任務(wù)使模型記住關(guān)于世界的某些事實(shí)。例如,需要愛因斯坦出生地的知識(shí)來填補(bǔ)以下例子中的缺失詞:
answer: drinkEinstein was a __-born scientist. (answer: German)
但是,由于模型捕獲的世界知識(shí)存儲(chǔ)在模型權(quán)重中,因此是抽象的,因此很難理解存儲(chǔ)了哪些信息。
我們的建議:檢索增強(qiáng)語言表示模型預(yù)訓(xùn)練
與標(biāo)準(zhǔn)語言表示模型相比,REALM 使用知識(shí)檢索器增強(qiáng)語言表示模型,該知識(shí)檢索器首先從外部文檔集合中檢索另一段文本作為支持知識(shí)——在我們的實(shí)驗(yàn)中,我們使用維基百科文本語料庫——然后將這些支持文本以及原始文本輸入到語言表示模型中。
REALM 的關(guān)鍵直覺是檢索系統(tǒng)應(yīng)該提高模型填充缺失詞的能力。因此,應(yīng)該獎(jiǎng)勵(lì)為填充缺失詞提供更多上下文的檢索。如果檢索到的信息不能幫助模型做出預(yù)測,則不應(yīng)鼓勵(lì)它,為更好的檢索留出空間。
鑒于在預(yù)訓(xùn)練期間只有未標(biāo)記的文本可用,如何訓(xùn)練知識(shí)檢索器?事實(shí)證明,可以使用填充單詞的任務(wù)來間接訓(xùn)練知識(shí)檢索器,無需任何人工注釋。假設(shè)查詢的輸入是:
We paid twenty __ at the Buckingham Palace gift shop.
在不檢索的情況下 填充這句話中的缺失詞 ( ) 可能會(huì)很棘手,因?yàn)樵撃P托枰[式存儲(chǔ)白金漢宮所在國家和相關(guān)貨幣的知識(shí),并在兩者之間建立聯(lián)系。如果模型提供了一個(gè)明確連接一些從外部語料庫檢索到的必要知識(shí)的段落,則模型會(huì)更容易填充缺失的單詞。
answer:pounds
在這個(gè)例子中,檢索者將因檢索以下句子而獲得獎(jiǎng)勵(lì)。
Buckingham Palace is the London residence of the British monarchy.
由于檢索步驟需要添加更多的上下文,因此可能有多個(gè)檢索目標(biāo)可以幫助填補(bǔ)缺失的單詞,例如,“ The official currency of the United Kingdom is the Pound.”整個(gè)過程如下圖所示:

REALM 的計(jì)算挑戰(zhàn)
擴(kuò)展 REALM 預(yù)訓(xùn)練以便模型可以從數(shù)百萬個(gè)文檔中檢索知識(shí)具有挑戰(zhàn)性。在 REALM 中,最佳文檔的選擇被表述為最大內(nèi)積搜索(MIPS)。為了執(zhí)行檢索,MIPS 模型需要首先對(duì)集合中的所有文檔進(jìn)行編碼,使得每個(gè)文檔都有一個(gè)對(duì)應(yīng)的文檔向量。當(dāng)輸入到達(dá)時(shí),它被編碼為查詢向量。在MIPS中,給定一個(gè)查詢,檢索集合中其文檔向量和查詢向量之間具有最大內(nèi)積值的文檔,如下圖所示:

在 REALM 中,我們使用ScaNN包有效地進(jìn)行 MIPS,這使得尋找最大內(nèi)積值的成本相對(duì)較低,因?yàn)槲臋n向量是預(yù)先計(jì)算的。但是,如果模型參數(shù)在訓(xùn)練期間更新,通常需要為整個(gè)文檔集合重新編碼文檔向量。為了解決計(jì)算挑戰(zhàn),我們構(gòu)建了檢索器,以便可以緩存和異步更新為每個(gè)文檔執(zhí)行的計(jì)算。我們還發(fā)現(xiàn),每 500 個(gè)訓(xùn)練步驟而不是每一步更新文檔向量能夠取得良好的性能并使訓(xùn)練易于處理。
將 REALM 應(yīng)用于開放域問答
我們通過將 REALM 應(yīng)用于開放域問答(Open-QA)(自然語言處理中知識(shí)密集程度最高的任務(wù)之一)來評(píng)估 REALM 的有效性。任務(wù)的目標(biāo)是回答問題,例如“等邊三角形的角度是多少?”
在標(biāo)準(zhǔn)問答任務(wù)(例如 SQuAD或Natural Questions)中,支持文檔作為輸入的一部分提供,因此模型只需要在給定文檔中查找答案。在 Open-QA 中,沒有給定的文檔,因此 Open-QA 模型需要自己查找知識(shí)——這使得 Open-QA 成為檢查 REALM 有效性的一項(xiàng)極好的任務(wù)。
下圖顯示了在Natural Question的 OpenQA 版本上的結(jié)果。我們主要將我們的結(jié)果與T5進(jìn)行比較,T5是另一種在沒有帶注釋的支持文檔的情況下訓(xùn)練模型的方法。從圖中可以清楚地看到,REALM 預(yù)訓(xùn)練生成了非常強(qiáng)大的 Open-QA 模型,甚至比更大的 T5(11B)模型強(qiáng)了近 4 個(gè)百分點(diǎn),僅使用了一小部分參數(shù)(300M)。

結(jié)論
REALM 的發(fā)布有助于推動(dòng)開發(fā)端到端檢索增強(qiáng)模型的興趣,包括最近的檢索增強(qiáng)生成模型。我們期待以多種方式擴(kuò)展這一工作線的可能性,包括 1) 將類似 REALM 的方法應(yīng)用于需要知識(shí)密集型推理和可解釋來源的新應(yīng)用程序(超越 Open-QA),以及 2) 探索檢索其他形式的知識(shí),例如圖像、知識(shí)圖結(jié)構(gòu),甚至其他語言的文本。我們也很高興看到研究社區(qū)對(duì)開源REALM 代碼庫做了什么!
更新說明:優(yōu)先更新微信公眾號(hào)“雨夜的博客”,后更新博客,之后才會(huì)陸續(xù)分發(fā)到各個(gè)平臺(tái),如果先提前了解更多,請(qǐng)關(guān)注微信公眾號(hào)“雨夜的博客”。