对话系统答非所问?快试试这篇ACL'21的连贯性评估大法
文 | 頁眉3
編 | 小軼
背景
當我們在絞盡腦汁地想怎么設計一個對話系統的時候,我們當然希望最后訓練出來的系統能越像人越好,輸出的回復很連貫,很有趣,很體貼。而其中,連貫性可以說是最基本的要求之一了,畢竟不連貫的回復往往會讓人覺得這個對話系統很笨。
至于連貫性的定義,簡單來說其實就是對話系統說的話在語法和語義上夠不夠連貫。比如說,當一個人說“我今天中午吃了面條”,對話系統如果回復“我吃也面面條”,那就是語法不連貫;如果回復“我喜歡跑步”,那就是語義不連貫。
定義有了,那現在問題就來了,要怎么去評估對話系統的連貫性呢?針對這個問題,學術界最開始就是奉行“拿來主義”,把之前機器翻譯任務上的自動指標拿來評估對話連貫性,比如BLEU[1],衡量對話系統輸出回復和給定參考回復之間的N-gram重疊程度。但這種指標存在一個致命傷:缺乏語義上的考量,容易錯怪“好人”,也容易聽信“壞人”。比如說,參考回復是 “真巧,我中午也吃了面條”,對話系統的回復是 “哈哈哈我也吃了”,這種情況,對話系統回復是連貫的,只不過和參考回復相比換了個表述,但BLEU只看這兩個回復在字面上像不像,就會認為回復是不連貫的。又比如說,對話系統的回復是 “真巧,我中午也吃了條”,和參考回復只有一字之差,但意思就不對了,是不連貫的,但BLEU會覺得它們很像,認為對話系統是連貫的。
發現不對勁后,學術界為了擺脫BLEU這種生硬的字面評估,轉向研究基于深度神經網絡的自動指標,希望神經網絡在訓練時記住各種連貫和不連貫的情況,并能泛化到訓練時沒見過的情況。模型結構往往是一個神經網絡作為編碼器(比如RNN, Transformer),來對輸入的對話歷史和對話回復提特征,然后再接一個分數預測模塊來將特征轉變為連貫性分數。從結果上看,這類指標相比前面提到的BLEU這類指標,確實在整體上能給出更為準確的評估結果。
這類工作的訓練目標,最常采用的損失函數還是 cross entropy loss 或 margin ranking loss,并采用無監督的方式來訓練。而所謂無監督,其實就是不自己標數據,將原始對話數據作為正樣本,再用一些啟發式策略為每一個正樣本自動生成一個相應的負樣本(最直接粗暴的就是從對話語料中隨機選一個出來),然后按照前面提到的兩種loss之一,讓指標在訓練過程中盡可能將正負樣本區分開。比如說18年提出的RUBER[2],19年提出的BERT-RUBER[3],以及去年提出的GRADE[4],整體思想都是如此。
這種訓練方式會存在兩個局限:
將對話連貫性評估問題簡化為了一個是否問題,只要求指標能夠區分出連貫與不連貫,而忽略了其中具體的連貫性程度。如圖1所示,這與人工打分(比如打1到5分)是有明顯區別的;
使用某種啟發式負采樣策略來人為獲取負樣本往往存在偏置,無法準確學習到真實的人工打分標準。
為了解決上述局限,今天要介紹的這篇工作提出了一個新型指標訓練框架 QuantiDCE,旨在實現可量化的對話連貫性評估指標。該文已被ACL 2021 主會錄用,并獲得了4/4/4的 review 評分,受到評審人的一致認可。
論文標題:
Towards Quantifiable Dialogue Coherence Evaluation
論文鏈接:
https://arxiv.org/abs/2106.00507
開源代碼:
https://github.com/James-Yip/QuantiDCE
方法
本文提出的 QuantiDCE框架包括兩個訓練階段:MLR預訓練(Multi-Level Ranking pre-training)和 KD微調(Knowledge Distillation fine-tuning)。
▲圖2 QuantiDCE整體訓練流程模型結構方面,采用BERT作為特征提取模塊對輸入的context-response pair進行編碼,然后將編碼后的特征輸入到一個三層MLP中,得到最終的連貫性分數輸出:
在MLR預訓練階段,我們希望能夠讓指標模型在沒有連貫性分數標注作為監督信息的情況下,初步學習到對不同連貫性程度的對話回復的粗粒度判斷。對此,本文提取了一個多層級排序損失函數(MLR loss)作為訓練目標。MLR loss 具體包括三個子 loss :separation loss, compactness loss 以及 ordering loss。
其中,separation loss旨在讓具有不同連貫性程度的context-response pairs彼此遠離;compactness loss是讓連貫性程度相同的pairs相互靠近;而最后的ordering loss則是為了約束不同連貫性程度的pairs之前滿足一個從小到大的排序關系,例如最不連貫的pair對應的分數要小于中等連貫的,中等連貫的又要小于最連貫的。損失函數具體公式如下:
接下來的KD微調階段,主要是希望指標模型能夠在前面預訓練的基礎上,進一步學習到人類打分的真實標準。為此,文章作者用了少量的人工打分標注數據作為ground truth,計算模型預測分數和人工真實分數之間的MSE loss進行優化。另外,因為用于微調的數據量很少,模型很容易會出現過擬合的現象,導致之前在預訓練階段學習到的量化知識都被遺忘掉。針對這個問題,我們在MSE loss的基礎上,引入了一個知識蒸餾正則項,用于在微調階段保留預訓練階段學習到的知識。具體來說,我們將預訓練后的指標模型(參數固定)作為teacher,待微調的指標模型作為student,并借鑒TinyBERT[5]的蒸餾目標,約束student的各層輸出以及中間層注意力矩陣與teacher的保持一致。損失函數具體公式如下:
實驗結果
實驗在一個公開的指標評測benchmark[4]上進行。將QuantiDCE訓練的指標模型與現有的八個自動指標進行了比較。實驗結果顯示,本文指標取得了最佳性能,并比目前的SOTA結果平均高五個點左右。
▲表1 各個自動指標在ConvAI2和EmpatheticDialogues數據集上的性能對比另外,針對MLR預訓練階段和KD微調階段,我們還嘗試了各種不同的損失函數進行比較,進一步驗證了我們提出的MLR loss以及KD-MSE loss的有效性。圖二也展示了模型采用不同損失函數的可視化結果。可以看到,在預訓練階段優化MLR loss可以使得指標模型能夠有效地區分出不同連貫性程度的對話輸入。
▲表2 采用不同預訓練損失函數的性能對比▲圖3 采用不同預訓練損失函數時,模型中間特征(上)及最終分數輸出(下)的可視化結果▲表3 采用不同微調損失函數的性能對比最后還進行了兩組消融實驗。(1)單獨去除QuantiDCE訓練過程中用到的其中一個損失函數,研究了本文提出的各個損失函數對最終性能影響的重要程度;(2)對微調階段使用的數據量進行了實驗,研究少樣本設定下數據量對模型性能的影響。
▲表4 消融實驗(1):去除某個特定損失函數的性能對比▲圖 3 消融實驗(2):微調階段采用不同數據量的性能變化趨勢總結
本文針對對話連貫性評估問題提出了一個兩階段指標訓練框架QuantiDCE。通過兩階段的遞進式訓練,逐步讓指標模型掌握量化的能力,從而能夠輸出與人工打分更為一致的連貫性分數。實驗上,本文將QuantiDCE訓練出來的指標模型與當前現有的各種自動指標進行了對比,并取得了最佳性能,驗證了該框架的有效性。
尋求報道、約稿、文案投放:
添加微信xixiaoyao-1,備注“商務合作”
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
?
[1] Kishore Papineni, et al. BLEU: a Method for Automatic Evaluation of Machine Translation. In ACL 2002.
[2] Chongyang Tao, et al. Ruber: An unsupervised method for automatic evaluation of open-domain dialog systems. In AAAI 2018.
[3] Sarik Ghazarian, et al. Better automatic evaluation of open-domain dialogue systems with contextualized embeddings. In Proceedings of the Workshop on Methods for Optimizing and Evaluating Neural Language Generation, ACL 2019.
[4] Lishan Huang, et al. GRADE: Automatic Graph-Enhanced Coherence Metric for Evaluating Open-Domain Dialogue Systems. In EMNLP 2020.
[5] Xiaoqi Jiao, et al. TinyBERT: Distilling BERT for Natural Language Understanding. In Findings of EMNLP 2020.
總結
以上是生活随笔為你收集整理的对话系统答非所问?快试试这篇ACL'21的连贯性评估大法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Calibration: 一个工业价值极
- 下一篇: 机器学习竞赛中,为什么GBDT往往比深度