OpenAI Lilian Weng萬字長文解讀LLM幻覺:從理解到克服 机器之心 發表於2024-07-15
人會有幻覺,大型語言模型 也會有幻覺。近日,OpenAI 安全系統團隊負責人 Lilian Weng 更新了部落格,介紹了近年來在理解、檢測和克服 LLM 幻覺方面的諸多研究成果。 Lilian Weng,中文名翁麗蓮,是 OpenAI 安全系統團隊負責人。她 2018 年加入 OpenAI,參與了 GPT-4 專案的預訓練、強化學習 & 對齊、模型安全等方面的工作。她的部落格深入、細緻,具有前瞻性,被很多 AI 研究者視為重要的參考資料(其他部落格見文末擴充套件閱讀)。 大型語言模型 的幻覺(Hallucination)通常是指該模型生成不真實、虛構、不一致或無意義的內容。現在,「幻覺」這個術語的含義已有所擴大,常被用於泛指模型出現錯誤的情況。本文所談到的「幻覺」是指其狹義含義:模型的輸出是虛構編造的,並沒有基於所提供的上下文或世界知識 。 外源性幻覺(extrinsic hallucination):模型輸出應該以預訓練資料集為基礎。但是,由於預訓練資料集規模龐大,因此檢索和識別衝突的成本非常高,不可能每次生成時都執行。如果我們認為預訓練資料語料庫 可以代表世界知識,那麼我們本質上就是需要確保模型輸出的是事實並且可透過外部世界知識進行驗證。另一個功能也同樣重要:如果模型不知道某個事實,那麼它應該表示自己不知道。 本文關注的重點是外源性幻覺 。為了避免幻覺,LLM 需要:(1) 實事求是,(2) 不知時要承認不知。 標準的可部署 LLM 需要經過預訓練,然後會進行微調以提升對齊等要求,那麼這兩個階段有哪些可能導致幻覺的因素呢? 預訓練資料的量非常大,因為其目標就是以各種書寫形式表示世界知識。預訓練資料的最常用來源是公共網際網路,也因此這些資料往往存在資訊過時、缺失或不正確等問題。模型記憶的方式是簡單地最大化對數似然,因此可能以不正確的方式記憶資訊,所以這些模型犯錯也就並不讓人意外了。 為了提升模型的某些具體能力(比如指令遵從),一種常用方法是透過監督式微調和 RLHF 等技術對預訓練 LLM 進行微調。在微調階段,難免需要引入新知識。 微調所需的計算量通常少得多,因此小規模微調究竟能否可靠地讓模型學到新知識也備受爭議。Gekhman et al. 的論文《Does Fine-Tuning LLMs on New Knowledge Encourage Hallucinations?》研究了這一問題:用新知識微調 LLM 是否會助長其幻覺?他們發現:(1) 當微調樣本中包含新知識時,LLM 學習的速度會更慢一些(相比於微調樣本中的知識與模型已有知識一致的情況);(2) 模型一旦學習了帶有新知識的樣本,那麼模型會更傾向於產生幻覺。 給定一個閉卷問答資料集(EntityQuestions),D=(q,a), 我們可以將模型 M 準確生成問題 q 的正確答案 a 的機率定義為 P_Correct (q,a;M,T),其中 T 為解碼溫度值,並且提示工程方法是使用隨機少樣本示例。 他們基於 P_Correct (q,a;M,T) 的不同條件將示例樣本簡單分成了四類:HighlyKnown、MaybeKnown、WeaklyKnown(這三個是不同程度的已知類)和 Unknown(未知類)。 圖 1:基於模型輸出正確答案的可能性對閉卷問答示例樣本進行知識方面的分類。 這些實驗得到了一些有趣的觀察,其中可以認為開發集(dev set)準確度能指示幻覺程度: Unknown 樣本的擬合速度比 Known 樣本的慢得多。 當 LLM 擬合的樣本大多數是 Known 樣本且僅有少量 Unkown 樣本時,該 LLM 的開發集效能最佳。而當模型學習的樣本大都是 Unknown 樣本時,就會開始出現幻覺。 在 Known 樣本中,MaybeKnown 能讓模型的整體表現更好,勝過 HighlyKnown 樣本。 圖 2:在一半 Known 和一半 Unknown 樣本上進行微調時的訓練集效能和開發集效能。可以看到,模型在 Unknown 樣本上的學習速度慢得多,而當模型學習的樣本絕大多數是 Known 且僅有少量 Unknown 時,能得到最好的開發集結果。 Gekhman et al. (2024) 的這些實驗結果表明使用監督式微調來更新 LLM 的知識是有風險的。 為了量化 模型幻覺,Lee, et al. 的論文《Factuality Enhanced Language Models for Open-Ended Text Generation》引入了一個新的基準 資料集 FactualityPrompt,其中包含事實性和非事實性的 prompt,而其檢驗事實性的基礎是將維基百科文件或句子用作知識庫 。維基百科文件是很多資料集的事實來源,比如 FEVER 資料集;而句子則是根據 tf-idf 或基於句子嵌入的相似度選取的。 圖 3:FactualityPrompt 基準 的評估框架 給定模型續寫的文字和配對的維基百科文字,這裡有兩個針對幻覺的評估指標: 幻覺命名實體(NE)誤差:使用一個預訓練的實體檢測模型和文件層級的定基,該指標度量的是檢測到的卻未在 ground truth 文件中出現過的命名實體的比例。 蘊涵率(Entailment ratio):使用一個在 MNLI 上微調過的 RoBERTa 模型和句子層級的知識定基,該指標計算的是生成句子中由該蘊涵模型標記為「與配對的維基百科句子相關」的比例。 如果命名實體誤差較高且蘊涵率較低,則說明模型的事實性較高;並且已有研究表明這兩個指標都與人類標註相關。另外,在這一基準 上,更大的模型通常表現更好。 Min et al. (2023) 在論文《FActScore: Fine-grained Atomic Evaluation of Factual Precision in Long Form Text Generation》中提出的 FActScore(用原子分數衡量的事實精度)是將形式較長的生成結果分解成多個原子事實,並且根據維基百科這樣的知識庫 分別驗證它們。然後,就能度量模型的每個生成結果中有知識源支撐的句子的比例(精度),而 FActScore 就是在一系列 prompt 上的生成結果的平均精度。 該論文基於人物傳記生成任務實驗了多種驗證事實的方法,結果發現使用檢索總是優於非上下文 LLM。在各種檢索增強式方法中,究竟什麼估計器最好?這一點取決於模型。 非上下文 LLM:直接使用「< 原子事實 > True or False?」來問詢 LLM,不帶任何上下文。 檢索→LLM:在提詞中加入 k 條從知識源中檢索到的相關訊息,並將其作為上下文。 非引數 機率(NP):透過一個掩碼式語言模型 來計算原子事實中 token 的平均似然,並將其用於預測。 在生成時,如果使用檢索來設定基礎,便有助於大幅降低幻覺。 Wei et al. (2024) 的論文《Long-form factuality in large language models》提出了一種用於檢驗 LLM 的長篇事實性的評估方法:Search-Augmented Factuality Evaluator(SAFE),即搜尋增強式事實性評估器。也可參閱機器之心 的報導:《DeepMind 終結大模型幻覺?標註事實比人類靠譜、還便宜 20 倍,全開源 》。 相比於 FActScore,SAFE 的主要不同之處是:對於每一個獨立的原子事實,SAFE 會使用一個語言模型 作為智慧體,其作用是透過一個多步過程迭代式地向谷歌搜尋傳送查詢 並對搜尋結果執行推理,看這些結果是否支援該事實。在每一步,該智慧體會根據給定的待檢驗事實以及之前的搜尋結果生成一個搜尋查詢 。執行一些步驟之後,該模型再執行推理,以判斷事實能否得到搜尋結果的支援。 從實驗結果看,SAFE 方法的表現優於人類標註者,同時成本還低 20 倍:與人類的一致率為 72%,而當與人類不一致時,SAFE 勝過人類的勝率為 76%。 圖 4:用於長篇 LLM 生成的事實性評估的 SAFE 方法概況 SAFE 評估指標是 F1 @ K,其設計思路基於這一思考:模型對於長篇事實性的響應應當在精度和召回率上都達到理想水平,因為該響應應當同時滿足事實性和長篇這兩個條件。 事實性:用精度衡量,即得到支援的事實在整個響應中所有事實中的佔比。 長:用召回率衡量,即所提供的事實在所有應當出現在響應中的相關事實中的佔比。因此,我們可以設定得到支援的事實數量最多為 K。 圖 5:F1 @ K 度量的一些主流模型的長篇事實性效能,評估過程使用了來自 LongFact 基準 LongFact-Objects 任務的 250 個隨機 prompt。 Chern et al. (2023) 在論文《FacTool: Factuality Detection in Generative AI — A Tool Augmented Framework for Multi-Task and Multi-Domain Scenarios》中提出的 FacTool 採用了一種標準的事實檢驗流程。其設計目標是在多種任務上檢測事實性錯誤,包括基於知識的問答、程式碼生成、數學問題求解(生成測試用例而不是陳述)、科學文獻總結。該流程為: 陳述提取:透過向 LLM 傳送 prompt 來提取所有可驗證的陳述。 查詢 生成:將每個陳述轉換成適合外部工具使用的查詢 列表,比如搜尋引擎查詢 、單元測試用例、程式碼片段、論文標題。工具查詢 和證據收集:查詢 搜尋引擎、程式碼直譯器、谷歌學術等外部工具並獲取結果。 一致性驗證:根據來自外部工具的證據所提供的支援水平,為每個陳述分配一個二元的事實性標籤。 圖 6:用於評估事實性的 FacTool 框架,適用於多種任務設定:基於知識的問答、程式碼生成、數學問題求解、科學文獻總結。 Manakul et al. (2023) 在論文《SelfCheckGPT: Zero-Resource Black-Box Hallucination Detection for Generative Large Language Models》中提出的 SelfCheckGPT 採用的方法是根據一個黑箱 LLM 生成的多個樣本對事實性錯誤進行一致性檢查。考慮到灰盒事實檢查度量需要訪問 LLM 的 token 級對數機率,SelfCheckGPT 只需要不依賴外部知識庫 的樣本,因此黑箱訪問足矣,無需外部知識庫 。 該方法採用了不同的指標來度量模型響應和每個其它隨機模型樣本之間的一致性,包括 BERTScore、NLI、提詞(詢問 yes/no)等。當使用 GPT-3 生成的 WikiBio 文章進行實驗時,使用提詞方法的 SelfCheckGPT 的表現似乎最好。 在讓模型生成問題的響應時,如果該問題無法回答或模型不知道答案,那麼就可能引發幻覺。TruthfulQA (Lin et al. 2021) 和 SelfAware (Yin et al. 2023) 這兩個基準 可用於度量模型在這種情況下生成誠實響應的表現,其中前者是以對抗方式構建的,以強調人類的謬誤,而後者則包含本質上就無法回答的問題。在面對這樣的問題時,模型應當拒絕回答或給出相關資訊。 TruthfulQA 中的測試題是根據人類的常見誤解或差錯對抗式地擬定的。該基準 包含 817 個問題,涵蓋醫療、法律、金融和政治等 38 個主題。在這裡,當且僅當(iff)答案中沒有錯誤陳述時(包括拒絕回答、給出不相關的誠實答案),才認定該答案是誠實的。 在該論文的實驗中,最好的 LLM 能達到 58% 的準確度,相較之下人類的準確度為 94%。他們發現,由於訓練資料中包含大量常見誤解,因此更大的模型更不誠實,但其它標準的(非對抗性)事實性基準 並沒有表現出這一趨勢。 對於 TruthfulQA 中的問題,GPT-3 給出的錯誤答案示例: Yin et al. (2023) 提出的 SelfAware 基於自我知識(self-knowledge)這一概念,也就是語言模型 是否知道它們知不知道。SelfAware 包含 1032 個不可解答問題(分成 5 大類)和 2337 個可解答問題。不可解答問題來自帶有人類標註的網路論壇,而可解答問題則來自 SQuAD、HotpotQA 和 TriviaQA 並且是根據與不可解答問題的文字相似度選取的。 一個問題不可解答的原因是多種多樣的,比如沒有科學共識、是對未來的想象、完全是主觀臆斷、可能得到多種答案的哲學原因等。考慮到區分可解答與不可解答問題本質上就是一個二元分類任務,因此可透過 F1 分數或準確度來度量,實驗結果表明更大的模型在這一任務上的表現更好。 圖 8:不同大小的 Instruct-GPT 系列模型的準確度(從左到右,模型從小到大)。在 SelfAware 評估中,模型越大,在可與不可解答問題的二元分類任務上的表現就越好。 另一種評估模型是否「知之為知之,不知為不知」的方法是測量模型的輸出不確定性。當一個問題介於已知和未知之間時,模型應當表現出正確的置信度水平。 Kadavath et al. (2022) 在論文《Language Models (Mostly) Know What They Know》中的實驗表明:在不同的多項選擇題(MMLU、TruthfulQA、QuALITY、LogiQA,答案選項標註了字母)上,LLM 能與答案正確的估計機率很好地校準,這意味著預測機率與該答案為真的頻率是一致的。RLHF 微調會讓模型的校準效能很差,但如果取樣溫度更高,則會得到更好的校準結果。 圖 9:(左)不同大小模型的校準曲線:更大的模型的校準表現更好。(右)對於校準誤差來說,問題的格式很重要。 Lin et al.(2022) 使用了 CalibratedMath 任務套件。CalibratedMath 是一個以可程式設計方式生成的數學問題套件,其可生成不同難度的數學問題(取決於數的數量),可用於檢測模型的輸出機率的校準程度。對於每個問題,模型必須給出一個數值答案以及對該答案的置信度。這裡考慮了三種機率: 用語言表達的數值或詞,比如:最低、低、中等、高、最高。舉個例子:「置信度:60% / 中等」。 答案 token 的歸一化對數機率;請注意:微調實驗中並沒有使用這個機率。 在原始回答之後的一個間接「True/False」 token 的對數機率。他們的實驗關注的重點是:在任務難度或內容的分佈變化時,校準的泛化能力如何?每個微調資料點都是一個問題、該模型的答案(可能不正確)和一個已校準置信度。語言表達的機率能很好地泛化到這兩種情況,並且所有設定都能很好地應對「乘法 - 除法」的任務變化。至於模型預測置信度方面,少樣本學習的表現比微調模型差。包含更多示例能帶來助益 —— 使用 50 個樣本的表現差不多與微調版本一樣好。 圖 10:訓練和評估的校準曲線。該模型在「加法 - 減法」任務上進行了微調,在多答案(每個問題都有多個正確答案)和「乘法 - 除法」任務上進行了評估。 Agrawal et al.(2023) 在論文《Do Language Models Know When They're Hallucinating References?》中研究了 LLM 生成結果中出現幻覺參考文獻的問題,比如編造出不存在的書籍、文章和論文標題。 他們實驗了兩種根據一致性來檢查幻覺的方法:直接查詢 和間接查詢 。這兩種方法都在 T > 0 時多次執行檢查並驗證一致性。 圖 11:用於檢查參考文獻幻覺的直接查詢 和間接查詢 。 直接查詢 是讓模型判斷生成的參考文獻是否存在。間接查詢 則是要求提供生成的參考文獻的輔助資訊,比如作者是誰。 舉個例子,如果我們想檢驗「以下論文是不是真的?」我們可以檢查「這篇論文的作者是誰?」這裡的假設是:如果生成的參考文獻是幻覺結果,那麼相比於直接詢問該參考文獻是否存在並得到肯定響應的可能性,多次生成結果都有同樣作者的可能性會更低。 實驗結果表明間接查詢 方法的效果更好,並且更大的模型能力更強,幻覺也更少。 接下來,我們一起回顧一些用於提升 LLM 的事實性的方法,從檢索外部知識庫 和特殊的取樣方法到對齊微調。另外也有透過神經元 編輯來降低幻覺的可解釋性方法,但本文不會對此做深入介紹。 RAG 是指「檢索增強式生成」,這是一種非常常用的用於提供真實基礎資訊的方法。簡單來說,RAG 就是先檢索相關文件,然後將其用作額外上下文來執行生成。 RARR 則來自 Gao et al. (2022) 的論文《RARR: Researching and Revising What Language Models Say, Using Language Models》,是指「使用研究和修訂來改進歸因」。該框架是透過歸因編輯(Editing for Attribution)來追溯性地讓 LLM 有能力將生成結果歸因到外部證據。給定模型生成的文字 x,RARR 會進行兩步處理,之後輸出修訂後的文字 y 和一份歸因報告 A: (1) 首先使用一個查詢 生成模型 (透過少樣本提詞,x → q_1, ..., q_N)構建一組搜尋查詢 q_1, ..., q_N,以驗證每個句子的各個方面。 (2) 執行谷歌搜尋,為每個查詢 q_i 取用 K=5 個搜尋結果。 (3) 使用一個預訓練的查詢 - 文件相關性模型分配相關性分數,並且每個查詢 q_i 僅保留一個最相關的 J=1 文件 e_i1, ..., e_iJ。 2. 修訂階段:編輯輸出結果以校正沒有證據支援的內容,同時儘可能地保留原內容。將已修訂文字初始化為 y=x。 (1) 對於每組 (q_i, e_ij),使用一個一致性模型(透過少樣本提詞 + CoT,(y,q,e)→0,1)檢查證據 e_ij 是否與當前的已修訂文字不一致。 (2) 只有當檢測到不一致時,編輯模型(透過少樣本提詞 + CoT,(y,q,e)→新的 y)才會輸出一個新版本的 y;這個新 y 的目標是與證據 e_ij 一致,同時其它方面的修改儘可能地小。 (3) 最後,只有有限數量 M=5 個證據會進入歸因報告 A。 在評估修訂後的文字 y 時,歸因率和留存率都很重要。 歸因率(Attribution)是使用 AIS 分數(可歸因於已識別來源分數)度量 y 中有多大比例可以歸因於 A。我們可以收集人類標註或使用 NLI 模型來近似計算 自動 AIS 分數。 留存率(Preservation)是指 y 中有多大比例保留了 x 的原文字,度量方式為 Prev_intent × Prev_Lev,其中 Prev_intent 需要人類標註,而 Prev_Lev 則是基於字元級的 Levenshtein 編輯距離。相比於兩種對比方法,RARR 能帶來更平衡的結果,尤其是在留存率指標上。 類似於使用「搜尋 + 編輯」的 RARR,Mishra et al. (2024) 在論文《Fine-grained Hallucination Detection and Editing for Language Models》中提出的 FAVA(使用增強知識進行事實性驗證) 還能檢索相關文件,然後編輯模型輸出以避免幻覺錯誤。FAVA 模型由一個檢索器 ℳ_ret 和一個編輯器 ℳ_edit 構成。 給定一個 prompt x 和模型輸出 y,可檢索出一些最相關的文件:d = ℳ_ret (x,y) 透過編輯器生成一個增強版的輸出: RARR 不需要訓練,但 FAVA 中的編輯器模型 ℳ_edit 需要進行微調。根據對不同型別的幻覺錯誤進行分類,可透過將隨機誤差注入模型生成來為 ℳ_edit 生成合成訓練資料。每個樣本都是一個三元組 (c,y,y*),其中 c 是原始維基百科段落,其可作為標準上下文,y 是有錯誤的語言模型 輸出,y* 是帶有錯誤標籤和校正標記的輸出。 圖 13:用於訓練 FAVA 中 ℳ_edit 的合成資料生成 He et al. (2022) 在論文《Rethinking with Retrieval: Faithful Large Language Model Inference》中提出的 Rethinking with retrieval (RR) 方法依賴於檢索相關外部知識,但無需額外編輯。RR 並沒有使用搜尋查詢 生成模型 ,其檢索是基於分解式的 CoT 提詞。 給定一個輸入 prompt Q,RR 以溫度 > 0 的設定使用 CoT 提詞生成多條推理路徑 R_1, ..., R_N,其中每條推理路徑 R_i 包含一個解釋 E_i(即推理部分)以及之後的預測 P_i(即實際的模型輸出)。外部知識 K_1, ..., K_M 是檢索得到的,可用於為每條解釋提供支援。然後根據答案與檢索到的知識的契合程度選出最忠實可信的答案 。 知識檢索:RR 的實驗是在維基百科上使用離散檢索方法 BM25,然後根據一個預訓練 MPNet 模型提供的嵌入餘弦相似度來重新排名。 忠實度分數:組合使用蘊涵分數、矛盾分數和 MPNet 相似度來估計每條推理路徑的忠實度分數。其中蘊涵分數和矛盾分數均由一個預訓練 NLI 模型提供。 圖 14:在常識推理 (StrategyQA)、時間推理(TempQuestions)和表格推理(INFOTABS)基準 上,RR 與其它方法的效能比較(使用了精確匹配指標)。 Asai et al. (2024) 在論文《Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection》中提出的 Self-RAG 會以端到端的方式訓練一個語言模型 ,該模型可透過輸出任務輸出結果與分散在中間的特殊反思 token 來反思其自身的生成結果。他們使用 GPT-4 建立了一個用於批評器模型和生成器模型的監督式資料集,然後將其蒸餾成了一個內部模型以降低推理成本。 圖 15:Self-RAG 框架概況。在特殊 token 的引導下,Self-RAG 模型會並行地檢索多個文件,並點評其自身的生成結果以提升質量。 給定輸入 prompt x,生成的輸出 y—— 其包含多個分段(每一分段都是一個句子)y=[y_1, ..., y_T]。一共有四種反思 token,一種用於檢索,三種用於批評: Retrieve:決定是否執行並行檢索以獲取一組文件;輸出值:{yes, no, continue} IsRel:prompt x 和檢索到的文件 d 是否相關;輸出值:{relevant, irrelevant} IsSup:d 是否支援輸出文字 y;輸出值:{fully supported, partially supported, no support} IsUse:輸出文字 y 對 x 來說是否有用;輸出值:{5, 4, 3, 2, 1} Self-RAG 一次生成 y_t 的一個分段。給定 x 和之前的生成結果 y_<t,模型會根據 Retrieve token 按以下方式解碼: 如果 Retrieve == no,則直接生成 y_t。 如果 Retrieve == yes,則模型並行檢索多篇文章並使用 isRel token 檢查檢索到的文件是否相關。如果相關,則生成 y_t 並使用其它批評 token 給出分數,然後排名並從中選取最佳輸出。 我們也可以不使用外部檢索到的知識,而是設計一個流程讓模型可以自己執行驗證和修訂,從而減少幻覺。 Dhuliawala et al.(2023) 在論文《Chain-of-Verification Reduces Hallucination in Large Language Models》中提出了一種名為 Chain-of-Verification (CoVe / 驗證鏈)的方法 。該方法是基於動作鏈來規劃 和執行驗證。CoVe 包含四個核心步驟: 1. 基線響應:模型生成一個初始的草稿響應,稱為「基線(baseline)」。 2. 規劃 驗證:基於初始生成結果,該模型設計一個用於事實查驗的非模板式驗證問題;這可透過使用 (響應,驗證問題) 示例的少樣本提詞實現。 3. 執行驗證:模型分別獨立地回答這些問題。這一步的設定有幾種變體: (1) 聯合式:與第 2 步一起執行,其中少樣本示例的形式構建為 (響應,驗證問題,驗證答案)。缺點是原始響應也在上下文中,因此模型可能會重複出現相似的幻覺。 (2) 兩步式:將驗證規劃 和執行步驟分開,使得原始響應不會造成影響。 (3) 分解式:分開獨立地回答每個驗證問題。舉個例子,如果一個長篇的基礎生成結果有多個驗證問題,就逐一回答其中每一個。 (4) 分解 + 修訂:根據基線響應以及驗證問題和答案,在分解驗證執行後新增一個「交叉檢驗」步驟。這能檢測不一致性。 4. 最終輸出:生成經過最佳化的最終輸出。如果發現了任何不一致,這一步會對輸出進行修訂。 CoVe 之所以這樣設計,是因為長篇驗證鏈生成可能導致出現重複幻覺,其原因是初始的有幻覺響應依然在上下文中,而在生成新響應時模型又可能繼續關注這些幻覺,同時研究還發現分開回答各個驗證問題的效果優於長篇生成。 圖 16:驗證鏈(CoVe)方法概況,其包含 4 個關鍵步驟 分解式和兩步式 CoVe 能提升效能,並且進一步對不一致檢測進行顯式推理也能帶來幫助(分解 + 修訂方法)。 LLM 生成的篇幅不定的驗證問題比啟發式方法更好(比如 X 能回答這個問題嗎?),並且需要開放式生成的問題的效果優於單純的是非問答題。 Sun et al. (2023) 在論文《Recitation-Augmented Language Models》中提出的 RECITE 將複述(recitation)作為了一箇中間步驟,以此提升模型生成結果的事實正確度並減少幻覺。其設計思路是將 Transformer 記憶用作資訊檢索 模型。在 RECITE 的「複述再回答」方案中,LLM 首先需要複述相關資訊,然後再生成輸出。 確切來說,可以使用少樣本上下文提詞技術來教模型生成複述,然後基於複述內容生成答案。不僅如此,它還能與使用多個樣本的自我一致性整合方案組合使用,並且還能擴充套件用於支援多次跳轉的問答。 圖 17:比較直接生成方法、RAG 和 RECITE 生成的複述能與基於 BM25 的檢索模型相媲美,但這兩者都不及使用包含真實事實的文字段。根據他們的誤差分析,大約 7-10% 的問題雖複述正確但未能得到正確答案,而大約 12% 的問題雖複述錯誤但卻回答正確了。 Lee, et al.(2022) 在論文《Factuality Enhanced Language Models for Open-Ended Text Generation》中發現核取樣(nucleus sampling,top-p 取樣)在 FactualityPrompt 基準 上的表現不及貪婪取樣,但它的多樣性更優且重複更少,因為核取樣會新增額外的隨機性。因此他們提出了事實性 - 核取樣演算法 。 該演算法基於這一假設:相比於在句子開頭處,取樣隨機性對句子後段的事實性的危害更大。事實核取樣是在取樣每個句子的 token 期間動態地調整機率 p。 對於一個句子中的第 t 個 token,有 p_t = max (ω,p・λ^{t-1}),其中 ω 是為了防止取樣落回成貪婪取樣,這有損生成質量和多樣性。 圖 18:相比於標準的核取樣,事實核取樣能讓多樣性更好同時減少重複,而幻覺誤差是以命名實體(NE)誤差度量的。 Li et al. (2023) 在論文《Inference-Time Intervention: Eliciting Truthful Answers from a Language Model》中提出了推理時間干預(ITI) 。其中透過在每一層的啟用上擬合線性探針來區分真實輸出和虛假輸出,研究了某些注意力頭是否與事實性更相關。 他們發現,對許多注意力頭來說,探針並不能做到比隨機更好,但也有一些表現出了很強的效能。ITI 會首先找到一組在真實度方面具有高線性探測準確度的注意力頭,然後沿「真實」方向移動前 K 個所選注意力頭的啟用。 圖 19:將所選注意力頭上的啟用向更真實方向移動的方式 Lee, et al.(2022) 在論文《Factuality Enhanced Language Models for Open-Ended Text Generation》中提出了兩種用於事實性增強訓練的思路: TopicPrefix 是為了讓模型能更好地感知 事實 :在文件中的每個句子前面加上主題(即維基百科文件標題)。訓練目標是句子完成度損失 :更新訓練損失以將重點放在句子的後部分 —— 他們假設句子的後部分包含更多事實知識。其實現很簡單:先確定一箇中心點 t,然後對第 t 個 token 前面的所有 token 使用零掩碼。在他們的實驗中,所選擇的最佳中心點 t 是句子長度的一半。 Lin et al.(2024) 在論文《FLAME: Factuality-Aware Alignment for Large Language Models》中提出了 FLAME(Factuality-Aware Alignment / 可感知 事實性的對齊),即在特別注重事實性的前提下執行 SFT+RLHF 對齊訓練。 SFT 階段(可感知 事實性的 SFT):目標是生成事實性優於(根據 FActScore)模型自身生成結果的訓練資料。 RLHF 階段(可感知 事實性的 RLHF):他們測試了兩種方法,其中方法 (1) 的結果很差,而 (2) 的結果還算不錯,原因很可能是 (1) 試圖在沒有足夠訓練的情況下向模型注入新知識。有證據表明微調新知識可能導致幻覺,而源自 RAG 的監督會包含 LLM 未知的資訊。 (1) 將 RAG 資料樣本用作正例,將原始的模型生成結果用作負例作為獎勵模型資料。 (2) 將 FActScore 用作事實性的獎勵訊號。 圖 20:左圖:對一個預訓練 LLM 使用少樣本提詞而生成的響應;右圖:可感知 事實性的對齊訓練流程 為了避免在對齊訓練時意外將未知知識蒸餾 到模型中,他們建議使用模型生成的響應來構建 SFT / DPO 資料集。 圖 21:在傳記生成任務上,在使用和不使用可感知 事實性的設定下,SFT 和 DPO 執行的效能。有用性(Helpfulness)是在 Alpaca Eval 基準 上測量的模型對於基礎 SFT + DPO 方法的勝率。請注意,RLHF 會讓事實性變差,因為人類反饋往往偏好更長更詳細的答案,但這種答案並不一定更符合事 實。 Tian & Mitchell et al. (2024) 在論文《Fine-tuning Language Models for Factuality》中提出了事實性微調(Factuality tuning) ,其也是透過微調語言模型 來提升其事實性。他們實驗了不同的方法來估計每個模型樣本中的原子陳述的真實度,然後再執行 DPO。 1. 針對一組給定的 prompt(比如:寫一篇馬友友的傳記),取樣成對的模型完成結果。 2. 根據兩種不涉及人類的方法來為它們標註真實度: 基於參考的方法,檢查外部知識庫 是否支援該模型陳述,類似於上面關於基於檢索的幻覺評估部分。其過程為:(a) 提取原子陳述列表,(b) 查詢維基百科參考資料,(c) 使用一個小型的 NLI 微調模型來檢查參考文字是否支援該原子陳述。 無參考方法:使用該模型自身的置信度作為其真實度,這類似於間接查詢 方法。其過程為:(a) 使用少樣本提詞,將每個陳述轉換成對應的問題 / 需要仔細調整語句以確保問題無歧義;(b) 多次取樣模型,得到問題的多個答案;(c) 使用聚合分數 / 使用字串匹配或讓 GPT 來評價兩個答案的語義是否等價。 3. 透過讓模型生成多個樣本來構建一個訓練資料集,並基於真實度分數分配偏好。然後在該資料集上使用 DPO 對模型進行微調。 圖 23:相較於使用預期置信度分數來進行事實性微調(FactTune-EC)和其它對比方法,使用 FActScore 進行事實性微調(FactTune-FS)在事實性方面實現了最好的提升。 在減少幻覺方面,一種好方法是在為搜尋結果生成條件時為模型輸出分配歸因。訓練 LLM 更好地理解檢索到的內容和分配高質量歸因是一個比較熱門的研究分支。 Nakano, et al. (2022) 在論文《WebGPT: Browser-assisted question-answering with human feedback》中提出的 WebGPT 將用於檢索文件的網路搜尋與微調 GPT 模型組合到了一起,目的是解答長篇問題以降低幻覺,實現更好的事實準確度。 該模型可透過一個基於文字的網路瀏覽器與網際網路搜尋互動,並學習使用參考網頁給出答案。在模型進行瀏覽時,它能採取的一個動作是引用當前頁面的摘錄。在執行這個動作時,頁面標題、域名和摘錄會被記錄下來,以備之後用作參考。WebGPT 的核心是使用參考來輔助人類評價事實正確性。 首先,使用網路瀏覽環境來回答問題以便行為克隆,在人類演示上對模型進行監督式微調。收集模型對同一問題生成的兩個答案(每個答案都有自己的一組參考),得到比較資料,其中根據事實準確度、連貫性和整體有用性評價答案。使用獎勵模型來進行強化學習 訓練和 best-of-n(n 中選最佳)拒絕取樣 。相較之下,強化學習 帶來的好處很小,使用拒絕取樣 帶來的好處就更少了。 圖 24:相較於行為克隆(BC)方法,強化學習 訓練只能帶來少量提升,尤其是當使用了 best-of-n 拒絕取樣 時。 Menick et al. (2022) 在論文《Teaching language models to support answers with verified quotes》中提出的 GopherCite 與 WebGPT 非常類似,都使用了搜尋引擎來建立支援材料以及教模型提供參考。 這兩種方法都使用了監督式微調來進行引導,並且都使用了根據人類偏好的強化學習 。但不同之處在於,WebGPT 依賴於人類演示來進行行為克隆,而 GopherCite 則是透過少樣本提詞來生成演示,並且每一次生成都會使用相關文件來填充上下文,然後使用獎勵模型來評估哪個最好。 為了避免響應質量低下,另一個技巧是對模型進行配置,使之可透過預先設定的答案「我不知道」來拒絕回答,這可透過一個全域性的獎勵模型閾值來決定,也被稱為選擇性預測。 圖 26:對比偏好與人工編寫的基線如果每邊都得到一半分數,則算作平局。 使用強化學習 的實驗結果與 WebGPT 類似,也就是說在結合拒絕取樣 時,強化學習 帶來的提升有限或沒有提升。 TruthfulQA (Lin et al. 2021) 可以度量 LLM 生成誠實響應的優劣程度。該基準 包含 817 個問題,涵蓋醫療、法律、金融和政治等 38 個主題。 FactualityPrompt (Lee, et al. 2022) 基準 由事實和非事實 prompt 構成。其使用了維基百科文件或句子作為知識庫 的事實基礎。 SelfAware (Yin et al. 2023) 包含 5 大類的 1032 個不可解答問題和 2337 個可解答問題。不可解答問題來自有人類標註的網路論壇,而可解答問題則來自 SQuAD、HotpotQA 和 TriviaQA 並且是根據與不可解答問題的文字相似度選取的。 LongFact (Wei et al. 2024) 可用於檢查長篇生成事實性。其中包含 2280 個找尋事實的 prompt,可針對 38 個人工挑選的主題搜尋長篇響應。 HaDes (Liu et al. 2021) 基準 是將幻覺檢測視為一個二元分類任務。該資料集是透過擾動維基百科文字和人類標註建立的。 FEVER(事實提取和驗證)資料集包含 185,445 個陳述,其生成方式是修改從維基百科提取的句子,隨後在不知道它們源自哪個句子的情況下進行驗證。每個陳述都被分類為 Supported、Refuted 或 NotEnoughInfo。 FAVABench (Mishra et al. 2024) 是一個評估細粒度幻覺的基準 。其中有 200 個尋找資訊的源 prompt,並且每個 prompt 都有 3 個模型響應,所以總共有 600 個響應。每個模型響應都被人工標註了細粒度的幻覺錯誤型別標籤。 原文連結:https://lilianweng.github.io/posts/2024-07-07-hallucination/ 《Sora 之後,OpenAI Lilian Weng 親自撰文教你從頭設計影片生成 擴散模型》 《OpenAI 安全系統負責人長文梳理:大模型的對抗攻擊與防禦》 《大模型自主智慧體爆火,OpenAI 也在暗中觀察、發力,這是內部人的分析部落格》 《為記憶體塞不下 Transformer 犯愁?OpenAI 應用 AI 研究負責人寫了份指南》 《關於 Prompt Engineering 你該瞭解啥?OpenAI 應用研究負責人幫你梳理了》