對話系統原理和實踐

極牛技術分享活動
極牛技術實踐分享系列活動是極牛聯合頂級VC、技術專家,爲企業、技術人提供的一種系統的線上技術分享活動。
每期不一樣的技術主題,和行業專家深度探討,專一解決技術實踐難點,推進技術創新。隔週三20點經過極牛線上技術分享羣準時開課。歡迎各個機構、企業的行業專家、技術人報名參加。web

本期主題
對話系統原理和實踐api

嘉賓介紹
胡一川,助理來也聯合創始人兼CTO。助理來也但願經過語義、對話、推薦等技術,打造一個基於AI+HI且真正可靠的助理產品。胡一川曾聯合創立視頻推薦引擎今晚看啥,並於2012年被百度收購,後在百度擔任架構師。胡一川本科和碩士畢業於清華大學,博士畢業於賓夕法尼亞大學。微信

摘要:在不少場景下,對話用戶界面(CUI - Conversational User Interface)比圖形用戶界面(GUI - Graphical User Interface)更加天然和高效。過去一年中,CUI獲得了大量的關注,也取得了迅速的發展。微軟提出了對話即平臺的戰略,Facebook Messenger上出現了各類對話機器人(chatbot),不少和CUI相關的創業公司也應運而生。本期分享主要介紹對話系統的原理和實踐,包括對話系統中語義理解、對話管理等模塊的技術原理,以及如何搭建一個可靠、可用的對話系統。網絡

胡一川老師主要和你們分享的是對話技術,即讓機器能和人進行天然語言對話的技術。利用英文PPT和中文介紹進行了詳細地講解。架構

你們好,感謝極牛的邀請,很高興今天和你們分享對話系統的原理和實踐。助理來也但願經過語義、對話和推薦技術,打造真正可靠的助理產品。咱們目前的產品形態是微信服務號,用戶經過天然對話的對話方式和服務號進行交互,得到日程管理、用車、咖啡、跑腿等各類服務。
對話系統原理和實踐app

這是今天分享的大綱。主要包括四個部分:首先介紹對話系統的背景和總體架構;而後介紹對話系統中的兩個關鍵部分,分別是天然語言理解(NLU)和對話管理(DM);最後再講講助理來也在打造對話系統中的思考和嘗試。webapp

clipboard.png

什麼是對話系統?咱們先來定義什麼是對話。實際上,在生活和工做中天天咱們都在經過對話來獲取信息、表達觀點、抒發情緒。對話有幾個特徵:1)角色切換:對話中一般有兩個甚至多個角色,各角色交替進行表達;2)連貫性:對話的內容先後是有關聯的、有邏輯的;3)多模態:語音、文字、圖片均可以成爲對話中傳遞信息的方式。那麼,對話系統的定義就是能與人進行連貫對話的計算機系統。從另外一個角度來理解,對話系統讓一種新的人機交互方式成爲可能,即基於對話的交互(CUI:Conversational User Interface)。機器學習

clipboard.png

對話系統在三類場景下有明顯的優點:1)當不方便使用手進行鼠標或觸屏操做時,好比開車的時候,用語音交互是最方便的;2)當基於天然語言的交互比基於圖形的交互更高效時,以打車爲例,用戶說「叫車從公司回家」比打開APP輸入起點終點再點擊下單要更高效;3)在現有的人與人之間對話的場景下,對話系統能幫助提升效率、下降成本,好比客服與用戶之間的對話。學習

clipboard.png

咱們再來看幾個對話系統的具體應用。Siri你們都很熟悉,每一個iOS上都有。Cortana和Siri相似,是微軟推出的我的助理應用,主要在Windows系統中。亞馬遜的Echo是最近一年很火的智能音箱,銷量超過500萬臺,用戶能夠經過語音交互獲取信息、商品和服務。最後一個例子是助理來也,咱們採用AI+HI的方式,主打懂你和高完成度。這些產品後面都使用到了對話系統。ui

clipboard.png

對話系統由五個主要部分組成:1)語音識別(ASR)將原始的語音信號轉換成文本信息;2)天然語言理解(NLU)將識別出來的文本信息轉換爲機器能夠理解的語義表示;3)對話管理(DM)基於對話的狀態判斷系統應該採起什麼動做,這裏的動做能夠理解爲機器須要表達什麼意思;4)天然語言生成(NLG)將系統動做轉變成天然語言文本;5)語音合成(TTS)將天然語言文本變成語音輸出給用戶。固然,有些對話系統的輸入輸出不必定是語音,能夠是文本,所以不是每一個對話系統中都包含語音識別和語音合成這兩個模塊。

clipboard.png

這是對話系統的架構圖。圖中的一、二、三、四、5分別爲剛剛介紹的對話系統中的五個模塊。這個架構圖能更清晰的看到每一個模塊的輸入輸出,以及各模塊之間的協做關係。接下來咱們重點介紹天然語言理解(NLU)和對話管理(DM)這兩個模塊,也就是圖中紅框標出的兩個模塊。

clipboard.png

天然語言理解(NLU)的目標是將文本信息轉換爲可被機器處理的語義表示。由於一樣的意思有不少種不一樣的表達方式,對機器而言,理解一句話裏每一個詞的確切含義並不重要,重要的是理解這句話表達的意思。上面的例子中,三句話在字面上徹底不一樣,但表達了相似的意思,即用戶想預定上門保潔服務。

clipboard.png

NLU面臨幾個挑戰。首先,語音識別錯誤率一般在10-20%,這會影響語義理解的準確性。其次,經過天然語言表達的語義存在不肯定性,同一句話在不一樣語境下的語義可能徹底不一樣。好比,用戶說「肯德基到家」,這是可能外賣需求,也多是叫車需求,須要上下文語境才能更好的理解。再好比,用戶說「明早8點叫我起牀」,若是發生在23:59「明早」指的是「次日早上」,若是發生在00:01「明早」頗有可能指的就是「當天早上」。最後,在天然語言中每每存在不流暢性,存在錯誤、重複等狀況。

clipboard.png

剛剛提到,機器在理解一句話時,每一個詞的確切含義並不重要,重要的是這句話的意思。爲了讓機器可以處理,咱們用語義表示來表明天然語言的意思。語義表示能夠用意圖+槽位的方式來描述。意圖即這句話所表達的含義,槽位即表達這個意圖所須要的具體參數,用slot和value對的方式表示。好比,「預定這週日上午的保潔阿姨」這句話的意圖是「發起請求」,槽位是「服務類型=保潔,服務日期=20161127」。NLU要作的事情就是將天然語言轉化成這種結構化的語義表示。

clipboard.png

下面介紹NLU的幾種方法。第一種是基於規則的方法,大體的思路是定義不少語法規則,即表達某種特定意思的具體方式,而後根據規則去解析輸入的文本。上圖中展現了一個訂機票場景下基於規則的NLU模塊。這個方法的好處是很是靈活,能夠定義各類各樣的規則,並且不依賴訓練數據。固然缺點也很明顯,就是複雜的場景下須要不少規則,而這些規則幾乎沒法窮舉。所以,基於規則的NLU只適合在相對簡單的場景,適合快速的作出一個簡單可用的語義理解模塊。當數據積累到必定程度,就可使用基於統計的方法了。

clipboard.png

基於統計的NLU使用數據驅動的方法來解決意圖識別和實體抽取的問題。意圖識別能夠描述成一個分類問題,輸入是文本特徵,輸出是它所屬的意圖分類。傳統的機器學習模型,如SVM、Adaboost均可以用來解決該問題。實體抽取則能夠描述成一個序列標註問題,輸入是文本特徵,輸出是每一個詞或每一個字屬於實體的機率。
傳統的機器學習模型,如HMM、CRF均可以用來解決該問題。若是數據量夠大,也可使用基於神經網絡的方法來作意圖識別和實體抽取,一般能夠取得更好的效果。和基於規則的NLU相比,基於統計的方法徹底靠數據驅動,數據越多效果越好,同時模型也更加健壯。缺點是須要訓練數據,尤爲是若是使用深度學習,須要大量的數據。在實踐中,這兩種方法一般結合起來使用:1)沒有數據的時候先基於規則,有數據了逐漸轉爲統計模型;2)基於統計的方法覆蓋絕大多數場景,在一些極端的場景下用基於規則的方法來保證效果。

clipboard.png

能夠說,NLU是全部對話系統的基礎,目前有一些公司將NLU做爲一種雲服務提供,方便其餘產品快速的具有語義理解能力。好比Facebook的wit.ai、Google的api.ai和微軟的luis.ai,都是相似的服務平臺,使用者上傳數據,平臺根據數據訓練出模型並提供接口供使用者調用。使用這類服務的好處是可以快速的搭建出數據驅動的NLU模塊,壞處是這些平臺由於強調通用性,因此靈活性不夠,若是有定製化的需求,就很難被知足。

clipboard.png

這是一個luis.ai提供的NLU服務的例子。輸入是「11月28號下午3點在公司開會」,返回的結果中能正確的將意圖識別爲建立日程,而對應實體,如日期、時間、地點都能被準確的抽取出來。

clipboard.png

下面來介紹對話系統中另外一個重要的模塊:對話管理(DM)。DM是對話系統的大腦,它主要幹兩件事情:1)維護和更新對話的狀態。對話狀態是一種機器可以處理的數據表徵,包含全部可能會影響到接下來決策的信息,如NLU模塊的輸出、用戶的特徵等;2)基於當前的對話狀態,選擇接下來合適的動做。舉一個具體的例子,用戶說「幫我叫一輛車回家」,此時對話狀態包括NLU模塊的輸出、用戶的位置、歷史行爲等特徵。在這個狀態下,系統接下來的動做可能有幾種:1)向用戶詢問起點,如「請問從哪裏出發」;2)向用戶確認起點,如「請問從公司出發嗎」;3)直接爲用戶叫車,「立刻爲你叫車從公司回家」。

clipboard.png

常見的DM也有幾種。第一種是基於有限狀態機(FSM),顯示的定義出對話系統應有的狀態。DM每次有新的輸入時,對話狀態都根據輸入進行跳轉。跳轉到下一個狀態後,都會有對應的動做被執行。上圖中展現了一個控制物體先後左右移動或中止的對話系統中的基於FSM的DM,你們能夠清晰的看到各中狀態的定義和狀態間的跳轉邏輯。基於FSM的DM,優勢是簡單易用,缺點是狀態的定義以及每一個狀態下對應的動做都要靠人工設計,所以不適合複雜的場景。

clipboard.png

另外一種DM採用基於統計的方法。簡單來講,它將對話表示成一個部分可見的馬爾可夫決策過程。所謂部分可見,是由於DM的輸入是存在不肯定性的,例如NLU的結果多是錯誤的。所以,對話狀態再也不是特定的馬爾可夫鏈中特定的狀態,而是針對全部狀態的機率分佈。在每一個狀態下,系統執行某個動做都會有對應的回報(reward)。基於此,在每一個對話狀態下,選擇下一步動做的策略即爲選擇指望回報最大的那個動做。這個方法有如下幾個優勢:1)只需定義馬爾可夫決策過程當中的狀態和動做,狀態間的轉移關係能夠經過學習獲得;2)使用強化學習能夠在線學習出最優的動做選擇策略。固然,這個方法也存在缺點,即仍然須要人工定義狀態,所以在不一樣的領域下該方法的通用性不強。

clipboard.png

最後一種DM方法是基於神經網絡的。它的基本思路是直接使用神經網絡去學習動做選擇的策略,即將NLU的輸出等其餘特徵都做爲神經網絡的輸入,將動做選擇做爲神經網絡的輸出。這樣作的好處是,對話狀態直接被神經網絡的隱向量所表徵,再也不須要人工去顯式的定義對話狀態。固然這種方法的問題時須要大量的數據去訓練神經網絡,其實際的效果也還有待大規模應用的驗證。助理來也的對話系統中有嘗試用該方法,但更多的仍是傳統機器學習方法和基於深度學習的方法結合。

clipboard.png

剛剛介紹了對話系統中的兩個重要模塊:天然語言理解(NLU)和對話管理(DM)。實踐中搭建和使用對話系統時,存在如下幾個挑戰:1)用戶對錯誤的容忍度很低。由於天然語言的表達方式很是靈活多變,目前純自動的對話系統每每達不到用戶的預期,好比Siri在不少時候仍是不能很好地理解用戶說的話;2)有些場景下,若是隻使用語音或者文字的對話系統,交互效率不必定是最高的;3)基於對話的人機交互目前還不是一種主流的交互方式,大多數用戶還不習慣。下面我想針對這三點挑戰,講講來也在搭建和使用對話系統時的一些思路和嘗試。

clipboard.png

首先,爲了提高對話系統的可靠性,咱們使用AI+HI的方法,此處HI表示Human Intelligence,即真人智能。AI+HI表示機器助理和真人助理結合起來,爲用戶提供優質的體驗。爲何要這麼作呢?由於當真人可以和機器配合時,能產生一個正反饋:真人糾正機器的錯誤 -> 更好的用戶體驗 -> 更多的活躍用戶 -> 獲取更高質量的數據 -> 訓練更好地模型 -> 機器更好地輔助真人。

clipboard.png

HI和AI如何無縫的配合呢?咱們經過羣聊將用戶、AI和HI放在一個羣裏。由AI根據置信度來判斷,什麼狀況下須要將HI加入羣內,將什麼樣的HI加入羣內,以及何時HI來干預。AI和HI的配合分爲三種:1)AI置信度較高時,無需HI干預,對話系統徹底由AI來執行動做;2)AI置信度不高時,AI生成候選動做輔助HI來動做;3)AI不肯定性很高時,徹底由HI接管來執行動做。

clipboard.png

在基於AI+HI的對話系統中,HI扮演三種角色:1)爲AI提供反饋,如NLU出現錯誤時,HI能夠糾正,而後AI在糾正後的對話狀態下繼續工做;2)在AI的輔助下執行動做,好比AI生成候選動做但不執行,由HI進行判斷最終來執行;3)產生標註數據使AI不斷進化,例如HI每一次糾錯、執行動做都是一個標註的樣本,能夠用於訓練AI。

clipboard.png

剛剛提到第二個挑戰是僅用語音和文字,有時候交互效率不夠高。例如,用戶經過天然語言叫車,而後想知道司機的實時位置,咱們若是經過天然語言去描述司機位置「司機在XXX路距離你YY米」,這個體驗會不好。咱們解決這個問題的方案是使用多模態交互,即在語音和文字的基礎上增長更多的交互形式,如圖形化的交互界面。上面的例子展現了用戶經過天然語言交互叫車、查看司機位置、取消用車的全過程。很顯然,經過一個地圖來展現司機位置比使用天然語言去描述司機位置更精確和高效。咱們將文本消息和webapp結合起來,用戶既可使用對話式的交互,也可使用圖形式的交互。

clipboard.png

剛剛提到第三個挑戰是對話式的交互目前還不是主流,用戶並不適應。爲了讓用戶更接受對話式的交互,咱們能夠將對話系統和推薦系統結合起來,這樣對話系統不只僅是被動的回覆用戶,還能夠基於情景向用戶進行推薦,主動和用戶進行溝通。上面的圖片展現了,助理來也經過分析用戶的習慣和喜愛,在合適的場景下向用戶主動推薦打車、咖啡等服務。這種狀況下,用戶每每不須要再進輸入任何東西,便可獲得需求的知足。同時,由於用戶收到的推薦是基於場景的,是個性化的,用戶不會以爲被打擾,轉化率也不錯。Q&AQ1:目前,人工智能聊天機器人能在多大程度上代替企業客服?A1:聊天機器人在基於特定知識庫的客服場景下,已經能取得不錯的效果。好比淘寶和京東上的客服機器人,已經能回答不少問題。固然,前提是語料足夠多,質量足夠高。Q2:如何快速構建簡單場景的chatbot?A2:首先須要一個懂AI的產品經理明確的定義出你的對話場景,包括意圖、實體、動做等。其次想辦法收集到一批對話數據,進行標註,越多越好。最後可使用現有的NLU服務搭建一個簡單的chatbot。報名請關注極牛(ji-niu)公號回覆技術分享

相關文章
相關標籤/搜索