
前言已經嘮了三章的RAG是時候回頭反思一下當前的RAG是解決幻覺的終點么我給不出直接的答案不過感覺當前把RAG當作傳統搜索框架在大模型時代下的改良這個思路的天花板高度有限~反思來源于對RAG下模型回答的直觀感受最初我們被ChatGPT的能力所震驚并不是它能背誦知識而是模型在知識壓縮后表現出的“涌現能力”更具體到RAG所屬的問答領域是模型能夠精準的基于上文從壓縮的參數中召回并整合相應的知識甚至進行知識外推的能力。通俗點說它有可能生成我在任何地方都檢索不到的答案但RAG當前的多數使用方法采用只讓模型基于檢索到的內容進行回答的方案其實限制了模型自身對知識壓縮形成的智能大模型似乎變成了文本抽取和總結潤色的工具。體驗上大模型直接回答的效果就像是學霸答題文采四溢而RAG有時倒像是學渣開卷考試答得小心翼翼一有不慎還會抄錯答案…既要保證事實性又要保留模型智能則需要最大化的使用模型已經內化壓縮到參數中的信息只在需要使用外部知識增強的時候再進行工具調用。看到過以下幾種方案Detection通過前置判斷決策模型何時需要使用外掛在模型可以自行回答的時候使用模型回答當模型不能回答的時候走RAG檢索生成Realtime Data需要獲取動態世界的信息部分場景可以通過意圖進行決策相對好解決Incorrect or Incomplete模型不知道或者模型推理幻覺如何知道模型可能不知道是更難解決的問題Calibration通過后置處理讓模型先生成再使用召回內容對模型回答進行修正校準和事實性檢查兩種方案勾兌一下高置信度判斷模型可以自行完成直接回答中置信度先生成再校驗低置信度直接走RAG檢索生成或者通過意圖和場景進行決策如何勾兌就不在這里說了這里我們聊聊基礎的前置判斷和后置處理分別有哪些方案~前置判斷-Detection檢測模型回答存在幻覺可以通過檢索外部知識進行校驗不過考慮生成式模型覆蓋問題的廣泛性Self-Contradictory論文中評估chatgpt生成的回答中38.5%的內容無法通過Wiki等外部知識進行校驗。因此這里我們先介紹一種完全基于模型自身不依賴外部知識的幻覺判斷方案自我矛盾。后介紹一種模型直接拒絕回答的方案和RLHF里面的事實性原則類似這里是基于SFT的模型自我拒絕方案不過個人對拒識類的方案持一定的保留意見但不妨礙學習新思路哈哈~~自我矛盾第一種發現模型幻覺的方案是基于模型多次回答的不一致性來判斷模型是否在胡說八道。相似的概念在解密Prompt系列9. 模型復雜推理-思維鏈基礎和進階玩法里面聊Self-Consistency COT時就提到過該論文是使用多路COT推理來投票出一個最合理的推理路徑從而提高思考的準確率。這里只不過改變了使用的形式通過模型多次回答的不一致來判斷模型是否出現了幻覺。有以下幾種生成模型多次回答并度量一致性的方案單模型推理SELFCHECKGPT: Zero-Resource Black-Box Hallucination Detection for Generative Large Language ModelsSELF-CONTRADICTORY HALLUCINATIONS OF LLMS: EVALUATION, DETECTION AND MITIGATION對于如何度量模型隨機生成的多個回答之間的不一致性Self-Check嘗試了包括Bert相似度計算在內的5種方法其中效果最好的兩種分別是傳統NLI和基于大模型prompt的NLI從推理性價比上傳統NLI有優勢效果上LLM更好以下是使用不同相似度計算方案來衡量模型多次隨機解碼的不一致性并用該指標來計算模型回答是否符合事實性的AUC效果傳統NLI推理任務是給定前提premise判斷假設hypothesis是否成立或者矛盾。這里論文就是使用MNLI數據訓練的Debarta-v3-Large來判斷模型生成的回答r(hypothesis)是否和其他N個采樣生成的回答(premise)相矛盾。論文分別嘗試了句子級的判斷和整個回答粒度的判斷句子級別的效果顯著更好。\[S_{NLI}(i) \frac{1}{N}\sum_{n1}^N P(contradict|r_i,S^n) \]而基于大模型prompt同樣是NLI任務的思路只不過改成了自然語言指令以下context等同于以上的 \(S^n\), sentence就是 \(r_i\), 大模型推理返回的Yes/NO會被轉化成0/1并計算均值。\[S_{prompt}(i) \frac{1}{N}\sum_{n1}^N x_i^n \,\, x \in {(0,1)} \]SELF-Contradictory的思路很相似方法更加復雜些感興趣的朋友自己去看論文吧~多模型問答DeepMind LM vs LM: Detecting Factual Errors via Cross ExaminationImproving Factuality and Reasoning in Language Models through Multiagent Debate同樣是自我矛盾的思路還可以通過多模型對話的方式來進行。LM VS LM采用了模型B多次反復提問模型A的方式來生成多個回答。類似的方式也用于問卷中問題的設計出題人會用不同的方式把一個問題問好幾遍如果每次回答都不一樣說明做題人對類似問題的回答是不確定的。如下圖第一步模型A先生成回答(claim)。第二步模型B會針對cliam從多個角度生成提問并讓模型A再次進行回答。第三步模型B會基于A的原始回答和對多個問題的回答來判斷原始回答的正確性。以上B提問A回答的步驟如果B判斷需要進行補充提問的話可能會重復多次。這里涉及到的三個任務都是通過大模型指令來進行的三個任務分別是模型B基于A的cliam進行提問模型B判斷是否繼續提問模型B基于A的所有回答判斷claim是否正確。對應的具體prompt如下相比上面SELF-CHECK隨機解碼生成多個答案的方案從多角度進行提問個人感覺更有針對性但兩種方法都會有遺漏和誤傷。推理成本上SELF-CHECK更低LM vs LM更高。自我拒絕R-Tuning: Teaching Large Language Models to Refuse Unknown Questions除了通過不一致性判斷模型出現幻覺另一種更干脆直接的方案是讓模型在碰到自己不確定的問題時直接選擇拒絕回答和RLHF中的事實性原則的是一個思路。但我對這類方案最大的疑惑是拒識能力的泛化性。究竟模型是學到了對于自身parametric knowledge置信度較低混淆度較高的問題進行拒絕回答還是模型背下來了對某些知識和上文語義空間進行拒絕回答。這個我也還沒想明白哈哈哈~所以這里我們繞過這個問題聊一種中間策略畢竟西醫好多疾病也沒研究明白但病還得治不是。R-Tunning提出指令微調可能放大了模型的回答幻覺。因為指令微調的數據集中所有問題都有答案微調任務就是負責教會模型各種任務范式以及在不同的任務中如何召回預訓練中學習的知識并回答問題。但我們忽略了SFT中很多任務涉及到的知識在模型預訓練中可能是沒接觸過的但我們依舊選擇讓模型去進行回答。這種預訓練和指令微調間的不一致性可能會進一步放大模型幻覺。R-Tunning給出的解決方案是在構建指令微調數據集時加入模型是否對改答案表示肯定的描述這樣允許模型拒絕自己不確定的問題。分成2個步驟找到模型不確定的問題論文嘗試了兩種方案R-Tuning模型回答和標注答案不一致適用于有標準答案的QA問題R-Tuning-U模型回答自我矛盾這里論文計算模型回答包含的所有答案的熵值構建允許模型拒絕的指令數據集論文也嘗試了以下兩種prompt指令模板R-Tuning“Q:{Question},A:{Answer}.{Propmt}.”,其中prompt是Are you sure you accurately answered the question based on your internal knowledge:對于上面模型確定的問題加上I am sure不確定的問題加上I am not sureR-Tuning-R: 對于確定給的問題使用Q:{Question},A:{Answer}對于不確定的問題用I am not sure 的各種相似表達來直接替換Answer然后使用以上加入模型不確定性表達的數據集進行指令微調即可。在我們的使用場景中R-Tunning-R這種直接拒絕的方案更加合適畢竟我傾向于指令微調的核心并不是知識注入而是任務對齊所以模型只要學習到對于自己不確定的問題選擇拒絕回答即可。在論文驗證的MMLU等數據集上這種拒絕微調方案有一定的領域外的泛化效果不過這些數據集和我們的使用場景相差很大具體效果要等測試后才知道了。后處理Calibration Method和Detection相反Calibration把重心放在模型回答的后處理上。也就是先不做判斷直接使用模型生成回答再調用工具對回答進行校驗和修改。這里我們介紹谷歌和微軟提出的幾種方案。不同方案對于如何后處理和調用哪些工具進行后處理存在差異不過整體流程都和下圖相似模型生成 - 召回相關知識 - 對生成結果進行校驗和修復指令方案RARR: Researching and Revising What Language Models Say, Using Language ModelsCRITIC: LARGE LANGUAGE MODELS CAN SELFCORRECT WITH TOOL-INTERACTIVE CRITIQUING基礎方案是RARR提出的Research-then-revise框架整個流程分為以下幾個步驟Generation Stage先讓LLM直接生成問題回答XResearch Stage用于收集可以校驗回答的事實性證據。針對X使用Few-shot-prompt, 生成用來校驗X的多個搜索問題每個問題分別進行谷歌搜索并召回Top5內容。這里論文沒有使用搜索自帶的snippet而是對網頁內容進行分塊每4個句子一塊并使用T5-Encoder計算每個chunk和query的相似度保留top-J個內容塊。這里會得到一個(Q1,chunk1)(Q1,chunk2),(Q2,chunk1),…的問題事實列表**Revise Stage獲取所有檢索到的事實之后進入校驗階段。**論文會遍歷以上列表針對每一個問題分別先使用few-shot-cot判斷每個事實和模型回答X之間是否是一致的agreement model如下。如果一致則遍歷下一個如果不一致則使用few-shot-prompt讓大模型基于事實問題對模型回答進行修改revision model如下。論文在修改回答時會先定位原始回答X中哪個span和事實不符再進行修改從而避免大幅修改原始回答評估部分后處理方案需要兼顧對模型原始回答的保留和事實性這里RARR提出了兩個指標Attribution Score計算歸因得分既給定所有事實修改后回答Y中每個句子和所有事實的最大NLI打分的平均值既整體回答能獲得事實性支撐的平均概率Preservation score計算保留率由回答原始意圖的保留概率 * 前后答案的未改變率編輯距離度量得到RARR最大的問題在于效率一部分是大模型的推理效率一方面是最后的Revise部分采用了串行修改這部分在后面的微調方案中會有改良另一篇論文CRITIC提出的verify-then-correct和RARR非常相似只不過在不同的任務上嘗試使用了不同的外部工具進行校驗。在開放問答上使用搜索在代碼問題就用代碼解釋器并未涉及動態的工具選擇只是在不同數據集上固定選用不同的工具這里就不展開說啦感興趣的盆友自己去看論文吧~微調方案PURR: Efficiently Editing Language Model Hallucinations by Denoising Language Model CorruptionsCheck Your Facts and Try Again: Improving Large Language Models with External Knowledge and Automated FeedbackFusion-in-decoder: Leveraging Passage Retrieval with Generative Models for Open Domain Question AnsweringPURR針對RARR的效率問題進行了優化使用的是大模型能力通過數據蒸餾到小模型的方案也就是把上面最耗時的Revise部分使用T5-large模型來實現query生成的部分也用T5-large來實現并且把串行修改的方案優化為了所有事實進行一次性融合修改。論文的核心就在于如何使用大模型來構建用于事實性修改的T5模型。論文使用了corrput的方案也就是把正確的回答人為進行破壞構造幻覺再訓練模型進行還原具體包含以下幾個步驟生成正確的回答整理了來自各個領域和話題的6000個種子問題每個問題調用搜索引擎獲取TopN網頁并進行chunking分段使用和上面RARR相同的T5-Encoder計算每個段落和Q的相似度閾值以上的為positive evidence(\(E^\))這里限制最多4條其余閾值以下的為negative evidence\(E-\)。然后使用zero-shot-prompt來讓大模型基于\(E\)生成多文檔總結作為正確的回答Y。對回答添加噪聲同樣使用大模型基于2shot-cot-prompt來對以上獲得的正確答案進行破壞指令要求大模型先生成修改方案再對回答進行魔改。魔改包括但不限于魔改實體魔改語義關系魔改語法等等這里論文使用了text-davinci-003指令和效果如下圖訓練T5微調使用\(E\)的事實和添加噪聲的回答作為輸入模型目標是把噪聲回答修復成正確答案。這里如果\(E\)不足4條的會隨機采樣\(E^-\)這樣可以提高模型對噪聲事實的識別能力。值得說一下的是這里多個事實并非采用拼接的形式進行融合而是使用Fusion-in-decoder的形式在encoder層編碼后進行拼接再進入Decoder。效果上PURR對比RARR對模型原始回答有更高的保有率Pres以及更高的平均歸因率Attr。但整體上后處理相關的論文和實際應用中模型回答的錯誤的五花八門相比還是簡化了太多。在實際應用中使用這類后處理的修復邏輯感覺還有很多需要踩的坑。最后感謝你們的閱讀和喜歡我收藏了很多技術干貨可以共享給喜歡我文章的朋友們如果你肯花時間沉下心去學習它們一定能幫到你。因為這個行業不同于其他行業知識體系實在是過于龐大知識更新也非常快。作為一個普通人無法全部學完所以我們在提升技術的時候首先需要明確一個目標然后制定好完整的計劃同時找到好的學習方法這樣才能更快的提升自己。這份完整版的大模型 AI 學習資料已經上傳CSDN朋友們如果需要可以微信掃描下方CSDN官方認證二維碼免費領取【保證100%免費】一、全套AGI大模型學習路線AI大模型時代的學習之旅從基礎到前沿掌握人工智能的核心技能二、640套AI大模型報告合集這套包含640份報告的合集涵蓋了AI大模型的理論研究、技術實現、行業應用等多個方面。無論您是科研人員、工程師還是對AI大模型感興趣的愛好者這套報告合集都將為您提供寶貴的信息和啟示。三、AI大模型經典PDF籍隨著人工智能技術的飛速發展AI大模型已經成為了當今科技領域的一大熱點。這些大型預訓練模型如GPT-3、BERT、XLNet等以其強大的語言理解和生成能力正在改變我們對人工智能的認識。 那以下這些PDF籍就是非常不錯的學習資源。四、AI大模型商業化落地方案五、面試資料我們學習AI大模型必然是想找到高薪的工作下面這些面試題都是總結當前最新、最熱、最高頻的面試題并且每道題都有詳細的答案面試前刷完這套面試題資料小小offer不在話下。這份完整版的大模型 AI 學習資料已經上傳CSDN朋友們如果需要可以微信掃描下方CSDN官方認證二維碼免費領取【保證100%免費】