多轮对话之对话管理:Dialog Management
作者丨徐阿衡
學校丨卡耐基梅隆大學碩士
研究方向丨QA系統
本文經授權轉載自知乎專欄「徐阿衡-自然語言處理」。
開始涉獵多輪對話,這一篇想寫一寫對話管理(Dialog Management),感覺是個很龐大的工程,涉及的知識又多又雜,在這里只好挑重點做一個引導性的介紹,后續會逐個以單篇形式展開。?
放一張多輪語音對話流程圖,理解下 DM 在整個對話流程中處于什么地位。
簡單描述一下這個流程圖常見的一種信息流動方式,首先是語音識別 ASR,產生語音識別結果也就是用戶話語;語義解析模塊 NLU 將映射成用戶對話行為;對話管理模塊 DM 選擇需要執行的系統行為。
如果這個系統行為需要和用戶交互,那么語言生成模塊 NLG 會被觸發,生成自然語言或者說是系統話語;最后,生成的語言由語音合成模塊 TTS 朗讀給用戶聽。?
這一篇第一部分介紹下對話管理及重要的幾個小知識點,第二部分介紹對話管理的一些方法,主要有三大類:?
Structure-based Approaches?
Key phrase reactive?
Tree and FSM?
…?
Principle-based Approaches?
Frame?
Information-State?
Plan?
…?
Statistical Approaches?
這一類其實和上面兩類有交叉…不過重點想提的是:?
Reinforcement Learning?
方法不等于模型,這里只介紹一些重要概念,不會涉及模型細節。
Dialog Management
對話管理(Dialog Management, DM)控制著人機對話的過程,DM 根據對話歷史信息,決定此刻對用戶的反應。最常見的應用還是任務驅動的多輪對話,用戶帶著明確的目的如訂餐、訂票等,用戶需求比較復雜,有很多限制條件,可能需要分多輪進行陳述。
一方面,用戶在對話過程中可以不斷修改或完善自己的需求,另一方面,當用戶的陳述的需求不夠具體或明確的時候,機器也可以通過詢問、澄清或確認來幫助用戶找到滿意的結果。?
總的來說,對話管理的任務大致有下面一些:?
1. 對話狀態維護(dialog state tracking, DST)?
t+1 時刻的對話狀態,依賴于之前時刻 t 的狀態,和之前時刻 t 的系統行為,以及當前時刻 t+1 對應的用戶行為。可以寫成。
2. 生成系統決策(dialog policy)?
根據 DST 中的對話狀態(DS),產生系統行為(dialog act),決定下一步做什么 dialog act 可以表示觀測到的用戶輸入(用戶輸入 -> DA,就是 NLU 的過程),以及系統的反饋行為(DA -> 系統反饋,就是 NLG 的過程)。
3. 作為接口與后端/任務模型進行交互?
4. 提供語義表達的期望值(expectations for interpretation)?
interpretation:用戶輸入的 internal representation,包括 speech recognition 和 parsing/semantic representation 的結果。
本質上,任務驅動的對話管理實際就是一個決策過程,系統在對話過程中不斷根據當前狀態決定下一步應該采取的最優動作(如:提供結果,詢問特定限制條件,澄清或確認需求等),從而最有效的輔助用戶完成信息或服務獲取的任務。
如圖,DM 的輸入就是用戶輸入的語義表達(或者說是用戶行為,是 NLU 的輸出)和當前對話狀態,輸出就是下一步的系統行為和更新的對話狀態。這是一個循環往復不斷流轉直至完成任務的過程。
其中,語義輸入就是流轉的動力,DM 的限制條件(即通過每個節點需要補充的信息/付出的代價)就是阻力,輸入攜帶的語義信息越多,動力就越強;完成任務需要的信息越多,阻力就越強。?
一個例子:
實際上,DM 可能有更廣泛的職責,比如融合更多的信息(業務+上下文),進行第三方服務的請求和結果處理等等。
Initiative
對話引擎根據對話按對話由誰主導可以分為三種類型:?
系統主導:系統詢問用戶信息,用戶回答,最終達到目標。
用戶主導:用戶主動提出問題或者訴求,系統回答問題或者滿足用戶的訴求。
混合:用戶和系統在不同時刻交替主導對話過程,最終達到目標。
有兩種類型,一是用戶/系統轉移任何時候都可以主導權,這種比較困難,二是根據 prompt type 來實現主導權的移交。
Prompts 又分為 open prompt(如 ‘How may I help you‘ 這種,用戶可以回復任何內容 )和 directive prompt(如 ‘Say yes to accept call, or no’ 這種,系統限制了用戶的回復選擇)。
Basic Concepts
Ground and Repair?
對話是對話雙方共同的行為,雙方必須不斷地建立共同基礎(common ground, Stalnaker, 1978),也就是雙方都認可的事物的集合。共同基礎可以通過聽話人依靠(ground)或者確認(acknowledge)說話人的話段來實現。
確認行為(acknowledgement)由弱到強的 5 種方法(Clark and Schaefer 1989)有:持續關注(continued attention),相關鄰接貢獻(relevant next contribution),確認(acknowledgement),表明(demonstration),展示(display)。?
聽話人可能會提供正向反饋(如確認等行為),也可能提供負向反饋(如拒絕理解/要求重復/要求 rephrase 等),甚至是要求反饋(request feedback)。
如果聽話人也可以對說話人的語段存在疑惑,會發出一個修復請求(request for repair),如:
還有的概念如 speech acts,discourse 這類,之前陸陸續續都介紹過一些了。
Challenges
人的復雜性(complex)、隨機性(random)和非理性化(illogical)的特點導致對話管理在應用場景下面臨著各種各樣的問題,包括但不僅限于:
模型描述能力與模型復雜度的權衡
用戶對話偏離業務設計的路徑
如系統問用戶導航目的地的時候,用戶反問了一句某地天氣情況。
多輪對話的容錯性
如 3 輪對話的場景,用戶已經完成 2 輪,第 3 輪由于 ASR 或者 NLU 錯誤,導致前功盡棄,這樣用戶體驗就非常差。
多場景的切換和恢復
絕大多數業務并不是單一場景,場景的切換與恢復即能作為亮點,也能作為容錯手段之一。
降低交互變更難度,適應業務迅速變化
跨場景信息繼承
Structure-based Approaches
Key Pharse Reactive Approaches
本質上就是關鍵詞匹配,通常是通過捕捉用戶最后一句話的關鍵詞/關鍵短語來進行回應,比較知名的兩個應用是 ELIZA 和 AIML。
AIML (人工智能標記語言),XML 格式,支持 ELIZA 的規則,并且更加靈活,能支持一定的上下文實現簡單的多輪對話(利用 that),支持變量,支持按 topic 組織規則等。
<pattern>DO YOU KNOW WHO * IS</pattern>
<template><srai>WHO IS <star/></srai></template>
</category>
<category>
<pattern>MOTHER</pattern>
<template> Tell me more about your family. </template>
</category>
<category>
<pattern>YES</pattern>
<that>DO YOU LIKE MOVIES</that>
<template>What is your favorite movie?</template>
</category>
附上自己改寫的 aiml 地址[1],在原有基礎上增添了一些功能:?
支持 python3?
支持中文?
支持 * 擴展
Trees and FSM-based Approaches
Trees and FSM-based approach 通常把對話建模為通過樹或者有限狀態機(圖結構)的路徑。相比于 simple reactive approach,這種方法融合了更多的上下文,能用一組有限的信息交換模板來完成對話的建模。
這種方法適用于:
系統主導
需要從用戶收集特定信息
用戶對每個問題的回答在有限集合中
這里主要講 FSM,把對話看做是在有限狀態內跳轉的過程,每個狀態都有對應的動作和回復,如果能從開始節點順利的流轉到終止節點,任務就完成了。
FSM 的狀態對應系統問用戶的問題,弧線對應將采取的行為,依賴于用戶回答。?
FSM-based DM 的特點是:?
人為定義對話流程?
完全由系統主導,系統問,用戶答?
答非所問的情況直接忽略?
建模簡單,能清晰明了的把交互匹配到模型?
難以擴展,很容易變得復雜?
適用于簡單任務,對簡單信息獲取很友好,難以處理復雜的問題?
缺少靈活性,表達能力有限,輸入受限,對話結構/流轉路徑受限?
對特定領域要設計 task-specific FSM,簡單的任務 FSM 可以比較輕松的搞定,但稍復雜的問題就困難了,畢竟要考慮對話中的各種可能組合,編寫和維護都要細節導向,非常耗時。
一旦要擴展 FSM,哪怕只是去 handle 一個新的 observation,都要考慮很多問題。實際中,通常會加入其它機制(如變量等)來擴展 FSM 的表達能力。
Principle-based Approaches
Frame-based Approaches
Frame-based approach 通過允許多條路徑更靈活的獲得信息的方法擴展了基于 FSM 的方法,它將對話建模成一個填槽的過程,槽就是多輪對話過程中將初步用戶意圖轉化為明確用戶指令所需要補全的信息。
一個槽與任務處理中所需要獲取的一種信息相對應。槽直接沒有順序,缺什么槽就向用戶詢問對應的信息。
Frame-based DM 包含下面一些要素:?
Frame:是槽位的集合,定義了需要由用戶提供什么信息。
對話狀態:記錄了哪些槽位已經被填充 行為選擇:下一步該做什么,填充什么槽位,還是進行何種操作。
行為選擇:可以按槽位填充/槽位加權填充,或者是利用本體選擇。
基于框架/模板的系統本質上是一個生成系統,不同類型的輸入激發不同的生成規則,每個生成能夠靈活的填入相應的模板。常常用于用戶可能采取的行為相對有限、只希望用戶在這些行為中進行少許轉換的場合。
Frame-based DM 特點:?
用戶回答可以包含任何一個片段/全部的槽信息?
系統來決定下一個行為?
支持混合主導型系統?
相對靈活的輸入,支持多種輸入/多種順序?
適用于相對復雜的信息獲取?
難以應對更復雜的情境?
缺少層次
槽的更多信息可以參考這篇文章[2]。
Agenda + Frame (CMU Communicator)
Agenda + Frame (CMU Communicator) 對 frame model 進行了改進,有了層次結構,能應對更復雜的信息獲取,支持話題切換、回退、退出。主要要素如下:?
Product:樹的結構,能夠反映為完成這個任務需要的所有信息的順序。相比于普通的 Tree and FSM approach,這里產品樹(product tree)的創新在于它是動態的,可以在 session 中對樹進行一系列操作比如加一個子樹或者挪動子樹 。
Process:
Agenda:相當于任務的計劃(plan),類似棧的結構(generalization of stack),是話題的有序列表(ordered list of topics),也是 handler 的有序列表(list of handlers),handler 有優先級。
Handler:產品樹上的每個節點對應一個 handler,一個 handler 封裝了一個 information item。
從 product tree 從左到右、深度優先遍歷生成 agenda 的順序。當用戶輸入時,系統按照 agenda 中的順序調用每個 handler,每個 handler 嘗試解釋并回應用戶輸入。
handler 捕獲到信息就把信息標記為 consumed,這保證了一個 information item 只能被一個 handler 消費。?
input pass 完成后,如果用戶輸入不會直接導致特定的 handler 生成問題,那么系統將會進入 output pass,每個 handler 都有機會產生自己的 prompt(例如,departure date handler 可以要求用戶出發日期)。?
可以從 handler 返回代碼中確定下一步,選擇繼續 current pass,還是退出 input pass 切換到 output pass,還是退出 current pass 并等待來自用戶輸入等。
handler 也可以通過返回碼聲明自己為當前焦點(focus),這樣這個 handler 就被提升到 agenda 的頂端。
為了保留特定主題的上下文,這里使用 sub-tree promotion 的方法,handler 首先被提升到兄弟節點中最左邊的節點,父節點同樣以此方式提升。
系統還能處理產品樹中節點之間的依賴關系。典型的依賴關系在父節點和子節點之間。通常父節點的值取決于其子節點。每個節點都維護一個依賴節點的列表,并且會通知依賴節點值的變化,然后依賴節點可以聲明自己是無效的并成為當前對話的候選主題。?
給一個例子,能夠回應用戶的顯式/隱式話題轉移(A1-A3, U11),也能夠動態添加子樹到現有的 agenda(A8-A10)。
具體可參考論文:AN AGENDA-BASED DIALOG MANAGEMENT ARCHITECTURE FOR SPOKEN LANGUAGE SYSTEMS [3]。
Information-State Approaches?
Information State Theories 提出的背景是:?
很難去評估各種 DM 系統?
理論和實踐模型存在很大的 gap?
理論型模型有:logic-based, BDI, plan-based, attention/intention,實踐中模型大多數是 finite-state 或者 frame-based。即使從理論模型出發,也有很多種實現方法。
因此,Information State Models 作為對話建模的形式化理論,為工程化實現提供了理論指導,也為改進當前對話系統提供了大的方向。
Information-state theory 的關鍵是識別對話中流轉信息的 relevant aspects,以及這些成分是怎么被更新的,更新過程又是怎么被控制的。
idea 其實比較簡單,不過執行很復雜罷了。理論架構如下:
介紹下簡單的一些要素:?
Statics?
Informational components:包括上下文、內部驅動因子(internal motivating factors),e.g., QUD, common ground, beliefs, intentions, dialogue history, user models, etc.
Formal representations:informational components 的表示,e.g., lists, records, DRSs,…
Dynamics?
dialog moves:會觸發更新 information state 的行為的集合,e.g., speech acts;
update rules:更新 information state 的規則集合,e.g., selection rules;
update strategy:更新規則的選擇策略,選擇在給定時刻選用哪一條 update rules。
意義在于可以遵循這一套理論體系來構建/分析/評價/改進對話系統。基于 information-state 的系統有:?
TrindiKit Systems?
– GoDiS (Larsson et al)?
– information state: Questions Under Discussion?
– MIDAS?
– DRS information state, first-order reasoning (Bos &Gabsdil, 2000)?
– EDIS?
– PTT Information State, (Matheson et al 2000)?
– SRI Autoroute –Conversational Game Theory (Lewin 2000)?
Successor Toolkits?
– Dipper (Edinburgh)?
– Midiki (MITRE)?
Other IS approaches?
– Soar (USC virtual humans)?
– AT&T MATCH system
Plan-based Approaches?
一般指大名鼎鼎的 BDI (Belief, Desire, Intention) 模型。起源于三篇經典論文:
Cohen and Perrault 1979?
Perrault and Allen 1980?
Allen and Perrault 1980?
基本假設是,一個試圖發現信息的行為人,能夠利用標準的 plan 找到讓聽話人告訴說話人該信息的 plan。這就是 Cohen and Perrault 1979 提到的 AI Plan model。
Perrault and Allen 1980 和 Allen and Perrault 1980 將 BDI 應用于理解,特別是間接言語語效的理解,本質上是對 Searle 1975 的 speech acts 給出了可計算的形式體系。?
官方描述(Allen and Perrault 1980):?
A has a goal to acquire certain information. This causes him to create a plan that involves asking B a question. B will hopefully possess the sought information. A then executes the plan, and thereby asks B the question. B will now receive the question and attempt to infer A’s plan. In the plan there might be goals that A cannot achieve without assistance. B can accept some of these obstacles as his own goals and create a plan to achieve them. B will then execute his plan and thereby respond to A’s question.
重要的概念都提到了,goals, actions, plan construction, plan inference。
理解上有點繞,簡單來說就是 agent 會捕捉對 internal state (beliefs) 有益的信息,然后這個 state 與 agent 當前目標(goals/desires)相結合,再然后計劃(plan/intention)就會被選擇并執行。
對于 communicative agents 而言,plan 的行為就是單個的 speech acts。speech acts 可以是復合(composite)或原子(atomic)的,從而允許 agent 按照計劃步驟傳達復雜或簡單的 conceptual utterance。?
這里簡單提一下重要的概念。?
信念(Belief):基于謂詞 KNOW,如果 A 相信 P 為真,那么用 B(A, P) 來表示。
期望(Desire):基于謂詞 WANT,如果 S 希望 P 為真(S 想要實現 P),那么用 WANT(S, P) 來表示,P 可以是一些行為的狀態或者實現,W(S, ACT(H)) 表示 S 想讓 H 來做 ACT。
Belief 和 WANT 的邏輯都是基于公理。最簡單的是基于 action schema。每個 action 都有下面的參數集:?
前提(precondition):為成功實施該行為必須為真的條件。
效果(effect):成功實施該行為后變為真的條件。
體(body):為實施該行為必須達到的部分有序的目標集(partially ordered goal states)。
計劃推理(Plan Recognition/Inference, PI):根據 B 實施的行為,A 試圖去推理 B 的計劃的過程。?
PI.AE Action-Effect Rule(行為-效果規則)?
PI.PA Precondition-Action Rule(前提-行為規則)?
PI.BA Body-Action Rule(體-行為規則)?
PI.KB Know-Desire Rule(知道-期望規則)?
E1.1 Extended Inference Rule(擴展推理規則)?
計劃構建(Plan construction):
找到從當前狀態(current state)達到目標狀態(goal state)需要的行為序列(sequence of actions)。
Backward chaining,大抵是說,試圖找到一個行為,如果這個行為實施了能夠實現這個目標,且它的前提在初始狀態已經得到滿足,那么計劃就完成了,但如果未得到滿足,那么會把前提當做新的目標,試圖滿足前提,直到所有前提都得到滿足。
Backward chaining 詳細可參考 NLP 筆記 - Meaning Representation Languages [4]。?
還有個重要的概念是 speech acts,在 NLP 筆記 - Discourse Analysis [5]中提到過,之后會細講。更多可見 Plan-based models of dialogue [6]。
值得一提的是,基于 logic 和基于 plan 的方法雖然有更強大更完備的功能,但實際場景中并不常用,大概是因為大部分的系統都是相對簡單的單個領域,任務小且具體,并不需要復雜的推理。
Statistical Approaches
RL-Based Approaches
前面提到的很多方法還是需要人工來定規則的(hand-crafted approaches),然而人很難預測所有可能的場景,這種方法也并不能重用,換個任務就需要從頭再來。而一般的基于統計的方法又需要大量的數據。再者,對話系統的評估也需要花費很大的代價。
這種情況下,強化學習的優勢就凸顯出來了。RL-Based DM 能夠對系統理解用戶輸入的不確定性進行建模,讓算法來自己學習最好的行為序列。
首先利用 simulated user 模擬真實用戶產生各種各樣的行為(捕捉了真實用戶行為的豐富性),然后由系統和 simulated user 進行交互,根據 reward function 獎勵好的行為,懲罰壞的行為,優化行為序列。
由于 simulated user 只用在少量的人機互動語料中訓練,并沒有大量數據的需求,不過 user simulation 也是個很難的任務就是了。?
對話仿真的整體框架如下圖:
相關鏈接
1.?aiml 地址
https://github.com/Shuang0420/aiml
2. 填槽與多輪對話
http://t.cn/RQfkTPP
3. CMU Communicator 論文
http://www.cs.cmu.edu/~xw/asru99-agenda.pdf
4. NLP 筆記 - Meaning Representation Languages
http://t.cn/RQfFMAo
5. NLP 筆記 - Discourse Analysis
http://t.cn/RQfFacE
6. Plan-based models of dialogue
http://t.cn/RQfFC1b
??我是彩蛋?
解鎖新功能:熱門職位推薦!
PaperWeekly小程序升級啦
今日arXiv√猜你喜歡√熱門職位√
找全職找實習都不是問題
?
?解鎖方式?
1. 識別下方二維碼打開小程序
2. 用PaperWeekly社區賬號進行登陸
3. 登陸后即可解鎖所有功能
?職位發布?
請添加小助手微信(pwbot01)進行咨詢
?
長按識別二維碼,使用小程序
*點擊閱讀原文即可注冊
? ? ? ? ???
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的多轮对话之对话管理:Dialog Management的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQuAD文本理解挑战赛十大模型解读
- 下一篇: 2017年度最值得读的AI论文评选 |