【论文笔记】检索还是生成回复?RAG:我都要
目錄
- 引言
- 模型結構
- 第一部分:Retriever
- 第二部分:Generator
- 實驗結果
- 結果分析
- 總結
引言
在問答和對話的場景下,通常可以通過檢索和生成兩種方式得到一個回復。檢索式回復是在外部知識庫中檢索出滿意的回復,較為可靠和可控,但回復缺乏多樣性;而生成式回復則依賴于強大的語言模型中儲存的內部知識,不可控,解釋性差,但能生成更豐富的回復。把檢索和生成結合起來,Facebook AI research 聯合 UCL 和紐約大學于 2020 年提出外部知識檢索加持下的生成模型,Retrieval-Augmented Generation (RAG)。
論文名稱:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
論文地址:http://arxiv.org/abs/2005.11401
論文代碼:https://github.com/huggingface/transformers/tree/master/examples/research_projects/rag
模型結構
RAG 由兩部分組成,第一部分負責根據 query x x x 檢索出 top-k 個匹配的文檔 z i z_i zi?,第二部分將 query 和文檔拼接起來送入 seq2seq 模型,生成回復 y y y。
第一部分:Retriever
在第一部分 Retriver 中,RAG 通過兩個不同的 BERT 把外部知識和 query 嵌入為稠密向量,做內積得到內積最大的 k 個文檔。將 query 和文檔拼接起來組成 k 個輸入,作為第二部分的輸入。
第二部分:Generator
在第二部分 Generator 中,有兩種使用文檔的方式,第一種是使用同一個文檔生成每個詞,先確定一個文檔 z i z_i zi?,然后計算 p ( y ∣ x , z i ) p(y|x,z_i) p(y∣x,zi?);第二種是使用不同的文檔生成每個詞,對于第 i i i個位置,候選詞的概率等于所有文檔的條件概率之和,即計算候選詞對文檔的邊際概率。
第一種稱為 RAG-Sequence model:
第二種稱為 RAG-Token model:
BART 是一個基于完整的 transformer 預訓練模型,使用去噪作為預訓練任務。作者選用 BARTlarge 作為 RAG 的生成器。
在訓練過程中,只有負責嵌入 query 的 BERT 和負責生成的 BART 參與微調更新參數,負責嵌入外部知識的 BERT 不用更新參數。在測試過程中,RAG-Token model 在計算當前詞的概率時,前面位置候選詞的概率已經完成計算了。因此,RAG-Token model 如同樸素的生成模型一樣使用 beam search 解碼。而 RAG-Sequence model 要遍歷完所有文檔才能得到每個位置候選詞的概率。因此需要對每個文檔使用 beam search 解碼,然后再整合。
實驗結果
作者在四個知識密集型的任務上測試了 RAG 的性能,統一使用維基百科(包含2100萬個文檔)作為外部知識:
- Open-domain question answering:開放域問答,指沒有參考文檔的問答。從 Table 1 來看,RAG 在大部分數據集上表現最好;
- Abstractive question answering:抽取式問答,是從數據集給的文檔中選取一些詞作為回答。在實驗中,作者丟棄了數據集提供的文檔 gold context,把抽取式問答當作了開放域問答。從 Table 2 的 MSMARCO 來看,RAG 不敵加了 gold context 的模型,但比樸素的 BART 表現好;
- Jeopardy question generation:開放域問題生成,前面兩個任務都是根據問題生成回答,這個任務是根據回答生成問題;
- Fact verification:一個三分類推理任務,推理一段陳述被維基百科支持/被維基百科否認/無法判斷。
結果分析
總體來看,RAG 在開放域回答和開放域問題生成上取得較好的成績,而在依賴于 gold context 的任務上表現較差。與 BART 的結果對比可以發現,作者融合檢索外部知識可以提高模型性能。同時,RAG 在生成句子的質量上也可圈可點。
從生成的結果可以看到,對比 BART,RAG 可以生成不重復、多樣化和準確的回答。
RAG 的可解釋性可以體現在解碼過程中,文檔對候選詞的影響。分析候選詞的概率可以發現,外部知識負責指導生成的大概內容,然后模型的內部知識負責生成具體的回復。例如,生成“sun”的時候,第二個文檔占主導,而在解碼“sun”后面的單詞時,文檔的概率都不高,說明是模型的內部知識在起作用。作者也通過樸素的 BART 來驗證了這一觀點。
總結
- 在需要借助外部知識才能進行的生成任務上,RAG 表現出細致多樣的生成能力,并在三個開放域問答任務上取得了 SOTA 的成績;
- 對比 T5 和 BART,RAG 更新外部知識是低成本的;
- RAG 的 Retriver 使用稠密向量進行檢索,作者也嘗試直接使用基于重復詞的檢索算法 BM25,發現 BM25 只有在 fact verification 任務上比稠密向量好;
- RAG 為我們提供了外部知識和內部知識如何交互的新思路,雖然作者只在問答任務中進行實驗,但 RAG 也可以應用于其他 NLP 任務。例如,在閑聊對話系統中,RAG 可以讓回復更加可控可解釋,回答更豐富。
RAG 已成為檢索融合生成的經典范例,而且還有進一步發展的空間,相信未來檢索融合生成的工作會越來越多。
總結
以上是生活随笔為你收集整理的【论文笔记】检索还是生成回复?RAG:我都要的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]裸K交易入场信号—Pin Bar
- 下一篇: [LeetCode]70.Climbin