助理來也胡一川:深度學習在智能助理中的應用
一、什麼是智能助理
隨著智能手機和移動互聯網的普及,越來越多原來發生在線下的交互場景,逐漸從線下轉移到線上。人們也開始習慣通過在線溝通的方式來獲取各種服務:讓秘書安排出差的機票和酒店,向英語老師諮詢學習中的問題,找旅行達人制定旅遊計劃等等。類似這樣的場景,今天都逐漸從面對面或電話溝通,轉移到線上溝通。
因為溝通從線下變為線上,大量的數據能夠被沉澱下來,基於數據我們可以通過機器學習等方法來輔助人提升效率,甚至在某些場景下替代人,從而實現智能助理。我們給智能助理的定義是:基於人工智慧技術,通過理解語音或文本形式的自然語言來滿足用戶需求的軟體應用或平台。
那麼智能助理是不是就是智能客服呢?我們認為智能客服是智能助理的一種形態,但智能助理比智能客服有更深層次的意義和更廣泛的應用。與智能客服不同,智能助理有以下3個特點:
1. 更主動的雙向交互:在客服場景下,通常是用戶主動聯繫客服,客服被動響應。而在助理場景下,助理和用戶的交互是雙向的,助理可以主動聯繫用戶,在適合的時候主動為用戶提供合適的服務。
2. 更長期的夥伴關係:在助理場景下,用戶和助理的關係是長期,用戶可以在長時間內通過同一個助理持續獲得專屬化的服務。相反,在客服場景下,用戶和客服之間的關係往往是短暫的,雙方的連接只在服務的那一刻建立,服務完成後即斷開。
3. 更豐富的價值場景:因為雙向的溝通與長期的關係,助理能夠為用戶提供更豐富和更有價值的服務。這些服務不僅僅限於售後,還包括售前諮詢,甚至一些專業化的服務也可以通過在線助理的方式來完成。
通過智能助理來獲得信息、商品和服務將成為趨勢。那麼,這個趨勢會首先發生在哪些行業中?我們通過兩個維度來思考這個問題。第一個維度是在線交互需求度,即該行業中在線交互的需求強不強,場景多不多。第二個維度是領域知識專業度,即這個行業的領域知識是否比較複雜,用戶的決策過程是否需要藉助外部知識。
只有當這兩個維度都比較強的時候,以自然語言對話為主要交互方式的助理產品才能給用戶帶來比較高的價值。比如,在線秘書是一個非常典型的例子。今天,如果我有一個秘書,大部分時候我不需要和秘書見面,通過在線溝通的方式就可以把我想讓他做的事情交代清楚了。再比如說,母嬰、教育、旅遊等行業都是非常典型的在線交互需求度較強和領域知識專業度較高的領域,適合智能助理的落地。可以預見,隨著越來越多線下交互場景遷移到線上,智能助理會在更多的行業中成為一種主流的產品形態。
二、基於深度學習的自然語言處理框架
在線交互的場景會產生大量自然語言對話數據,基於這些數據我們可以訓練機器學習模型,讓機器具備一定自然語言處理和理解的能力,從而打造智能助理。
自然語言處理在智能助理產品的各個環節中都有應用,從分詞、詞性標註,到意圖識別、實體抽取,再到問答、對話等。過去兩年,學術界和工業界開始將深度學習應用在自然語言處理任務上,取得了很多不錯的進展。在某些特定任務下,基於深度學習的方法明顯優於基於傳統機器學習模型的方法。因此,本節我們主要介紹深度學習技術在智能助理中的應用。
上面提到自然語言處理中有很多種不同的任務,但從機器學習模型的角度來說這些任務都有相同之處:模型的輸入都是自然語言文本,輸出都是某些預測結果,只不過在不同任務下模型需要預測的東西不一樣。比如,在意圖識別中,模型需要預測的是一段文本表達的用戶意圖;在實體抽取中,模型需要預測的是一段文本中的每個字或詞所對應的實體;在問答或對話中,模型需要預測的是用戶的問題和機器的回答的匹配度。雖然預測的內容不同,基於深度學習的自然語言處理框架可以總結為以下4步:
1,Embed。這一步所做的事情是將待處理文本中詞或字用分散式向量的方式表示,作為下面步驟的輸入。這些向量又稱為詞向量或字向量,可以事先訓練得到,也可以先初始化成隨機向量,然後在訓練當前任務的過程中調整。當然,這一步中也可以將其他對實現當前任務有價值的信息作為輸入,如用戶行為等。
2,Encode。當我們把一句話用詞向量表示後,這些詞向量並不能表示這句話的語義,因為一句話的意思並不等於其包含的詞的意思的簡單組合。因此,Encode 這一步所做的主要工作是對整段文本進行編碼,編碼的過程考慮到每個詞和它上下文之間的關係。 我們通常使用卷積神經網路(CNN)或者循環神經網路(RNN)對文本進行編碼,這樣可以充分利用詞與詞之間的關係。編碼的輸出是一個新的向量或矩陣,能更好地表徵整段文本。
3,Attend。這個步驟又稱為注意力機制(Attention Mechanism), 其主要思想是通過訓練讓模型關注在文本中能夠解決當前任務的最重要的部分。用通俗的話來說,注意力機制就是給文本「劃重點」,從而提升模型預測的效果。
4,Predict。這一步目標非常清晰,即將上一步中的輸出通過一個網路完成當前的預測任務,通常使用到的網路模型是全連接的前饋神經網路。根據預測任務的不同,預測結果可以是一個標籤的概率、一個實數值或者一個向量等。
下面我們來看一下,基於上述框架使用深度學習能夠應用在智能助理的哪些場景中,解決哪些具體問題。
三、深度學習的應用:意圖識別
第一個場景是意圖識別。意圖識別的作用是根據自然語言判斷用戶的意圖。例如,在助理來也的場景里,當用戶通過自然語言發起一個需求時,用戶的意圖是問天氣、訂機票還是其他,是意圖識別模型需要解決的問題。上面介紹的框架能夠非常好的應用在解決意圖識別問題上。
首先,意圖識別模型的底層是一個雙向的 LSTM網路,即一種特殊的循環神經網路,該網路的輸入是經過向量化表示(Embed)的用戶消息,該網路的作用是對用戶的消息進行編碼(Encode),輸出是若干個隱向量。編碼後的結果經過一個注意力層(Attend),使模型學習到不同詞對應的隱向量對於預測結果的權重。最終,經過注意力層加權後的隱向量經過Softmax層來預測(Predict)用戶消息對應意圖的概率。
和基於傳統機器學習模型的方法相比,該方案最大的優點是完全靠數據驅動,無需人工進行特徵工程,能最大化的利用數據本身蘊含的信息來進行意圖預測。同時,基於深度學習的方法效果也明顯優於傳統的方法。
在助理來也的產品中,我們在20多類的意圖識別問題上對不同的方法進行了對比。最初,在缺乏數據的情況下,我們使用傳統基於規則的方法,準確率只有70%左右。隨著數據的積累,我們切換到基於傳統機器學習的方法,準確率迅速提升到90%。但是,當傳統機器學習模型準確率到達90%之後,我們發現很難進一步提升,因為傳統的方法依賴於特徵提取,怎麼選擇和構造特徵直接決定了模型的效果。隨著特徵數的增加,構造新的特徵變得更難,而增加新的特徵對模型效果的影響也越小。
為了解決這些問題,我們切換到基於深度學習的模型上,不依賴特徵提取,完全靠數據驅動,效果明顯比傳統方法好,準確率達到96%以上。當然,在實際使用過程中還會遇到很多其他的挑戰,比如用戶的意圖不僅僅和當前用戶消息有關,可能和用戶的歷史消息甚至歷史行為有關。基於此,我們可以在模型中引入更多的輸入,如歷史消息、歷史行為等,來進一步提升意圖識別的準確率。
四、深度學習的應用:知識挖掘
接下來介紹深度學習在知識挖掘上的應用。在智能助理的場景中,用戶會問各種各樣和該領域相關的問題,每個問題都有特定的答案,我們把這些問題和答案稱為領域知識。要讓智能助理具備自動問答的能力,首先需要把這些知識從非結構化的對話語料中挖掘出來,作為自動問答模型的訓練數據。具體而言,知識挖掘的目標是從自然語言對話語料中將用戶問題挖掘出來,並將相同語義的問題歸到同一個知識點下。下面是母嬰助理場景中兩個例子。
表達方式不同,但屬於同一個知識點:
· 剛出生1個多月的小孩能曬太陽嗎?
· 新生兒是不是要滿月才可以曬太陽?
表達方式接近,但屬於不同的知識點:
· 新生兒曬太陽,每次多久比較合適?
· 新生兒曬太陽,多大開始比較合適?
在上面的兩個例子中,知識挖掘需要將第一個例子中的兩句話歸為同一個知識點(寶寶多大可以曬太陽),而將第二個例子中的兩句話歸為不同的知識點(寶寶每次曬太陽時間 vs寶寶多大可以曬太陽)。因此,知識挖掘的主要難點是對文本進行語義表示,然後進行聚類。
傳統的知識挖掘方法使用基於詞向量的無監督聚類。具體的做法是,對於任意兩句文本,使用它們包含的詞和詞向量來計算文本間的距離,再基於文本間的距離來實現無監督的聚類。這種方法有兩個比較明顯的缺陷:1)基於詞向量來計算文本間的距離,不能很好的反映文本的語義相似度;2)使用無監督的聚類,很難確定類的數目,導致結果聚類結果不可控。
針對這兩個問題,我們採用基於深度學習的方法,在詞向量的基礎上訓練句向量,將無監督的方法和有監督的方法結合起來。具體而言,我們首先通過傳統的方法挖掘出一部分知識點,人工審核後進入知識庫,我們稱之為種子知識庫。在種子知識庫的基礎上,我們能夠構造訓練數據:同一知識點下的問題對作為正樣本,不同知識點下的問題對作為負樣本。基於上述訓練數據,我們能訓練出一個針對問題對的語義匹配的模型。這個模型和上面提到的框架完全一致,也包括Embed、Encode、Attend、Predict這4個步驟。
模型訓練好之後,我們將其中的編碼器(Encoder) 單獨拿出來使用,對語料中的其他問題進行編碼,編碼結果可以認為是句向量,能夠表徵句子的語義。基於句向量,我們再做基於聚類,效果和效率比基於詞向量的方法都會有很大的提升。
五、深度學習的應用:自動問答
最後再來看一看深度學習在自動問答中的應用。自動問答模型的主要目標是針對一個用戶的問題,返回知識庫中最適合回答該問題的知識點。傳統的自動問答使用基於檢索的方法,將用戶問題作為輸入去檢索知識庫,並返回相關性最高的若干個結果。基於檢索的方法存在兩個問題:1)檢索是基於關鍵詞的,檢索相關性不能代表語義相關性;2)實際場景中的問答通常和上下文有關,在這種情況下僅基於單句用戶消息的檢索無法返回合適的結果。針對這個問題,我們採用基於上下文檢索加深度學習匹配排序的方法。下面詳細介紹。
首先,我們從用戶當前消息和上文中抽取關鍵詞,去知識庫或歷史語料中進行檢索,返回若干個候選回復。因為檢索關鍵詞不僅來自於當前用戶消息,也來自當前對話的上文,檢索結果會既包含和當前消息相關的回復,也包含和上文歷史消息相關的回復。
接下來,這些候選回復逐一輸入到一個基於深度學習的文本匹配模型中,模型返回每個候選回復和當前對話上文的語義匹配度。最後,根據匹配模型返回的分數,系統返回分數最高的若干個候選回復。
深度匹配模型使用 CNN 對一個候選回復與當前用戶消息以及歷史消息序列進行匹配,最終計算出候選回復和整個對話上文的匹配分數。模型的訓練數據來自於歷史語料,將歷史對話切割成若干個「上文」和「真實回復」的配對作為正樣本,將「上文」和「隨機回復」配對作為負樣本。基於此,該匹配模型能夠充分利用歷史數據,同時考慮到上下文關係,實現候選回復和上文歷史消息的匹配。
這個模型也完全符合我們前面介紹到的框架:候選回復和若干條上文消息的匹配可以看作是 Encode 步驟,而若干個匹配後的向量進行池化等操作可以認為是 Attend步驟,最終輸出語義匹配度則是 Predict 步驟。
六、智能助理在行業中的落地
前面提到,不同行業的在線交互需求度和領域知識專業度都有所不同。因此,靠數據驅動的智能助理產品更適合在不同行業中以行業助理的形態落地,而不是以通用助理的形態落地。當我們聚焦行業後,能夠積累足夠多的領域對話數據,打造更加智能、用戶體驗更好的智能助理產品。
基於這個思路,我們首先針對在線秘書行業打造了一款助理產品「助理來也」。用戶可以通過自然語言的方式獲取20多項和工作、生活相關的服務,包括日程提醒、打車、咖啡、跑腿等。目前,「助理來也」是微信平台上深受歡迎的助理產品,為超過300萬用戶提供一站式的在線助理服務。在這個過程中,我們積累了大量的交互數據,將深度學習技術成功的應用在意圖識別、實體抽取、問答、對話等各環節中,提升模型的效果和產品的體驗。除此之外,我們也通過「吾來」輸出語義、問答、對話等技術,幫助各領域企業客戶打造行業助理。目前已經在母嬰、汽車等行業的標杆企業實現商業化落地。
七、結束語
最後我們進行總結。首先,隨著移動互聯網的普及和物聯網時代的來臨,基於自然交互的智能助理產品將逐漸成為主流。不同於智能客服,智能助理更加強調雙向的溝通,長期的關係和個性化的服務。在這個場景下,基於數據驅動我們可以使用深度學習等技術提升語義理解、問答、對話等模型的效果。現階段,針對行業、針對具體場景的智能助理產品更有用戶價值和商業價值。
參考文獻
1,Honnibal M. Embed, Encode, Attend, Predict: The NewDeep Learning Formula for State-of-the-art NLP Models. Available at https://explosion.ai/blog/deep-learning-formula-nlp, 2017.
2,Conneau A, Kiela D, Schwenk H, et al.Supervised Learning of Universal Sentence Representations from Natural LanguageInference Data. In Proc. EMNLP, 2017.
3,Wu Y, Wu W, Xing C, et al. SequentialMatching Network: A New Architecture for Multi-turn Response Selection inRetrieval-Based Chatbots. In Proc. ACL, 2017.
【作者簡介】胡一川,來也聯合創始人和CTO。來也專註於智能對話技術,讓每個人擁有助理。此前,胡一川聯合創立了影視推薦引擎"今晚看啥"並被百度收購,後加入百度任資深架構師。本科和碩士畢業於清華大學,博士畢業於賓夕法尼亞大學。本文來自胡一川在「攜程技術沙龍——人機語義交互AI」上的分享。
更多來自攜程技術人的一手乾貨,歡迎搜索關注「攜程技術中心」微信公號。
推薦閱讀:
※2017年,你還在用用戶畫像和協同過濾做推薦系統嗎?
※長生不老、半人半機的時代悄悄來了,你信嗎?
※人工智慧遠沒有到來,可是新聞媒體驚呼人工智慧快要到來?個人很反感怎麼辦?
※斯坦福公布多輪對話數據集,含3000多條對話
TAG:人工智能 |