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