還在爲DST模型刷不動而感到苦惱嗎?來試試無監督DST吧,DSI等你來戰!


本文介紹一篇西湖大學聯合哈爾濱工業大學 SCIR 實驗室和北京理工大學發表於 IJCAI 2020 的論文 Dialogue State Induction Using Neural Latent Variable Models

論文連接:git

https://www.ijcai.org/Proceedings/2020/0532.pdfgithub

代碼連接:數據庫

https://github.com/taolusi/dialogue-state-induction微信

PPT連接:網絡

https://taolusi.github.io/qingkai_min/assets/pdf/20-ijcai-dsi_slides.pdfapp

視頻連接:ide

https://www.bilibili.com/video/BV1fV41127tqpost

對話狀態跟蹤模塊是任務型對話系統中的核心部件,目前主流的對話狀態跟蹤的方法須要在大量人工標註的數據上進行訓練。然而,對於現實世界中的各類客戶服務對話系統來講,人工標註的過程存在代價高、標註慢、錯誤率高以及難以覆蓋數量龐大的不一樣領域等問題。學習

基於這些問題,咱們提出了一個新的任務:對話狀態推理,目標是從大量無標註的客服對話記錄中自動挖掘對話狀態,並提出了兩個基於神經隱變量的模型來實現無監督的對話狀態推理,同時咱們在下游的對話生成任務中進行了驗證,實驗結果代表,相比於缺乏對話狀態的對話系統,使用咱們推理獲得的對話狀態能夠得到更好的表現。優化

背景

1.1 任務型對話系統

任務型對話系統(task-oriented dialogue system)的目標是協助用戶完成特定的任務,好比訂機票、打車、日程管理等。

一個典型的任務型對話系統能夠分爲四個模塊:天然語言理解(natural language understanding, NLU)、對話狀態追蹤(dialogue state tracking, DST)、策略學習(dialogue policy)以及天然語言生成(natural language generation, NLG),在這個過程當中須要跟各類各樣的數據庫進行查詢甚至更新等操做。

▲ 圖1 任務型對話系統

(圖片來源於:Gao J, Galley M, Li L. Neural approaches to conversational AI[C]//The 41st International ACM SIGIR Conference on Research & Development in Information Retrieval. 2018: 1371-1374.)

1.2 對話跟蹤模塊及其限制

對話狀態跟蹤模塊是任務型對話系統的一個核心模塊,對話狀態表示了用戶在每輪對話所尋求的內容的關鍵信息,它是從對話開始到當前輪的全部信息的累積,表示形式是一些 slot-value pairs 的集合,inform 表示用戶對所尋求的內容的限制,request 表示用戶想要尋求哪些內容。

▲ 圖2 對話狀態表示

傳統的 DST 的作法是先經過 NLU 模塊對用戶對話進行意圖識別和槽位解析,而後將結果輸入到 DST 模塊中,由 DST 模塊處理 NLU 模塊帶來的一些不肯定性,獲得最終的對話狀態。目前愈來愈多的工做直接經過一個端到端的 DST 模型來直接處理用戶對話(以及歷史對話記錄)獲得當前的對話狀態,如圖 3 所示。

▲ 圖3 端到端的DST

端到端的 DST 模型雖然已經在標準的數據集(如 EMNLP 最佳資源論文 MultiWOZ 數據集)取得了絕大的成功,可是這種方法依賴於人工標註的大量語料,因爲對話狀態自己的複雜性很是高,須要對語義以及上下文有一個總體的理解,因此致使人工標註的過程存在兩個很是大的問題:

  • 昂貴的標註代價:在 MultiWOZ2.0 數據集中一共標註了 8438 組對話,一共居然用了 1249 個標註人員。

  • 太高的標註錯誤率:根據相關論文統計,MultiWOZ2.0 數據集中有大約 40% 的標註錯誤;而在此基礎上更新的 MultiWOZ2.1 數據集也有超過 30% 的錯誤;目前最新版已經更新到了 MultiWOZ2.2。

從這兩點能夠看出想要構建大規模高質量的數據集存在很是大的困難,這也致使雖然對於任務型對話系統的研究在一些領域上已經取得了必定的成功,可是也很是受限於這些已經標註好大量語料的領域,在實際應用中,會有大量新的領域存在,面對每個新的領域都要人工標註新的數據集是不太實際的。

▲ 圖4 端到端的DST所面臨的新領域問題

動機

2.1 新任務:對話狀態推理 (dialogue state induction, DSI)

在這種狀況下,如何可以從對話記錄中自動發現對話狀態顯得十分重要。咱們假設能夠得到大量來自不一樣領域的對話記錄,而這些對話記錄是沒有對話狀態標註的,一般這樣的語料是相對容易得到的,好比能夠來源於不一樣商業服務中已經積累的人工客服與用戶的對話記錄。

基於這種假設,咱們提出了一個新的任務:對話狀態推理(dialogue state induction, DSI),任務的目標是從大量的生對話語料中自動推理獲得對話狀態,並能更好的用於下游任務好比策略學習和對話生成。

DSI 與 DST 的區別如圖 5 所示,和 DST 類似的是,DSI 的輸出也是 slot-value pairs 形式的對話狀態,不一樣的是,在訓練過程當中 DST 依賴於對話語料以及人工標註的對話狀態,而 DSI 不依賴於人工標註,能夠在生對話中自動生成 slot-value pairs。

▲ 圖5 DST與DSI對比

除了咱們提出的 DSI 任務以外,谷歌的研究者也提出了經過 zero-shot DST 的方案來緩解標註數據缺失的問題,他們主要利用了一些類似的領域之間可能存在類似的槽位的這一特色,好比訂火車票和訂機票兩個領域都存在像出發地、到達地和出發時間、到達時間等槽位,經過對領域和槽位進行天然語言的描述來創建不一樣領域之間的聯繫。

這種方法確實能夠在必定程度上解決未知領域的問題,可是這種方法一樣須要對不一樣領域的槽位進行高質量(一致性高)的標註,同時在面對新的與已知的領域關聯性不大的領域時(好比金融領域),很難從已知的領域遷移到這些全新的領域。

▲ 圖6 Zero-shot DST及其限制

而咱們提出的 DSI 任務進一步減輕了對人工標註的依賴,咱們但願經過數據驅動的方式,採用無監督的方法從生對話中自動挖掘出對話狀態的信息。

方法

咱們的方法分爲兩個步驟:1)候選詞抽取(經過 POS tag、NER 和 coreference);2)爲候選詞分配合適的槽位。

其中第一步是一個預處理的過程,第二步咱們創建了兩個無監督的神經隱變量模型 DSI-base 和 DSI-GM 來爲每一個候選詞分配一個槽位索引(slot-index),其中 DSI-GM 能夠認爲是 DSI-base 的一個變種。

▲ 圖7 兩個步驟來解決DSI

3.1 VAE簡介

在說 VAE 以前,先來看一下它的前身 AutoEncoder (AE)。AE 是很是知名的自編碼器,它經過自監督的訓練方式,可以從原始特徵得到一個潛在的特徵編碼,實現了自動化的特徵工程,而且達到了降維和泛化的目的。它的網絡結構很簡單,有編碼和解碼兩個部分組成:

▲ 圖8 AutoEncoder

從圖中能夠看出,AutoEncoder 被認爲自監督是由於它的目標就是輸入自己,不須要額外的標籤。AutoEncoder 雖然是由編碼器和解碼器兩部分構成的,可是它的重點是經過編碼獲得隱藏層的向量,用來表示輸入的潛在的特徵。

解碼的做用是重建輸入數據,經過優化使得重建的輸入和真實的輸入儘量的相似,從而達到壓縮數據的目的。儘管經過這種方式獲得的隱變量的維度要遠小於輸入的原始數據,可是這種隱藏空間的分佈並非連續的,致使在解碼的過程當中,解碼器很難正常的重建輸入數據。

▲ 圖9 Variational AutoEncoder

VAE 假設通過神經網絡編碼後的隱變量符合標準的高斯分佈,也就是從一個高斯分佈中採樣獲得隱變量 z,具體的作法再也不經過編碼器直接獲得一個隱變量 z,而是獲得兩個向量,這兩個向量做爲高斯分佈的參數,從這個分佈中採樣獲得隱變量 z,而後經過解碼器重建獲得輸入數據。

VAE 的這種假設使得抽取出來的隱藏特徵直接擬合了已知的潛在機率分佈,從而獲得了連續完整的潛在空間,擁有了更強大的表達能力。

VAE 訓練過程的 loss 分爲兩個部分:一個是重建項(reconstruction term),還有一個是正則項(regularization term)。第一部分的目的是讓隱變量可以儘量表示輸入數據的特徵,第二個部分是使得編碼獲得的後驗分佈儘量接近先驗的標準高斯分佈。

3.2 模型1:DSI-base

在 DSI 的任務設置裏,對話狀態對咱們來講是未知的,而對話狀態又表示了當前對話中最關鍵的信息,所以咱們將對話狀態表示爲隱變量 z。

和 VAE 相似,咱們的模型也分爲三個部分:Encoder、Sampling 和 Decoder。

Encoder 的目的是經過神經網絡將對話輸入編碼獲得一個多元高斯分佈的參數 ,這個高斯分佈應該可以儘可能好的表示當前的對話狀態並儘量地貼近標準的多元高斯分佈;Sampling 利用當前的高斯分佈採樣獲得表示當前對話狀態的隱變量 z;Decoder 的目的是經過神經網絡將隱變量 z 解碼爲當前的對話輸入。

咱們如下邊這句對話爲例來解釋一下咱們的模型(藍色字表示在預處理過程獲得的 candidates):

I need to take a train out of Chicago, I will be leaving Dallas on Wednesday.

首先介紹 encoder 部分:在 encoder 中,咱們首先將對話表示爲兩種形式:one-hot(oh)表示和 contextualized embedding(ce)表示。

oh 是對句子的一種離散化的向量表示,oh 的長度是語料中全部候選詞的數量,當前對話中出現了哪些候選詞,就將其對應的位置置爲 1,其他的位置置爲 0,而後經過 linear transformation + SoftPlus + Dropout 將 oh 編碼爲 encoded_oh。

ce 是對子的一種連續性的向量表示,將當前對話通過了一個預訓練好的語言模型(如 ELMo、BERT),能夠獲得每一個單詞在當前對話中的上下文表示,咱們將每一個候選詞的上下文表示取出,先對全部的候選詞作 AvgPooling 獲得當前句子的總體表示,而後而後經過 linear transformation + SoftPlus + Dropout 將 ce 編碼爲 encoded_ce。

而後將 encoded_oh 和 encoded_ce 拼接起來,分別通過 linear transformation + BatchNorm 獲得後驗高斯分佈的參數 posterior 和posterior

▲ 圖10 Encoder

接下來是 sampling 過程:在獲得高斯分佈的參數以後咱們要經過隨機採樣獲得隱變量 z,可是隨機採樣的過程是沒辦法求導的,因此沒辦法進行梯度的回傳,這時候須要採用一個重參數化技巧(reparameterization trick),將 z 的採樣過程轉變爲 ,這樣使得采樣過程變得可導。

▲ 圖11 Sampling

最後是 decoder 部分:在獲得隱變量 z 以後咱們須要經過一個 decoder 來從新獲得當前對話的表示 oh 和 ce。這時咱們首先經過 transformation+Softmax 獲得另外一個隱變量 s,隱變量 s 表示了當前對話中 slot 的機率分佈,s 的維度是預設的 slot 的數量,是一個調整的超參數。

接下來咱們首先經過一個 linear transormation+BatchNorm 獲得重建的 oh 表示,reconstructed_oh 的維度也是全部 candidate 的數量。

除此以外,咱們還想要獲得重建獲得上下文表示 ce,這是咱們將上下文 ce 的重建轉換爲重建一個可以表示上下文分佈規律的多元高斯分佈,也就是說對這個多元高斯分佈採樣可以以比較更好地獲得當前的 ce。

▲ 圖12 Decoder

咱們的模型的優化過程和 VAE 相似,模型的 loss 分爲兩個部分:重建項和正則項,咱們的重建項又分爲兩個部分,一部分是對 oh 表示的重建,另外一部分是對 ce 表示的重建。

對 oh 的重建咱們經過對 reconstructed_oh 和真實的 oh 求 cross entropy loss:

對 ce 的重建咱們轉化爲提升咱們重建獲得的多元高斯分佈採樣獲得 ce 的機率,也就是說咱們將高斯分佈取得候選詞的機率取反做爲 loss,而後將全部的候選詞對應的 loss 相加,這樣咱們優化 loss 就是不斷提升重建的高斯分佈可以獲得候選詞上下文表示的機率。

對於正則項來講,咱們計算後驗的高斯分佈和標準的高斯分佈的 KL 散度做爲 loss,經過優化 loss 來不斷拉近後驗的高斯分佈與標準高斯分佈之間的距離。

模型訓練完以後,咱們看一下模型是如何進行預測的?經過和訓練過程徹底相同的 encoder 和 sampling 模塊,獲得隱變量 z,而後經過 linear transformation+softmax 獲得隱變量 s,此時的 s 表明當前對話中不一樣 slot 的分佈機率,可是這個機率針對每一輪的對話來講的,咱們並不知道機率較高得幾個 slot 分別對應哪些 candidate,那麼怎麼對不一樣的 candidate 進行區分呢?

咱們先來看一下除了 encoder,模型在 decoder 模塊中學到了什麼。首先從第一部分 oh 的重建過程,由 slot 的表示 s 到 oh 的 linear transformation 中能夠獲得一個 [slot_num, vocab_len] 的參數矩陣 W,以下圖所示。

那麼這個參數矩陣 W 的含義是什麼呢?作完 softmax 後的隱變量 s 能夠表明不一樣的 slot 的機率,和參數矩陣相乘能夠看做將是對 W 每行的參數進行加權求和,獲得 reconstructed_oh,而後和實際的 oh 求交叉熵。

由於在 oh 中當前對話出現的 candidate 被置爲 1,其他的 candidate 被置爲 0,這些被置爲 1 得 candidate 可能屬於當前對話不一樣的 slot,而同一個 slot 中出現的 candidate 有很高的重複性(好比火車的起點是一個固定的集合)。

那麼通過屢次數據優化以後的結果就是隱變量 s 中當前對話中出現的 slot 對應的那些維接近 1,不出現的 slot 的那些維接近 0,s 中接近 1 的那些維映射到參數矩陣 W 的對應行中,這些 slot 中常常得 candidate 對應的那些維接近 1,其他的接近 0。

這樣通過對 W 每一行的加權平均至關於取出 slot 對應的 candidate 相加獲得 oh,那麼 W 的每一行就能夠看做某個 slot 中全部 candidate 出現的機率。

這樣咱們能夠利用參數矩陣 W 來判斷每一個 candidate 屬於各個 slot 的機率,和咱們訓練過程當中求交叉熵 loss 的優化方式同樣,咱們將 candidate 的 one-hot 表示與 W 的每一行點對點相乘,能夠看做在每個 slot 下可以獲得當前 candidate 的機率。

和當前對話的 oh 表示可能存在多個 1 不一樣的是,每一個 candidate 的 one-hot 表示只有一維是 1,和 W 的每一行點積的過程能夠看做是將 W 中的對應列取出的過程,這樣就獲得了 candidate 獲得屬於每一個 slot 的機率。

一樣咱們看一下模型在對 ce 的 decode 過程當中學到了什麼?咱們能夠在重建獲得高斯分佈的兩個參數 的過程當中獲得兩個參數矩陣,接下來咱們也來分析一下這兩個參數矩陣的含義。

相似於 oh 重建過程,獲得參數 的過程也能夠看作是對兩個參數矩陣的加權求和過程: 是對當前對話總體的上下文的一個表示,而 s 表示了當前對話中每一個 slot 出現機率,那麼這兩個參數矩陣中每一行就是每一個 slot 對應的上下文的表示,多個不一樣的 slot 進行加權求和,獲得了總體的上下文表示。

咱們將兩個參數矩陣中對應的每一行 取出來,能夠做爲每一個 slot 對應的可以表示相應上下文的高斯分佈的參數,由此獲得了 slot_num 個不一樣的多元高斯分佈。

咱們利用 slot_num 個不一樣的高斯分佈,能夠計算每一個高斯分佈採樣獲得 candidate 的 ce 的機率,做爲 candidate 屬於不一樣 slot 的機率。

咱們將獲得的三個機率相乘,最終獲得 candidate 屬於每一個 slot 的機率,取其中最大的做爲當前 candidate 對應的 slot。

由於咱們採起的是無監督的方式來爲每個 candidate 預測 slot,對應於每一個 candidate 咱們獲得的是 slot 的索引,和全部無監督的方式同樣,咱們須要有一個後處理的爲每個 slot 的索引分配一個合適的標記。

如圖所示,咱們將分配到同一個 slot 下的 candidate 彙集起來,經過多數投票的方式,觀察其中大多數的 candidate 實際應該屬於哪一個合適的label,將這個 label 分配給當前的 slot,這樣獲得了每一個 slot 對應 label 的一個字典,經過這個字典將預測的 slot 索引替換爲實際的 label。

3.3 模型2:DSI-GM

目前任務型對話系統的構建都是創建在多領域的語料之上,其中一些領域可能有類似的 slot,好比 train 和 taxi 這兩個領域可能有類似的 slot 包括 arrive by、leave at、destination 和 departure。

而類似的 slot 之間上下文多是很是相似的,好比對於 arrive by 這個 slot 來講,不一樣的領域可能共享了「I need by arrive by xxx」,而對於 departure 這個 slot 來講,不一樣的領域可能共享了「I need departure from xxx」。

針對這種狀況,咱們提出了 DSI-GM 模型來解決這個問題。在 DSI-base 模型中,全部不一樣的領域和槽位都經過一個高斯分佈來進行建模,這樣不一樣領域的類似的 slot 由於其具備類似的上下文可能致使模型沒法對這些 slot 進行區分。

在 DSI-GM 模型中,咱們利用高斯混合模型(A Mixture-of-Gaussians)來對隱變量 z 進行建模,每個單個的子模型來對一個領域進行建模,這樣在避免了不一樣領域的類似 slot 被混合在一塊兒的狀況,能夠在領域這個維度上對對話進行更加清晰地建模。

DSI-GM 模型實際是什麼樣的呢?相對於 DSI-base 模型在經過 encoder 和 sampling 獲得隱變量以後直接預測獲得 slot 來講,DSI-GM 在獲得隱變量 z 以後,經過和先驗的 K 個高斯分佈子模型進行對比。

首先預測出當前對話的領域,在此基礎上,在利用 z 和 decoder 模塊預測獲得 slot,當前的領域和 slot 共同組成了當前的 slot(實際 slot 是由領域和 slot 兩部分組成),DSI-GM 模型具體的訓練和預測過程請詳見咱們的論文。

實驗

咱們在 MultiWOZ2.1 和 SGD 兩個數據集上進行了實驗,咱們從兩個層面對咱們的結果進行了評價,一個是傳統的 joint level,joint level 的 dialogue state 是從對話開始到當前對話全部的信息的累積,另外一個是 turn level,turn level 的 dialogue state 是僅對當前輪對話的局部信息的表示。

在這兩個層面上,咱們分別經過兩個指標對結果進行了評價,一個是 accuracy,當對話狀態中全部的 slot-value pairs 被識別對才認爲是正確;另外一個是 state matching(precision, recall, F1),用來評價推理獲得的 slot-value pairs 的覆蓋率。

從結果中能夠看出,相對於隨機分配的 slot,經過咱們的模型能夠有效地推理出對話狀態,咱們採用的高斯混合模型在 DSI-base 的基礎上有明顯的提升。可是從 accuracy 來看,咱們的結果還比較低,這也反映出了無監督的 DSI 任務的難度,仍然有很大的提高空間。

除此以外,咱們還將推理獲得的對話狀態用於下游的 act prediction 和對話生成上,下游任務的模型咱們採用的是 [Chen et al., 2019] Wenhu Chen, Jianshu Chen, Pengda Qin, Xifeng Yan, and William Yang Wang. Semantically conditioned dialog response generation via hierarchical disentangled self-attention. In ACL, 2019。

從實驗結果能夠看出,相對於沒有對話狀態,經過 DSI-GM 獲得的對話狀態對下游任務有明顯的提高,而相比於人工標註的對話狀態還有必定的差距,這也體現了咱們的這個任務還有較大的提高空間。

咱們分析了多個不一樣的領域的結果,經過將結果最好的領域 attraction 和結果最差的領域 hotel 對比,咱們發現不一樣領域中 slot 的數量對結果有直接的影響,slot 的數量較少的領域更容易進行推理是比較顯然的,可是如何對不一樣的領域進行建模是將來值得考慮的問題。

除此以外,咱們還就 DSI-base 和 DSI-GM 在隱變量 z 上的表現進行了進一步的分析,咱們經過 t-SNE 來對 z 進行了降維,圖中每一種顏色表明一個領域,從圖中能夠看出,DSI-GM 在對不一樣領域的區分上確實取得了更好的效果,這也進一步證實了咱們的高斯混合模型的做用。

結論

咱們提出了一個新的任務:對話狀態推理(dialogue state induction,DSI),目標是從無標註的對話記錄中自動推理獲得對話狀態。

咱們提出了兩個基於神經隱變量的模型經過無監督的方式來對對話狀態進行自動推理。

咱們提出的任務針對了當前任務型對話研究中面臨的很是實際的標註困難的問題,咱們的提出的任務是一個比較有前景同時頗有挑戰性的任務。

一方面,咱們在 IJCAI 的 review 也說到了:「This problem is important and interesting, this area should attract more attention. This work has great potential of motivating follow-up research.」,證實咱們的這個工做的意義,是有利於促進後續的研究工做的。

另外一方面,由對話狀態自己的複雜性到無監督的任務設定使得這個任務仍是有很是大的提高空間,咱們提出的兩個基於神經隱變量的模型也是拋磚引玉,提供了一種解決這個任務的思路,你們能夠以咱們的模型做爲 baseline,提出更多的方法來解決這個任務。

更多閱讀

#投 稿 通 道#

 讓你的論文被更多人看到 

如何才能讓更多的優質內容以更短路徑到達讀者羣體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。

總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許能夠成爲一座橋樑,促使不一樣背景、不一樣方向的學者和學術靈感相互碰撞,迸發出更多的可能性。 

PaperWeekly 鼓勵高校實驗室或我的,在咱們的平臺上分享各種優質內容,能夠是最新論文解讀,也能夠是學習心得技術乾貨。咱們的目的只有一個,讓知識真正流動起來。

???? 來稿標準:

• 稿件確係我的原創做品,來稿需註明做者我的信息(姓名+學校/工做單位+學歷/職位+研究方向) 

• 若是文章並不是首發,請在投稿時提醒並附上全部已發佈連接 

• PaperWeekly 默認每篇文章都是首發,均會添加「原創」標誌

???? 投稿郵箱:

• 投稿郵箱:hr@paperweekly.site 

• 全部文章配圖,請單獨在附件中發送 

• 請留下即時聯繫方式(微信或手機),以便咱們在編輯發佈時和做者溝通

????

如今,在「知乎」也能找到咱們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱咱們的專欄吧

關於PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。若是你研究或從事 AI 領域,歡迎在公衆號後臺點擊「交流羣」,小助手將把你帶入 PaperWeekly 的交流羣裏。

相關文章
相關標籤/搜索