維基百科+大模型打敗幻覺!斯坦福WikiChat性能碾壓GPT-4,準確率高達97.3%
大語言模型的幻覺問題被解決了!
近日,來自斯坦福的研究人員發布了WikiChat——被稱為首個幾乎不產生幻覺的聊天機器人!
論文發表在EMNLP 2023,并且在Github上開源了代碼:
論文地址:https://aclanthology.org/2023.findings-emnlp.157.pdf
項目代碼:https://github.com/stanford-oval/WikiChat
作者表示自己的最佳模型在新的基準測試中獲得了97.3%的事實準確性,而相比之下,GPT-4的得分僅為66.1%。
在「recent」和「tail」兩個知識子集中,這個差距甚至更大。
另外,作者還發現了檢索增強生成(RAG)的幾個缺點,并添加了幾個重要步驟,以進一步減輕幻覺,并改進「對話性」指標。
通過這些優化,WikiChat在事實性方面比微調后的SOTA RAG模型Atlas高出8.5%,
在相關性、信息性、自然性、非重復性和時間正確性方面也大大領先。
最后,作者將基于GPT-4的WikiChat提煉成7B參數的LLaMA,這個模型在事實準確性方面仍然能拿到91.1%的高分,
并且運行速度提高了6.5倍,能效更好,可以本地部署。
大模型+維基百科,一起擊敗幻覺
眾所周知,LLM的幻覺問題由來已久、根深蒂固,
而且曾給各家的大語言模型都造成過不同程度的影響。
基于LLM使用概率來推斷輸出的原理,幻覺這個問題很難徹底解決,
研究人員們為此投入大量的心血,小編也是很期待這個WikiChat的表現!
WikiChat,顧名思義,就是基于維基百科的知識進行訓練,聽起來還挺靠譜的。
除了論文和代碼,研究團隊還部署了可以直接對話的demo供大家測試,好文明!
Demo地址:https://wikichat.genie.stanford.edu/
于是小編迫不及待地要試一試WikiChat的實力。
WikiChat首先進行了自我介紹,表示自己會記錄對話用于研究,
另外,WikiChat有以下三種模式:
默認狀態是平衡輸出速度和準確性,我們可以在右邊的設置中調節。
WikiChat還額外添加了TTS功能,輸出是個溫柔的女聲。
好了,讓我們趕緊「Ask her about anything on Wikipedia」!
——開個玩笑,既然你不會中文,那小編這點英文水平,只能獻丑了......
(注意上面的這句中文不要點擊語音輸出,有可能導致整個聊天卡住無法恢復)
下面,我們首先問一個常識性問題:Sam Altman是OpenAI的CEO嗎?
其實小編想測試她知不知道Altman被開除,然后又王者歸來這件事,
不過這一句「在2020年離開YC,全職加入OpenAI」,貌似就有事實性的錯誤。
小編接下來使用游戲信息進行測試:介紹一下「原神」中的「宵宮」。
這個回答確實沒什么問題,卡池時間和配音演員也正確,
既然提到了配音演員,那順便問一下中文CV是誰:
這......不知道她為什么產生了這樣的幻覺?實際上維基百科中是有相關信息的:
那我們提醒她反思一下:
好家伙,給出了另一個錯誤答案,小編想了一下,應該說的是游戲中另一位角色的CV(負責《神女劈觀》中的戲腔部分,知名度較高)。
那么測試一下,知名度比較高的角色。
小編選擇了在維基百科上有單獨條目的雷電將軍:
這下連卡池時間都有事實性錯誤,——而維基百科中的相關描述是沒有問題的。
WikiChat對于自己一直心心念念的配音演員,倒是沒有回答錯誤。
小編于是不死心地又測試了一遍之前的問題:
WikiChat也是不死心地給出了和之前同樣的回答,并且在要求反思之后,變成了「道歉機器人」。
把模式調整到事實性優先:
WikiChat給出回答的速度要慢了很多,但還是只能道歉。
小編于是換了另一位有單獨百科條目的角色:
除了第一句,后面就開始滿嘴跑火車了。
最后,來問一下配音演員的問題(維基百科的單獨條目中包含此信息):
......你這個聊天機器人是什么情況,認準了Juhuahua了是嗎?
測試到此結束,小編不知如何總結,有可能是我的問題有問題吧。
比如我問題的相關信息,在英語維基百科的語料中重要性很小。
不論如何,WikiChat在一些問題上的表現確實還不錯,比如宵宮那個問題,換成ChatGPT,就幾乎沒有任何沾邊的事實。
這說明研究人員確實采取了一些有效的優化方法,來解決LLM的幻覺問題。
WikiChat架構
這項工作的事實性基礎是信息檢索(IR),它基于聊天機器人的響應、以及從可信語料庫中檢索到的信息,然后生成方法利用檢索到的數據生成響應。
上圖展示了WikiChat的組件,以及一段示例對話(關于即將上映的電影)。
生成響應所采取的步驟包括:
1. 生成從維基百科檢索的查詢,
2. 總結和過濾檢索到的段落,
3. 從LLM生成響應,
4. 從LLM響應中提取聲明,
5. 使用檢索到的證據對LLM響應中的聲明進行事實核查,
6. 起草響應,
7. 完善響應。
研究人員使用用戶話語來檢索LLM可能不知道的信息,要求LLM做出回應,并對其進行事實檢查。
阻止LLM產生幻覺并不容易。一般情況下,當IR沒有檢索到任何相關信息,或知識語料庫中沒有相關信息時,LLM會產生幻覺來彌補不足。
因此,WikiChat會匯總和過濾檢索到的信息,而不是直接生成響應。
這里分別對LLM生成的每個聲明進行事實核查,并在必要時教系統說「我不知道」。
教LLM理解時間背景:例如,文章中的將來時態可能是指對話時的過去事件。
最重要的是,不能通過放棄這些必要的步驟來過早地優化速度,而是依靠模型蒸餾來減少延遲,直到達到高質量。
上圖中管道的每個階段都是使用上下文學習實現的。
生成的管道不特定于任何語料庫。雖然本文將管道應用于維基百科以創建WikiChat,但它適用于任何自由文本語料庫,包括個人和公司機密信息。
該管道也不特定于任何LLM,作者在本文中將其應用于三個不同的LLM。
策劃正確且與對話上下文相關的信息
LLM能夠解釋用戶話語,制定檢索范圍之外的響應,或者需要聚合來自多個來源的信息或得出結論,比如:
用戶:你認為蘋果會繼續成為科技行業的重要參與者嗎?
GPT-4:是的,......蘋果擁有良好的創新記錄、忠實的客戶群和穩健的財務狀況。全球市值最高的公司,市值超過2萬億美元。繼續探索增強現實、人工智能、自動駕駛汽車等新技術。這將幫助他們在競爭中保持領先地位。
但我們不能完全相信LLM,而是需要對它們的輸出進行事實檢查。此外,LLM不知道最近發生的事件。
在與用戶的對話中,WikiChat會識別何時需要訪問外部信息。這可能是因為最后一個用戶話語包含直接問題(例如「斯蒂芬·庫里是誰?」),或者需要其他信息才能做出全面的回答(例如「我真的很喜歡斯蒂芬·庫里」)。
第1階段,WikiChat生成一個搜索查詢,該查詢通過提示捕獲用戶的興趣(如下圖所示)。作者發現,現有的系統尤其難以適應時間環境。
WikiChat在查詢旁邊生成用戶需求的推斷時間。查詢時間可以是最近、year=yyyy或none之一,分別表示檢索到的信息應盡可能近、特定年份或時間不重要。
將查詢發送到信息檢索系統,從語料庫中獲取相關段落,并根據時態信息對排名靠前的結果進行重新排序,得到Npassages。
第2階段,由于這些段落可能包含相關和不相關部分的混合,WikiChat會提取檢索到的段落的相關部分,并將它們總結為要點,同時過濾掉不相關的部分(如下圖所示)。
第3階段,提示LLM生成對對話歷史記錄的響應。這種回應通常包含有趣且相關的知識,但本質上是不可靠的。
第4階段,LLM響應被分解為多種聲明(如下圖),此階段解析共同引用以減少歧義,并解析相對時間信息(如「當前」和「去年」),以使所有聲明自包含。
然后使用IR從知識語料庫中檢索Nevidence段落,以便每個聲明作為證據,并使用基于時間的重新排名來更好地處理時間敏感的主題。
第5階段,驗證提示(如下圖)使用思維鏈提示,將每個聲明分配給以下三類之一:檢索到的證據是否支持該聲明、反駁該聲明,或者證據中是否沒有足夠的信息來做出此決定。只有有證據支持的主張才會被保留。
使用收集到的信息來形成響應
實驗表明,在滿足所有會話標準的情況下一次性編寫最終響應,對于上下文學習具有挑戰性,尤其是有限的上下文長度,使得很難提供足夠的多輪對話,作為少量示例來涵蓋所有必要的方面。因此,這里采用兩步法:
第6階段,WikiChat根據給定的要點列表和對話歷史記錄生成響應草稿。
第7階段,生成反饋并進行優化——基于相關性、自然性、非重復性和時間正確性的響應。
反饋包含模型對每個標準的推理,以及每個標準的分數介于0到100之間,細化以此反饋為條件。
改進是以這種反饋和分數為條件的,作為一個思維鏈。
最后,我們來看一下WikiChat的效果:
上表展示了WikiChat的評估結果和模擬對話的基線。事實和時間準確性是百分比,其他指標是介于1和5之間的整數的平均值。
事實準確性來自人類評估,其他指標來自小樣本GPT-4。所有指標都是越高越好。