談任務(wù)驅(qū)動型人機對話系統(tǒng)

一. 任務(wù)驅(qū)動與非任務(wù)驅(qū)動型對話系統(tǒng)

  • 目標(biāo)驅(qū)動型人機對話系統(tǒng):通過與用戶進(jìn)行多輪基于自然語言的對話來逐步收集與目標(biāo)相關(guān)的信息,輔助用戶成功獲得某種服務(wù)。
  • 非目標(biāo)驅(qū)動型人機對話系統(tǒng):通常只是對用戶輸入進(jìn)行基于自然語言的響應(yīng),而不完成特定信息服務(wù)任務(wù),又稱聊天機器人。

二. 任務(wù)驅(qū)動型對話系統(tǒng)框架

任務(wù)型人機對話系統(tǒng)框架.png

當(dāng)系統(tǒng)輸入為語音時,ASR和TTS模塊存在。

1. ASR:

產(chǎn)生語音識別結(jié)果也就是用戶話語 u.

2. 自然語言理解:

這個模塊的功能是識別輸入話語的領(lǐng)域和意圖,獲得任務(wù)相關(guān)的語義信息,進(jìn)一步可以分解為3個子任務(wù)。

1)模塊拆分
  • 領(lǐng)域識別

判定用戶談?wù)摰氖鞘裁搭I(lǐng)域的事情

  • 意圖識別

識別用戶話語的目的,比如是告知某個信息,還是確認(rèn)某個信息

  • 語義分析(槽填充)

旨在標(biāo)識用戶話語中與目標(biāo)有關(guān)的語義類別,比如預(yù)訂機票時需要的出發(fā)地、目的地、時間等語義類別。

客戶:『訂1 張去北京的飛機票』
聊天機器人:『您想什么時間出發(fā)呢?』
客戶:『1月11號』
聊天機器人:『好的』
============================================================
1、什么是語義信息?
領(lǐng)域是“ 航班信息服務(wù)”;意圖是“ 訂票”,與訂票任務(wù)相關(guān)的語義信息包括作為“ 訂票數(shù)量”的“1 張”、作為“起飛時間”的“1 月11號”,以及作為“ 目的地”的“ 北京”。
訂票數(shù)量、起飛時間和目的地稱為槽,句子中提供的這些槽的具體值稱為槽值。
2、slot-value槽與槽值的定義
槽是多輪對話過程中將初步用戶意圖轉(zhuǎn)化為明確用戶指令所需要補全的信息。一個槽與一件事情的處理中所需要獲取的一種信息相對應(yīng)。
補充說明:多輪對話中的所有的槽位不一定都需要被填充完整;對話內(nèi)容并不是獲取信息的唯一方式,用戶身份以及當(dāng)前場景也包含著大量值得被利用的隱含信息。
3、槽的分類
以訂餐為例, informable slot 是指 food type,price range用來約束數(shù)據(jù)庫中的查詢,requestable slot 是指address,phone,postcode 等一些可以被詢問的值。

2)近年來,NLU模塊的關(guān)注點主要在兩方面:
  • 如何準(zhǔn)確地進(jìn)行領(lǐng)域、意圖和槽值的識別或標(biāo)注;在目前的NLU 中,對于語言的理解還停留在比較淺的層次,在復(fù)雜情況下結(jié)合推理進(jìn)行深入理解的能力還較弱或者基本沒有。

客戶:『訂一張端午節(jié)的票,如果那天預(yù)報有大霧的話就往后推一天?!?/p>

這時簡單地在語言表層標(biāo)注時間槽已經(jīng)不太可能,需要結(jié)合其他信息并通過推理得到正確的槽值。

  • 模型的跨領(lǐng)域適應(yīng)問題,即當(dāng)面對的對話任務(wù)發(fā)生變化時,如何快速準(zhǔn)確地將模型推廣到新的對話領(lǐng)域中。
3 )其他改進(jìn)方向:
  • 為NLU 模塊設(shè)定目標(biāo)的方法。目前的方法是完全由人預(yù)先基于對話任務(wù)來確定語言理解的目標(biāo),再基于這些目標(biāo)來訓(xùn)練模型。這種方法需要預(yù)先對任務(wù)有完整的分析,建立關(guān)于任務(wù)的完整意圖和槽的體系,給人機對話的普及帶來了困難。
  • 填槽的方法。slot的value不僅來自對話,用戶身份以及當(dāng)前場景也包含著大量值得被利用的隱含信息。所以,與此相對的,一個完備的多輪對話體系應(yīng)當(dāng)同時具備從用戶話里以及話外獲取信息的能力。
4)主流方法
  • 基于規(guī)則的方法,大致的思路是定義很多語法規(guī)則,即表達(dá)某種特定意思的具體方式,然后根據(jù)規(guī)則去解析輸入的文本。優(yōu)點:非常靈活,可以定義各種各樣的規(guī)則,而且不依賴訓(xùn)練數(shù)據(jù)。缺點:復(fù)雜的場景下需要很多規(guī)則,而這些規(guī)則幾乎無法窮舉。


    基于規(guī)則的NLU方法.png
  • 基于統(tǒng)計的方法,其中意圖識別可以描述成一個分類問題,輸入是文本特征,輸出是它所屬的意圖分類。傳統(tǒng)的機器學(xué)習(xí)模型,如SVM、Adaboost都可以用來解決該問題。語義分析則可以描述成一個序列標(biāo)注問題,輸入是文本特征,輸出是每個詞或每個字屬于實體的概率。
    傳統(tǒng)的機器學(xué)習(xí)模型,如HMM、CRF都可以用來解決該問題。如果數(shù)據(jù)量夠大,也可以使用基于神經(jīng)網(wǎng)絡(luò)的方法來做意圖識別和實體抽取,通??梢匀〉酶玫男Ч?。
    和基于規(guī)則的NLU相比,基于統(tǒng)計的方法完全靠數(shù)據(jù)驅(qū)動,數(shù)據(jù)越多效果越好,同時模型也更加健壯。缺點是需要訓(xùn)練數(shù)據(jù),尤其是如果使用深度學(xué)習(xí),需要大量的數(shù)據(jù)。

3. 對話管理(Dialog Management):

對話管理(Dialog Management, DM)控制著人機對話的過程,DM 根據(jù)對話歷史信息,決定此刻對用戶的反應(yīng)。最常見的應(yīng)用還是任務(wù)驅(qū)動的多輪對話,用戶帶著明確的目的如訂餐、訂票等,用戶需求比較復(fù)雜,有很多限制條件,可能需要分多輪進(jìn)行陳述,一方面,用戶在對話過程中可以不斷修改或完善自己的需求,另一方面,當(dāng)用戶的陳述的需求不夠具體或明確的時候,機器也可以通過詢問、澄清或確認(rèn)來幫助用戶找到滿意的結(jié)果。

總的來說,對話管理的任務(wù)大致有下面一些:

1)模塊拆分
  • 對話狀態(tài)維護(dialog state tracking, DST)

維護和更新對話的狀態(tài)。對話狀態(tài)是一種機器能夠處理的數(shù)據(jù)表征,包含所有可能會影響到接下來決策的信息,如NLU模塊的輸出、用戶的特征等;

  • 生成系統(tǒng)決策(dialog policy)

基于當(dāng)前的對話狀態(tài),選擇接下來合適的動作。

舉例
用戶:『幫我叫一輛車回家』
此時對話狀態(tài)包括NLU模塊的輸出、用戶的位置、歷史行為等特征。
在這個狀態(tài)下,系統(tǒng)接下來的動作可能有幾種:
1)向用戶詢問起點,如『請問從哪里出發(fā)』;
2)向用戶確認(rèn)起點,如『請問從公司出發(fā)嗎』;
3)直接為用戶叫車,『馬上為你叫車從公司回家』。

  • 多semantic信息的篩選,rank

NLU模塊不能完成業(yè)務(wù)的所有語義理解,如果有多個語義輸入,例如用戶畫像,歷史信息,nlu輸出等,DM需要將他們匯聚。

  • 請求第三方服務(wù)

第三方服務(wù)返回的結(jié)果可能會讓整個對話朝不同的方向發(fā)展(請求成功往下走,請求失敗又是另外一條路),如果請求第三方服務(wù)作為DM的職責(zé)之一,那么會帶來很大便利。

2)對話管理模塊設(shè)計方法

目前主流的方法有基于有限狀態(tài)和對話語法的方法、基于Frame的系統(tǒng)、基于統(tǒng)計的方法、基于神經(jīng)網(wǎng)絡(luò)的方法。

  • 基于有限狀態(tài)和對話語法的方法

這一部分主要講基于狀態(tài)圖的結(jié)構(gòu)(Graph-base d 或Call-flow-bas ed)和基于任務(wù)的結(jié)構(gòu)(Task-base d)

1.基于狀態(tài)圖的結(jié)構(gòu)
有限狀態(tài)圖結(jié)構(gòu).png

實現(xiàn):通過有限狀態(tài)機顯示的定義出對話系統(tǒng)應(yīng)有的狀態(tài)。
DM每次有新的輸入時,對話狀態(tài)都根據(jù)輸入進(jìn)行跳轉(zhuǎn)。跳轉(zhuǎn)到下一個狀態(tài)后,都會有對應(yīng)的動作被執(zhí)行。
優(yōu)點:簡單易用,在對話清晰明確的時候有著很好的應(yīng)用。
缺點:要求設(shè)計者要在設(shè)計時預(yù)計出所有可能的對話狀態(tài)和用戶可能的操作, 即所有狀態(tài)之間的轉(zhuǎn)移條件,實現(xiàn)起來要耗費大量的人力; 難以應(yīng)付沒有預(yù)測到的情況, 如果用戶的反應(yīng)完全超乎設(shè)計師的預(yù)計, 則對話必然不能正常地進(jìn)行。

2.基于任務(wù)的結(jié)構(gòu)

任務(wù)樹.png

實現(xiàn):任務(wù)是指用戶為達(dá)到某種目的而采取的一系列的操作或?qū)υ?, 如“要買兩張《特洛伊》的電影票”就是一個任務(wù)。一般來講, 任務(wù)包括進(jìn)度表( Plan) 和目標(biāo)。目標(biāo)就是用戶想要達(dá)到的目的。對于一個應(yīng)用的領(lǐng)域, 通常采用樹型結(jié)構(gòu)來描述任務(wù)。
優(yōu)點:基于任務(wù)的結(jié)構(gòu)以任務(wù)數(shù)為基礎(chǔ), 采用樹型結(jié)構(gòu)表達(dá)領(lǐng)域內(nèi)的要素關(guān)系, 回答靈活, 是主流的設(shè)計方法。
缺點:受樹型結(jié)構(gòu)的限制。

  • 基于Frame的系統(tǒng)

Frame-based 系統(tǒng)基本思想是填充槽結(jié)構(gòu)(Slo t-filling)。該方法可以在當(dāng)前對話輪中填一個或者多個槽位,也可以覆寫或修正前面對話輪的填充內(nèi)容?;贔rame的對話管理系統(tǒng)還有一些衍生系統(tǒng),如 agenda(Bohus & Rudnicky, 2003), task structuregraphs,和 type hierarchies and blackboards (Rothkrantz et al., 2004) 等。
實現(xiàn):填充槽結(jié)構(gòu)采用一個多維特征向量來表示對話的情況, 并且在對話的過程中不斷地修改向量的值。
優(yōu)點: 對于操作的順序沒有嚴(yán)格的限制, 只關(guān)心當(dāng)前對話的狀態(tài)信息, 根據(jù)現(xiàn)在的狀態(tài)作出反應(yīng), 然后根據(jù)用戶的回答或系統(tǒng)的反應(yīng)修改特征向量。比基于狀態(tài)圖的結(jié)構(gòu)適應(yīng)更多的對話類型。
缺點:①與基于狀態(tài)圖的結(jié)構(gòu)一樣, 也要列出所有的可能狀態(tài), 即所有可能的特征向量。②填充槽的數(shù)目要有一定的限制, 對于多提問目標(biāo)的情況就難以應(yīng)對。

  • 基于統(tǒng)計的方法

從馬爾科夫決策過程(MDP)到部分可觀馬爾科夫決策過程(POMDP),從Q-Learning 算法到深度Q 網(wǎng)絡(luò)(DQN)大大促進(jìn)了這種方法的進(jìn)步。重點關(guān)注POMMDP,這部分在后面也會看一些paper之后詳細(xì)介紹?!就诳拥忍?。。?!?/p>

部分可觀馬爾科夫決策過程(POMDP)

簡單來說,它將對話表示成一個部分可見的馬爾可夫決策過程。所謂部分可見,是因為DM的輸入是存在不確定性的,例如NLU的結(jié)果可能是錯誤的。因此,對話狀態(tài)不再是特定的馬爾可夫鏈中特定的狀態(tài),而是針對所有狀態(tài)的概率分布。在每個狀態(tài)下,系統(tǒng)執(zhí)行某個動作都會有對應(yīng)的回報(reward)。基于此,在每個對話狀態(tài)下,選擇下一步動作的策略即為選擇期望回報最大的那個動作。
優(yōu)點:1)只需定義馬爾可夫決策過程中的狀態(tài)和動作,狀態(tài)間的轉(zhuǎn)移關(guān)系可以通過學(xué)習(xí)得到;2)使用強化學(xué)習(xí)可以在線學(xué)習(xí)出最優(yōu)的動作選擇策略

RL-Based DM 能夠?qū)ο到y(tǒng)理解用戶輸入的不確定性進(jìn)行建模,讓算法來自己學(xué)習(xí)最好的行為序列。首先利用 simulated user 模擬真實用戶產(chǎn)生各種各樣的行為(捕捉了真實用戶行為的豐富性),然后由系統(tǒng)和 simulated user 進(jìn)行交互,根據(jù) reward function 獎勵好的行為,懲罰壞的行為,優(yōu)化行為序列。由于 simulated user 只用在少量的人機互動語料中訓(xùn)練,并沒有大量數(shù)據(jù)的需求,不過 user simulation 也是個很難的任務(wù)就是了。

缺點:仍然需要人工定義狀態(tài),因此在不同的領(lǐng)域下該方法的通用性不強。

  • 基于神經(jīng)網(wǎng)絡(luò)的方法

實現(xiàn):基本思路是直接使用神經(jīng)網(wǎng)絡(luò)去學(xué)習(xí)動作選擇的策略,即將NLU的輸出等其他特征都作為神經(jīng)網(wǎng)絡(luò)的輸入,將動作選擇作為神經(jīng)網(wǎng)絡(luò)的輸出。
優(yōu)點:對話狀態(tài)直接被神經(jīng)網(wǎng)絡(luò)的隱向量所表征,不再需要人工去顯式的定義對話狀態(tài)。
缺點:需要大量的數(shù)據(jù)去訓(xùn)練神經(jīng)網(wǎng)絡(luò),其實際的效果也還有待大規(guī)模應(yīng)用的驗證。目前較少,但更多的還是傳統(tǒng)機器學(xué)習(xí)方法和基于深度學(xué)習(xí)的方法結(jié)合。
更多細(xì)節(jié)參考論文End-to-end LSTM-based dialog control optimized with supervised and reinforcement learning

4. 語言生成:

自然語言生成的作用是組織適當(dāng)?shù)膽?yīng)答語句,將系統(tǒng)的答復(fù)轉(zhuǎn)換成用戶能夠理解的自然語言,通常有 3 種解決方案:基于人工模板、基于知識庫檢索和基于深度學(xué)習(xí)的序列到序列(Sequence to Sequence)生成模型。


語言生成seq2seq今年發(fā)展方向.png

由于對話系統(tǒng)目前還處在起步階段,基于深度學(xué)習(xí)的對話系統(tǒng)大多都是先從問答系統(tǒng)的方法改進(jìn),多數(shù)開放的數(shù)據(jù)集回答都是一個單詞,或者在一個單詞上選擇模板,生成完整的一句話。

5. 語言生成:

生成的語言由語音合成模塊 TTS 朗讀給用戶聽。

三. 實現(xiàn)

端到端的對話系統(tǒng).png

模塊化的對話系統(tǒng)中每個組件單獨訓(xùn)練,各個模塊分別優(yōu)化一個單獨的中間目標(biāo)(如 slot-filling)。有兩個主要缺陷:一個是分?jǐn)?shù)分配問題,最終用戶的反饋很難會傳到上游模塊中。另一個是模塊間依賴度高。每個模塊的輸入都依賴于另一個模塊的輸出,當(dāng)調(diào)整一個模塊到一個新環(huán)境或者用新數(shù)據(jù)進(jìn)一步更新,所有其他模塊都要進(jìn)行相對應(yīng)的調(diào)整以保證全局的優(yōu)化。槽和特征可能也會相對應(yīng)的改變。這種過程需要大量的人工操作。
端到端的對話系統(tǒng) 用一個系統(tǒng)替代了上圖中框起來的四個組件,并使其與結(jié)構(gòu)化的外部數(shù)據(jù)進(jìn)行交互。因為task oriented對話系統(tǒng)一般都要結(jié)合數(shù)據(jù)庫操作,所以下面總結(jié)一些目前實現(xiàn)端到端的對話系統(tǒng)與數(shù)據(jù)庫的銜接,主要有四種方法。通過幾篇論文帶入。

  • 1.把數(shù)據(jù)庫的操作 action 變成 dialog policy 的一部分。然后通過 supervised learning 或者 reinforcement learning 進(jìn)行學(xué)習(xí) 。

參考論文:Towards End-to-End Learning for Dialog State Tracking and
Management using Deep Reinforcement Learning

常見的做法是是把數(shù)據(jù)庫 query 的 template 作為系統(tǒng)可選擇的 action,例如 select place=x,date=y,然后 dialog policy 在必要的時候可以輸出下一個行動是應(yīng)該對于數(shù)據(jù)庫進(jìn)行這樣的搜索。搜索結(jié)果會成為模型的下一輪輸入,以便模型輸出搜索結(jié)果。
優(yōu)點:可以適用于任何數(shù)據(jù)庫或者 API。
缺點:不能很好的 handle 用戶輸入的 uncertainty,因為每次搜索只能搜索一種最有可能的 query。

  • 2.將符號化詢問替換為在知識庫上一個導(dǎo)出的表達(dá)哪些條目用戶較感興趣的“軟”后驗概率,將軟檢索過程與強化學(xué)習(xí)相結(jié)合。

參考論文:End-to-end reinforcement learning ofdialogue agents for information access

假設(shè)系統(tǒng)可以看到整個 database 的每一行,然后通過用戶目前給出條件的概率,來計算出數(shù)據(jù)庫每一行符合用戶條件的概率分布 。
優(yōu)點:① 計算概率分布的過程都是可微分的,從而可以使用梯度下降優(yōu)化系統(tǒng) ;② 用戶輸入里存在的不確定性也得到了解決,可以更加準(zhǔn)確的推測出哪些結(jié)果是用戶可能喜歡的。
缺點:需要能夠 access 整個數(shù)據(jù)庫里的內(nèi)容。對使用第三方 API 的開發(fā)者提出挑戰(zhàn)。另外,當(dāng)數(shù)據(jù)庫很大時,概率分布的計算需要很大的計算量,不易擴展。

  • 3 RNN與特定領(lǐng)域知識相結(jié)合與系統(tǒng)回復(fù)模板相結(jié)合

參考論文:Hybrid code networks: practical and efficient end-to-end dialog
control with supervised and reinforcement learning

這里的回復(fù)模板指的是:
“prezzo is a nice restaurant in the west of town in the moderate price range”
都是來自于
“<name> is a nice restaurant in the <location> of town in the <price> price range”

混合編碼網(wǎng)絡(luò)(HCNs)除了學(xué)習(xí)RNN,也允許開發(fā)者表示領(lǐng)域知識通過軟件和操作模板。RNN之后經(jīng)過密連接層和softmax,輸出向量維度為動作模板的數(shù)量,與Action mask點乘,結(jié)果的概率重新進(jìn)行規(guī)范化,得到下一步的action。之后在“實體輸出”模塊,替換上具體實體值,組織回答句子;控制分支根據(jù)行為類別不同調(diào)用API或者返回文本應(yīng)答。
優(yōu)點:需更少訓(xùn)練數(shù)據(jù),就取得同等甚至更優(yōu)成績。

  • 4.參考鍵-值記憶網(wǎng)絡(luò),通過一個在知識庫條目上可導(dǎo)的基于注意力的鍵-值檢索機制來增強現(xiàn)有循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。

參考論文:Key-Value Retrieval Networks for Task-Oriented Dialogue
通過一種新穎的鍵值對索引機制,使用(subject,relation,object)的表示方式來存儲知識庫的每個條目。

例如:
(event=dinner, time=8pm, date=the13th, party=Ana, agenda=“-”)將被規(guī)范化成4個單獨的三元組形式(dinner,time,8pm)。每個知識庫最多有230個標(biāo)準(zhǔn)化的三元組,類似新戴維森(neo-Davidsonian)或RDF式表達(dá)。

在每次解碼時,取出解碼器隱層狀態(tài),并使用每個規(guī)范化的知識庫條目的鍵來計算一個注意力分值。一個條目的鍵(key)對應(yīng)于主題(meeting)和關(guān)系(time)的詞向量(word embeddings)總和。然后,注意力的分對數(shù)就成為了該知識庫條目的值(value)。在運行時,如果要解碼這個規(guī)范化表示的表征,我們將通過知識庫查詢(lookup)將它轉(zhuǎn)換成知識庫條目的實際值(actual value)。

  • 5.利用 RNN decoder 直接生成數(shù)據(jù)庫的 query 。

參考論文:Learning end-to-end goal-oriented dialog

這種做法利用 sequence-to-sequence model 讀取一個對話記錄,然后利用 decoder 生成出 database 的搜索句子。這種做法任然處于早起實驗階段,因為 RNN 生成的過程不能保證 query 的格式正確。并且任務(wù)驅(qū)動對話需要大量的邏輯推理和語義理解,普通的 RNN 可能不能完全滿足這樣的需求。最近也有大量工作試圖改進(jìn)普通 RN,例如 Memory Network,Attention RNN 等等。盡管這種方法還沒有完全實用化,但是這種方法的確非常有前途,因為可以沒有任何 query 格式上的限制。

參考:
PaperWeekly 第34期 | End-to-End任務(wù)驅(qū)動對話與數(shù)據(jù)庫的銜接
對話管理的一些思考
填槽與多輪對話 | AI產(chǎn)品經(jīng)理需要了解的AI技術(shù)概念
NLP筆記 - 多輪對話之對話管理(Dialog Management)
關(guān)于人機對話系統(tǒng)的思考-王小捷
對話系統(tǒng)原理和實踐
PaperWeekly 第40期 | 對話系統(tǒng)任務(wù)綜述與基于POMDP的對話系統(tǒng)
NLP筆記 - 多輪對話之對話管理(Dialog Management)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容