利用非對話語料來豐富對話生成模型

qiangsha697發表於2020-07-23

導言

基於序列到序列(seq2seq)的神經網路模型在開放領域對話生成的任務上經常會出現低豐富度(low-diversity)的問題,即生成的回覆無趣且簡單。因此,作者提出利用非對話的文字語料去提高對話模型的多樣性。相比於傳統的對話語料,非對話的文字語料不僅容易獲得而且主題包羅永珍,因此作者從論壇、書籍和諺語中搜集了大量的非對話語料,結合迭代的回譯(back translation)方法將非對話語料融入到對話模型的語義空間內。在豆瓣和微博的資料集上,新模型在保持相關度的同時極大提高了生成回覆的多樣性。

模型背景與簡介

seq2seq  模型已經在很多語言生成任務上取得了很好地效果。然而,當把它應用到通用領域的閒聊生成上時,一個很大的問題就是它傾向於生成像“我不知道”、“好的”這樣的通用回覆。原因就在於在日常生活中,這些通用回覆大量存在於我們的對話裡面。Seq2seq模型會很容易得學習到用通用回覆就可以處理大部分對話場景。

目前降低seq2seq模型生成通用回覆的方法主要有兩點:(1)改變seq2seq的目標函式本身來讓非通用回覆獲得更高權重。但是模型依然在有限的對話語料上訓練,限制了包含廣泛主題的能力。(2)用結構化資訊、情感、個性等來增強訓練語料。但是,這需要昂貴的人工標註,很難應用到大規模的語料。

在這篇文章裡, 作者 提出利用非聊天語料來豐富通用的閒聊模型。與雙邊成對的聊天語料相比,非聊天語料往往更容易獲得,同時也更多樣、涵蓋不同主題、不需要進一步人工標註。 作者 從各種資料來源收集了超過一百萬條非聊天語料,包括論壇評論、諺語俗語、書籍片段等等。基於此 作者 提出了基於 迭代的回譯(  iterative back translation) 的訓練方法來利用這些非聊天語料,實驗結果顯示模型可以生成更多樣而且不失一致性的回覆。

非聊天語料收集

收集的非聊天語料每個句子長度不宜過長或者過短,可以跟日常聊天主題和風格貼近。 作者 考慮從以下三個來源收集:

  1. 論壇評論。論壇評論來源於知乎,在知乎上選擇了所有獲得超過十個喜歡,而且句子長度在10-30之間的評論。
  2. 諺語俗語。從多個網站抓取了諺語、俗語、名人名言、歇後語等等。這些語言大多比較精煉,可以直接用來豐富日常聊天。
  3. 書籍片段;從讀書app上選取了top 1000個最受喜愛的小說或者散文。同樣,只保留使用者高亮過的、長度在10-30之間的句子。

進一步對收集的語料做過濾處理,刪除了含有攻擊性和歧視性語言的句子。最後語料總數超過一百萬,其中有78萬論壇評論、5萬諺語俗語和20萬書籍片段。

模型結構

作者 用{x,y}來表示聊天語料D中的上文和回覆{context, response}對。t代表非聊天語料DT中的句子。 作者 首先考慮幾個baseline系統:

  1. 檢索式: 把DT中的句子作為候選答覆,每次要生成回覆時,就從中選出最合適的回覆。 作者 用反向seq2seq在D上訓練學出的p(x|y)來定義合適性。檢索式系統最大的瓶頸就在於只能從DT中選擇而不能生成全新的回覆。
  2. 加權平均:在D上訓練一個普通的seq2seq學習P(y|x)機率,在DT上訓練一個語言模型來學習L(t)的機率。在解碼回覆的時候, 作者 用p(y|x)和L(t)的加權平均,這樣可以考慮D和DT兩個語料中的資訊。
  3. 多工:把D和DT混合,在混合後的語料上同時訓練一個seq2seq模型和語言模型,解碼器在兩個模型之間共享引數,讓模型在多工環境下同時適應兩個語料的資訊。

除此以外, 作者 提出利用iterative back translation來利用非聊天語料。Iteractive back translation在機器翻譯上已經獲得了廣泛的使用,但是還沒有被用到聊天系統中。模型首先有一個初始化階段。初始化完成之後會不斷重複反向(backward)和前向(forward)階段。

在初始化階段, 作者 在聊天預料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-1、dist-2和ent-4來測量生成回覆的多樣性;adver來測量回復和上下文的一致性。對於back translation (BT)模型,彙報了模型在第一個和第四個iteration的結果。考慮到模型引入了非聊天語料資訊,生成的回覆很可能跟原始聊天語料中的詞頻率、主題有所不同,這樣在機器指標自動化評論中會有一個天然的劣勢。但是,可以看到模型除了在多樣性指標上獲得了顯著提高之外,在BLEU-2和Adver指標上也並沒有下降,說明模型在學習到多樣性的同時並沒有丟失其它方面的效能。

除了自動化評論, 作者 也進行了人工評價,結果如表4。 作者 隨機從每個語料中sample了500個例項,讓人工去評價每個模型生成的回覆的流暢性、多樣性和與上下文的一致性。實驗結果跟機器指標基本一致。

透過對生成回覆的結果分析,發現back translation可以學到非聊天語料重的新詞和句式,這樣就可以透過不同上下文生成在原有非聊天語料中不存在的回覆。

總結

在這篇文章裡, 作者 提出了一個新的方式來豐富通用領域的閒聊模型。透過用iterative back translation來有效利用非聊天語料,顯示模型可以從詞法和語義兩個層面都有效地豐富聊天回覆。在跟幾個基準模型對比後發現,模型顯著提高回覆的多樣性而不降低其它方面的效能。目前的工作邁出了利用非聊天語料來豐富聊天模型的第一步,未來可以結合更加精細化的過濾、篩選來針對不同領域來自適應地選擇利用的非聊天語料。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69976860/viewspace-2706420/,如需轉載,請註明出處,否則將追究法律責任。

相關文章