【ICML 2020】REALM: Retrieval-Augmented Language Model PreTraining
知識(shí)就是力量
培根
背景
去年可以說是語言模型快速發(fā)展的一年,BERT、XLNET、Albert等等模型不斷刷新各個(gè)NLP榜單。在NLP榜單中比較引人注目的應(yīng)該屬于閱讀理解型的任務(wù),例如SQuAD等等。以SQuAD為例,模型需要閱讀一段給定的文本,然后回答幾個(gè)問題,問題如果存在答案,答案一定可以在文章中找到。所以說雖然叫閱讀理解,但其實(shí)和序列標(biāo)注有點(diǎn)相像,是在給定序列中標(biāo)出答案段。而這篇論文針對(duì)的問題叫開放領(lǐng)域問答(Open-domain QA),對(duì)于一個(gè)問題Q,模型需要從包含大量文檔的知識(shí)庫中找到答案,而不是像SQuAD數(shù)據(jù)集一樣從一篇文章中尋找。
大部分的語言模型都采用一種稱為masked language model,簡稱MLM的任務(wù)來訓(xùn)練,讓模型學(xué)會(huì)類似完形填空一樣的能力。通過在大規(guī)模語料上的訓(xùn)練,預(yù)訓(xùn)練語言模型如BERT實(shí)際上已經(jīng)隱含了一些知識(shí)。例如輸入一句“The ? ? ? is the currency of the United Kingdom”,BERT很有可能會(huì)填入單詞"pound"。雖然他還是根據(jù)詞的共現(xiàn)信息學(xué)習(xí)和推理的,但看上去就像具有所謂的知識(shí)一樣。從去年開始就有越來越多的研究從單純語言模型轉(zhuǎn)換為帶有知識(shí)嵌入的語言模型,例如清華和百度提出的兩個(gè)同名模型ERNIE。
但上面說的這種隱含知識(shí)不好把握,也難以擴(kuò)展。這篇論文則提出了一種更加模塊化且可解釋性更強(qiáng)的知識(shí)嵌入方法。總的來說,他的方法是訓(xùn)練一個(gè)獨(dú)立的“語境知識(shí)抽取器”(contextual knowledge retriever),通過這個(gè)抽取器來決定應(yīng)該在推理時(shí)使用哪些知識(shí)。而且這個(gè)抽取器和語言模型一起進(jìn)行非監(jiān)督預(yù)訓(xùn)練大大提高模型性能。
方法
如上圖所示,整篇論文涉及兩個(gè)任務(wù),左邊是語言模型預(yù)訓(xùn)練任務(wù)MLM,右邊是QA任務(wù)。下圖是預(yù)訓(xùn)練任務(wù)一個(gè)更加完整的流程圖,我們由此切入進(jìn)行介紹。
整個(gè)過程分為兩個(gè)關(guān)鍵步驟。先看第一步,即neural knowledge retriever,它負(fù)責(zé)計(jì)算p(z|x)。要實(shí)現(xiàn)這個(gè)過程首先需要對(duì)z和x進(jìn)行編碼。論文采用的是BERT,對(duì)于問題x,直接輸入BERT,取[CLS] token的輸出作為編碼向量,而對(duì)于文檔z,則將標(biāo)題和正文用[SEP]連接后輸入BERT,同樣去[CLS] token的輸出。論文中還對(duì)BERT的輸出向量進(jìn)行了降維處理。即
對(duì)于文檔庫中的某一個(gè)z,則
其中f是問題和文檔的相關(guān)性,
以上部分就稱為neural knowledge retriever,通過他每篇z都會(huì)得到一個(gè)p。現(xiàn)在可以進(jìn)行第二步,綜合x和z求y。上圖是一個(gè)預(yù)訓(xùn)練的例子,y是摳掉的詞。利用z的方式是將z的正文和x拼在一起來提供上下文信息,然后優(yōu)化下面的目標(biāo)
其中j指第j個(gè)masked token。
在做QA的時(shí)候稍有不同。由于此時(shí)是針對(duì)某個(gè)具體的z,所以作者將開放域問答任務(wù)退化成了像SQuAD一樣在文檔中找答案的閱讀理解任務(wù)。
這一部分就是knowledge-augmented encoder。
訓(xùn)練
上面已經(jīng)描述了預(yù)訓(xùn)練階段和QA finetune階段的任務(wù)。訓(xùn)練的過程都是最大化正確y對(duì)應(yīng)的logp(y|z,x),而且以上描述的兩個(gè)任務(wù)都是可以端到端優(yōu)化的。
但這里面對(duì)一個(gè)問題,上面有個(gè)公式需要對(duì)整個(gè)知識(shí)庫中所有的文檔z的相關(guān)概率求和,這是很困難的。作者提出將這一步用只對(duì)概率最高的k個(gè)文檔計(jì)算來近似,因?yàn)榻^大部分文檔由于與問題不相關(guān),p(z|x)都非常小。但問題還沒有解決,如何找到概率最高的k個(gè)文檔呢。
觀察公式可以發(fā)現(xiàn)p(z|x)是正比于兩個(gè)編碼后的內(nèi)積的,由于大家的分母都一樣,分子的順序就是整個(gè)分?jǐn)?shù)的順序。所以可以用最大內(nèi)積搜索算法(Maximum Inner Product Search, MIPS,并不知道是什么,維基百科都沒有)來解決。但要構(gòu)建一個(gè)快速檢索的索引又要求兩個(gè)編碼后的向量是確定的,而由于編碼器是不斷訓(xùn)練的,所以這個(gè)條件無法滿足。為了追求一個(gè)平衡,作者決定每隔幾百步才更新一下編碼器,并重新構(gòu)建索引。而且這只發(fā)生在預(yù)訓(xùn)練語言模型的時(shí)候,在finetune QA任務(wù)的時(shí)候只使用語言模型得到的編碼器編碼一次所有的z和x并構(gòu)建索引。
額外策略
在研究過程中作者發(fā)現(xiàn)了一些能讓模型更好訓(xùn)練的策略。
只訓(xùn)練真正需要知識(shí)的詞(通常是實(shí)體和日期)來訓(xùn)練MLM
在topk文檔外添加一個(gè)虛擬的null document
避免讓x出現(xiàn)在z中(因?yàn)閤被mask過,如果它來源于z,那答案就暴露了!)
避免冷啟動(dòng)的retriever太渣導(dǎo)致的惡性循環(huán),他們用了一個(gè)以ICT作為任務(wù)的模型來初始化retriever
結(jié)果對(duì)比
這篇論文的對(duì)手主要是原來sparse retriever+神經(jīng)閱讀理解模型的組合,例如大名鼎鼎的DrQA。所謂sparse retriever就是指用例如TFIDF之類的特征進(jìn)行檢索的模型。還有一些跟本文很像的neural retriever+neural reader的組合。其中提到了一個(gè)ORQA,跟這篇非常像,只是這篇增加了預(yù)訓(xùn)練的步驟。最后是一些生成式模型,例如finetune后的T5(可怕!)
在Natural Questions-Open(NQ)、Web Questions(WQ)和Curated Trec(CT)三個(gè)數(shù)據(jù)集上的結(jié)果如下
總之一句話,非常牛逼!而且這里模型只取了top 5文檔,其他模型可能取了20-80篇,還是打不過他。注意到ours的括號(hào)內(nèi)有兩個(gè)數(shù)據(jù),Z是知識(shí)庫,很好理解,X是指預(yù)訓(xùn)練用的語料。而且通過文章的Ablation Analysis部分可以知道預(yù)訓(xùn)練其實(shí)是非常關(guān)鍵的一個(gè)步驟,對(duì)performance的貢獻(xiàn)非常大。
后記
我感覺這篇論文和他提到的ORQA還是很厲害的,知識(shí)嵌入也從去年的實(shí)體粒度的嵌入發(fā)展到了如今句子、篇章級(jí)別的嵌入。試想一下,這項(xiàng)技術(shù)發(fā)展起來之后,如今基于詞的Sparse搜索引擎應(yīng)該很快會(huì)發(fā)展成對(duì)NN更友好的Dense搜索引擎,所有的內(nèi)容也許都會(huì)被映射到一個(gè)向量空間。各路神經(jīng)網(wǎng)絡(luò)將在這個(gè)向量空間盡情馳騁~莫非得encoder者得天下?!
論文鏈接:https://kentonl.com/pub/gltpc.2020.pdf
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)在線手冊(cè)AI基礎(chǔ)下載(pdf更新到25集)備注:加入本站微信群或者qq群,請(qǐng)回復(fù)“加群”獲取一折本站知識(shí)星球優(yōu)惠券,請(qǐng)回復(fù)“知識(shí)星球”喜歡文章,點(diǎn)個(gè)在看 與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的【ICML 2020】REALM: Retrieval-Augmented Language Model PreTraining的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一文看懂Transformer到BERT
- 下一篇: 分享一些面试中的经验和心得