論文研讀:基於統計重加權的方法減少通用回覆
論文研讀:基於統計重加權的方法減少通用回覆
會議名稱:EMNLP2018
文章題目:Towards Less Generic Responses in Neural Conversation Models: A Statistical Re-weighting Method
原文連結:https://link.zhihu.com/?target=https%3A//www.paperweekly.site/papers/2440
一句話概括: 針對開放對話領域的對話多對多關係並且產生通用回覆的問題,文章在損失項中引入權重的概念,降低通用回覆權重,降低過短或者過長語句的權重。
論文背景
神經生成模型在機器翻譯中的成功應用,即神經機器翻譯(Neural Machine Translation, NMT),激發了研究人員對於神經對話模型的熱情。目前最常用的框架為Seq2Seq模型,其通常通過極大似然法,最大化回覆的概率得到輸出結果。但在上述任務中會存在一些問題,其中最嚴重的的一個是模型經常會產生一個通用的回覆(例如,我不知道),而不是一個有意義的特定回答。
在開放領域的對話中,我們經常發現對於一個輸入\(x\),會得到若干意思不一致,但是同樣可以接受的回答。如問“你吃飯了嗎”,回覆“還沒”,“不餓”,“剛吃完”,“不急”等等都可以被接受,因此對於\(x\)到\(y\)通常是一個一對多甚至多對多的關係,如下圖所示:
作者通過這些觀察,提出了一種統計重加權的損失函式,減少通用回覆。
論文方法
考慮對於語料庫\(C\),其對於樣本\((\mathbf{x,y})\),損失函式為:
\[
l(\mathbf{x,y},\theta)=-\sum_{t=1}^{T'}logp(y_t|\mathbf{x,y}_{[t-1];}\theta)
\]
全樣本集的損失函式為:
\[
L(C,\theta)=\sum_{(\mathbf{x,y})\in C}l(\mathbf{x,y},\theta)
\]
考慮通用回覆出現在很多\(\mathbf{x}\)對應的回覆中,因此,如果我們對於\(\mathbf{x}\)的兩個回覆中,如果某個回覆比另一個更加通用,他們會具有相同的損失項(根據公式1),公式2中會包含大量通用回覆,導致模型陷入區域性最優,即模型更加傾向於產生通用回覆。
基於上述觀察,但是我們應該提高通用回覆的損失,降低不通用回覆的損失。於是提出下面的損失函式:
\[
l_w(\mathbf{x,y},\theta)=w(\mathbf{y|x},\theta)l(\mathbf{x,y},\theta)
\]
在這裡,\(w(\mathbf{y|x},\theta)\)作為一個權重,取值範圍為\((0,1]\),對於樣本集\(C\)上的Batch,將其損失函式歸一化為:
\[
L(\mathbb{B},\theta)=\frac{\sum_{\mathbf{x,y\in{\mathbb{B}}}}l_w(\mathbf{x,y},\theta)}{\sum_{\mathbf{x,y\in{\mathbb{B}}}}w(\mathbf{y|x})}
\]
對於回覆,作者總結了兩個公共的屬性:
1. 經常出現在訓練語料庫中的回覆模式往往是通用的。在這裡,模式指的是整個句子或n-gram,可以通過回覆之間的相似性來描述。
2. 特別長或者特別短的回覆都應該避免,太長包含太多特定資訊,太短通用回覆
因此作者設計了權重:
\[
w(\mathbf{y|x},R,C)= \frac{\Phi(\mathbf{y}) }{max_{r\in R}\{\Phi(r)\}}
\]
其中\(\Phi(\mathbf{y})\)指:
\[
\Phi(\mathbf{y})=\alpha\varepsilon(\mathbf{y})+\beta\mathfrak{F}(\mathbf{y})
\]
\(\varepsilon(\mathbf{y})\)為:
\[
\varepsilon(\mathbf{y})=e^{-af\mathbf{(y)}}
\]
\(\mathfrak{F}(\mathbf{y})\)為:
\[
\mathfrak{F}(\mathbf{y})=e^{-c||\mathbf{y}|-|\mathbf{\hat{y}}||}
\]
這裡\(f(\mathbf{y})\)是回覆\(\mathbf{y}\)在所有回覆中的出現頻次,\(\hat y\)為所有回覆的平均長度,\(\{\alpha,\beta,a,c\}\)均為超引數。
實驗結果
作者從社交網站爬取了700萬對話作為實驗,用500作為測試,對句子通順度,句子相關性,可接受度等方面進行評測,同時對權重的多重設計的有效性進行了評測(只使用頻次RWE,長度RWF,都是用RWEF等)結果如下:
另外作者利用10萬測試集統計了常用通用回覆的頻次,明顯看到通用回覆變少。
個人總結
個人覺得方法還是很有啟發性的,通過改變權重,樣本原本的分佈,以此來達到減少通用回覆的目的。
但是模型需要顧慮:權重改變改變了樣本的分佈,這種改變是否合理?噪聲點是否因此被放大?在\(i.i.d\)條件下,人們通用回覆說得多是否代表通用回覆佔比本來就高,這樣改變的對話系統是否不符合對話方式?(如在原文中,舉例“孟記普洱茶專營店一貼”,通用回覆為“我也想喝”,而文章中的模型為“我喜歡喝茶”,是否前者更符合,後者更突兀?)
但是這篇文章依舊非常具有啟發性,感謝騰訊AILAB,武漢大學,蘇州大學的大牛們。
本文由飛劍客原創,如需轉載,請聯絡私信聯絡知乎:@AndyChanCD