趙崟江,李艷玲,林 民
(內蒙古師范大學 計算機科學技術學院,內蒙古 呼和浩特 010022)
任務型對話系統(tǒng)是對話系統(tǒng)領域的重要分支,主要包括自然語言理解(natural language understanding,NLU)、對話管理(dialogue management,DM)和自然語言生成(nature language generator,NLG)3個模塊,旨在幫助用戶完成某一特定任務,如航班預訂、票務查詢等。其中,對話管理模塊是對話系統(tǒng)的核心,負責記錄交互過程中的狀態(tài)信息變化以及選擇恰當?shù)膭幼魅?zhí)行,其設計的好壞直接影響了對話系統(tǒng)的性能和用戶的滿意程度,具有重大的研究意義和應用價值。
在目前的對話策略研究方法中,大部分學者都采用強化學習的方式建模對話管理,這種馬爾科夫決策過程契合多輪對話的物理結構,較好解決了對話問題。但是當使用策略梯度方法尋求對話策略時,它存在模型難收斂的問題,很難找到成功的對話策略。除此之外,在對話領域中大部分學者使用規(guī)則用戶模擬器作為環(huán)境模型來與代理交互,規(guī)則用戶模擬器由于人為設計規(guī)則,與真實用戶存在很大差距,在一定程度上也會對代理訓練產生負面影響,因此降低規(guī)則用戶模擬的負面作用是非常有必要的。
本文從強化學習的角度出發(fā),提出并使用結合規(guī)劃的離散DDPG優(yōu)化算法在代理和環(huán)境兩個方面進行改進,旨在解決策略梯度方法模型難收斂問題以及降低規(guī)則用戶模型的負面作用。在代理方面,本文針對原有的DDPG算法只適合處理連續(xù)空間任務的這一缺陷提出了一種改進算法,使其能夠處理離散空間的對話任務。在環(huán)境方面,本文借鑒了DDQ模型思想并將Dyna-Q框架[1]結合到代理中,使它與改進的DDPG算法結合起來,從策略梯度的角度提升代理的訓練效果。實驗結果表明,本文所提出的方法能夠幫助代理更快找到成功的對話策略,取得了較好的實驗效果。
目前,學者們通常把任務型對話系統(tǒng)定義為強化學習問題[2,3],通過代理與環(huán)境交互進而學到較好的對話策略。在基于強化學習的任務型對話系統(tǒng)中,對話管理通常作為代理選擇動作并作用于環(huán)境,用戶模擬器作為環(huán)境負責對代理進行反饋,如圖1所示。
圖1 強化學習模型
在代理方面,學者們使用不同的強化學習方法構建對話策略。大體上,這些方法主要分為兩大類:①基于值函數(shù)的強化學習方法[4,5];②基于策略梯度和基于值函數(shù)相結合的強化學習方法[6,7]。在基于值函數(shù)的強化學習方法中,它通過優(yōu)化Q值選擇動作,因此代理在選擇每一步動作之前都需要計算相應的Q值,比較適合離散空間的任務。Li等提供了一個公共可用的用戶模擬器框架和代理交互,讓代理從樣本中學習策略,其中在預訂電影票的對話任務中,基于DQN(deep Q-network)代理的成功率遠高于基于規(guī)則代理的成功率,說明了基于值函數(shù)的強化學習方法在處理離散任務上具有良好的效果[4]。Lipton等改進了DQN并提出BBQN(Bayes-by-backprop Q-network)對話管理模型,它通過使用湯普森采樣(Thompson sampling)在狀態(tài)空間中探索,使探索效率明顯提升[5]?;诓呗蕴荻群突谥岛瘮?shù)相結合的強化學習方法使用策略梯度方式建模對話管理,即把對話策略表達成一種參數(shù)模型的形式,通過直接訓練參數(shù)進而找到較好的對話策略。如Peng等提出的對抗學習A2C(adversarial advantage actor-critic)模型成功結合了策略梯度和價值函數(shù),然后通過對抗學習鑒別器的引導,學習到較好的對話策略[6]。雖然這種方法能夠處理狀態(tài)-動作空間很大的情況,但是與基于值函數(shù)的強化學習方法相比也存在收斂速度慢的問題。
在環(huán)境方面,使用真實用戶和代理交互會產生很大的實際成本。學者們提出使用真實用戶對話數(shù)據(jù)集構建用戶模擬器,讓用戶模擬器替代真實用戶以達到降低成本的目的[8,9]。目前,對話領域大多都采用了這種方法[10-12]。理論上,用戶模擬器不會產生任何實際成本,但是用戶模擬器和真實用戶之間存在著很大的差距,在一定程度上也會影響代理的訓練效果。Dhingra等已經對此做了很好的驗證[13]。不僅如此,到目前為止也沒有統(tǒng)一規(guī)范的標準來評價用戶模擬器的優(yōu)劣。后來,學者們在環(huán)境方面也展開了研究,如Peng等提出了一種DDQ(deep Dyna-Q)模型,該模型是在環(huán)境一方引入一個世界模型來模擬用戶模擬器的響應進而生成模擬經驗,在訓練過程中同時使用兩種經驗學習,避免了代理對用戶模擬器的高度依賴,并且取得了較好的實驗效果[14]。Su等改進了DDQ模型并提出了D3Q(discriminative deep Dyna-Q)對話管理模型,它在DDQ模型基礎上引入了基于RNN的鑒別器。該鑒別器能夠區(qū)分模擬經驗和真實用戶經驗,從而控制訓練數(shù)據(jù)的質量,減少了DDQ對模擬經驗質量的高度依賴。實驗結果表明,D3Q對話管理模型相較于DDQ對話管理模型擁有更好的魯棒性和泛化性[15]。
本文中結合規(guī)劃的DDPG代理由5個模塊組成,如圖2所示:①一個基于LSTM(long short-term memory)的NLU模塊用于識別用戶意圖和關鍵的語義槽[16];②對話狀態(tài)跟蹤:根據(jù)NLU模塊識別的結果生成對話狀態(tài)表示[17];③對話策略選擇:根據(jù)對話狀態(tài)選擇一個動作去執(zhí)行;④NLG模塊:將對話行為轉換為自然語言并反饋給用戶[18];⑤世界模型:模擬用戶模擬器生成模擬的用戶行為和獎勵。
圖2 代理訓練過程模型
用戶模擬器在訓練過程中主要有兩個重要作用,如圖3所示:①它可以生成真實經驗直接訓練代理。②它生成的真實經驗也可以用來改善世界模型。前者被稱為直接強化學習,后者采用監(jiān)督學習訓練,使世界模型的表現(xiàn)更貼近真實用戶,被稱為世界模型學習。世界模型的作用是模擬用戶模擬器的提問方式生成模擬經驗,用于后續(xù)代理訓練。
圖3 結合規(guī)劃的DDPG模型
本文使用預先收集的對話數(shù)據(jù)集初始化對話策略和世界模型,然后開始進行代理訓練。代理的訓練包括3個過程:①直接強化學習:代理與用戶模擬器交互并使用真實經驗改進對話策略;②世界模型學習:使用真實經驗更新世界模型;③規(guī)劃:代理使用模擬經驗改進對話策略。算法1實現(xiàn)了此迭代過程。
算法1:迭代訓練算法
(1)初始化actor-online、critic-online的神經網(wǎng)絡參數(shù):θQ和θμ;
(2)初始化actor-target、critic-target神經網(wǎng)絡參數(shù):θQ′←θQ,θμ′←θμ;
(3)初始化世界模型M(s,a|θM)的參數(shù):θM;
(4)采用熱啟動方式對actor-online、critic-online網(wǎng)絡以及世界模型M初始化;
(5)初始化真實經驗回放池Du,模擬經驗回放池Ds設為空;
(6) for each episode:
直接強化學習開始
(7) 使用規(guī)則用戶模擬器開始一個用戶動作aμ,并且生成一個對話狀態(tài)s;
(8) whiles非終止狀態(tài) do:
(9) actor-online網(wǎng)絡按照確定性策略μ(s|θμ)選擇動作a執(zhí)行;
(10) 規(guī)則用戶模擬器根據(jù)動作a給出下一個用戶動作aμ′,并給出反饋獎勵r;
(11) 根據(jù)aμ′更新下一個對話狀態(tài)s’;
(12) 保存(s,a,r,aμ,s′)到真實經驗回放池Du中;
(13)s’=s;
(14)end while;
(16)使用式(1)和式(2)計算critic-online的損失函數(shù):
(17)根據(jù)損失函數(shù)值采用Adam optimizer 更新critic-online的θQ;
(18)使用式(6)計算actor-online網(wǎng)絡的損失函數(shù);
(19)采用Adam optimizer更新actor-online網(wǎng)絡θμ;
(20)使用式(7)更新actor-target、critic-target網(wǎng)絡參數(shù):
直接強化學習結束,開始訓練世界模型
(21)從Du中隨機抽取小批量樣本采用監(jiān)督學習方式訓練M(s,a|θM);
(22)使用SGD更新θM;
世界模型學習結束,規(guī)劃開始
(23)for k=1:K do:
(24) t=FLASE;
(25) 世界模型隨機生成一個用戶目標G;
(26)從G中采樣一個用戶動作aμ,并且生成一個對話狀態(tài)s;
(27) while t 非FLASE do:
(28) actor-online網(wǎng)絡按照確定性策略a=μ(s|θμ)選擇動作a執(zhí)行;
(29) 輸入(s,a)到世界模型生成aμ,r和t;
(30) 根據(jù)aμ更新對話狀態(tài)到s’;
(31) 保存(s,a,r,s′)到模擬經驗回放池Ds;
(32)s=s’;
(33) end while
(34) 從模擬經驗池Ds中隨機抽取小批量樣本(s,a,r,s′);
(35) 轉到算法的(16)-(20)行,執(zhí)行DDPG網(wǎng)絡參數(shù)更新;
(36)end for;
規(guī)劃結束
(37)end for;
直接強化學習是代理直接使用用戶模擬器生成的真實經驗改進對話策略(見算法1中的第(7)行-第(20)行)。本文將任務型對話過程視為馬爾科夫決策過程,代理和用戶模擬器在多次的交互中選擇一系列動作以實現(xiàn)用戶目標。本文使用改進的DDPG算法,在每一次交互中,代理觀察用戶模擬器給出的對話狀態(tài)s,根據(jù)確定性策略μ(s|θμ)選擇動作a,其中μ是由參數(shù)為θμ的多層感知機(multi-layer perceptron,MLP)實現(xiàn)的,用戶模擬器根據(jù)動作a反饋給代理獎勵r,并給出下一個用戶響應aμ,然后對話狀態(tài)更新為s’。最后將經驗(s,a,r,aμ,s′)存儲在真實經驗回放池Du中,循環(huán)繼續(xù),直至對話終止。本實驗中的參數(shù)更新主要有兩個網(wǎng)絡:actor-online網(wǎng)絡、critic-online網(wǎng)絡,如圖4所示。
圖4 DDPG算法模型
在critic-online網(wǎng)絡中,本文通過調節(jié)θQ來最小化均方誤差損失函數(shù)以優(yōu)化Q值,其優(yōu)化目標如下
yi=ri+γQ′(s′i+1,μ′(s′i+1|θQ′))
(1)
(2)
其中,γ∈[0,1]是折扣因子,θQ和θQ′為critic-online和cri-tic-target網(wǎng)絡的參數(shù),根據(jù)loss更新actor-online網(wǎng)絡參數(shù)。在actor-online網(wǎng)絡中,原有的DDPG算法是處理連續(xù)型空間的任務,它的梯度如式(3)所示[19]
(3)
(4)
(5)
其中,μ(s|θμ)|si表示參數(shù)化的確定性策略,在本文中表示某個離散動作值的編號。prob(μ(s|θμ)|si)表示選擇某個動作的概率值。因此,式(3)就可以寫成如下形式
(6)
其中,yi用式(1)表示。通過式(6)我們就可以更新actor-online網(wǎng)絡的參數(shù)。而actor-target網(wǎng)絡、critic-target網(wǎng)絡采用soft機制更新,如下所示[19]
(7)
最后,我們采用批次訓練的方式在每次迭代中改進對話策略,見算法1的第(15)行-第(20)行。
在規(guī)劃步驟中(見算法1的第(23)行-第(36)行),世界模型會生成模擬經驗以改進對話策略,算法1中第(23)行的K是代理在直接強化學習中執(zhí)行規(guī)劃步驟的數(shù)量,即世界模型如果可以準確模擬用戶模擬器,那么代理就可以使用K步規(guī)劃來改進對話策略。在本文的實驗中,Du用于存儲用戶模擬器生成的真實經驗,Ds用于存儲世界模型生成的模擬經驗。Du中的真實經驗直接用來學習對話策略,Ds中的模擬經驗則用來進行規(guī)劃。下面描述模擬經驗的生成過程。
在每次對話開始時代理都需要采樣用戶目標G,用戶目標通常由約束語義槽和請求語義槽組成G=(C,R),其中,C表示一組約束語義槽,用戶可以用它進行約束搜索。以預訂電影票的任務為例,約束語義槽通常包括電影的購票數(shù)量、日期等;R表示請求語義槽,用戶可以用它請求某個具體語義槽的值,請求語義槽通常包含影院的位置、開始時間等。
在每輪對話中,世界模型會將當前的對話狀態(tài)s以及當前代理執(zhí)行的最后一個動作a表示成one-hot形式并作為模型的輸入,接著世界模型會輸出用戶響應aμ、獎勵r以及二進制變量t,t表示對話是否終止(見算法1的第(29)行),其中世界模型M(s,a|θM)使用多層神經網(wǎng)絡表示,如圖5所示。
圖5 世界模型結構
aμ、r和t的計算過程如下
h=tanh(Wh(s,a)+bh)
(8)
r=Wrh+br
(9)
aμ=softmax(Wa+ba)
(10)
t=sigmoid(Wth+bt)
(11)
其中,(s,a)表示s和a進行拼接。世界模型根據(jù)生成的用戶響應aμ更新下一個對話狀態(tài)s’,最后,我們將模擬經驗(s,a,r,s′)保存到Ds中,用于后續(xù)代理進行規(guī)劃。
世界模型的學習采用監(jiān)督學習的方式(見算法1中的第(2)行-第(22)行),它可以被看作為多任務分類的神經網(wǎng)絡,其中aμ和t被視為兩個分類任務,r被視為一個回歸任務。世界模型學習的時候,每次從Du中隨機抽取小批量樣本并采用隨機梯度下降法更新模型的參數(shù)。
本文是在預訂電影票的對話任務上評估結合規(guī)劃的DDPG算法的有效性和可行性。
本文使用的電影數(shù)據(jù)集是通過Amazon Mechanical Turk收集的且已經標注完畢。其中包含11個對話行為和16個語義槽,總共包含280個帶標記的對話,每個對話回合大約11輪,見表1。
表1 意圖和語義槽
基于規(guī)則的代理:該代理使用人工定義的規(guī)則構建對話策略,即本文的熱啟動部分。
DQN代理:該代理使用標準的DQN算法實現(xiàn)。
A2C(advantage-actor-critic)代理:該代理使用帶優(yōu)勢值的標準actor-critic算法實現(xiàn)。
DDPG代理:該代理使用本文所提出的改進的DDPG算法實現(xiàn),并使用直接強化學習訓練。結合規(guī)劃DQN代理:在標準的DQN算法中引入世界模型,并結合規(guī)劃步驟進行學習。
結合規(guī)劃的A2C代理:在標準的actor-critic算法中引入世界模型,并結合規(guī)劃步驟進行學習。
結合規(guī)劃的DDPG代理:本文所提出的改進的DDPG算法中引入世界模型,并結合規(guī)劃步驟進行學習。
在后6種代理中,actor網(wǎng)絡、critic網(wǎng)絡以及世界模型的網(wǎng)絡,隱藏層的激活函數(shù)均為tanh函數(shù),節(jié)點數(shù)目為80。本文設置了折扣因子γ=0.9,Du和Ds大小設置為5000。在規(guī)劃步驟中,模擬對話的最大回合數(shù)為40(L=40)。此外,為了提高對話訓練的效率,本文還應用了模仿學習的一種變體RBS (response buffer spiking)。除此之外,本文還采用熱啟動策略對所有代理進行100輪對話的預訓練,并對真實經驗回放池進行預填充。
本文采用Li等提出的用戶模擬器[4]。在訓練過程中,用戶模擬器在每個對話回合中為代理提供一個模擬的用戶響應,并在對話結束時提供一個獎勵信號。只有成功預訂了電影票并且代理提供的信息滿足用戶的所有約束時,對話才被認為是成功的。對話任務成功時,代理將收到2*L正獎勵;對話任務失敗時,代理將收到負獎勵-L,其中L是每次對話中的最大回合數(shù)。此外,在每個對話回合進行時,代理將獲得-1的獎勵,目的是引導代理使用更少的對話輪數(shù)完成預訂電影票的對話任務。有關用戶模擬器的詳細信息請參考文獻[4]。
表2中的每個結果都是代理重復5次以上的平均結果,并不涉及規(guī)劃步驟(K=0)。它是從代理的角度來比較各個算法的優(yōu)劣,具體包含以下3個評估指標{成功率,平均回報,平均輪數(shù)}
表2 不同代理在epoch={100,200,300}回合的表現(xiàn)
成功率用來衡量系統(tǒng)的總體性能,考驗對話系統(tǒng)從整體上完成任務的能力,平均回報、平均輪數(shù)則用來衡量系統(tǒng)魯棒性,我們不僅需要系統(tǒng)具有較優(yōu)秀的任務完成能力還需要對話系統(tǒng)具有良好的決策能力,通過較少的輪次得到更多的回報。
通過表2可知在代理學習的開始階段,DDPG代理的學習速度要高于其它的代理,其主要原因是本文采用確定性策略能夠幫助代理更快找到成功的對話策略,而在學習的后面階段(300輪左右),結合規(guī)劃的DDPG代理學習速率要低于DQN代理,其主要是因為DDPG代理需要學習兩種參數(shù)不同的神經網(wǎng)絡:actor-online網(wǎng)絡和critic-online網(wǎng)絡,這兩個網(wǎng)絡存在學習不同步的問題,actor-online網(wǎng)絡選擇動作的優(yōu)劣取決于critic-online網(wǎng)絡的打分,在criticonline網(wǎng)絡訓練好之前,很難對actor-online網(wǎng)絡進行有效的訓練,而DQN代理只需要訓練一種神經網(wǎng)絡參數(shù),并不存在多網(wǎng)絡協(xié)作問題,所以它的效果要優(yōu)于A2C、DDPG等代理。但是與A2C代理相比,本文所提出的方法要優(yōu)于A2C代理,驗證了從策略梯度角度出發(fā),本文所提出的方法能夠在一定程度上加快模型的收斂速度,帶來更好的對話性能。
表3展示了在代理中引入規(guī)劃步驟,并探索了不同K值對代理訓練的影響,通過表3可知,在環(huán)境一方引入世界模型的確可以減少用戶模擬器對話代理訓練的負面影響,不同的K值對代理訓練產生的效果并不相同,只有最佳K值才能夠最大程度減小負面作用。其主要原因是世界模型在代理訓練過程中也需要更新學習,世界模型生成的模擬經驗會在規(guī)劃步驟中直接影響代理的訓練效果,較差的模擬經驗會減低代理的訓練效果,因此需要在世界模型學習和代理學習之間進行權衡才能得到最佳的訓練效果,本文通過設置不同K進行多次實驗并選擇了K=i(i=5,10,20)進行展示,得出當K=10時,世界模型會生成較優(yōu)的模擬經驗,訓練出的代理效果最佳。
表3 不同K的代理在epoch={100,200,300}回合的表現(xiàn)
表4展示了不同代理在運行10 k輪模擬對話之后所得到的最終表現(xiàn),通過對比分析可知,結合規(guī)劃的DDPG算法從策略梯度的角度建模對話管理,在一定程度上提高了基本的策略梯度方法(advantage-actor-critic)的性能,大約提高了15%,進一步驗證了該方法的有效性。但是與基于值函數(shù)的強化學習方法相比,并沒有達到與DQN代理相似的效果,說明了當處理動作離散(或動作空間有限)的對話任務時,基于值函數(shù)的強化學習方法確實要優(yōu)于策略梯度的方法。在本文預訂電影票的對話任務中,它只包含43個離散動作,因此通過計算Q值選擇動作足以解決該任務。本文所提出的方法雖然沒有基于值函數(shù)的強化學習方法效果好,但是與基于值函數(shù)的強化學習方法相比,它也擁有策略梯度算法的優(yōu)勢:①它是直接針對對話策略建模,避免了基于值函數(shù)的強化學習方法中對Q值的計算。當遇到離散動作空間很大時,DQN將會面臨Q值計算困難的問題,而結合規(guī)劃的DDPG算法則不會出現(xiàn),從理論角度出發(fā),本文所提出的方法更適用于離散動作空間規(guī)模較大的對話任務。②它借鑒了經典DDPG的思想,通過結合經驗回放機制降低了樣本數(shù)據(jù)的相關性,以及雙網(wǎng)絡機制穩(wěn)定了學習目標,帶來更好的實驗效果,加快了模型的收斂速度。
表4 不同代理在10 k個模擬對話的最終表現(xiàn)
本文所提出的結合規(guī)劃的DDPG代理在環(huán)境和代理兩方面做出改進。在代理一方,本文并未使用基于值函數(shù)的強化學習方法(DQN),而是使用了策略梯度方法建模對話管理,它是使用策略梯度方法處理對話任務的一次嘗試,借鑒了DDPG的模型框架,引入了經驗重放機制以及雙網(wǎng)絡機制,加快了模型的收斂速度,得到了較好的對話性能。在環(huán)境一方,通過引進世界模型使代理不必完全依賴于用戶模擬器,減少用戶模擬器設計的不完善而造成對代理訓練產生的負面影響。本質上,世界模型可以看作另外一種具備學習能力的用戶模擬器,與基于規(guī)則的用戶模擬器相比,世界模型最大的特點就是具備學習能力,它能夠學習用戶模擬器的提問方式,提供更優(yōu)質的訓練樣本數(shù)據(jù),從而提高代理的訓練效果。但是再優(yōu)秀的世界模型也同樣需要一個優(yōu)秀的學習目標(用戶模擬器),驗證了在當前對話任務中通過改進用戶模擬器來提升代理性能的重要性。
當前本文提出的方法仍然有需要進一步改進的地方:第一,本文從策略梯度的角度建模對話管理,但是并未取得和DQN類似的效果,其主要原因是actor網(wǎng)絡、critic網(wǎng)絡擁有兩種不一樣的訓練參數(shù),所以存在網(wǎng)絡學習不同步的問題,并且actor動作選擇的優(yōu)劣完全取決于critic的評分,因此導致模型收斂困難。本文雖然采用了雙網(wǎng)絡機制在一定程度上緩解了該問題,使代理的性能優(yōu)于標準的AC代理,但是如何讓這兩個網(wǎng)絡共同協(xié)作,步調一致地進行更有效學習是策略梯度方法進一步發(fā)展的關鍵,也是接下來本文工作繼續(xù)深入研究的重點。第二,當前對話領域中的用戶模擬器構建并不完善,它與真實用戶之間依舊存在很大的差距,對代理的訓練有可能產生負面影響,進而影響代理的學習效率。因此后續(xù)工作將通過改進用戶模擬器進而提升代理性能。