Google工程師帶你瞭解聊天機器人的工作原理和未來發展
Hi,大家好,我叫 Danny,很高興今天能和大家一起來探討一些關於聊天機器人的話題。
先自我介紹一下,我本科畢業於中山大學,工作兩年後到卡耐基梅隆大學讀博士,博士期間的研究方向是多媒體和深度學習,博士畢業後到一家智慧監控公司做了一段時間視訊監控方面的研究,現在在 Google 的研究部門工作,因為工作敏感性的原因,我想先宣告一下,這個講座的所有觀點僅代表我個人的觀點,跟 Google 以及我在 Google 所做的工作無關。
我今天要講的話題非常有趣,是關於聊天機器人的歷史、現狀和未來的。
如果大家關注聊天機器人的進展就會發現,現在很多聊天機器人都有 Samantha 的部分功能了,比如微軟的小冰也會講笑話,會作曲,亞馬遜的 Alexa 也能叫我們起床,播放音樂,很多推薦系統會讀取我們的個人資訊並幫助我們做很多事情,當然要真正做到像 Samantha 一樣,我們還有很長的路要走。
但一個不可否認的事實是聊天機器人正變得越來越智慧,能夠幫我們做的事情越來越多。
我們今天要講的聊天機器人是廣義上的聊天機器人,它包括問答系統,比如 IBM 的 Waston;對話系統,如蘋果的 Siri,亞馬遜的 Alexa,和 Google 的 Assistant 都屬於這一類;當然還有傳統定義上的聊天機器人,如微軟小冰,Mitsuku 和國內很有名的賢二機器僧。
我們今天會圍繞兩條主線來講:
第一條是聊天機器人演化史上著名的聊天機器人的一些主要功能,我們會從第一個著名的聊天機器人 Eliza 開始,一直講到 IBM 的 Waston,Google 的 Assistant。當然我們不會每個都講,只會挑一些有代表性的講,對其他類似的會一筆代過,這裡所列的也不盡完整,有很多著名的機器人我這裡沒有列到,比如百度和出門問問都有自己的聊天機器人,但因為它們跟我列到的一個或多個比較相似,這裡就不詳列了。
第二條主線是聊天機器人架構的演化,這裡我們有三個模組,最上面的模組代表的是比較古老的 Chatbot 框架,非常簡單,只能處理文字,而且只能做一些比較簡單的模式匹配;中間的模組代表是現有大部分聊天機器人的架構,我們現在大部分的聊天機器人都能做到比較好的語音識別,自然語言理解 NLU,還有一些能夠執行比較複雜的查詢和動作,屬於 Dialogue Management 系統,之後根據這個對話管理系統所發出的指令它能夠做一些比較複雜的動作,或者能夠生成自然語言,做一些聲音的合成,傳達回一些資訊。
那最下面的模組是代表當前比較流行的研究方向,和圖片處理一樣,現在學術界的普遍希望是能夠通過大量的資料來訓練一個足夠複雜的神經網路模型,從而代替現有的各個分開的一個模組。
在繼續深入探討每個模組之前,我想先聊聊幾個聊天機器人興起,或者為什麼我們現在要玩兒聊天機器人原因。
為什麼我們現在玩聊天機器人?第一個原因當然是手機聊天的興起,根據 BI Intelligent 估計,在短短的幾年內,手機聊天的月活躍量、使用者活躍量從遠低於社交平臺到 15 年開始遠超社交平臺。其實不用這些資料我們大概也能估計到,現在有大部分的人用的最多,或者是最離不開的 APP 大概是微信吧。
微信的聊天平臺的流行給 Chatbot 發展帶來了兩個便利:第一個是資料,我們可以有海量的資料訓練非常複雜的模型;第二個是使用者,通過這些聊天的 APP,Chatbot 得到大量的使用者,這些使用者不用改變自身的聊天習慣,就可以和 Chatbot 很自然的進行互動。
第二個原因是技術的發展,特別是語音識別技術的發展。這張圖展示的是從 1988 年以來語音識別技術的發展,橫軸所展示是年份,縱軸是錯誤率。從最開始我們只能識別慢速的,非常不自然的實驗室資料,到慢慢的我們能夠識別廣播資料,到現在我們能夠對日常的交流的語音比較,做比較好的識別。
這裡最好的是,一個是 2012 年的系統,大概能到達 12% 的準確率,現在我們能夠識別到低於 6% 的錯誤率,語音識別雖然只是聊天機器人的一個小模組,但是它特別重要。Alexa、Siri、Google assistant 之所以能夠成功,大部分原因是有比較好的語音識別系統,當然,肯定還是因為大公司的參加。
大公司的參與有兩個好處,第一個是使技術發展更快,亞馬遜據說有五千多個人在 Alexa 部門工作,這麼多人力物力的投入將大大加速技術的進步;另一方面是降低其他開發者的開發門檻,比如說現在很難的語音識別技術,自然語言處理技術在 Alexa 和 Google Assistant 上都可以免費的得到,這將大大降低開發的門檻。
Eliza下面來開始講第一個比較著名的 Chatbot,叫做 Eliza。
Eliza 誕生於 1966 年,發明者是 MIT 一名叫 Joseph 的教授。Eliza 一開始的角色是一名心理學家,它所踐行的療法叫人本主義療法,人本主義療法特別有意思,他希望對求助者創造無條件的支援和鼓勵,使的求助者能夠發現自己的問題,所以他特別關注求助者的本身,機器人只是做一個陪伴,只要幫他理清思路而已。這樣,Eliza 可以避免被問到關於自己的問題,它只是做一個基本的陪伴而已,任務比較簡單。
有趣的是 Joseph 發明 Eliza 之後發覺它特別 powerful,很多人包括他的助手都願意跟 Eliza 聊天,並且聊自己很私密的事情,最後還要求 Joseph 不能夠看他們的聊天記錄。Joseph 就覺得未來機器人的發展會很可怕,會涉及到擁有私人的祕密,可以做很多壞事,他花了很多時間來反對研究 Chatbot,反對自己的研究的成果。
我們來感受一下 Eliza 有多 powerful。
這裡有兩段對話,左邊的是 Joseph 發表的一段對話, 這裡我們可以看到,H 表示的是 human,就是來訪者,B 代表的就是 Eliza。
我們可以看到,來訪者開始先抱怨說男人都是一樣的。Eliza 就說,怎麼會一樣呢?來訪者說,他們都喜歡煩我。Eliza 說,能給個具體的例子嗎?來訪者說,我男朋友就逼我來這裡。然後 Eliza 說,你男朋友逼你來這裡嗎?對話就這樣繼續下去。
到最後來訪者說,你在某些方面挺像我父親的,從這句話中可以看出,來訪者已經把 Eliza 看成是一個真正的心理醫生,這讓 Joseph 覺得特別可怕。
右面是我實現的一個 Eliza 的一箇中文版,如果你認真跟它對話,不調戲它,你才是可以看到,它有幫來訪者理清思路的效果的。這裡我先開始說,你好。然後它問我心情怎麼樣。我說心情不是很好啊。它就說,那是什麼事情讓你不開心?我說跟我媽吵架了。它說你跟你媽的關係如何?這句已經不是特別順暢了。順暢的話它應該是問一些吵架的事情。但是我們可以看到,就基本上語言的還是順暢的,跟我們正常的人聊天還是有些相似之處的,我右邊有放了一個二維碼,如果大家感興趣,可以去掃這個二維碼,聊聊看。
Eliza 的工作原理很簡單,通過簡單的模式匹配,甚至沒有任何的語義理解,它也只能夠處理文字。
圖中是 Eliza 的一段虛擬碼, 我們可以看到它是做一個簡單的關鍵字匹配,這裡它有大概兩百多個模板,如果匹配到一個或者多個關鍵字,它就用關鍵字對應的模板去回覆,如果匹配不到的話,它只是簡單的把“我”改成“你”,然後返回原話,比如說我們前面看到的:來訪者說“我父親”,然後 Eliza 說“你父親”;來訪者說“我男朋友逼我來這裡”,Eliza 說“你男朋友逼你來這裡”。只是簡單的重複他的對話。
但是就是這些很簡單的規則,基本是現在很多很有名的聊天機器人的基石,比如說 ALICE、Mitsuku、機器人小冰等等,ALICE 和 Mitsuku 都是 Eliza 的一個直接的延伸,只不過在此基礎上極大的擴充套件了模板,並且加了一些跳轉,但僅僅是擴大了模板使 Chatbot 就變得特別強大。
MitsukuALICE 和 Mitsuku 都是三屆 Loebner 銅獎的獲得者。Loebner 獎是聊天機器人非常重要的獎項,它用來獎勵每年最像人類的聊天機器人,2017 年的獲獎者是 Mitsuku。和 ALICE 同時誕生的還有一個叫 AIML 的語言,通過這種 AIML 的語言,我們可以做到很快速的匹配。Mitsuku 就是建立在這種語言的基礎上的。
下面我們看一下 Mitsuku 的一些例項,這裡有兩個對話,左邊是 Mitsuku 和 Alexa 的對比, 這個視訊發表於 2016 年 10 月底。
我們可以看到在 2016 年 10 月底,這個視訊發表的時候,Alexa 仍無法做多個回合的對話,這裡當作者說到“it”的時候, Alexa 的回答是去定義那個“it”。而 Mitsuku 是知道這個“it”代表的是印度,所以我們可以看到在多個回合的對話和對話的流利有趣程度來講 Mitsuku 是要優於 Alexa。這是因為 Mitsuku 的模板來源於網路,它跟微軟小冰一樣,通過收集網上大量的人的對話,只是返回一些人的言語而已,所以它的回答特別像人。但是 Mitsuku 除了聊天之外沒有其他功能,而 Alexa 可以控制家電,可以幫你買東西,可以記錄資訊等等,就有用程度來講,Alexa 要遠超於 Mitsuk。
右邊是我跟機器僧賢二的一段對話,大家可以看到這類 Chatbot 一個特點是它們的對話沒有一個 Topic 的概念,就只能夠“尬聊”,並不能維持一個 Topic 進行深入探討,因為它並不知道你前面講的是什麼。
前例中,Mitsuku 雖然能夠知道前文聊天的內容是什麼,但是如果我們更做比較複雜的指代,它就很難做到。工作原理上來說跟 Eliza 差不多,只做簡單的模式查詢替換,並不能針對語境做理解,而且它也不能夠做一些語音的理解。
這裡的展示的是,下面展示的是 AMIL 語言的一個簡單的例子,我們可以看到它有一個叫 Pattern 的標註,這個 Pattern 就是我們人類說的話,它是用來匹配使用者的話語的;下面有一個 Template 標註,是用來放置回覆的模板的;最下面還有一個 SRAI 的一個標註,這是用來做跳轉的,比如這裡當用戶說到:“What are you called”的時候,它可以跳轉到“What is your name”這樣一個模板。
Mitsuku 這種模式之所以能夠成功,一個原因是我們現在可以得到大量的使用者的聊天資料。另一個原因是我們的語言會 follow 一個叫 Zipf`s Law 的分佈。簡單來說,我們如果把詞語按詞頻來排序,那麼這個詞頻大致會是 1/X 的一個分佈,X 表示的是詞的排序,也就說人類語言並沒有我們想象的那麼複雜。
有人對英語做過統計,每個句子的第一個詞大概有兩千種可能,但是如果我們把第一個詞放好之後,第二個詞就只有兩種可能了。所以總的句子的數量並不是特別多,當然如果我們每個人說話都像莎士比亞一樣,非常具有創造性的話,那麼 Mitsuku 這種方式可能就不太成功了。
IBM Waston下面我們來講一個比較複雜且非常有代表性的一個系統叫 IBM Waston。
Waston 是第一個在 Jeopardy!上戰勝人類選手的 QA 系統,Jeopardy!是美國一個電視智力競技節目,在 2011 年的一場比賽中 Watson 成功打敗人類選手,贏得第一名,獲得一百萬獎金。那時候是非常轟動的一件事情,但是現在來看我們知道 Chatbot,包括 Siri,Alexa,因為藉助網路知識的緣故,在知識問答方面更遠超人類。在我看來,這個 Q&A 系統就是一個回合制的 Chatbot,類似於剛才展示的 Alexa,只是沒有一個執行動作的功能。
從系統模組來說,因為要做到比較精確的回答,比如當不知道答案時候不能夠插科打諢,Waston 需要的系統已經遠比之前的 Eliza 或者 Mitsuku 要複雜。首先它需要做一些語法和語義上的分析,我們可以從這個圖的左邊看到,當 Waston 拿到一個問題的時候它會做很多的語義的分析,包括比如說問題的型別分析、代名詞是指代哪些詞語的分析,還有哪些代表的是人名,哪些代表的是地方名。有了這些語義分析之後,它再對這問題進行重新組織,之後分別到網上去搜索和自己的資料庫中進行搜尋。搜尋大量文章之後再對這些文章進行排序,拿到排序的文章之後,通過一個系統,從文章裡面搜出關健詞,再把這些關健片語成答案,再對答案進行排序,最後再由一個系統把這些答案拼在一起,顯示單個答案。
我們可以看到 Waston 就像一個搜尋引擎,但它只能返回一個答案,這樣的話,它的準確度要很高,並且因為他有自己的資料庫,所以它是一個在某方面比較有用的搜尋引擎。當然對比 Mitsuku 來說,Waston 雖然只能回答一些問題,但是商用來說它可能會更加有用,大部分原因就是因為它有特定的資料庫。
我們再把 Waston 的架構對映到前面提到的現代聊天機器人架構上去,我們可以看出它擁有聊天機器人的基本模組,它也有語音識別系統,也有自然語言理解系統,也有對話管理系統,基本上就是去搜索知識,然後把這些知識拼接在一起,它也有自然語言生成和語音合成系統,只是缺了一個執行動作的模組而已。
講完了以 Waston 為代表的問答系統,現在我們來講講以 Siri、Alexa 和 Google Assistant 為代表的任務驅動系統。
Siri、Alexa 和 Google AssistantSiri 最早出來 2011 年,比 Alexa 和 Assistant 都要早的多。它原本是美國軍方一個研究專案,後來因為技術比較成熟,成立公司,並且被蘋果買走,並整合到蘋果手機中,可以說是第一個非常成功的一個聊天機器人。
Alexa 和 Google Assistant 是不同於 Siri 之處是,它們是一個平臺,開放了很多 API,使的很多開發者可以在上面開發各種功能,現在他們擁有的技能應該比 Siri 多的多。
前面我們說到在 2016 年底,Alexa 只能做一個回合的對話,我們這裡可以看到 Siri 在 2014 年的時候也只能做一個回合的對話。
從上面圖我們可以看到, 當用戶在問完:“找附近的餐館”之後,他接著問:“這些餐館裡面是否有義大利餐館”,這時 Siri 就不知道“這些”指代的是那些返回的餐館。同樣的,當用戶問:“給我多一些第二個餐館的資訊”的時候,Siri 也無法回答。
但是到了 2017 年,它已經可以做很多比較完整的多個回合的對話了。這當然是得益於對話管理系統的更新,在此之前 Siri 只能根據當前的對話去回答。現在 Siri 是可以整合一些歷史的資料來回答問題。
我們可以看到這裡展示的是 Siri 的基本模組,當然因為我們沒有在 Apple 工作過,我也不知道它的具體的模組是怎樣,但是它的模組大致應該是這樣一個系統:它同樣有一個自然語言的理解模組,有對話管理系統模型,還有個執行動作,可以去呼叫其他的 APP。當這些系統要處理多個回合的對話,並且完成任務的時候,大致都用在一個叫 Frame-based Dialog 的框架。
這個框架下,Chatbot 為了完成任務,需要填多個空。
比如說我們這裡展示的是一個定機票的系統,它要知道出發的日期、時間、城市、到達的日期時間和城市,於是它就會一個一個問題的去問使用者,並且從回答中抽取合適的答案來回答這些問題。這就要求對話系統去理解語義,知道這個詞代表的是一個城市還是一個日期。這個框架現在應用的特別廣泛,美國的很多機器客服都用到這個框架。
微軟小冰最後我們來簡單聊一下小冰,小冰是一個跟 Siri、Alexa 和 Google Assistant 都非常不同的一個框架,它更像 Mitsuku 和 Eliza,它不是一個任務為主導的系統,而是一個純粹的聊天系統。它通過收集大量的使用者和聊天資料,並且從中學習一些模式,從而進行模式匹配。
當然據說微軟是不儲存使用者資料的,所以我猜測它是一個基於模型的系統,很可能是一個神經網路系統。這樣的系統有個不好之處就是它特別容易學壞,因為我們很難控制使用者會說什麼。
這裡有兩條小冰的聊天記錄,第一個是左邊是在知乎上的問答, 我們可以看到小冰已經學會說髒話了,當然我這裡選的是最好的一張,知乎上還有比這難堪得多的聊天記錄;第二個是我跟小冰的一段對話,當我跟小冰說“謝謝”的時候,它理解為“再見”的意思,而且我跟它解釋說我其實不是說再見的時候,它是不能理解的。這體現的一個模板型聊天機器人的一個很難解決的問題:理解否定,就因為資料中說“再見”的內容比說“不是再見”的內容多很多,所以小冰只能理解肯定的再見,而不是否定的再見,你在“再見”的前面加上任何詞,它都只能理解為再見。
這裡還有另一個例子來說明,向用戶學習的不好之處。
這也是微軟的另一個系統,它的初衷是作為英文版的小冰,但因為向用戶學習,所以只公開了不到 24 小時就不得不下架。這裡我們看到,它一開始還能比較正常的說話,說人類挺好的,然後慢慢的就開始反人類了,最後就像納粹分子一樣。
聊天機器人的近期發展講完了一些著名的聊天機器人,下面我們來講一些近期的發展。
總的來說,現在聊天機器人的研究方向是以端對端學習為主導的,什麼是端對端呢?不同的系統有不同的解釋,在這張圖中,“端對端”表示的是我們用一個神經網路把自然語言理解、對話管理、自然語言生成一起學,這裡有點像 Eliza 的模組,它是通過把文字放到一個神經網路中去學一些規則,而不是我們人為去定義一些規則。
下面一個是跟前面比較像,只是他把各個模組用不同的神經網路來學。
比如說它把自然語言生成當作一個模組,把自然語言理解當作一個模組,把對話系統當作一個模組,但這些模組都是一個神經網路系統。每個模組都是一個神經系統有一個好處:比如訓練完了某個系統,我們可以把它連起來,然後再進行一個端對端的訓練。
總結總結一下,這個講座我們主要根據聊天機器人的功能和架構兩條主線來講一些歷史和現代比較著名的一些機器人的功能和工作原理;瞭解瞭如何做一個非常簡單的聊天機器人,比如說 Eliza;另外瞭解了比如說小冰和 Eliza 是在不同的體系下的聊天機器人。
如果大家想親自嘗試一下,我這裡還列了一些我感覺非常有用的資源:比如說 NTLK,NTLK 裡面有大量的自然語言處理工具,比如有我剛才提到的 Eliza 的程式碼;
第二個是 Stanford Parser,對自然語言處理非常有幫助,比如說它能幫助你理解哪些是城市、哪些是地名、哪些是人名,而且它還有中文版的,大家可以去嘗試一下;
下面是一本叫《Speech and language Processing》的書,在這個 Talk 裡面有很多內容都是引用這本書的,我感覺非常有用。
最後是一個 Github code,是基於 AIML 語言的聊天機器人的版本,基於這個 Code 大家應該可以做出一個類似小冰或者賢二機器僧的一個 Chatterbot。
作者介紹Danny Lan(Neeke),現任 Google 科學家,曾任美國一家智慧監控公司的 Director of R&D, 對視訊和多媒體的智慧分析有深入研究。作為主要成員,他曾代表卡耐基梅隆大學在美國國家標準總局(NIST)舉辦的視訊智慧分析大賽中連續多年進入前三。其他參賽團隊來自著名公司 IBM, BBN 等,以及包括斯坦福在內的多所世界頂級高校或科研機構。他在多個 AI 會議和雜誌發表論文 20 餘篇,論文引用次數近千。
ML & AI
長按,識別二維碼,加關注