还在为DST模型刷不动而感到苦恼吗?来试试无监督DST吧,DSI等你来战!
本文介紹一篇西湖大學聯合哈爾濱工業大學 SCIR 實驗室和北京理工大學發表于 IJCAI 2020 的論文 Dialogue State Induction Using Neural Latent Variable Models。
論文鏈接:
https://www.ijcai.org/Proceedings/2020/0532.pdf
代碼鏈接:
https://github.com/taolusi/dialogue-state-induction
PPT鏈接:
https://taolusi.github.io/qingkai_min/assets/pdf/20-ijcai-dsi_slides.pdf
視頻鏈接:
https://www.bilibili.com/video/BV1fV41127tq
對話狀態跟蹤模塊是任務型對話系統中的核心部件,目前主流的對話狀態跟蹤的方法需要在大量人工標注的數據上進行訓練。然而,對于現實世界中的各種客戶服務對話系統來說,人工標注的過程存在代價高、標注慢、錯誤率高以及難以覆蓋數量龐大的不同領域等問題。
基于這些問題,我們提出了一個新的任務:對話狀態推理,目標是從大量無標注的客服對話記錄中自動挖掘對話狀態,并提出了兩個基于神經隱變量的模型來實現無監督的對話狀態推理,同時我們在下游的對話生成任務中進行了驗證,實驗結果表明,相比于缺少對話狀態的對話系統,使用我們推理得到的對話狀態可以獲得更好的表現。
背景
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 的交流群里。
總結
以上是生活随笔為你收集整理的还在为DST模型刷不动而感到苦恼吗?来试试无监督DST吧,DSI等你来战!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OPPO ColorOS 15 流畅双引
- 下一篇: 贾冰担任毒液中文配音,索尼超英电影《毒液