《Do Neural Dialog Systems Use the Conversation History Effectively? An Empirical Study》
https://zhuanlan.zhihu.com/p/73723782
請復制粘貼到markdown 查看器查看!
Do Neural Dialog Systems Use the Conversation History Effectively? An Empirical Study
ACL2019
Chinnadhurai Sankar, Sandeep Subramanian, Christopher Pal, Sarath Chandar, [Yoshua Bengio]
https://arxiv.org/abs/1906.01603
abstract
神經網絡生成模型在構建對話 agent 方面越來越流行,這種方法可以靈活的適應多個 domain,且需要很少的領域專家干預。這些系統一個被大家經常指出的問題就是他們很少有效的去使用獲得的對話歷史。這篇文章中,作者使用一種方法去理解模型是怎樣利用對話歷史的,這個方法是先是人工給文本引進 unnatural 改變或者是擾動,再去觀察模型對這些改變的敏感度。作者在 4 個對論對話數據集上進行 10 種不同擾動的實驗,發現通常使用的基于 RNN 和 transformer 的 seq2seq 模型對于大多數擾動都是不敏感的。再者,作者開源了代碼,認為這將會是一個檢驗對話系統的有用工具。
introduction
人們猜測是因為不能很好的利用對話歷史,所以模型經常沒有辦法產生對話主題相關的句子,比方說回應一些諸如 “謝謝”,“好的” 這些無關緊要的話。實驗的一個核心的前提(思想)是說,如果這個模型對認為造成的文本內容的改變(擾動)不敏感,那就是說它沒有非常大程度的利用這段內容。作者發現:
- recurrent and transformer-based seq2seq models 對于實驗中的大多數種類的擾動都不敏感
- 甚至在 randomly shuffling or reversing words within every utterance in the conversation history 這種極大的變化的情況下,二者都不是特別敏感
- recurrent model 對于對話歷史中每個 utterance 的先后順序很敏感,這意味著他可以比 transformer 更好的模擬對話動態。
experiment setup
作者將給定對話歷史生成恰當回復的問題演變為一個 conditional language modeling problem. 要學習一種條件概率分布 $P_\theta (y|x)$ ,其中 $y$ 是給定對話歷史 $x$ 應該出現的合理的回復。對話歷史由一系列 utterance $\bold{x_1}, \bold{x_2}, ... \bold{x_n}$ 表示,其中每個 $\bold{x_i}$ 由一系列單詞 $x_{i_1}, x_{i_2}, ...x_{i_k} $ 組成,回復 $y$ (utterance)同理由 $y_{i_1}, y_{i_2}, ...y_{i_k}$ 組成。至此,完整的條件概率表示為:
$$
P_{\theta}(y|x) = \prod^n_{i = 1} P_{\theta}(y_i|y_{<i},\bold{x_1}, \bold{x_2}, ... \bold{x_n})
$$
工作的關鍵是研究當我們人工的干擾對話歷史 $\bold{x_1}, \bold{x_2}, ... \bold{x_n}$ 時,學到的概率分布會有怎么樣的行為。作者通過觀察在這些變化下 per-token 的 perplexity (困惑度) 增加了多少來測量這姓行為。如果增加量很小,那么我們就可以總結出 $\bold{x_1}, \bold{x_2}, ... \bold{x_n}$ 的順序對于模型不是很重要。所有的模型訓練的時候都不加入擾動,敏感度只在測試的時候被測試。
1. datasets
四個多輪對話數據集
- bAbI dialog : 任務導向多輪數據集,五個預定飯店的任務,復雜度依次增加。實驗使用任務5,因為這個是最難的,它包括 1000 個對話,每個對話平均有 13 個 user utterance。
- Persona Chat : 開放域對話數據集,兩個人被隨機安排兩個角色進行對話產生。10.9$k$ 個對話,平均每個對話 14.8 輪。
- Dailydialog : 收集每天日常的對話,涉及多個主題。13$k$ dialogs / 7.9 turns
- MutualFriends : 多輪 goal-oriented,兩個agents 必須去發現他們的朋友中誰是二者共有的。11$k$ / 11.41 utterances。
2. types of perturbations
每種擾動都獨立的執行
- utterance-level perturbations : 1) $ \mathcal{Shuf}$ : 隨機打亂對話歷史中的 utterances。2) $\mathcal{Rev}$ : 每個 utterance 保持不變,但對話歷史對話順序顛倒。3) $\mathcal{Drop}$ : 完全丟掉某個 utterance。4) $\mathcal{Truncate}$ 縮減對話歷史,只留下最近的 k 個utterances。
- word-level perturbations : 1) $\mathcal{word-shuffle}$ 2) $\mathcal{reverse}$ 3) $\mathcal{word-drop}$ : 丟掉 30% 的 words 4) $\mathcal{noun-drop}$ : 丟掉所有的名詞。5) $\mathcal{verb-drop}$
3. models
所有的數據加載,模型實現,和評估的過程都在 ParlAI 架構實現的。模型的所有超參數也都是和那個平臺一樣。
- recurrent models : seq2seq_LSTM
- transformer : 300 維 embeddings and hidden states
實驗中的模型可能不是試驗中所用的數據集上表現最優的模型,作者仍然相信這些模型至少可以像一個baseline 一樣具有普適性普遍的使用。在這篇文章中,作者訓練10輪就停止為了去保存最好的模型(?)。
results & discussion
表 2 第二列展示了在測試集上不同模型的困惑度,后邊幾列是不同的擾動造成的困惑度的 increase;圖一展示了僅僅摘取最近 k 句話作為對話歷史時模型困惑度的改變。
作者有如下發現:
- 在大多數情況下模型在困惑度上只有很小的改變,甚至當改變非常明顯時也變化不大,這意味著模型使用的信息只是提供給他們的信息中很少一部分。
- transformer 對詞序的變化不敏感,這意味著他們能學習詞袋表示
- 注意力機制的使用使得模型使用更多的來自于對話早期的信息(當只使用一句話時困惑度增加的非常劇烈)
- 盡管 transformer 模型收斂更快且有著更低的困惑度,但是他們似乎不能捕捉到對話歷史中的動態變化且對擾動不是很敏感,相對于recurrent 模型來說。
conclusion
本文研究生成神經對話系統在其所依賴的對話歷史中綜合引入擾動時的行為。我們發現,即使對對話歷史進行劇烈的、非自然的修改,recurrent and transformer-based seq2seq models 也沒有顯著的變化。我們還發現了 recurrent and transformer-based seq2seq models 在利用對話歷史的方式上的細微區別。通過開源代碼,我們相信這種通過引入擾動來研究模型行為的例子將成為一個有用的診斷工具。
轉載于:https://www.cnblogs.com/forPrometheus-jun/p/11177804.html
總結
以上是生活随笔為你收集整理的《Do Neural Dialog Systems Use the Conversation History Effectively? An Empirical Study》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python3基础 if __name
- 下一篇: 纪念第一次青海湖之行泡汤