PaperWeekly 第二期
引
圖片來自paper The Dialog State Tracking Challenge Series- A Review人機對話系統通常包括上面的幾個部分,task-oriented chatbot重點關注的是DST和NLG問題,其中DST是核心問題,沒有太多關注這個比賽,但個人理解DST的作用類似於一張user conversation logs狀態表,記錄著用戶當前的狀態,以訂機票為例,這張表的key是預先設定好的slots,比如目的地、出發地、出發時間等等,與系統背後的業務數據表中的attributes相關聯,不斷地從user conversation中抽取相應的values來填充這個表格,或者將其定義為一個多分類任務,不斷地從對話中判斷這句話中包括哪些slots和values(這裡的values是多個分類結果),當狀態表中的信息存在空白時,bot會根據空白的slots來提問並獲取values,直到獲取到足夠的slots,給出用戶suggestion,或者進行相應的服務。
DST的問題解決之後,就是NLG的問題。傳統的NLG採用rule-based或者template-based的方法,需要很多的手動設置,橫向擴展性較差,維護成本高。最近流行的end-to-end方案很適合解決這個問題,給定用戶的query,結合著當前DST,自動生成response,完全的data driven,不需要什麼人工干預。
生成response除了rule-based和end-to-end的方法之外,工業界中更加常見的是retrieve-based的方法,即從龐大的example base中進行retrieve,一方面避免了NLG生成response時常遇到的grammatical問題,另一方面當前的IR技術很容易集成到此類bot系統中,降低了門檻。
本期的三篇paper中前兩篇都是關於task-oriented bot的NLG問題,第三篇是在retrieve-based bot的每個細小環節中應用了deep learning技術,並且將外部的非結構化文本作為數據源,從中select responses。
Semantically Conditioned LSTM-based Natural Language Generation for Spoken Dialogue Systems
關鍵詞:NLG、bot、自定義LSTM
來源:EMNLP 2015
問題:task-oriented bot NLG問題,給定了user query和DST,如何生成一個更好的response?
方法:
首先定義了兩個概念delexicalisation和lexicalisation,前一個的意思是將句子中的slot-value用特定的token來替換,像是一種抽象,比如用food來代替對話中的各種食物名稱;後一個的意思是將句子中的特定token還原回具體的value。
本文最大的亮點在於將傳統的LSTM重新定義,針對這個具體問題在LSTM cell部分中添加了一層,Dialogue Act Cell,通過gate機制來保留合適的信息,比如slot keywords,如下圖:
這一層cell更像是一個keyword detectors,整個NLG仍是採用encoder-decoder框架。
評論:
這層Dialogue Act Cell的目的是確保在decoding部分,不會遺漏任何一個slot,所以專門增加了一層cell來encoding act、slot-value信息,在生成時作為context vector。我覺得model的這個設計與attention機制有一點類似,只是attention更加地平滑,對每個word都有一個weight,而不是本文中的gate,非0即1。整體來說,自定義的cell是一個很有啟發性的思路,針對具體問題的特點,修改現有的cell結構,也許會起到非常關鍵的作用。
Natural Language Generation in Dialogue using Lexicalized and Delexicalized Data
關鍵詞:NLG、bot、自定義LSTM
來源:arXiv 2016.06.11 cs.CL
問題:task-oriented bot NLG問題,是第一篇的升級版。
方法:
本文是針對第一篇文章進行的改進版,改進的地方在於不僅僅利用了delexicalisation進行訓練,而且利用了lexicalisation數據,從而提高了準確率,基本的模型框架與第一篇文章類似,不同的在於輸入的處理,就是dialogue act的表示,如下圖:
每一個act representation由兩部分組成,一部分是act、slots的one-hot表示,與文章一類似的結構,另一部分是由value的每個word embedding組合而成。
task-oriented bot NLG存在的一個更加現實的問題是data規模太小,cover的features太少,生成質量不高,本文針對這一問題,用相似domain的、大量的reviews或者其他相關數據作為corpus預訓練出一個效果不錯的LM,在decoding部分採用預訓練好的LM模型權重進行NLG。
評論:
本文中最值得借鑒的地方在於transfer learning,雖然DL效果很好,但實際應用中常常遇到data規模太小的問題,DL難以發揮作用,但如果從大量相似的domain data中學習一些表示模型,然後遷移到待解決的問題上,這是一件幸事,也就是人們常說的舉一反三。混合大量的相似domain數據,會cover到更豐富的features,為DL提供了廣闊的舞台。
DocChat: An Information Retrieval Approach for Chatbot Engines Using Unstructured Documents
關鍵詞:Retrieve-Based Bot,Unstructured Documents
來源:ACL 2016
問題:如何從大量非結構化文本中select出合適的response返回給用戶?
方法:
本文研究的問題是給定大量的非結構化的documents和用戶的query,從中選擇並返回一個滿意的response,典型的IR問題,作者將解決方案分為三步:
1、response檢索,根據query,從documents中找到合適的N句話作為候選。
2、response排序,將候選中的utterances進行排序。
本文大多數的工作在ranking model上,提出了7種level的features來對candidate進行打分,通過實驗發現sentence-level feature最有區分度。
3、response觸發,並不是一定可以從documents找到合適的response,所以最後添加一個分類器,來判斷最優的response是否合適,合適則輸出,不合適則輸出空。
評論:
本文解決的問題思路比較簡單,但中間用到了很多複雜的DL model,個人感覺有點殺雞用牛刀。本文的思路更加適合informative式的query,並不適合娛樂和閑聊。但用外部知識,尤其是大量的非結構化的、可能還帶有雜訊的資源來提供response,是一個很不錯的思路,彌補了只用training data或者很有限的examples存在的局限性問題,如果可以將兩者進行結合,是一個非常好的實用方案。
Tips
引起大家的討論是一件挺難的事情,所以這一期不再提出問題。之前有同學問如何讀paper,這裡簡單分享一個簡單的tip,後續的每一期可能都會分享一個tip。
1、如果剛剛進入一個領域,建議讀一些這個領域的survey或review類型的paper,這類型的paper基本上會將最近的方法歸類進行總結,從一個較高的層次來解讀每一篇paper的貢獻和優缺點,對快速了解一個領域很有幫助。如果你關注的這個領域沒有survey,那麼恭喜你,說明你可能走到了前沿,用關鍵詞去google一篇或者幾篇相關的new paper,讀Related Work那一節,相信你會有所收穫。(註:這個方法是從清華大學劉知遠博士那裡學來的)
推薦閱讀:
※機器學習是什麼?
※大數據與深度學習區別?
※掌握機器學習數學基礎之優化[1](重點知識)
※機器人的自我修養:該如何成為網紅
※【活動預告】近期更新的大數據、機器學習線上線下沙龍活動(12場)
TAG:深度学习DeepLearning | 机器学习 | 自然语言处理 |