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