微軟小冰首席科學家武威解讀 EMNLP 論文:聊天機器人的深度學習模型
雷鋒網 AI 科技評論按: 2018 年度 EMNLP 大會上,微軟小冰首席科學家武威和北京大學助理教授嚴睿就聊天機器人近年來的研究成果作了全面總結,并對未來聊天機器人的研究趨勢進行了展望。
近日,在雷鋒網 AI 研習社公開課上,微軟小冰首席科學家武威就為大家帶來了其在 EMNLP 大會上分享的精華部分。公開課回放視頻網址:
https://www.mooc.ai/open/course/606?=wuwei
分享嘉賓:
武威, 微軟小冰首席科學家,主要研究方向為自然人機對話、自然語言處理、機器學習以及信息檢索;為微軟小冰第二代到第六代對話引擎貢獻了核心算法,并帶領團隊研發了第五代小冰的生成模型以及第六代小冰的共感模型。
分享主題: 聊天機器人的深度學習模型
分享提綱:
1. 引言
2. 深度學習基本概念
3. 基于檢索的聊天機器人
4. 基于生成式的聊天機器人
5. 未來趨勢和結論
雷鋒網 (公眾號:雷鋒網) AI 研習社將其分享內容整理如下:
引言
本次公開課主要分享我和北京大學的嚴睿老師在 2018 年度 EMNLP 大會上做 tutorial 分享的精華內容。
最近聊天機器人很火。我進行了一個小實驗,在 google scholar 的 advanced search 以「聊天機器人」為關鍵詞搜索文章——要求文章的題目必須包含「chatbot」這個單詞,經過統計,發現從 2015-2017 年,標題包含「chatbot」這個單詞的文章數量呈指數型增長。當然,這個實驗是不全面的,一些標題包含「conversation model」的文章雖然標題中沒有「chatbot」,但是也是關于「chatbot」的文章。因此,我們可以想象得到它在學術界的火熱程度。
另外在工業界,亞馬遜和 Facebook 都舉辦了一些比賽,例如亞馬遜就舉辦了兩屆 The Alexa Prize,而 Facebook 也在 NIPS 上舉辦了兩次關于 chatbot 的比賽,這些比賽都受到了很多人的關注。同時,大公司基本上都有自己的聊天機器人產品,例如微軟有小冰,蘋果有 Siri 等等。
我們認為構建聊天機器人引擎有三層:
最底層的是 General Chat;
再上一層是 Informational Chat,涉及到人和機器人進行信息交換、機器人為人提供一些信息,比如問答;
最上面一層是 Task,即機器人通過對話的方式幫助人完成一些任務。
這里我舉一個例子:
(關于該案例的具體講解,請回看視頻 00: 03:20 處)
今天我們主要講 General Chat,這就要提到微軟小冰在整個業界所產生的影響力。小冰 2014 年在中國發布,之后便以一年落地一個國家的節奏,先后在日本、美國、印度以及印度尼西亞發布。現在,它在全球擁有 6 億+用戶,產生的對話數量超過 3 百億。
小冰背后最核心的部分就是對話引擎。傳統的對話引擎是基于任務導向的,它分為以下幾個模塊:
第一個是人與機器產生對話后的語音識別模塊;
第二個是語言理解模塊,該模塊對談話的意圖、話題等進行分析;
第三個是對話管理模塊,語言理解模塊產生的分析輸入到對話管理模塊后,該模塊根據語言理解模塊的理解產生一個決策,決定機器人下一步采取怎樣的行為;
第四個是語言生成模塊,該模塊根據所有的信息合成出一個回復,并將回復傳送到 TTS 這個模塊中,最終變成語言返還給用戶。
當然整個過程中也需要跟 Knowledge base 進行互動:如果用戶提供的信息充分,對話引擎則需要從 Knowledge base 中為用戶找出答案;如果不充分,則需要向用戶再次發問獲得更多信息。
隨著大數據時代的到來和深度學習技術的發展,對話引擎也發生了改變:語言理解、對話管理以及語言生成模塊簡化成統計模型,可支持端到端的訓練。這個統計模型就是我們今天重點介紹的內容。
構建非任務導向或者說 General Chat 的對話引擎,現在學術界或業界一般有兩種基本的方法:
第一種是基于檢索的方法:用戶進行輸入后,系統通過查詢 index,找到所有可能的回復并從中選出最合適的回復返回給用戶;
第二種是基于生成式的方法:用戶進行輸入后,系統通過機器學習的辦法合成出一個回復并返回給用戶。
不管哪種方法,神經網絡都在其中起到了非常重要的作用。
深度學習基本概念
在介紹這兩種方法之前,我先給大家簡單介紹一下深度學習在 NLP 中的一些基本知識。
Word Embedding:深度學習在 NLP 中應用的基石。
Word Embedding 最經典的方法就是 Word2vec,它有兩個模型:
第一個是 Continuous Bag-of-Words(CBOW)
第二個是 Skip-gram
Word Embedding 另一個比較經典的方法是 GloVe:
但是 Word2vec 和 GloVe 都無法處理好詞的變形問題,例如英文中的 study、studies 以及 studied 都表示一個意思,但是這兩種方法都將這些相同意思不同形態的詞當成不同的詞,這就會帶來信息的冗余或者丟失。對此,Facebook 研究院提出了 FastText 的模型,目的就是對詞的變形進行建模:
下面我們對 Word2vec、GloVe 以及 FastText 進行一個對比:
-
在 NLP 具體任務中應用的效果來看:效果最差的是 CBOW;其次是 Skip-gram(GloVe 跟 Skip-gram 差不多);效果最好的是 FastText。其中,FastText 能很好地處理 OOV 問題,并能很好地對詞的變形進行建模,對詞變形非常豐富的德語、西班牙語等語言都非常有效;
-
從效率(訓練時間)上來看:CBOW 的效率是最高的,其次是 GloVe;之后是 Skip-gram;而最低的是 FastText。
自然語言處理中的句子可以視為一個字符串,句子的表示可以通詞表示來實現,一般來說有兩種方法:
一種是基于卷積神經網絡(CNN)的方法;
另一種方法是基于循環神經網絡(RNN)的方法。
(關于深度學習在 NLP 中這幾個基本概念的具體講解,請回看視頻 00:09::00-00:25::05 處)
基于檢索的聊天機器人
快速講了一下這些基礎知識后,我們進入基于檢索的聊天機器人的構建部分的講解。
下圖給出了基于檢索的聊天機器人的架構,該架構分為離線和在線兩部分:
-
離線部分:首先需要準備存儲了大量人機交互數據的 Index;之后 Matching Model 能夠評估輸入與輸出的相似度,并給出一個相似度的評分——Matching Model 越多,相似度得分個數也越多,其可以評估輸出對于輸入來說是否是一個比較合適的輸出;然后這些得分通過分類器(設置一個預值,大于預值的都認為是可作為選擇的輸出),合成一個最終得分列表,并由排序模型對得分進行排序,選擇排在最前面的輸出作為對當前輸入的回復。
-
在線部分:有了這些離線準備,我們可以將當前的上下文輸入到存儲了大量人機交互數據的 Index 中進行檢索,并檢索出一些候選回復;接著,回復候選和當前上下文一起通過 Matching Model 來進行打分,每一個得分都作為一個 Feature,每一個候選回復和上下文因而就產生了 Feature Vector;之后,這些 Feature Vector 通過排序模型或者分類器變成最后的得分;最終,排序模型對得分進行排序,并從排序列表中選出合適的回復。
其中,基于檢索的聊天機器人很大程度上借鑒了搜索引擎的成果,比如 learning to rank,其新的地方主要在于——當給定上下文和候選回復時,通過建立一個 Matching Model 來度量候選回復是否能夠作為上下文的回復。目前,檢索是聊天機器人領域的一個研究重點,而怎樣通過神經網絡的方法來構建 Matching Model,則是檢索中的重點。
構建 Matching Model 一般面臨兩個問題:
一個問題是如何設計 Matching Model 的結構,要求該結構能很好地對上下文的語法、語義進行建模,并很好地抓住上下文和候選回復之間的語義關系;
第二個問題是有了這個結構后,怎樣在沒有標注數據、上下文和候選回復有很多種表示的情況下,從數據中學習這個結構。
后面我將就這兩個問題,講一下目前的研究狀況。
目前的 Matching Model 大致可以歸類為兩個框架:
第一個是Ⅰ 型框架,基于句子的表示來構建上下文和候選回復之間的相似度得分;
Ⅰ 型框架有其優勢,比如簡單、容易實現,在線上系統中也比較高效;不過該框架也存在信息丟失、不那么容易解釋等問題,而正是這些問題促使提出了第二個 Matching Model 框架——Ⅱ 型框架。
Ⅱ 型框架的想法是:既然信息丟失源于上下文在碰到候選回復前就已經被壓縮成了一個小向量,不如就讓上下文中的每一句話一開始就與候選回復進行充分交互,之后將交互信息提取出來變成匹配向量,然后用 RNN 在匹配向量這個級別上對句子關系進行建模,最終產生一個匹配得分。
Ⅱ 型框架的優勢在于可以將上下文信息充分保存在匹配模型中,同時有很好的可解釋性;不過該框架也存在計算復雜度較高等缺點。
(關于這兩個框架及其應用案例的具體講解,請回看視頻 00:29:50—00:45:10 處)
下面要講的是我們即將要在 WSDM 2019 上發表的新工作。這項工作的想法是:既然我們對 Ⅰ 型和 Ⅱ 型已經進行了很好的研究,而深度學習實質上是表示學習,因此是否能優化匹配模型的表示來進一步提升模型的表現呢?對此,我們的基本想法是:當擁有非常多的表示時,怎樣利用這么多的表示來產生一個表現更好的模型。結果證明,將這些表示進行合并(fuse)是有用的,但是在實現方式上是有講究的:
(對于這項新工作的具體講解,請回看視頻 00:46::40 處)
簡單總結一下基于檢索的聊天機器人:
基于檢索的聊天機器人本質上是重用已有的人的回復,來對人的新的輸入進行回復;
匹配模型實際上在基于檢索的方法中起到了至關重要的作用,深度學習時代大家偏向于關注怎樣設計出一個好的模型,但我們認為學習方法至少是與模型設計同等重要的;
基于檢索的方法是當前構建聊天機器人的主流方法。
基于生成式的聊天機器人
最后簡單介紹一下生成式的方法。
用戶輸入后,系統通過自然語言生成的方法合成一個回復,即機器人自己生成一個回復作為輸出。生成式方法的一個基本的模型就是 Encoder-Attention-Decoder 的結構,該結構實際上是借用了機器翻譯的思想。
不過,當我們將機器翻譯的基本架構借入到對話系統中,我們發現了一些問題:
-
第一,這個方法非常傾向于記住數據中的「高頻回復」,例如「我知道了」「我也是」,然而這些「萬能回復」實際上是沒什么意義的,會導致整個對話無法進行下去;
-
第二,機器翻譯中一般翻譯單句,但對話上下文是有一些結構的,比如層次結構——詞到句子到上下文;與此同時,詞和句子在上下文中有很多冗余信息,只有一小部分是有用的;
-
第三,這是在實踐中發現的一個問題:生成式模型在對回復一個一個進行解碼時,速度非常慢。怎樣提高其效率就成為了我們重點關注的一個問題。
生成式對話也是當前非常受關注的主題,現在也有很多相關工作,不過今天由于時間有限,我只介紹這三個問題。
那么,為什么會產生「萬能回復」?實際上,對話是一個「一對多」的問題,即一個輸入可能有非常多的回復,整個對話過程也不像機器翻譯那樣直來直去,機器人會根據對話產生聯想,再根據這些聯想合成回復。
基于這個想法,我們使用神經網絡進行建模,在 Encoder、Decode 的架構上,加入了一個 Topic Attention。
(關于這一模型的具體講解,請回看視頻 00:56:25 處)
在 AAAI 2018 的一項工作中,我們對上下文進行建模。想法是:既然上下文具有層次結構,那我們就分別用一個句子級別的 GRU 和一個詞級別的 GRU 對詞和句子間的序列關系進行建模;同時在生成過程中,還有一個句子級別的 Attention 和一個詞級別的 Attention,分別考慮哪些句子中的哪些詞、整個上下文中哪些句子是比較重要的。除了效果非常好,這個模型還有非常強的可解釋性。
(關于 AAAI 2018 這項對上下文進行建模的工作的具體講解,請回看視頻 00:58::00 處)
最后我們談談在對話中怎么解決解碼效率的問題。我們觀察到系統解碼效率低的原因在于,其每預測一個詞都需要掃一遍整個詞表,但實際可以用來對輸入進行回復的只有一小部分。
對此,我們的想法是,先用過濾器將大部分可能無關的詞過濾掉,在生成回復中只考慮剩下的一小部分詞,從而將一個靜態詞表變成了一個動態詞表,針對每一個輸入,詞表都不一樣。
我們在 CPU 和 GPU 上都測試了這個模型,發現效率都有 40% 左右的提升。
在這里介紹一下生成模型在小冰(印度尼西亞)中的實際應用:
(關于解決解碼效率問題以及生成模型在小冰(印度尼西亞)中的實際應用的具體講解,請回看視頻 1:00:00 處)
最后對基于檢索和基于生成式的方法進行一個對比:
-
基于檢索的方法的優點包括能找出很有趣、多樣性很高的回復;大量借鑒了搜索引擎上的方法,可以直接采用搜索引擎上的方法(learning to rank)來進行評估。其缺點在于對話的質量完全取決與 index 的質量。
-
基于生成式的方法的優點包括支持端到端的學習;由于不受到 Index 的束縛,生成模型可以進行更多的變形,比如將風格、情感引入到生成式對話中,對生成式對話進行控制等。不過其缺陷也很明顯:一是該方法不太好評估,現在的評估方法依賴于大量標注,但各自的標注不一,針對目前的生成式文章也無法判斷誰提出的方法更好一些;二是相對于檢索模型,它的多樣性還是要差一些。
總結
在聊天機器人時代,對話引擎扮演著非常重要的角色,目前其兩個主流的方法就是基于檢索和基于生成式的方法,現在針對二者的研究也非常多。然而實現真正的人機對話,我們還有很長的路要走。
分享結束后,嘉賓還對聽眾的提問進行了解答,大家可回看視頻 1:04:35。
以上就是本期嘉賓的全部分享內容。更多公開課視頻請到雷鋒網 AI 研習社社區( https://ai.yanxishe.com )觀看。關注微信公眾號:AI 研習社(okweiwu),可獲取最新公開課直播時間預告。
。