本文基於ACL-2020論文《Diversifying Dialogue Generation with Non-Conversational Text》,論文做者是騰訊微信AI團隊。算法
導言
基於序列到序列(seq2seq)的神經網絡模型在開放領域對話生成的任務上常常會出現低豐富度(low-diversity)的問題,即生成的回覆無趣且簡單。所以,做者提出利用非對話的文本語料去提升對話模型的多樣性。相比於傳統的對話語料,非對話的文本語料不只容易得到並且主題一應俱全,所以做者從論壇、書籍和諺語中搜集了大量的非對話語料,結合迭代的回譯(back translation)方法將非對話語料融入到對話模型的語義空間內。在豆瓣和微博的數據集上,新模型在保持相關度的同時極大提升了生成回覆的多樣性。微信
模型背景與簡介
seq2seq 模型已經在不少語言生成任務上取得了很好地效果。然而,當把它應用到通用領域的閒聊生成上時,一個很大的問題就是它傾向於生成像「我不知道」、「好的」這樣的通用回覆。緣由就在於在平常生活中,這些通用回覆大量存在於咱們的對話裏面。Seq2seq模型會很容易得學習到用通用回覆就能夠處理大部分對話場景。網絡
目前下降seq2seq模型生成通用回覆的方法主要有兩點:(1)改變seq2seq的目標函數自己來讓非通用回覆得到更高權重。可是模型依然在有限的對話語料上訓練,限制了包含普遍主題的能力。(2)用結構化信息、情感、個性等來加強訓練語料。可是,這須要昂貴的人工標註,很難應用到大規模的語料。app
在這篇文章裏,做者提出利用非聊天語料來豐富通用的閒聊模型。與雙邊成對的聊天語料相比,非聊天語料每每更容易得到,同時也更多樣、涵蓋不一樣主題、不須要進一步人工標註。做者從各類數據源收集了超過一百萬條非聊天語料,包括論壇評論、諺語俗語、書籍片斷等等。基於此做者提出了基於迭代的回譯( iterative back translation)的訓練方法來利用這些非聊天語料,實驗結果顯示模型能夠生成更多樣並且不失一致性的回覆。函數
非聊天語料收集
收集的非聊天語料每一個句子長度不宜過長或者太短,能夠跟平常聊天主題和風格貼近。做者考慮從如下三個來源收集:性能
- 論壇評論。論壇評論來源於知乎,在知乎上選擇了全部得到超過十個喜歡,並且句子長度在10-30之間的評論。
- 諺語俗語。從多個網站抓取了諺語、俗語、名人名言、歇後語等等。這些語言大多比較精煉,能夠直接用來豐富平常聊天。
- 書籍片斷;從讀書app上選取了top 1000個最受喜好的小說或者散文。一樣,只保留用戶高亮過的、長度在10-30之間的句子。
進一步對收集的語料作過濾處理,刪除了含有攻擊性和歧視性語言的句子。最後語料總數超過一百萬,其中有78萬論壇評論、5萬諺語俗語和20萬書籍片斷。學習
模型結構
做者用{x,y}來表示聊天語料D中的上文和回覆{context, response}對。t表明非聊天語料DT中的句子。做者首先考慮幾個baseline系統:網站
- 檢索式: 把DT中的句子做爲候選答覆,每次要生成回覆時,就從中選出最合適的回覆。做者用反向seq2seq在D上訓練學出的p(x|y)來定義合適性。檢索式系統最大的瓶頸就在於只能從DT中選擇而不能生成全新的回覆。
- 加權平均:在D上訓練一個普通的seq2seq學習P(y|x)機率,在DT上訓練一個語言模型來學習L(t)的機率。在解碼回覆的時候,做者用p(y|x)和L(t)的加權平均,這樣能夠考慮D和DT兩個語料中的信息。
- 多任務:把D和DT混合,在混合後的語料上同時訓練一個seq2seq模型和語言模型,解碼器在兩個模型之間共享參數,讓模型在多任務環境下同時適應兩個語料的信息。
除此之外,做者提出利用iterative back translation來利用非聊天語料。Iteractive back translation在機器翻譯上已經得到了普遍的使用,可是尚未被用到聊天系統中。模型首先有一個初始化階段。初始化完成以後會不斷重複反向(backward)和前向(forward)階段。spa
在初始化階段,做者在聊天預料D上同時訓練一個forward模型pf(y|x)和backward模型pb(x|y),訓練目標以下:翻譯
在backward階段,做者用backward模型建立僞對(pseudo pair)來訓練forward模型。目標函數爲:
同理,在forward階段,做者用forward模型建立僞對(pseudo pair)來訓練backward模型。目標函數爲:
具體的算法以下所示:
實驗結果
做者在兩個中文對話任務上進行了實驗:豆瓣和微博。做者還對比了standard seq2seq with beam search、MMI、diverse sampling、nucleus sampling和CVAE模型。這些模型都只在聊天語料上進行訓練,用了不一樣目標函數的改進來促進回覆的多樣化生成。
做者首先進行了自動化評論。在表3中,做者彙報了各個模型的BLEU-2分數來測量跟ground-truth的overlap;dist-一、dist-2和ent-4來測量生成回覆的多樣性;adver來測量回復和上下文的一致性。對於back translation (BT)模型,彙報了模型在第一個和第四個iteration的結果。考慮到模型引入了非聊天語料信息,生成的回覆極可能跟原始聊天語料中的詞頻率、主題有所不一樣,這樣在機器指標自動化評論中會有一個自然的劣勢。可是,能夠看到模型除了在多樣性指標上得到了顯著提升以外,在BLEU-2和Adver指標上也並無降低,說明模型在學習到多樣性的同時並無丟失其它方面的性能。
除了自動化評論,做者也進行了人工評價,結果如表4。做者隨機從每一個語料中sample了500個實例,讓人工去評價每一個模型生成的回覆的流暢性、多樣性和與上下文的一致性。實驗結果跟機器指標基本一致。
經過對生成回覆的結果分析,發現back translation能夠學到非聊天語料重的新詞和句式,這樣就能夠經過不一樣上下文生成在原有非聊天語料中不存在的回覆。
總結
在這篇文章裏,做者提出了一個新的方式來豐富通用領域的閒聊模型。經過用iterative back translation來有效利用非聊天語料,顯示模型能夠從詞法和語義兩個層面都有效地豐富聊天回覆。在跟幾個基準模型對比後發現,模型顯著提升回覆的多樣性而不下降其它方面的性能。目前的工做邁出了利用非聊天語料來豐富聊天模型的第一步,將來能夠結合更加精細化的過濾、篩選來針對不一樣領域來自適應地選擇利用的非聊天語料。