A Network-based End-to-End Trainable Task-oriented Dialogue System
構建一個task-oriented的bot,比如訂票,技術支持服務等等,是一件非常難的事情,因為對於特定任務,訓練數據會非常非常有限。在學術界,bot領域現在最流行的解決方案之一是seq2seq,在一個非常龐大的open-domain數據集上進行訓練,得到一些效果不錯的模型,但難以應用到具體task中,因為這類模型無法做到與資料庫交互以及整合其他有用的信息,從而生成實用的response。還有一種非常流行的方案是reinforcement learning,上一篇分享的paperDeep Reinforcement Learning for Dialogue Generation將兩者有機地結合在了一起,增強學習可以使得response生成時考慮更長遠的影響。
本文將分享的這篇paper,針對task-oriented的bot問題,平衡了兩種流行方案的優缺點,提出了一套有參考價值的、具有實際意義的seq2seq解決方案。paper的題目是A Network-based End-to-End Trainable Task-oriented Dialogue System,本文於2016年5月20日發表於arxiv上,作者是來自劍橋大學Dialogue System Group的博士生Tsung-Hsien Wen,該組專門研究chatbot相關技術,發表過大量與之相關的paper,後續會更多地關注該組的工作。
上圖是本文方案的架構示意圖,分為五個部分。下面分別進行介紹:
1、Intent Network
這個部分可以理解為seq2seq的encoder部分,將用戶的輸入encode成一個vector z(t)。encoder部分分別用了lstm和cnn兩種模型對該輸入進行建模。這兩種句子表示的方法在之前的文章中都有介紹。
2、Belief Trackers
這個部分又被稱作是Dialogue State Tracking(DST),是task-oriented bot的核心部件。本文的Belief Trackers具有以下的作用:
支持各種形式的自然語言被映射成一個有限slot-value對集合中的元素,用於在資料庫中進行query。
追蹤bot的state,避免去學習那些沒有信息量的數據。
使用了一種weight tying strategy,可以極大地減少訓練數據的需求。
易擴展新的組件。
這個組件的輸入時用戶的input,輸出是一個informable slot和requestable slot的概率分布,這裡的informable slot是指food,price range和area(以訂餐為例),用來約束資料庫中的查詢,requestable slot是指address,phone,postcode等一些可以被詢問的值。這裡會定義一個針對具體task的知識圖譜,來表示這些slot之間的關係,每個slot都會定義一個tracker,tracker的模型如上圖所示,包括一個CNN特徵提取模塊和一個Jordan型的RNN模塊,CNN不僅僅對當前的input進行處理,還對上一輪的user input進行處理,綜合起來作為RNN的輸入。
這個組件的意義在於獲取到預先定好的知識圖譜中每個slot的分布,就是說弄清楚用戶在這輪對話中的需求是哪個詞或者片語。
3、Database Operator
資料庫查詢的輸入來自於Belief Trackers的輸出,即各種slot的概率分布,取最大的那個作為DB的輸入,進行查詢,獲取到相應的值。
4、Policy Network
這個組件是像一個膠水,起到粘合其他上面三個組件的作用。輸入是上面三個組件的輸出,輸出是一個向量。
5、Generation Network
最後一個組件是生成模型,本質上是一個語言模型,輸入是Policy Network的輸出,輸出是生成的response,再經過一些處理之後可以返回給用戶了。這裡的處理主要是將response中的slot,比如s.food還原成真實的值。生成部分用簡單的LSTM-LM可以做,用Attention Model也可以做,效果會更好。
數據的準備這部分,利用了眾包進行收集,一共採用了680輪對話作為訓練數據,資料庫中保存了99個飯館,3個informable slots和7個requestable slots。
訓練分為兩個階段,第一階段是訓練belief trackers,得到模型之後,更新參數,對生成網路中的語言模型進行訓練,得到full model,batch size取1。
bot模型自動評價這塊是一個非常難的事情,本文選擇了BLEU score、entity matching rate和objective task success rate,本文模型均取得了不錯的結果。另外,通過人工評價對本文模型和rule-based進行了對比,結果看下圖:
最後paper給出了一種生成的句子向量的二維圖,如下圖:
幾乎同一類話都被聚集到了相似的位置上,驗證了模型的有效性。
開放域的bot只是根據query生成一句response,雖然質量可以做到很高,但實用價值不大。面向具體業務的閉域bot一直難以應用seq2seq的解決方案在於,無法將大量的專業信息建模到模型中來,包括:歷史信息,用戶身份信息,業務信息等等,本文打開了一扇窗,就是將具體的業務信息和歷史信息加到了模型中,並且通過將對話中的slot詞轉換為一些slot表示,就好比構建了很多的模板,降低了對訓練數據的需求,避免了seq2seq在應用時存在的問題。如果再考慮上Jiwei Li的那篇A Persona-Based Neural Conversation Model中對用戶信息的建模,bot的實用價值就會更大,用data來解決真正的業務問題就會更進一步。
一點思考,歡迎交流。
推薦閱讀:
※基於遷移學習的樹葉分類
※深度學習-用PaddlePaddle調戲郵件詐騙犯(1)
※吳恩達的新課
TAG:自然语言处理 | 深度学习DeepLearning | 机器学习 |