[譯]Deep Learning for Chatbots, Part 1 – Introduction原文地址
聊天機器人(chatbots),又稱為對話系統(Conversational Agents or Dialog Systems),是實下很熱門的一個議題。微軟就在這個領域下了很大的賭注,而且類似微軟的還包括有臉書(推出了虛擬助手M)、蘋果(有廣為人知的Siri)、谷歌、微信和Slack。一大波新興初創公司想要通過這個技術改變客戶與服務提供商的交互方式,如APPOperator和x.ai,如聊天框架chatfuel,又比如聊天開發庫Howdy's Botkit。微軟最近發布了它們自己的機器人開發框架。
很多公司都希望研發一個機器人能夠擁有與人類對話相近的效果,而且它們還聲稱要用NLP(Natural Language Process自然語言處理)和DL(Deep Learning深度學習)技術來實現它。但是所有關于AI的宣傳都很難使它們所設想的成為現實。
在這個系列文章中,我想要重溫一些用于構建對話系統的深度學習技術,從我們目前的技術水平開始,來聊一聊什么是能夠做到的,什么是在短時間內不可能實現的。這篇文章將作為一個介紹,并且在接下來的文章中深入實現細節。
一、模型的研究方向分類
1. 基于答案抽取的模型VS生成模型
基于答案抽取的模型(屬于較為簡單的方式),使用一個預定義好答案的知識庫基于輸入和文本啟發式的選擇一個最合適的回答。這個啟發式方法可以是基于表達式規則的匹配,或者更復雜的基于機器學習的分類器。這些系統并不會生成新文本,它們只是從固定的集合中選擇一個作為響應。
生成模型(復雜而艱難的方式),它并不依賴于預定義答案庫。它能從無到有生成新的響應。生成模型通常用在機器翻譯技術上,而這里的‘翻譯‘則并不是從一種語言到另一種語言,取而代之的是從輸入到輸出。

兩種方法各有優缺點。由于是手工的響應,所以基于答案抽取的模型不會發生語法上的錯誤。但它無法處理沒有合適的預定義響應的實例。同樣的,這種模型不能在對話中聯系上下文信息,比如之前提到的名字等。生成模型則更‘智能‘,它能提到之前輸入的實體信息讓人們感覺在和一個真人聊天一樣。然而,這種模型很難訓練,并且很容易產生語法錯誤,而且還需要海量的訓練數據。
深度學習技術在兩種模型上都能應用,但是研究者似乎更傾向于生成模型的方向。seq2seq是目前最合適的文本生成模型,研究者希望在這個領域快速取得突破。然而我們在設計一個工作良好的生成模型的目標上還處于一個非常早期的階段。目前工業界的生產系統上也多半是基于抽取的模型。
2. 短對話VS長對話
更長的對話顯然自動化處理起來更加困難。一方面是短文本只要為單一的輸入創建單一的輸出,比如,你從用戶那收到一個特定的問題然后你響應一個合適的答案。而長對話則需要你在多輪對話之后還保持之前對話的信息。客戶向導對話就是一個典型有多個問題的長對話。
3. 開放域VS限定域
開放域要求用戶可以在任何領域開始一段對話。在有明確意圖和目標的情況下這不是必須的。在社交媒體如Twitter和Reddit上的對話就是一個典型的開放域對話--對話主題可以在任意方向上展開。需要無數的主題和事實知識才能創建合理的響應讓它變得異常的困難。
限定域的輸入空間和輸出空間都被限定在一個量級內,因為系統只要實現一個具體的目標。技術支持和購物向導就是一個典型的限定域問題。這些系統不需要與你討論政治,它們只需要盡可能的有效的完成指定的任務即可。當然,用戶仍然可以在任意想要的領域展開一段對話,但是,系統并不需要一定處理這些實例,用戶也不會期望得到一個很好的響應。
二、挑戰
在構建對話模型的工作中,有很多活躍的研究領域,其中有些明顯的也有一些不那么常見的挑戰。
1. 上下文結合(incorporating context)
要生成一個合理的響應,系統需要結合語義上下文和環境上下文。在長對話中,人們要要記住雙方說過什么又和對方交換過什么信息。這就是一個語境的例子。最常見的方法是用詞向量技術把對話轉變為向量表示,但是在長對話中使用這種技術也是一個挑戰。論文Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Models和Attention with Intention for a Neural Network Conversation Model都是在這個方向上進行了嘗試。其中一個需要結合一些其它語境數據如時間、地點、或者用戶信息。
2. 個人相干性(coherent personality)
在生成響應的時候系統必須對語義相同的輸入生成一致的回答。比如,你想要在‘你多大了?’和‘你幾歲了?’這兩個問題上得到一樣的回復。這聽起來很簡單,但是要把這些特定的知識和個人相干的信息放到模型當中是一個非常難的研究課題。很多系統經過學習能生成一些似是而非的回答,但是它們都沒有能訓練出一個能生成確定語義信息的模型出來。通常認為這是因為訓練的數據來自于不同的用戶。論文A Persona-Based Neural Conversation Model在明確的個人模型這個方向上走出了第一步。

3. 模型評估
評估對話系統的一個思路是計量這個系統是否能令人滿意的完成一個任務,比如在對話中解決用戶向導的問題。但是這個方法的代價很大,因為這需要人工的判斷和評估。在開放域中有些情況甚至沒有一個能明確定義的目標結果。在機器翻譯領域常見的一個指標BLEU,它是基于文本匹配的,所以也不適合用在對話模型中評估響應的結果,因為它可能包含完全不同的單詞和短語。事實上,在論文How NOT To Evaluate Your Dialogue System: An Empirical Study of Unsupervised Evaluation Metrics for Dialogue Response Generation的研究中發現沒有任何一個通用的指標與人的判斷有關。
4. 意圖和多樣性
一個常見的問題是生成模型傾向于產生通用的回答,比如‘真叼!’或者‘我不懂。’之類的東西,它在面對很多輸入實例時都管用。谷歌早期的智能回復系統就往往不管你輸入什么都回答你‘我喜歡你喲’這樣的話來。這大部分原因是受這個系統所用的訓練語料和算法的影響。Some researchers have tried to artificially promote diversity through various objective functions一些研究者也嘗試了通過增加目標函數來人工的提高響應的多樣性。然而,人們一般根據指定的輸入和意圖來生成不同的回答,而由于生成模型訓練并沒有說攜帶指定的意圖所以它們都卡在了這個多樣性上。
三、它究竟效果如何?
以現有的尖端研究來看,我們究竟走到了哪,這個系統的效果如何?讓我們回過頭來再看看兩個實現方向,基于答案抽取的系統在開放域是明顯行不通的,因為你手工編纂的答案不可能覆蓋所有的情況,而一個開放域的生成模型則差不多就是一個‘強智能’了,因為它要處理所有的場景,我們離這個目標還有很長的路要走(當然很多研究者正在這條路上前行)。
這也給我們留下了一個問題,雖然在限定域這兩種模型都是適用的,但是對話越長、上下文越重要,這個問題就越難以解決。
在最近的一個采訪中,百度首席科學家吳恩達指出:
'深度學習現如今最大的價值在那些你能夠獲得足夠的數據量的子領域,而一個它無法做到的例子就是:實現一段有意義的對話。有一些演示,如果你挑一些對話片段出來,它看上去貌似一段有意義的對話,但其實如果你真的自己來嘗試一番,你會發現它很快就脫軌了。'
很多初創公司對外提供對話模型的接口并聲稱保證它們能夠自動化,因為它們已經獲取了足夠的數據,那只有一種可能,就是它們是在一個很狹窄的領域--比如在聊天中打車。任何一個稍微大一點的領域中(比如銷售的電子郵件)就超越了我們目前能做的極限。然而,我們還是可以用這個系統發出和修正回答來幫助人工,這是目前切實可行的。
在生產系統中出現語法錯誤是代價非常高的問題,用戶很可能就因此離去。這也是為何目前大部分的系統都采用基于答案抽取的模型的原因,這個模型不會有語法上的錯誤和冒犯性的語句。如果一個公司能獲取這樣一個手工的大數據庫那這個生成模型就是可行的--但是它們需要通過一些其它的技術來防止發生類似微軟Tay犯下的錯誤。
四、接下來要寫的和一些值得一看的文章列表
在下一章中,我們將深入聊天機器人這一技術的細節,并基于深度學習實現一個基于答案抽取的模型和一個生成模型,但如果你有興趣的話你也可以通過下面這些論文來了解相關的研究進展,這會是一個很好的開始:
- Neural Responding Machine for Short-Text Conversation (2015-03)
- A Neural Conversational Model (2015-06)
- A Neural Network Approach to Context-Sensitive Generation of Conversational Responses (2015-06)
- The Ubuntu Dialogue Corpus: A Large Dataset for Research in Unstructured Multi-Turn Dialogue Systems (2015-06)
- Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Models (2015-07)
- A Diversity-Promoting Objective Function for Neural Conversation Models (2015-10)
- Attention with Intention for a Neural Network Conversation Model (2015-10)
- Improved Deep Learning Baselines for Ubuntu Corpus Dialogs (2015-10)
- A Survey of Available Corpora for Building Data-Driven Dialogue Systems (2015-12)
- Incorporating Copying Mechanism in Sequence-to-Sequence Learning (2016-03)
- A Persona-Based Neural Conversation Model (2016-03)
- How NOT To Evaluate Your Dialogue System: An Empirical Study of Unsupervised Evaluation Metrics for Dialogue Response Generation (2016-03)