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