天天看點

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

使用者模拟器基礎

使用者模拟器産生背景

近幾年來,強化學習在任務導向型對話系統中得到了廣泛的應用,對話系統通常被統計模組化成為一個馬爾科夫決策過程(Markov Decision Process)模型,通過随機優化的方法來學習對話政策。

任務導向型對話系統用于幫助使用者完成某個任務如查電影、找餐館等,它一般由四個子產品組成:自然語言了解子產品(Natural Language Understanding, NLU)、對話狀态跟蹤子產品(Dialog State Tracking, DST)、對話政策子產品(Dialog Policy, DP)和自然語言生成子產品(Natural language Generation, NLG),其中DST和DP合稱為對話管理子產品。

在和使用者的每輪互動過程中,對話系統利用NLU将使用者的語句解析成為機器可了解的語義标簽,并通過DST維護一個内部的對話狀态作為整個對話曆史的緊湊表示,根據此狀态使用DP選擇合适的對話動作,最後通過NLG給出自然語言回複。對話系統通過和使用者進行互動得到的對話資料和使用得分則可用于進行模型的強化學習訓練。

然而在實際中,和真實使用者的互動成本昂貴,資料回流周期慢,不足以支援模型的快速疊代,是以研究者們通常會建構一個使用者模拟器(User Simulator, US)作為對話系統的互動環境來進行閉環訓練。有了使用者模拟器産生任意多的資料,對話系統可以對狀态空間和動作空間進行充分地探索以尋找最優政策。

一個效果良好的使用者模拟器,我們期望它具備以下3個特征:

1.有一個總體的對話目标,能夠生成上下文連貫的使用者動作;

2.有足夠的泛化能力,在語料中未出現的對話情形裡也能生成合理的行為;

3.可以給出定量的回報評分用于指導模型學習優化。

為了實作以上目标,學術界做了大量的研究工作,從最基礎的bigram模型[4],到經典實用的Agenda-based的方法[2],再到最近基于深度學習的使用者模型[9,10],使用者模拟器的效果得到了顯著提升,也為對話模型的訓練提供了有效的方法。

使用者模拟器的基本結構

圖1是一個比較典型的使用者模拟器[1],對話開始時使用者模拟器基于User Goal(使用者目标)發出一個話術:“Are there any action movies to see this weekend?”(這個周末有什麼動作片可以看的嗎?),這句話進到對話系統的自然語言了解子產品和對話管理子產品後,生成一句系統回複:“request_location”(詢問地點),這個系統回複進到使用者模拟器的使用者模型(User Model),通過使用者狀态更新和行為政策選擇,生成使用者對話行為:“inform(location=San Francisco)”(告知地點為舊金山),接下來經過Error Model(可選)和NLG子產品,生成對應的自然語言,比如:“San Francisco, please.”(幫我訂舊金山的)。以此往複,使用者模拟器和對話系統持續多輪互動,直到對話結束。

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

圖1 使用者模拟器(藍色部分)和對話系統(紅色部分)

從上面的過程我們可以看到,典型的使用者模拟器和對話系統的結構比較相似,包含以下4個基本組成部分:

1.使用者目标(User Goal):使用者模拟的第一步就是生成一個使用者對話的目标,對話系統對此是不可知的,但它需要通過多輪對話互動來幫助使用者完成該目标。一般來說,使用者目标的定義和兩種槽位相關: 可告知槽(informable slots)和可問詢槽(requestable slots),前者形如“槽=值”是使用者用于查詢的限制條件,後者則是使用者希望向系統問詢的屬性。

例如:使用者目标是 “inform(type=movie, genre=action, location=San Francisco, date=this weekend),request(price)”表達的是使用者想要找一部本周在San Francisco上映的動作片,找到電影後進一步問詢電影票的價格屬性。

2.使用者模型(User Model):使用者模型對應着對話系統的對話管理子產品,它的任務是根據對話曆史生成目前的使用者動作。使用者動作是預先定義好的語義标簽,例如“inform, request, greet, bye”等等。使用者動作的選擇應當合理且多樣,能夠模拟出真實使用者的行為。使用者模型是使用者模拟器的核心組成部分,在接下來的章節裡我們将會詳細介紹各種具體模型和方法。

3.誤差模型(Error Model):它接在User Model下遊,負責模拟噪聲,對使用者行為進行擾動以模拟真實互動環境下不确定性。簡單的方式有:随機用不正确的意圖替換正确的意圖、随機替換為不正确的槽位、随機替換為不正确的槽值等;複雜的方式有模拟基于ASR或NLU混淆的錯誤。

4.自然語言生成(NLG):如果使用者模拟器需要輸出自然語言回複,就需要NLG模型将使用者動作轉換成自然語言表述。例如使用者動作标簽“inform(type=movie, genre=action, date=this weekend)” 進行NLG子產品後生成自然語句“Are there any action movies to see this weekend?”。

使用者模拟器的實作方法

我們将使用者模拟器的實作方法大緻分成兩類:基于規則的方法和基于模型學習的方法。我們将介紹這些方法中各自具有代表性的論文。

基于規則的方法

基于規則的方法需要專家手動建構,它的優點是可以冷啟動,使用者行為完全可控;缺點是代價大,覆寫度不夠,在對話行為靈活性和多樣性上比較不足,适用于話術簡單清晰的填槽式對話任務。

基于規則的方法中使用最為廣泛的是基于議程(Agenda-based)的方法[2,3],該方法對使用者狀态表示、狀态轉移、Agenda更新、Goal更新進行了精細模組化,邏輯清晰,可落地性強,業界很多工作[1,15]都基于該方法進行擴充和優化。基于議程的方法通過一個棧的結構把對話的議程定下來,對話的過程就變成進棧和出棧的動作,上下文關聯性很強,保證了使用者動作生成的一緻性,一般不會出現異常使用者行為。但是,該方法在對話行為靈活性和多樣性比較欠缺,在實操層面可以通過引入一些随機性提升靈活度。

基于議程的方法

代表論文:The Hidden Agenda User Simulation Model

論文連結:

https://ieeexplore.ieee.org/document/4806280/?arnumber=4806280
對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

首先,作者認為人機對話可以形式化為一系列狀态轉換和對話行為序列。在任意時刻$t$,使用者在狀态$S$,采取動作$a_u$,過渡到中間狀态$S'$,收到對話系統回複的動作$a_m$,然後轉換到下一個狀态$S''$,然後以此往複,循環下去。

$S$→$a_u$→$S'$→$a_m$→$S''$→$⋯$

根據馬爾科夫假設,使用者行為可以分解為三個模型:$P(a_u |S)$用于模組化動作選擇,$P(S'|a_u,S)$用于模組化發出$a_u$狀态轉移到$S'$的機率,$P(S''|a_m,S')$用于模組化接收到$a_m$狀态轉移到$S''$的機率。

使用者狀态$S$被分為2部分表示:Agenda的内容$A$和使用者Goal $G$。

$S=(A,G)$ ,$G=(C,R)$

$G$由限制條件$C$和問詢内容$R$組成。在對話的過程中,$G$能保證使用者行為是一緻的且是任務導向的。

使用者Agenda是一個類似堆棧的結構,它存儲着待執行的使用者對話行為(user dialogue act)。在對話開始時,使用系統資料庫随機生成新的User Goal,然後會将User Goal中所有目标限制轉換為告知行為(inform acts),所有的目标問詢轉換為問詢行為(request acts)填充到使用者Agenda。在Agenda的底部,會添加一個bye act用于結束對話。

随着對話的進行,Agenda和Goal會動态更新,并從Agenda的頂部彈出使用者對話行為以形成本輪使用者動作 $a_u$。在接收到系統回複 $a_m$ 後,根據寫好的規則新的使用者動作會被壓入到Agenda的棧頂,不相關的使用者動作會被删除。當需要考慮動作的優先級時,棧頂的使用者動作也可以臨時被緩存起來先執行優先級高的動作,進而為模拟器提供簡單的使用者記憶模型。圖2 給出了使用者目标和Agenda變化的示例。

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

圖2 表示使用者目标和agenda的狀态變化的示例

使用者動作選擇模型 $P(a_u│S)$= $P(a_u│A,G)$=$δ(a_u,A[N-n+1..N])$,其中$δ$為狄拉克函數,$A[N]$代表棧頂的元素, $A[1]$代表棧底的元素,$A[N-n+1..N]$代表在Agenda棧頂的top-n的使用者動作acts,該模型的直覺了解是如果$a_u$在top-n的acts裡,那麼$P$趨于1,此時$a_u$将會被選中并發出。top-n的n 的選取展現了使用者模拟器的主動性程度,它可以從對話語料中統計得出,也可以根據經驗指定一個小的數值。

狀态更新模型$P(S'│a_u,S)$=$P(A',G'│a_u,A,G)$=$δ(A',A[1..N'])δ(G',G)$,其中$A'$代表選擇$a_u$後的Agenda,$N'$=$N-n$代表$A'$的大小,為了使$P$機率最大,則要求$A'$等于對$A$進行出棧操作後的結果 $A[1..N']$,$G$保持不變。

已知$S$=$(A,G)$,根據機率的鍊式法則和條件獨立性假設,在使用者模拟器接收到$a_m$後,可以将狀态轉移模型$P(S''|a_m,S')$分解成Agenda更新模型和Goal更新模型。

$P(S''|a_m,S')$=$P(A''|a_m,A',G'')P(G'' |a_m,G')$

如果不對$A''$和$G''$做限制,模型可能的狀态轉移空間太大,參數太多而不能直接人工指定,甚至通過大量的訓練資料都不能獲得一個可靠的參數估計。但如果假設$A''$是從$A'$推導出來的,$G''$是從$G'$推導出來的,那麼在每種情況下,僅需要有限個數的原子操作就能描述這個狀态轉移過程。

接下來,我們詳細分析Agenda更新模型。Agenda從$A'$轉移$A''$的過程可以看做一系列入棧操作,将使用者dialogue acts添加到棧的頂部。接下來會進行“清理”工作,比如:删除備援的dialogue acts,null() acts以及Goal中那些已經被填充的request slots關聯的request() acts。為了簡化起見,隻考慮入棧操作,棧底部1到$N'$的元素是保持不變的,那麼Agenda更新模型可以改寫為以下公式:

$P(A''│a_m,A',G'' )$=$P(A'' [1..N'' ]│a_m,A' [1..N' ],G'' )$

<center>=$P(A'' [N'+1..N'' ]│a_m,G'' )$∙$δ(A'' [1..N'],A'[1..N'])$</center>
           

該公式表示$A''$新增$N''-N'$個元素,而棧底元素不變。作者假設在$a_m$中的每一個系統act隻會觸發一個入棧操作,令$N''$=$N'$+$M$,可得:

$P(A'' [N'+1..N'' ]│a_m,G'' )$=$P(A'' [N'+1..N'+M]│a_m [1..M],G'' )$=$∏P(A'' [N'+i]│a_m [i],G'' )$

上式表示的是每一個系統act會觸發一個入棧操作,同時該操作還和Goal有關。此時,模型已經足夠簡單,都可以通過編寫人工規則來實作當接收到系統act後的邏輯,比如:當$a_m [i]$中的元素$x=y$和$G''$裡的限制條件沖突時,可以将以下任意一個使用者act壓入棧$A''$:negate(),inform(x=z),deny(x=y,x=z)等。

Goal更新模型$P(G'' |a_m,G')$描述的是當給定$a_m$的情形下,限制條件$C'$和問詢内容$R'$是如何變化的。假定當給定$C''$的情形下,$R''$是條件獨立于$C'$的,那麼可以得到:

$P(G'' |a_m,G')=P(R'' |a_m,R',C'')P(C'' |a_m,R',C')$

為了控制$R'$轉移到$R''$的空間大小,可以假設問詢的槽位是互相獨立的,并且每個槽隻能利用$a_m$的資訊來更新,或者保持不變。利用$R[k]$表示第$k$個可問詢槽,$M(a_m,C'')$表示$a_m$中的槽資訊與Goal限制條件的比對情況。

$P(R''│a_m,R',C'' )$=$∏P(R'' [k]|a_m,R' [k],M(a_m,C''))$

為了簡化$P(C'' |a_m,R',C')$,作者假設$C''$是通過添加新限制條件,改變限制條件的槽值或者什麼都不改變得到的。轉移過程也不用考慮所有的情形,可以簡化為隻考慮$a_m$的一些二值辨別,比如:“$a_m$是否在請求限制條件的槽?”,“$a_m$是否在告知沒有找到滿足限制條件的元素?”等。這樣模型可以簡化到可以通過人工編寫規則實作,落地性很強。

基于模型學習的方法

通過人工編寫規則盡管落地性強,精準率高,但是成本很高,是以尋求資料驅動的模型化方法是一個很好的途徑。利用對話語料進行端到端訓練的效果優于基于議程的規則方法,它的優點是資料驅動,節省人力;但缺點是複雜對話模組化困難,對資料數量要求很高,是以對于一些對話語料稀缺的領域效果很差。

論文[4]最早提出了bigram 模型,通過給定系統動作$a_s$預測使用者動作$a_u$,$p$=$P(a_u |a_s)$, 進而對使用者模型進行機率模組化。盡管Bigram模型簡單可用,但是由于沒有對對話曆史和使用者目标進行有效模組化,模拟出來使用者行為通常過于随機不夠真實。随後提出的 Levin model[5],Schefller model [6], Pietquin Model [7] 均在 bigram 模型上進行了一定改進,使得使用者動作的生成有一定的限制。在使用者模型的序列模組化上,有論文[16]利用隐馬爾科夫模型來推斷每一輪的使用者動作。論文[8] 提出了基于機率圖的使用者模型,如圖 3 所示,g 是使用者目标,$s_t$、$u_t$、$h_t$、$o_t$ 分别是系統動作、使用者隐動作、對話曆史和使用者觀測動作,通過 EM 算法優化模型參數。

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

圖3 使用者模型的機率圖模組化

以上都是比較早期的統計模組化方法,本文不再詳細介紹,本文主要想從學習範式的角度對近幾年湧現的一些優秀論文進行介紹,包括:端到端有監督學習[9,10]、聯合政策優化[13]、逆強化學習[11]和協同過濾方法[12]。

端到端有監督學習

代表論文1:A Sequence-to-Sequence Model for User Simulation in Spoken Dialogue Systems

https://arxiv.org/abs/1607.00070
對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

之前的基于機率模組化的方法往往存在着幾點不足:

1.無法考慮對話曆史;

2.需要刻闆的結構來保證使用者行為的一緻性;

3.嚴重依賴于特定領域;

4.在一次對話期間無法輸出多個使用者意圖。

使用者模拟器的一個重要特征是它鼓勵整個對話中的連貫行為,而由于之前的機率模型從易于實作的角度,基本不考慮很長的對話曆史和單句多意圖的情況,導緻了整個對話效率比較低下。基于此作者提出了一種Sequence-to-sequence的使用者模拟器模型(如圖4 所示),它将對話上下文序列$(c_1,c_2,…,c_k)$作為輸入,然後輸出使用者動作序列$(a_1,a_2,…,a_l)$。

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

圖 4 使用者模拟器端到端模型

在每次對話開始之前,統一的建構出一個Goal $G$=$(C,R)$,對于餐館查詢任務而言,限制條件通常指的是菜品口味、菜品價格以及餐館所在方位,問詢内容為以下槽位:餐館名稱、餐館位址、餐館電話等。

在$t$輪對話,一個上下文$c_t$包含以下4部分:1.上一輪的系統動作$a_{(m,t)}$;2.上一輪系統回複的資訊與User Goal不一緻的部分$inconsist_t$;3.限制條件的狀态$const_t$(告知與否);4.問詢内容的狀态$req_t$(被告知與否)。在每次對話的過程中,會根據dialogue acts的個數以及Goal的狀态,對以上4部分進行one-hot編碼,進而得到對話上下文的向量化表示。如下表所示:

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

在t時刻,将上下文序列$c_t$輸入到一個encoder LSTM網絡,得到一個向量$v_t$作為對話曆史的内部表示。其中,$c_t$=$a_{(m,t)}⨀inconsist_t⨀const_t⨀req_t$,$⨀$代表拼接操作。

然後再将向量$v_t$輸入到decoder LSTM網絡,輸出dialogue acts序列,比如(inform, request)。接下來需要通過啟發式規則将dialogue acts映射為帶槽的使用者行為,比如inform(food=Chinese), request(price_range)。

作者也提到可以訓練一個模型,讓它直接輸出最終的行為,比如request_area,inform_pricerange。這種方式的優點是不需要寫啟發式規則,可以做到更細粒度的模組化,這也是作者推薦的方式。最後實驗結果證明效果優于基于議程的方法。

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

代表論文2:Neural User Simulation for Corpus-based Policy Optimisation for Spoken Dialogue Systems

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

上一篇論文中的一些端到端系統雖然對整個對話曆史都進行了跟蹤,并且使用者的行為是從資料中學習得到的,但是依舊存在兩個問題:1)沒有對使用者的目标改變(goal change)進行模組化;2)隻在語義層面進行使用者模拟,需要耗費人力标注出每輪使用者語句的語義标簽進行模型訓練,而不是直接利用自然語句進行訓練。

是以該論文提出了基于RNN 的 Neural User Simulator (NUS)模型。首先 NUS 通過使用者目标生成器,對原對話資料中的對話狀态标簽進行預處理,得到一個完整對話中每一輪的具體使用者目标,這樣就相當于對使用者目标改變進行了某種程度上的模組化,如下表所示:

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

某個對話一共有四輪,其中 第 2、3 輪之間出現了對 food 這個槽位的 goal change, 是以右邊處理之後得到了使用者目标也出現了變化。這樣的使用者目标不再是一成不變,而是充分根據對話資料給出了動态的使用者目标,更加貼近實際。

有了每輪的使用者目标,NUS 通過 RNN 來生成使用者語句, 如圖 5 所示:

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

圖 5 神經使用者模拟器的端到端模型

$v_t$ 是每一輪提取出來的特征,它一共包含四個向量 $v_t$=$[a_t , r_t , i_t , c_t]$: 其中 $a_t$ 是系統動作向量,包含 $a_t$=$[a_t^1, a_t^2]$,$a_t^1$ 是一個長度等于所有可能的系統動作的二進制向量,$a_t^2$ 是一個長度為可告知槽(informable slots) 總個數 4 倍的二進制向量,用來表示本輪系統動作是否出現了 request、select、inform 和 expl-conf 這四個以可告知槽為參數的動作。

例如出現了request(area) 則将 $a_t^2$ 中對應位置處元素置 1; $r_t$ 稱作問詢向量,是一個長度和可問詢槽(requestable slots)總個數相等的二進制向量,用來标記哪些使用者目标中需要問詢的可問詢槽還沒有被使用者向系統提問; $i_t$ 稱作不一緻向量(inconsistency vector), 長度等于可告知槽總個數,一旦系統動作中對某個槽出現了和本輪使用者目标不一緻的情況,對應的位置處元素置 1。$c_t$ 是使用者目标限制向量,長度等于可告知槽總個數,用來表示本輪使用者目标中出現了哪些可告知槽。

NUS 生成的回複是去詞彙化的自然語句,經過後處理則得到了使用者的自然語言回複。 論文為了論證 NUS 效果優異 Agend-based User Simulator (ABUS), 提出了一個交叉模型評估的方法, 即在一個 User Simulator 上訓練一個 agent, 在其他 User Simulator 上測試該 agent,如果 agent 效果依舊很好,說明用于訓練的User Simulator 是更加貼近真實使用者。最終實驗結果證明,在 NUS 上訓練得到了的agent, 在 ABUS 和真實使用者上測試得到的成功率均優于 ABUS, 而在 ABUS 上訓練得到的 agent 效果隻在 ABUS 上測試好。

聯合優化政策

代表論文:ITERATIVE POLICY LEARNING IN END-TO-END TRAINABLE TASK-ORIENTED NEURAL DIALOG MODELS

https://arxiv.org/abs/1709.06136v1
對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

使用者模型和對話管理模型功能十分接近,是以對使用者模型也采用強化學習的架構,将使用者模拟器和對話系統聯合優化是一個可行的方向。論文在對使用者模拟器和對話系統分别采用了RNN進行端到端的模組化并使用同一個回報函數優化,兩者交替訓練共同最大化累計回報。

論文使用的對話系統是一個端到端的LSTM模型,如圖6所示:

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

圖6 對話系統網絡結構

對話系統的狀态由LSTM的隐層節點編碼,每一輪都會進行更新。在第 $k$ 輪對話,給定上一輪的系統語句 $o_{(k-1)}^A$,使用者語句 $o_{(k-1)}^U$,資料庫查詢結果 $o_k^{KB}$ 作為輸入,LSTM 模型更新上一輪的對話狀态 $s_{(k-1)}^A$ 為 $s_k^A$。新的對話狀态 $s_k^A$ 通過不同的前饋神經網絡可以直接預測出本輪各個槽的跟蹤分布,系統應采取的對話動作 $a_k^A$ 和一個one-hot編碼的資料庫指針 $e_k^A$。 NLG部分作者采用模闆的方法生成。

對應的使用者模拟器的結構如圖7所示。它也是采用了端到端的LSTM模型,輸入換作了使用者目标編碼 $g_k^U$,上一輪使用者語句 $o_{(k-1)}^U$ 和目前輪系統語句 $o_k^A$,模型每輪更新使用者狀态 $s_{(k-1)}^U$ 為 $s_k^U$。新的使用者狀态 $s_k^U$ 也通過不同的前饋神經網絡得到本輪使用者應采取的動作和槽值參數。NLG部分采用模闆的方法直接生成。

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

圖7 使用者模拟器網絡結構

作者對使用者模拟器和對話系統進行聯合政策優化,使用了政策梯度(policy gradient)算法,兩者各自的狀态為 $s_k^A$ 和 $s_k^U$,動作為 $a_k^A$ 和 $a_k^U$。回報函數采用:

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

$g_k^U$ 是使用者目标,$g_k^A$ 是對話系統對使用者目标的估計,$D(·)$ 是一個得分函數。根據相鄰輪得分函數之差可以得到單輪回報函數$r_k$。使用者模拟器和對話系統交替優化,共同最大化累計回報函數$R_k$。

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

為了降低REINFORCE 政策梯度優化的方差,論文采用了 Advantage Actor-Critic (A2C) 算法,并使用 ∈-softmax 進行政策探索,在 DSTC2 資料集上進行了初步實驗,結果如下:

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

逆強化學習

代表論文:User Simulation in Dialogue Systems using Inverse Reinforcement Learning

https://core.ac.uk/download/pdf/52801075.pdf
對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

在馬爾科夫決策過程 (MDP) 的架構下, 強化學習在是回報函數(reward function)給定下,找出最優政策以最大化累計回報,而逆強化學習 (Inverse reinforcement learning, IRL) 就是通過給出最優政策估計出回報函數。

通常最優政策會通過專家行為近似得到,例如請經驗豐富的專家充當使用者直接給出合理的回複。需要注意的是模仿學習(imitation learning)和 IRL 不同,模仿學習是直接通過專家行為的資料優化政策而不估計回報函數。

目前很多基于強化學習的對話管理子產品中,回報函數多以是否成功和總輪數給出,不夠多樣真實,IRL 方法對于優化回報函數也有很大的潛力,值得研究。

論文給出了 UserMDP,對使用者模拟器也進行 MDP 模組化,利用 IRL 估計出回報函數,進而為User simulator 和 Agent 交替使用強化學習優化提供有效途徑。

論文假設回報函數是狀态動作特征基函數的線性拟合:

$R_θ (s,a)$=$θ^T ϕ(s,a)$,$ϕ(s,a)∈[0,1]^k$

Q function 則可以表示成:

$Q^π (s,a)$=$Eleft[∑_{(i=0)}^∞γ^i θ^T ϕ(s,a)|s_0=s,a_o=aright]=θ^T μ^π (s,a)$

$μ^π (s,a)$ 被稱作特征期望 (feature expectation), 實際中通過采樣統計得到,設采樣了m 個episode 序列樣本,第 $i$個序列的長度記為 $H_i$:

$μ^π (s,a)$=$frac{1}{m} ∑_{(i=0)}^m∑_{(t=0)}^{(H_i)}{γ^t ϕ(s_t^i,a_t^i)}$

具體的IRL算法如下:

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

首先通過對話語料收集出真實的使用者對話政策的特征期望 $μ_{expert}$ , 并且初始化使用者模拟器的對話政策 $π_{predict}$,通過采樣得到模拟使用者的特征期望 $μ_{predict}$,$π_{predict}$添加到對話政策集合 $Π$ 中; 然後經過多次疊代,每次根據估計出的回報函數進一步求解出新的最優對話政策$π_{predict}$并添加到政策集合 $Π$ 中。算法最終可以合理估計出回報函數的,該回報函數和專家政策 $π_{expert}$ 相容。

論文中實驗結果表明,通過對 IRL找出來的政策集合 $Π$ 進行權重随機采樣得到的使用者對話政策相比于固定的使用者政策(專家行為)有更短的對話輪數和更高的reward 值。說明了 IRL 方法在估計出回報函數的同時也能得到更加多樣真實的政策,這在某些場景下将會非常有用。

協同過濾方法

代表論文:Collaboration-based User Simulation for Goal-oriented Dialog Systems

http://www.alborz-geramifard.com/workshops/nips17-Conversational-AI/Papers/17nipsw-cai-collaboration-based-simulator.pdf
對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

在有高品質語料庫的情況下,我們可以考慮直接根據對話上下文,從語料庫中推薦出最恰當的使用者語句作為使用者模拟器的回複。Amazon 的 論文 就是基于這樣的想法設計了基于協同過濾算法的使用者模拟器。首先,論文論證了在客服領域,對話系統的語句表達相比于使用者的表達通常比較規整單一,是以可以對所有的使用者語句進行粗略的标注,如圖 8 所示:

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

圖 8 (a)每個對話被轉換成語義标簽序列 (b)正在進行的對話和語料庫對話的比對示意圖,紅橙色表示系統标簽,綠色表示使用者語句。

系統語句被賦予了 salution、apology 等等語義标簽,這樣語料庫中的對話都被抽象成了一個個語義标簽序列,每次進行使用者語句推薦時,通過計算正在進行的對話所對應的語義标簽序列和語料庫中每個對話對應的語義标簽序列的編輯距離進行粗篩,得到本輪使用者語句回複的候選集,再對候選集中各個使用者語句所在對話的上一輪系統語句的tf-idf 特征排序進行re-rank, 進而選擇最佳使用者語句回複。

具體的算法如下:

對話系統之使用者模拟器最新進展使用者模拟器基礎使用者模拟器的實作方法使用者模拟器的評價方式使用者模拟器面臨的挑戰總結參考文獻

論文實驗結果顯示,由協同過濾的方法所給出的使用者語句在衆包平台上評估得到的可行率為84.7%。

使用者模拟器的評價方式

論文[14]提出,一個好的使用者模拟器的評價方式需要滿足以下幾點要求:

1.能夠衡量生成的對話動作的一緻性

2.評價方式和具體的任務無關

3.可以從目标資訊中自動化地計算出一個标量值,而無需人工幹預

通常使用者模拟器的評價名額可以分為 單輪級别度量 (turn-level metrics) 和 對話級别度量 (dialog-level metrics)。

單輪級别度量主要針對使用者動作的語義标簽,最常見度量是精确率,召回率和F1得分,對于每一輪可以計算:

1.精确率:Precision=100%×預測正确的動作數/使用者模型生成的動作數

2.召回率:Recall=100%×預測正确的動作數/資料中出現的動作數

3.F1 =2×(Precision×Recall)/(Precision+Recall)

但是以上的度量不能評估使用者模型泛化能力,例如某個使用者動作是合理的但因為在對話資料中并未出現,如果預測了就會導緻得分低。是以我們還可以将使用者動作的預測機率分布 $P$ 和真實機率分布 $Q$ 之間的$KL$距離作為度量,從機率分布上評估使用者預測模型的合理性。

$D_{KL} (P||Q)=∑_{(i=1)}^M p_i log⁡ frac{p_i}{q_i} $

類似地,也可以用過計算對數似然值或者混淆度(perplexity)來評估。

對話級别的度量最常用的是任務完成率和平均對話輪數。将使用者模型和對話系統進行真實互動,完成訓練後的對話系統所能達到的任務完成率(通過記錄對話系統是否完成使用者目标得到)和平均每個對話的輪數可以作為評價與使用者模型整體效果的有效名額。

使用者模拟器面臨的挑戰

1.對話行為一緻性(Coherence):對話行為要保證前後連貫,符合語境,避免出現不符合邏輯的對話行為。如何綜合考慮對話上下文和 User Goal 等因素,保證使用者行為序列在多輪互動過程中的一緻性是一個有挑戰的課題。

2.對話行為多樣性(Diversity):模拟使用者群的行為特性,需要模組化這個群體的行為分布。例如某使用者群是健談的還是寡言的,是猶豫的還是果斷的,各部分占比多少,這裡引入使用者群體畫像特征,使得使用者模拟器的行為更加豐富多樣,貼近目标使用者群體。這個方向學術界有一些研究進展,值得繼續深入研究。

3.對話行為的泛化性(Generalization):目前來看,無論是基于規則方法還是基于模型學習的使用者模拟器,在遇到語料中未曾出現的對話上下文時,表現出的泛化能力依舊比較有限。對話行為的泛化性直接展現了使用者模拟器是否表現得如同真實使用者一樣處理更多未見的複雜的對話場景。這個方向有待學界更深入的探索。

總結

使用者模拟器是對話系統形成閉環訓練的重要組成部分,它和對話系統結構類似,但最大的差別在于增加了使用者目标的模組化。好的使用者模拟器不僅能夠生成連貫的動作,而且還能夠展現多樣性和泛化能力。

本綜述詳細地介紹了目前學界的常用模型和方法。由于學界一般關注的對話任務是訂餐館、訂電影票、訂飛機票這類簡單的填槽(slot-filling)任務,對話的狀态和動作空間有限,不需要太複雜的模型和大規模的語料就能獲得比較好的效果,是以在資料充分的情況下,基于模型學習的方法在效果上普遍優于基于規則的方法。

而在工業界真實的場景裡,除了上面的簡單任務,占比更多的是“查話費”、“開發票”、“挂失信用卡”這類中等複雜度的場景,它的特點是機器人有外部 API 調用、基于 API 傳回結果的分支判斷、異常兜底邏輯、多個子意圖的串聯、多個填槽過程等,對話的狀态和動作空間迅速擴大,需要有足量的訓練語料才能保證使用者模拟器的覆寫率。

是以在實際生産實踐中,我們需要劃分好場景,重新制定更加貼近業務的使用者動作标簽,統計出真實的使用者目标,再選擇最合适自身場景的模型來構模組化拟器。

插播一條招聘資訊:

小蜜機器人團隊目前正在招聘NLP/人機對話等方向的算法專家(P7及以上),我們期待優秀的人才加入,和我們一起打造智能對話機器人,重塑未來人機互動方式。感興趣的釘釘聯系:蒽竹。

參考文獻

[1] Li X, Chen Y N, Li L, et al. End-to-end task-completion neural dialogue systems[J]. arXiv preprint arXiv:1703.01008, 2017.

[2] Schatzmann J, Young S. The hidden agenda user simulation model[J]. IEEE transactions on audio, speech, and language processing, 2009, 17(4): 733-747.

[3] Schatzmann J, Thomson B, Weilhammer K, et al. Agenda-based user simulation for bootstrapping a POMDP dialogue system[C]//Human Language Technologies 2007: The Conference of the North American Chapter of the Association for Computational Linguistics; Companion Volume, Short Papers. Association for Computational Linguistics, 2007: 149-152.

[4]W. Eckert, E. Levin, and R. Pieraccini. 1997. User modelling for spoken dialogue system evaluation. In Proc. of ASRU ’97, pages 80–87.

[5]E. Levin, R. Pieraccini, and W. Eckert, “A stochastic model of humanmachine interaction for learning dialog strategies,” IEEE Trans. Speech Audio Process., vol. 8, no. 1, pp. 11–23, Jan. 2000.

[6]K. Scheffler and S. J. Young. 2001. Corpus-based dialogue simulation for automatic strategy learning and evaluation. In Proc. NAACL Workshop on Adaptation in Dialogue Systems, pages 64–70.

[7]O. Pietquin. 2004. A Framework for Unsupervised Learning of Dialogue Strategies. Ph.D. thesis, Faculte Polytechnique de Mons.

[8] Lee S, Eskenazi M. An unsupervised approach to user simulation: toward self-improving dialog systems[C]//Proceedings of the 13th Annual Meeting of the Special Interest Group on Discourse and Dialogue. Association for Computational Linguistics, 2012: 50-59.

[9] Layla El Asri, Jing He, and Kaheer Suleman. 2016. A sequence-to-sequence model for user simulation in spoken dialogue systems. Proceedings of the 17th Annual Conference of the International Speech Communication Association, pages 1151–1155

[10] Kreyssig F, Casanueva I, Budzianowski P, et al. Neural user simulation for corpus-based policy optimisation for spoken dialogue systems[J]. arXiv preprint arXiv:1805.06966, 2018.

[11] Chandramohan S, Geist M, Lefevre F, et al. User simulation in dialogue systems using inverse reinforcement learning[C]//Interspeech 2011. 2011: 1025-1028.

[12] Devin Didericksen,Oleg Rokhlenko, Kevin Small, Li Zhou, Jared Kramer. Collaboration-based User Simulation for Goal-oriented Dialog Systems. NIPS 2017

[13] Liu B, Lane I. Iterative policy learning in end-to-end trainable task-oriented neural dialog models[C]//2017 IEEE Automatic Speech Recognition and Understanding Workshop (ASRU). IEEE, 2017: 482-489.

[14] Pietquin O, Hastie H. A survey on metrics for the evaluation of user simulations[J]. The knowledge engineering review, 2013, 28(1): 59-73.

[15] Shah P, Hakkani-Tür D, Tür G, et al. Building a conversational agent overnight with dialogue self-play[J]. arXiv preprint arXiv:1801.04871, 2018.

[16] H. Cuayahuitl, S. Renals, O. Lemon, and H. Shimodaira, “Humancomputer dialogue simulation using hidden Markov models,” in Proc. ASRU, San Juan, Puerto Rico, 2005a_u