Chapter7-13_Dialogue State Tracking (as Question Answering)
文章目錄
- 1 什么是Dialogue State Tracking
- 2 數據集
- 3 兩個挑戰
- 4 經典模型
本文為李弘毅老師【Dialogue State Tracking (as Question Answering)】的課程筆記,課程視頻youtube地址,點這里👈(需翻墻)。
下文中用到的圖片均來自于李宏毅老師的PPT,若有侵權,必定刪除。
文章索引:
上篇 - 7-12 Controllable Chatbot
下篇 - 無
總目錄
1 什么是Dialogue State Tracking
Dialogue State Tracking是Task-oriented Dialogue的一個子模塊。先來講一下Task-oriented Dialogue是什么。Task-oriented Dialogue的輸入是用戶當前說的話和歷史的對話記錄,如果用戶的輸入是語音,會有一個額外的ASR模塊將輸入轉成文字,同時也會有一個額外的TTS模塊將輸出轉為語音。用戶的輸入會經過一個理解模塊NLU(Natural language understanding),輸出會交給state tracker,也就是本文的核心內容。state tracker會從當前的輸入中抽取有用的信息,保存下來。同時歷史的輸入都會以相同的形式把有用的信息保存下來。這些存下來的信息會以state的形式交給決策模塊(Policy)。Policy會告訴生成模塊NLG(natural language generation)該輸出什么內容。最后NLG輸出回應用戶的話。
說了一大堆,其實簡單來說Dialogue State Tracking就是上面的state tracker,目標是把用戶說的話簡化為一個有用的信息庫,也可以理解為做了摘要。下圖比較形象地說明了這一過程。這么多的對話,最終變成了key-value的鍵值對。
這些keys是人為事先定義好的內容,而value都是選擇題,也是人為規定好的選項。因為現在的Dialogue State往往有很多的keys,所以key會有domain和slot兩個部分組成,用來區別和歸類不同的keys,方便模型處理,也方面模型的遷移。
總之,Dialogue State Tracking就是根據對話內容,填寫事先設定好的keys的values是什么的問題。
2 數據集
Dialogue State Tracking比較著名的數據集有MultiWOZ 2.0,SGD,CrossWOZ等等。這里的這個WOZ就是取自綠野仙蹤(The Wizard of Oz),綠野仙蹤里最終的大BOSS是一個老頭子在幕后操縱的。這里的數據集也是用人來偽裝成AI和人對話得到的數據,沒錯就是人和人對話,AAI(Artificial Artificial Intelligence)。
3 兩個挑戰
Dialogue State Tracking的values要做成很多個選項是因為之前的方案都把這個當作一個分類問題,輸出的是一個類別,但比如電話號碼,時間等一些難以窮舉的選項,這個方法就行不通了,這是一個挑戰。
另一個挑戰是有新的keys進來,模型就要重新train過,數據也要重新構造過,遷移成本大。
總結一下:
- 有些value難以窮舉
- 新的key進來,遷移成本大
這兩個問題,都可以用QA(Question Answering)的方法解決。QA的結構如下圖所示,我們把Dialogue history作為source輸入,然后根據key問出相應的問題讓模型來回答即可。這樣模型回去從source中找一個span作為答案,解決了value難以窮舉的問題。然后針對domain不同,slot相同的問題,改一下問題的domain即可,解決了遷移的問題。當然前提是這個QA模型是ok的。
4 經典模型
Dialogue State Tracking比較經典的模型就是TRADE,其結構如下圖所示。Dialogue會經過一個encoder抽取特征,同時key的domain和slot會分別取embedding,然后加在一起作為question部分的輸入,同時也會和Dialogue的encoder輸出作一個attention。attention的結果會是一個slot gate,決定了是PTR(從對話中抽取一個span),還是DONTCARE(用戶不在乎),還是NONE(還沒提到這個key)。根據這個決定,state generator會輸出最終的結果。
因為key會分別抽取domain和slot的embedding,所以這個方法是可以適用于應的key的,這也意味著是可以解zero-shot的問題的。
有些key會有一些description,抽取這些description的embedding也是解決zero-shot問題的方法。
其他還有一些變形,比如Slot Carryover Prediction認為每說一句話都要把所有的keys問一遍太費時費力了,于是就設計了一個“是否同上”的classifier來幫助避免問一些已經知道且沒有被修改的keys;DST QA認為有些keys之間的values是有關聯的,比如知道了要訂哪家飯店,那么叫的出租車的目的地很可能就是這家飯店,然后設計了一個模塊來解決這個問題;SimpleTOD基于GPT-2設計了一個end-to-end的方法,用戶說一句話,模型輸出一句話,效果出奇地好。
總結
以上是生活随笔為你收集整理的Chapter7-13_Dialogue State Tracking (as Question Answering)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十七、PHP框架Laravel学习笔记—
- 下一篇: 十三、CSS 3新特性详解(一)——属性