RAG:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 论文阅读
2020 NeuralPS
文章地址:https://arxiv.org/abs/2005.11401
源碼地址:GitHub - huggingface/transformers: 🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX.? ? ? ?- 142 RAG
目錄
0、背景
1、摘要
2、導言? ? ??
3、結論
4、模型
5、實驗
6、與REALM比較
7、想法
0、背景
????????Language Models as Knowledge Bases?(LAMA)這篇論文作者認為現如今經過預訓練之后的語言模型可以看做是一個知識庫,但是也引來了模型的局限性:各種知識都隱藏在模型龐大的參數中, 并不知道知識如何獲取到的,以及模型給出答案的理由。從這篇論文之后,NLP研究者們就開始致力于從增強模型的可解釋性方面入手來提高模型的效果。本篇就是其中的一篇代表作。主要思路和2020.2發表的REALM很類似(在我的nlp專欄里有對REALM這篇文章的講解)。
1、摘要
????????很多參數知識存儲在LLMs中的參數中(LAMA這篇文章證明),針對下游任務微調之后可以取得SOTA效果。但是這種方式具有一定的劣勢:在Open-QA任務上,仍然還很欠缺,(語言模型還不能很好的獲取精確知識)、給出的答案不具有可解釋性,對于知識庫無法實現實時更新的效果,不便于更新。論文提出RAG:參數化知識(BART預訓練學到的知識) + 非參數化知識(維基百科的密集向量索引)結合的方式來解決這三類問題。
2、導言? ? ??
現如今語言模型缺點
(1) 不能輕易擴展或修改“記憶”
(2) 模型給出的預測不具有可解釋性
(3) 可能產生“幻覺”(幻覺的解釋:生成了不可靠的文本,即一? ?本正經的胡說八道)。幻覺的官方定義:在給定的信息源下是無意義的,不可靠的
????????綜上,在當前的知識密集型任務的研究中,具有實用價值的模型基本都依賴于外部知識庫。開放域問答系統(Open-domain QA)是最經典也最重要的知識密集型任務之一,目前的SOTA模型基本都包含兩個模塊:文檔檢索器和文檔閱讀器,前者負責檢索重排和輸入相關的文檔,后者負責從這些文檔中抽取或生成出答案片段。
3、結論
(1) 雖然可以直接從文檔中抽取答案片段,但直接生成答案有一些額外的好處,比如有些文檔并不直接包含整個答案,但包含答案的線索,這些線索就能幫助模型生成更正確的答案;
(2) 與REALM相比,RAG是參數化知識+非參數化知識的結合,所以即是檢索不到有用的相關文檔z,也可以單憑參數化的知識(BART),根據模型學到的知識回答出正確的答案;
(3)??RAG的靈活性很高。要改變預訓練的語言模型所知道的內容,需要用新的文檔對整個模型進行再訓練。通過 RAG,我們可以通過交換知識檢索所用的文檔來控制它所知道的內容。
4、模型
(1) 檢索器:DPR模型(Dense Passage Retriever), 用以檢索和輸入相關的文檔,遵循雙編碼器結構。
?d(z)是Bert產生的文檔的密集表示,q(x)也是經過BERT embedding之后產生的向量
使用DPR的預先訓練的雙編碼器來初始化檢索器并構建文檔索引。這種檢索器被訓練來檢索包含TriviaQA問題和自然問題的答案的文檔。
檢索器檢索到的相關文檔經過BERT embedding之后即非參數化知識。
(2) 生成器:seq2seq模型(使用預訓練的BART-large作為生成模型),經過預訓練已具備一定的參數知識的模型,將上面檢索器得到的相關文檔和輸入一起進行處理,得到輸出。
這里是將dz和qx簡單拼接之后送入生成器中得到答案。
生成器使用預訓練之后的BART即參數化知識。
5、實驗
????????在下面的實驗中,模型使用的外部知識庫均為2100萬個Wikipedia文檔,每個文檔包含100個詞。在訓練之前,首先用文檔編碼器獲取文檔的稠密向量表示,然后利用FAISS構建MIPS索引實現文檔的快速檢索。作者在開放域問答(Open-domain QA)、摘要式問答(Abstractive QA)、開放域問題生成(Open-domain QG)和事實驗證(Fact Verification)這四類知識密集型任務上測試了不同模型。
table 2第一列是開放域問題生成,第二列是摘要式問答,第三列是事實驗證
關于實驗的主要結論:
開放域問答:RAG在所有四個開放域QA任務上都實現了SOTA,與REALM和T5+SSM不同的是,RAG不需要昂貴的專門“salient span mask”預訓練,依靠現成的組件,就可以獲得強大的效果。RAG證明,對于最先進的機器閱讀性能來說,重新排序器和提取閱讀器都不是必需的。此外,雖然可以直接從文檔中抽取答案片段,但直接生成答案有一些額外的好處,比如有些文檔并不直接包含整個答案,但包含答案的線索,這些線索就能幫助模型生成更正確的答案,而這對抽取式模型來說是做不到的。
開放域問題生成:在引入了外部知識后,RAG模型的表現明顯優于BART,證明了引入外部知識的有效性。在Table 3的人工評價中,RAG生成的問題更符合事實(factual),也更具體(specific),同樣證明了引入外部知識的有效性。
在摘要式問答和事實驗證任務中:由于模型沒有使用任務數據集提供的外部知識文檔(有些問題如果不使用任務數據集提供的外部知識文檔就無法回答)且沒有像SOTA模型一樣進行針對文本檢索結果的fine-fune,RAG能取得與SOTA模型接近的結果仍然是令人印象深刻的。???????
????????另外值得注意的是,作者發現在生成實體名的第一個token之后,外部文檔對生成結果的貢獻再次趨于平緩。這一觀察結果表明,生成器無需依賴于特定的文檔就可以完成實體生成。換句話說,模型的參數知識足以完成實體生成,文檔信息僅僅起到了提示和引導的作用,因此整個RAG模型主要依靠的還是參數知識,而在生成實體時非參數知識才會起到作用。
6、與REALM比較
本篇文章(2020.6)和同年2月發表的REALM之間的區別
(1) 一個是生成式的任務(RAG),一個是抽取式的任務(REALM)。抽取式的弊端就是,如果檢索不到問題q相關的文檔z,那么模型將無法輸出正確的答案。因為REALM輸出答案都默認是從文檔z中抽取出來的。但是RAG就解決了這個問題,即使沒有正確答案,也能根據預訓練好的BART生成正確答案。
(2) REALM在預訓練期間需要實時更新文檔索引,這會造成很大的開銷。而RAG作者保持文檔編碼和索引固定不變,只微調查詢編碼器BERTq和BART生成器。
相同點
(1) 在檢索部分都使用計算向量內積的方式計算相似度得分;
(2) 都使用維基百科作為外部知識庫。
7、想法
1.研究模型中的兩個組件是否可以從頭開始聯合預訓練,無論是使用類似于BART的去噪目標還是其他目標,都可能是富有成效的;
2.參數記憶 + 非參數記憶如何相互作用以及如何最有效的組合他們開辟了新的研究方向,有望應用于各種NLP任務;
3.從某種程度上講,這種將相關文檔和問題拼接進行預測結果的方式有些類似于提示學習,有沒有一種可能,這些相關文檔可以替代我們人類給出的提示來提升LMs的效果。
?
總結
以上是生活随笔為你收集整理的RAG:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 论文阅读的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构——三
- 下一篇: ionic2微信支付,分享,登录