利用非對話語料來豐富對話生成模型
導言
基於序列到序列(seq2seq)的神經網路模型在開放領域對話生成的任務上經常會出現低豐富度(low-diversity)的問題,即生成的回覆無趣且簡單。因此,作者提出利用非對話的文字語料去提高對話模型的多樣性。相比於傳統的對話語料,非對話的文字語料不僅容易獲得而且主題包羅永珍,因此作者從論壇、書籍和諺語中搜集了大量的非對話語料,結合迭代的回譯(back translation)方法將非對話語料融入到對話模型的語義空間內。在豆瓣和微博的資料集上,新模型在保持相關度的同時極大提高了生成回覆的多樣性。
模型背景與簡介
seq2seq 模型已經在很多語言生成任務上取得了很好地效果。然而,當把它應用到通用領域的閒聊生成上時,一個很大的問題就是它傾向於生成像“我不知道”、“好的”這樣的通用回覆。原因就在於在日常生活中,這些通用回覆大量存在於我們的對話裡面。Seq2seq模型會很容易得學習到用通用回覆就可以處理大部分對話場景。
目前降低seq2seq模型生成通用回覆的方法主要有兩點:(1)改變seq2seq的目標函式本身來讓非通用回覆獲得更高權重。但是模型依然在有限的對話語料上訓練,限制了包含廣泛主題的能力。(2)用結構化資訊、情感、個性等來增強訓練語料。但是,這需要昂貴的人工標註,很難應用到大規模的語料。
在這篇文章裡, 作者 提出利用非聊天語料來豐富通用的閒聊模型。與雙邊成對的聊天語料相比,非聊天語料往往更容易獲得,同時也更多樣、涵蓋不同主題、不需要進一步人工標註。 作者 從各種資料來源收集了超過一百萬條非聊天語料,包括論壇評論、諺語俗語、書籍片段等等。基於此 作者 提出了基於 迭代的回譯( 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)階段。
在初始化階段, 作者 在聊天預料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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【對話生成】常見對話生成資料集整理,含下載連結(更新至2022.06.04)
- 對話即資料流:智慧對話的新方法
- OpenAI推出ChatGPT對話式AI模型OpenAIChatGPT模型
- 西方文明來源於對話
- 多輪對話之對話管理(Dialog Management)
- 多人對話語篇解析簡介
- ChatGLM3-6B:新一代開源雙語對話語言模型,流暢對話與低部署門檻再升級模型
- Springboot --- 使用國內的 AI 大模型 對話Spring BootAI大模型
- IBM對話設計指南:對話聊天框設計挑戰IBM
- IDC:對話式人工智慧——引領對話模式變革人工智慧模式
- 基於多模態大模型的人機對話大模型
- 【C++】【MFC】模態和非模態對話方塊C++
- 模態和非模態對話方塊(簡單易懂!)
- Dialog對話方塊
- 以文件為額外知識的生成式對話
- 利用Layer元件彈出多個對話方塊(非巢狀)與關閉及重新整理元件巢狀
- 白話生成對抗網路 GAN,50 行程式碼玩轉 GAN 模型!【附原始碼】行程模型原始碼
- CCAI 2020 | 探秘AI的未來:對話Yolanda GilAI
- Visual Studio Code加入對Python的快速、功能豐富的語言支援:PylancePython
- 登入對話方塊
- 規定對話方塊
- 對話論文總結
- 對話系統綜述
- 最新任務型對話資料集大全
- 讀懂智慧對話系統(1)任務導向型對話系統
- 在 Unity 多人遊戲中實現語音對話Unity遊戲
- 使用Django-Channels實現websocket通訊+大模型對話DjangoWeb大模型
- 智慧聊天對話機器人的對比機器人
- 電話機器人是如何實現對話的?機器人
- 語音生成模型 PlayDialog:可生成對話播客、旁白;小米 AI 眼鏡將於明年 Q2 釋出丨 RTE 開發者日報模型AI開發者日報
- 任務型對話系統
- DialogPane對話方塊佈局
- Flutter Widgets 對話方塊-DialogFlutter
- “鏈”間對話新方式,get!
- flutter demo (四):對話方塊Flutter
- 對話系統的前世今生
- 用區塊鏈實現造富神話?你可能對它有些誤解區塊鏈
- 微軟小冰:全雙工語音對話詳解微軟