ACL2019
文章簡介:
本文提出了一個可遷移多領域的的狀態(tài)生成器模型(transferable dialogue state generator,TRADE)來實現任務型對話系統(tǒng)。在多領域(Multi-Domain)和zero-shot domain對話數據集中獲得了不錯的表現。
原文
代碼
先驗知識:
對話系統(tǒng)任務綜述與POMDP對話系統(tǒng)
任務型對話系統(tǒng)公式建模&&實例說明
DST,Dialogue State Tracking
Zero-Shot Learning
目錄:
1.Introduction
2.TRADE Model
2.1 Utterance Encoder
2.2 State Generator
2.3 Slot Gate
2.4 Optimization
3.Unseen Domain DST
3.1 Zero-shot DST
3.2 Expanding DST for Few-shot Domain
4.Experiments
4.1 Dataset
4.2 Training Details
Multi-domain Joint Training
Domain Expanding
4.3 Results
Multi-domain Training
Zero-shot
Domain Expanding
5. Error Analysis
6. Related Work
Dialogue State Tracking
Zero/Few-Shot and Continual Learning
7. Conclusion
1.Introduction
DST,Dialogue State Tracking是任務型對話系統(tǒng)的核心組成部分,DST用來抽取用戶在對話中表現的意圖然后編碼為表示對話狀態(tài)的緊湊集合。常見的DST輸入An-1和Sn-1,輸出Sn。An為Action即系統(tǒng)收到用戶消息后做出的回復,Sn={Gn,Un,Hn},Gn為當前任務所有的槽(slot),Un為{意圖(Intention對應本文中領域domain),槽值對(slot-value pair)},Hn為聊天歷史即U和A的集合。詳細見上方先驗知識鏈接。注本文中DST有些許差別見第二節(jié)中架構描述。
傳統(tǒng)的State Tracking假定本體(ontology)已經提前定義,即所有槽值對已知。這樣DST就是一個分類問題了,然而這有兩個問題:
1.在工業(yè)界應用中,對話數據庫往往僅通過一個API提供給外界,使得獲取全部槽位槽值似乎不可能完成。
2.就算所有的本體存在,然而槽值取值范圍很大并且可變,比如餐廳的名稱可能有很多很多個。
所以這類神經網絡分類DST在現實場景中應用不多。
Budzianowski et al. (2018) 發(fā)布了一個多領域對話數據集MultiWOZ,給DST帶來了新的挑戰(zhàn)。
如上圖所示,一個用戶可以以預訂餐廳開始,然后詢問附附近有什么好玩的地方,最后租出租車。在這種情況下,DST模型需要在每輪對話中決定對應的領域,槽和槽值,這當中有大量的本體組合。
另外一個挑戰(zhàn)是多輪映射(multi-turn mapping),對應上圖中的虛線,實線為單輪映射。單輪映射中場景:(領域,槽,槽值)三元組可以由單輪對話得出,在多輪映射中場景則需要由多輪對話才能得到。比如途中Attraction中的area是在上一輪對話中得到的信息。
為了解決這些問題,DST模型需要在多個領域間共享追蹤到的知識。有一些槽,比如說area,在多個領域中都會出現。為了讓模型能在未知領域中追蹤槽位,在不同領域間傳送知識是必要的。我們期待DST模型可以在zero-shot 領域追蹤槽位。
本文提出的可遷移多領域的的狀態(tài)生成器模型(transferable dialogue state generator,TRADE),目的是:
1.TRADE提出了基于上下文(context-enhanced)的slot gate和copy mechanism來追蹤對話歷史中提到的槽值,以解決多輪映射問題。
2.通過各領域間共享參數并且不需要預定義的本體,TRADE可以在各領域間共享知識去追蹤未知的槽值。這在多領域DST中獲得了先進的表現。
3.TRADE可以實現zero-shot DST,如果未知領域有一些訓練樣本,TRADE可以適應新的少樣本領域(few-shot domain)并且不忘記之前的領域。
2.TRADE Model
模型由三部分組成:utterance encoder,slot gate, state generator。不同于之前的模型預測預定義本體的概率,TRADE直接生成槽值。 和Johnson et al. (2017) 基于多語言的神經翻譯機相似,模型共享參數,state generator在生成每一個(領域,槽)時都會有不同的起始標記(start-of-sentence token)。
utterance encoder將輸入(Un:{意圖(Intention),槽值對(slot-value pair)})編碼為一個定長的向量。
slot gate通過一個三分類分類器來判定本輪對話中是否有任意的(領域,槽)被提及。
state generator挨個解碼所有輸入(領域,槽)的多路輸出并預測槽值。
注意這里的參數定義及模型架構和上面先驗知識中的定義有稍許不同,X表示經歷了T輪的對話歷史,B表示每輪的對話狀態(tài)(dialogue state),B為(領域D,槽S,槽值Y)。有領域D有N個取值,槽S有M個取值,假設有J對可能的(領域,槽)對,Yj是第j對(領域,槽)的槽值。
2.1 Utterance Encoder
這里使用雙向GRU(Chung et al., 2014) 來編碼。
輸入為Xt為t輪的對話歷史:
為所有向量的拼接。l代表考慮的前l(fā)輪對話。
編碼后的輸出為:
2.2 State Generator
為了生成槽值,我們需要copy mechanism,一般有三種方式index-based copy (Vinyals et al., 2015), hardgated copy (Gulcehre et al., 2016; Madotto et al., 2018; Wu et al., 2019),和soft-gated copy (See et al., 2017; McCann et al., 2018)。這里使用soft-gated copy來把詞匯分布和對話歷史分布結合為單個輸出分布。
使用GRU作為解碼器來預測每一個(領域,槽)的槽值。把領域和槽的嵌入相加作為解碼器的第一個輸入,設第j對(領域,槽)的第k步解碼(可以看模型架構圖中第一步解碼輸出Ashley,第二步解碼輸出Hotel因為槽值可能由多個詞組組成所以有k步解碼)輸出為。state generator使用可訓練的嵌入
將
映射到
,同時
也會被用來計算對話歷史attention
。
總結一下,就是:
隨后根據上文提到的soft-gated copy結合兩個分布,最后的輸出為:
由公式(2)可以看到,即使詞語沒有在詞匯表中本模型可以生成。(怎么看出來的?)
2.3 Slot Gate
在多領域的DST任務中,有大量的(領域,槽)對。因此在當前輪對話t預測領域和槽是一個很大的挑戰(zhàn)。
slot gate的作用是把Utterance Encoder輸出的Ht映射到包含ptr,none,dontcare的三類。對于每一個(領域,槽)對,如果gate預測none或dontcare,則忽視2.2節(jié)中最后輸出的槽值而是填入"not-mentioned"和"does not care"。若gate預測ptr,則填入State Generator得到的槽值。
c見公式(3)。
2.4 Optimization
State Generator和Slot Gate都需要訓練(Utterance Encoder按照2.1節(jié)的意思應該是之前別人有的直接用)。
|Yj|代表了槽值輸出詞組的長度,即解碼中的k步。J為(領域,槽)對個數。
權重為超參數。
3.Unseen Domain DST
本節(jié)聚焦TRADE在zero-shot transferring和few-shot domain expanding上的表現。zero-shot的情況下我們假設在新的領域沒有訓練數據,在few-shot情況下只有1%的數據(20到30個對話)。
3.1 Zero-shot DST
如果之前在別的領域中學習(訓練)過,DST可以在新的領域中直接追蹤到這些槽 。舉例就是如果在"火車"領域學習過"出發(fā)"槽,那在"出租車"領域就能追到到"出發(fā)"槽。DST輸入對話歷史X,領域D,槽S,輸出槽S對于的槽值。訓練樣本,測試時
。對于新領域Dtarget,Zero-shot DST需要在未使用任何
訓練樣本的情況下輸出正確的的槽值。若
中的槽
在之前訓練的領域D中未出現過,則這項任務非常艱巨。
3.2 Expanding DST for Few-shot Domain
few-shot的情況下只有少量的訓練樣本。模型few-shot domain expansion的能力有兩個好處:
1.在少量數據下可以適應新的領域并且獲得不錯的表現。
2.不需要重新訓練,因為在新的領域中之前的數據并不可靠并且重新訓練非常費時。
可以在沒有約束的情況下直接微調,也可以使用兩個帶約束的微調訓練方法:elastic weight consolidation (EWC) (Kirkpatrick et al., 2017) 和 gradient episodic memory (GEM) (Lopez-Paz et al., 2017) 。
4.Experiments
4.1 Dataset
Multi-domainWizard-of-Oz(Budzianowskietal., 2018) (MultiWOZ) 是目前最大的人與人對話語料庫。其涉及7個領域,包含8438個多輪對話平均每個對話有13.68輪。與WOZ (Wen et al., 2017) 和DSTC2 (Henderson etal.,2014a)不同,這兩個數據集只包含了10個不到的槽和幾百個槽值。而MultiWOZ有30個(領域,槽)對并有超過4500個可能的槽值。我們訓練時只用到(restaurant, hotel, attraction, taxi, train) 五個領域,因為另外兩個(hospital, police) 對話太少了。
4.2 Training Details
Multi-domain Joint Training
優(yōu)化器選擇Adam,batchsize為32,學習率[0.001,0.0001] 0.2的衰減,公式(7)中權重超參都設置為1,嵌入向量由拼接 Glove(Pennington et al., 2014)和單詞級嵌入(Hashimoto et al., 2016)初始化嵌入維度為400。解碼器用了貪婪搜索(注sequence2sequence的輸出Beam Search用的比較多)。同時為了加強模型泛化能力 utterance encoder 加入了word dropout(和drop out類似隨機屏蔽掉幾個詞,出處 Bowman et al. (2016))。
Domain Expanding
加入3.2中的EWC,GEM微調。
4.3 Results
這里有兩個評價指標,共同目標準確率(joint goal accuracy)和槽準確率(slot accuracy)。前者要求DST輸出的第t輪對話狀態(tài)(dialogue state)Bt=(領域,槽,槽值)和標簽完全一致,即這一輪中每一個槽值都預測正確才算這一輪正確,而后者只計算(領域,槽,槽值)三元組的準確率。
Multi-domain Training
本文和四個base-line做了比較, MDBT (Ramadan et al., 2018), GLAD (Zhong et al., 2018), GCE (Nouri and Hosseini-Asl, 2018), 和 SpanPtr (Xu and Hu, 2018),結果如下:
可以看到擁有相近槽值的槽嵌入相似度高(顏色深),比如destination和departure對于的槽值都是城市名,people和stay槽值都是數字。
Zero-shot
可以看到只有taxi領域的Zero-shot最接近左列,作者的解釋是因為taxi領域的四個槽槽值都相似。
Domain Expanding
可以看到fine-tune的方式,往往比重新訓練(training 1% new domain)效果好。
5. Error Analysis
6. Related Work
Dialogue State Tracking
Zero/Few-Shot and Continual Learning
7. Conclusion
將來會加強meta learning在多領域DST中的應用。