聊天機器人中的深度學習

Part1簡介——聊天機器人中的深度學習
聊天機器人,也稱作是會話代理,或者對話系統,是非常熱門的話題。微軟、Facebook、Apple公司、Google、微信以及Slack公司都對此付出了大量的人力物力。也有很多的創業公司嘗試通過建立用戶級應用,bot platformsbot libraries來改變消費者和服務之間的相互作用。微軟最近還開源了自己的bot開發者框架。
許多公司都希望開發的機器人可以和人類進行無差別的交流,他們都宣稱使用NLP和Deep Learning技術來實現這一點。但是,圍繞着AI有很多的炒作,有時候很難判斷是否能夢想成真。
在這個系列文章中,我想先回顧一些用於創造聊天機器人的Deep learning技術,來解釋我們現在處於什麼水平、什麼東西是可能的做到的、什麼東西在短時間內是無法完成的。這篇是一個簡要介紹,在後續的文章中我們將深入到實現的細節。
分類模型(基於搜索的模型vs生成模型)
基於搜索的模型相對容易一點,他基於輸入文本,利用預定義的一個知識庫和啓發式的方法,來找到一個合適的迴應。所謂啓發式的方法,可以像基於規則的表達式匹配那樣簡單,也可以同時像機器學習分類器的集合一樣複雜。這些系統都不會產生新的文本,只是從固定集合中挑出合適的結果。
生成模型難度要高一點,他不依賴於任何預先定義好的響應。而是從不斷抓取、學習(scratch)中生成新的回答。生成模型通常基於機器翻譯技術,但是不是從一種語言翻譯到另一種語言,而是從輸入轉化爲輸出響應。
這兩種方法都有明顯的利弊。基於搜索的方法由於知識庫是人工製作的,所以不會犯語法上的錯誤。但是它們可能無法處理沒有適當的預定義響應存在的不可見的情況。出於同樣的原因,這種方法不能找到上下文相關的信息,比如對話前半部分提到的人名。生成模型則更“聰明”一些。他能夠在輸入中找到之前的信息並且給你一種和人在對話的印象。但是,這種方法很難訓練,很容易犯語法錯誤,尤其是在句子較長的時候。通常這種方法需要巨大量的訓練數據。
深度學習技術可以用在以上兩種方法中,但是研究似乎正在向生產模型的方向發展。如同Sequence to Sequence一樣,深度學習架構特別適合用來生成文本,研究者們也希望在這方面取得快速的發展。但是,對於建立可以工作的很好的生成模型,我們還處在初級階段。目前的實踐系統更多的是基於搜索的。
長對話vs短對話
我們知道,句子越長越難使機器明白(automate it)。短對話的目的是對單輸入產生一個單輸出,相對簡單。比如你會從用戶那裏得到一個特定的問題,然後迴應一個合適的回答。長對話可能要多轉幾個彎,需要追溯到之前的對話內容,就要困難一點。用戶需要的對話一般都是有多個問題的長對話。
開放領域vs固定領域
在開放領域中可以與用戶進行任何對話,這也更難。不需要有定義好的目標和意圖。在社交媒體上的對話一般都是開放領域的,他們能夠聊任何話題。創建合理的響應需要無窮的對話主題和一定量的現有知識,這使得問題很困難。
在固定領域設定輸入輸入是有限的,因爲系統可以嘗試達到一個特定的目標。技術支持和購物助手就是這樣的例子。這些系統不需要談論政治,只需要儘可能高效的完成特定任務就好。當然,用戶依然想聊任何想聊的話題,但是系統不需要處理所有問題,用戶也不會期待這樣。
共同的挑戰
在建立積極研究領域的聊天機器人當中,有一些明顯的,和不那麼明顯的挑戰。
合併文本
要產生合理的響應系統,需要合併語言的前後語境和文本的前後關係。前後語境就是在長對話中,人們知道已經說過的和改變的信息。最常見的方法就是把對話嵌入到一個向量中,但是在長對話中這樣做是很難的。在一些實驗中,利用生成分層神經網絡模型建立端對端的對話系統,以及關注意向的神經網絡對話模型都進入了這個方向。除此還可能需要併入其他的上下文數據,比如日期,時間,位置或者關於用戶的信息。
個性一致
當機器人產生迴應的時候,理想情況下應該對語義一致的輸入產生一致性的迴應。比如,對於“你多大了?”和“你年齡是多少?”,我們希望得到的回答是一樣的。這聽起來見簡單,但是要把這種固定的知識或“個性”加入到模型中是一個特別值得研究的問題。很多系統都能夠產生似是而非的迴應,但是沒有被訓練產生語義一致的迴應。通常,這是因爲訓練是基於衆多不同的用戶提供的數據。像基於角色的神經對話模型的這類模型,正在朝着“明確地塑造個性”邁進。
模型評估
評估一個聊天機器人的最好方法,就是看他能否在一個給定的情景中完成自己的任務,比如解決用戶的問題。但是,由於這需要人來判斷和評估,所以這些指標的獲得成本很大。有時候,比如在進行開發領域對話的時候,又沒有特定的目標。用於機器翻譯的常用指標BLEU,是基於文本匹配的,也不太合適。因爲聰明的回答會包含完全不同的詞句。事實上,在“如何不去評估你的對話系統:一項關於對話響應生成的無監督評估指標的實證研究”中,研究人員發現,沒有一個常用的指標與人類的判斷真正相關。( How NOT To Evaluate Your Dialogue System: An Empirical Study of Unsupervised Evaluation Metrics for Dialogue Response Generation
意圖和多樣性
生成系統一個常見的問題就是,他們會產生通用的迴應,比如“真棒!”、“我不知道。”這樣的回答對很多輸入情況都適用。Google的Smart Reply的早期版本幾乎對任何情況都回應“I Love you”。這部分是系統在數據和實際訓練目標(算法)方面的訓練結果。一些研究者嘗試通過多種目標函數人爲的提高結果的多樣性。但是,通常人類是對特定輸入產生反應,並且還帶有某種意圖。因爲生成系統沒有被訓練具有特定的意圖,所以他們缺乏多樣性,特別是對於開放領域的系統。
實際應用情況如何?
鑑於現有的尖端研究,我們到底處在什麼程度,這些系統又運行的怎麼樣呢?讓我們再次看一下分類系統。一個基於搜索的開放領域系統,很明顯是不可能實現的。因爲永遠不能手動添加足夠多的響應來覆蓋所有的情況。一個生成模型的開放領域系統,幾乎就是人工智能的總和了。因爲他需要處理所有可能的場景。儘管在這些領域有很多的研究,我們現在離目標還很遙遠。
這使得在限制領域中,基於搜索和基於生成的方法都有一些問題也屬正常。對話越長,上下文關係越緊密,要解決就越困難。
前百度首席科學家Andrew Ng,在最近一次採訪中說道:“目前,深度學習的大多數價值都存在於一些可以獲取大量數據的狹窄的領域中。比如做一次有意義的對話,他就完成不了。如果你 cherry-pick the conversation,看起來好像是一次有意義的對話。但是當你親自進行對話時,就不是那麼回事了”。
許多公司都是以外包他們的對話開始的。他們人爲地收集對話,還宣稱一旦他們收集到足夠多的數據,就可以實現自動獲取數據。實際上只有在一個相當狹小的領域纔有可能實現,比如打車對話。但凡開放一點的領域都會超出我們現在的能力,比如sales emails。但是我們依然可以通過修正回答來利用這些系統爲人類服務。
要修改生成系統中的語法錯誤是件高成本的事,同時語法錯誤還會趕跑用戶。這就是爲什麼大多數系統都選擇使用基於搜索的方法,因爲這樣沒有語法錯誤,也沒有進攻性的響應。如果企業能以某種方式獲取大量的數據,那麼生成模型會變得可行。但是還必須有其他的技術支持,來阻止系統像Microsoft的Tay那樣偏離軌道。(http://www.businessinsider.com/microsoft-deletes-racist-genocidal-tweets-from-ai-chatbot-tay-2016-3

下一步
接下來我們會利用深度學習的知識,來了解基於搜索的模型和基於生成的對話模型內部技術細節。如果你對一些研究內容感興趣,不妨從下面的一些論文開始。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章