在這篇文章中,風叔介紹了大模型多輪對話的五種挑戰(zhàn)和應對措施,當大家需要設計對話機器人、智能客服、智能導購、知識助手等產(chǎn)品時,可以參考文中提出的方法。

———— / BEGIN / ————

在AI大模型領域,多輪對話是一個難點,主要包括五種挑戰(zhàn)

挑戰(zhàn)一,上下文理解:隨著對話輪次的增加,模型需要處理的上下文信息越來越多,這可能導致信息遺忘或混淆。此外,模型的上下文窗口大小有限,可能無法容納整個對話歷史。

挑戰(zhàn)二,對話狀態(tài)跟蹤:在多輪對話中,用戶的意圖和話題可能會隨著對話的進行而發(fā)生變化。模型需要跟蹤對話的狀態(tài),包括用戶的意圖、當前的話題、已提供的信息等

挑戰(zhàn)三,推理與規(guī)劃:在多輪對話中,模型可能需要結合先前的對話內容、常識知識和外部信息進行推理。此外,模型還需要規(guī)劃對話的流程,以確保對話能夠順利進行。

挑戰(zhàn)四,對話生成一致性:在多輪對話中,模型可能會面臨多種情況和語境。為了保持對話的一致性,模型需要仔細選擇合適的回應,確保對話生成在內容、風格和語氣上的一致性。

挑戰(zhàn)五,對抗性問題:用戶可能會提出一些具有挑戰(zhàn)性或誤導性的問題,試圖測試模型的能力或尋找其弱點。模型需要具備一定的魯棒性和應對策略,以應對這些對抗性問題。

在這篇文章中,風叔將介紹這五種挑戰(zhàn)的應對方式。

增加上下文理解

提升大模型的上下文理解能力,是實現(xiàn)多輪對話的基礎,大模型需要召回并理解此前的對話信息,才能結合用戶當前的輸入,給出最適合的應答。提升大模型的上下文理解能力主要有以下幾種方式:

獲取全量歷史對話

第一種方式是獲取全量歷史對話信息,也是最直接的方式,比如在客服聊天機器人場景中,如果用戶在對話中先是詢問了賬單問題,接著又談到了網(wǎng)絡連接問題,LangChain中的ConversationBufferMemory類可以用來記住整個與用戶的對話歷史,可以幫助 AI 在回答網(wǎng)絡問題時還記得賬單問題的相關細節(jié),從而提供更連貫的服務。

variables=memory.load_memory_variables({})

第二種方式是只獲取最近相關的對話內容,比如在一個電商平臺上,如果用戶詢問關于特定產(chǎn)品的問題,然后又問到了配送方式,LangChain中的ConversationBufferWindowMemory類可以幫助 AI 只專注于最近的一兩個問題,而不是整個對話歷史,以提供更快速和專注的答復。

variables=memory.load_memory_variables({})
獲取歷史對話中實體信息

第三種方式是抽取出歷史對話中的實體信息,比如在法律咨詢的場景中,客戶可能會提到特定的案件名稱、相關法律條款或個人信息。LangChain中的ConversationEntityMemory可以幫助 AI 記住這些關鍵實體和實體關系細節(jié),從而在整個對話過程中提供更準確、更個性化的法律建議。

memory.load_memory_variables(_input)

對于一些準確度要求非常高的場景,也可以使用知識圖譜抽取歷史實體信息。比如在醫(yī)療咨詢中,一個病人可能會描述多個癥狀和過去的醫(yī)療歷史,ConversationKGMemory 可以構建一個包含病人癥狀、疾病歷史和可能的健康關聯(lián)的知識圖譜,從而幫助 AI 提供更全面和深入的醫(yī)療建議。

from langchain.memory import ConversationKGMemory from langchain.llms import OpenAI llm = OpenAI(temperature=0) memory=ConversationKGMemory(llm=llm)

對歷史對話進行階段性總結摘要

第四種方法是對歷史對話進行階段性總結,比如在教育輔導對話中,學生可能會提出不同的數(shù)學問題或理解難題,ConversationSummaryMemory 可以幫助 AI 總結之前的輔導內容和學生的疑問點,以便在隨后的輔導中提供更針對性的解釋和練習

跟蹤對話狀態(tài)

提升對話狀態(tài)跟蹤主要是為了使AI Agent能夠準確地理解和把握對話的進展,從而做出合適的回應,比如引導用戶提問、引導用戶給出更多信息等等。

對話狀態(tài)跟蹤的核心在于識別和更新對話的關鍵信息,這些信息通常包括用戶的意圖、當前的話題、已提供的信息、槽位值(slot values)等。對話狀態(tài)跟蹤可以通過以下幾種方式實現(xiàn):

  • 基于規(guī)則的對話狀態(tài)跟蹤:使用預定義的規(guī)則來識別和更新對話狀態(tài),比較依賴于專家知識,適用于領域特定的對話系統(tǒng)。

  • 基于統(tǒng)計的對話狀態(tài)跟蹤:使用統(tǒng)計模型(如隱馬爾可夫模型、條件隨機場等)來學習對話狀態(tài)的轉移概率,并根據(jù)這些概率來更新對話狀態(tài)。

  • 基于深度學習的對話狀態(tài)跟蹤:使用深度學習模型(如循環(huán)神經(jīng)網(wǎng)絡、Transformer等)來自動學習對話狀態(tài)的表示和更新策略。這種方法可以處理更復雜的對話場景,但需要大量的訓練數(shù)據(jù)。

我們以基于深度學習的對話狀態(tài)跟蹤為例,包括以下關鍵步驟:

  1. 數(shù)據(jù)準備:收集和標注對話數(shù)據(jù)集,包括對話歷史、用戶意圖、槽位值等信息。對數(shù)據(jù)進行預處理,如分詞、去除停用詞、標準化等。

  2. 特征提?。簩υ挌v史轉換為模型可處理的特征向量,可以使用詞嵌入(word embeddings)或其他文本表示方法來提取特征。

  3. 模型訓練:選擇一個合適的深度學習模型,如循環(huán)神經(jīng)網(wǎng)絡(RNN)或Transformer;定義損失函數(shù),如交叉熵損失(cross-entropy loss),用于衡量模型預測的對話狀態(tài)與真實狀態(tài)之間的差異;使用訓練數(shù)據(jù)集對模型進行訓練,通過反向傳播算法優(yōu)化模型參數(shù)。

  4. 對話狀態(tài)跟蹤:在實際對話過程中,將用戶的輸入和先前的對話歷史輸入到訓練好的模型中。模型根據(jù)輸入的特征向量預測當前的對話狀態(tài),包括用戶意圖、槽位值等。

  5. 對話管理:根據(jù)預測的對話狀態(tài),使用對話管理模塊來決定下一步的行動,如提問、提供信息或執(zhí)行動作等。將AI Agent的回應和新的對話歷史輸入到模型中,繼續(xù)進行下一輪的對話狀態(tài)跟蹤。

  6. 模型評估與優(yōu)化:使用驗證數(shù)據(jù)集評估模型的性能,如準確率、召回率、F1分數(shù)等。根據(jù)評估結果對模型進行優(yōu)化,如調整模型結構、超參數(shù)或訓練策略等。

通過以上流程,可以有效地提升對話狀態(tài)跟蹤的準確性和效率,使AI Agent能夠更好地理解和應對多輪對話中的各種場景。

推理與規(guī)劃

關于大模型的推理與規(guī)劃,風叔此前也有過專題介紹

打開網(wǎng)易新聞 查看精彩圖片

從最經(jīng)典的ReAct模式出發(fā),有兩條發(fā)展路線,一條重規(guī)劃,一條重反思。

在重規(guī)劃的模式下,ReAct模式加上規(guī)劃器就成為REWOO,再加上重規(guī)劃器就成為Plan & Execute,再疊加計劃并行執(zhí)行能力就成為LLM Compiler。

在重反思模式下,ReAct模式加上左右互搏框架就成為Basic Reflecion,邊推理邊執(zhí)行則演變?yōu)镾elf-Discover,加入強化學習則演變?yōu)镽eflexion,最后的LATS是推理和規(guī)劃的集大成者,LATS = Tree search + ReAct + Plan&Execute + Reflexion。

這一環(huán)節(jié),風叔就不再贅述了。

實現(xiàn)對話一致性

一致性問題主要涉及到對話內容、風格和語氣的一致性,保證對話生成的一致性是多輪對話系統(tǒng)中的重要挑戰(zhàn)。

對話生成的一致性同樣可以通過三種方式來實現(xiàn):

  1. 基于規(guī)則的生成:使用預定義的規(guī)則和模板來生成對話,確保生成的對話符合特定的風格和語氣。這種方法適用于領域特定的對話系統(tǒng),但靈活性較差。

  2. 基于統(tǒng)計的生成:使用統(tǒng)計語言模型(如n-gram模型、隱馬爾可夫模型等)來生成對話。這些模型可以根據(jù)先前的對話內容預測下一個詞的概率分布,從而生成連貫的對話。

  3. 基于深度學習的生成:使用深度學習算法,學習對話的復雜模式和上下文依賴關系,從而生成更自然和一致的對話。

我們仍然以深度學習為例,和對話狀態(tài)追蹤的流程相似:

  • 數(shù)據(jù)準備:收集和標注對話數(shù)據(jù)集,確保數(shù)據(jù)集中包含一致的對話風格和語氣。對數(shù)據(jù)進行預處理等。

  • 特征提?。簩υ挌v史轉換為模型可處理的特征向量,可以使用詞嵌入(word embeddings)或其他文本表示方法來提取特征。

  • 模型訓練:和對話狀態(tài)追蹤相似,但需要定義不同的損失函數(shù),比如風格一致性損失、話題一致性損失??梢允褂脤剐杂柧毞椒▉硖岣吣P偷囊恢滦?。通過引入一個風格判別器,使生成器生成的對話難以被風格判別器識別,從而提高生成對話的風格一致性。

  • 對話生成:在實際對話過程中,將用戶的輸入和先前的對話歷史輸入到訓練好的模型中,模型根據(jù)輸入的特征向量生成當前的對話回應。

通過以上流程,可以有效地保證對話生成的一致性,使AI Agent能夠生成自然、連貫且符合特定風格和語氣的對話。

對抗性問題防御

對抗性問題是指一些涉及政治、隱私、灰色等不友好的問題,比如“如何下載盜版游戲”、“如何盜取他人賬號密碼”等等,防御對抗性問題也是大模型必須要克服的難點。

對抗性問題的主要防御策略包括:

  • 對抗性訓練(Adversarial Training):即在模型訓練的過程中就引入對抗性樣本,使模型能夠學習識別和處理這些惡意輸入。

  • 多模型集成(Ensemble Methods):采用多個模型的集成方法,提高對抗性攻擊的魯棒性。

  • 隱私保護技術(Privacy-preserving Techniques):使用差分隱私等技術,減少模型對特定輸入的敏感性。

關于對抗性訓練的實現(xiàn)細節(jié),感興趣的同學可以參考OpenAI安全負責人Lilian Weng大神的論文:

https://www.secrss.com/articles/60896

作者:風叔

來源微信公眾號:風叔云

品牌推廣| 內容撰寫|廣告投放|培訓合作