TA | 觀察

TA | 觀察

來自專欄睿懂

  大家好,我是Harry.火。題目有點怪,啥意思...一會就知道。

  今天想來討論一下現在應用非常廣泛的對話機器人(可能又會被叫做聊天機器人、客服機器人、智能客服、chatbot、虛擬助理、虛擬代理等等,我個人不太喜歡凡事都用「智能」這個詞,被濫用在太多場合,所以以下都用「對話機器人」來指代)。

  有些人說NLP是AI領域中"the jewerly of the crown"(王冠上的珠寶),雖然近期圖像/視頻、人臉、聲紋等方面的研究也特別的火,但關於NLP、以及基於NLP的衍生應用,例如對話機器人、機器翻譯、知識推理、主動性地機器編輯等的討論也從未停止過。而對話機器人在目前的AI領域已經是一個討論了很久的話題、也是相對有產出與落地的實際應用,它可以被可以做得很簡單、也可以被做的很複雜,從一個2、3歲小孩的理解能力開始,循序漸進的往前發展。

  廣義上對話機器人的產品有很多,比如IBM 的Waston、蘋果的Siri、亞馬遜的 Alexa、Google 的 Assistant、阿里的小蜜、百度的小度、微軟小冰,Mitsuku、賢二機器僧等,而從細分功能上來說它們各自特點又不同,有些重深度問答、有些重視純粹的閑聊、有些爭做佛教界的「Siri」。今天我不會去介紹這些產品,網上已經有很多關於聊天機器人的前世今生。這不是一篇技術文檔、也不是一篇純粹的科普文檔,更多是個人觀察的總結,針對對話機器人發展現狀的觀察以及未來趨勢的研判。

  在開始以前我先放上一個電影《她》(Her)的預告片,這是一部科幻愛情片,由斯嘉麗·約翰遜配音,說的是一個作家在結束了一段令他心碎的愛情長跑之後,愛上了電腦操作系統里的女聲,這個叫「薩曼莎」的姑娘不僅有著一把略微沙啞的性感嗓音,並且風趣幽默、善解人意,讓孤獨的男主泥足深陷。

  這背後可能是真正意義上的通用智能,是能真正理解而不是簡單模仿的智能,是會主動關懷而不是一味被動反應的智能,是具備同理心(Empathy)的智能,當然這只是影視作品,是個理想,現在還做不到。

  那現在能做到什麼?「高級」的對話機器人是什麼樣子的?

  對使用者而言本質上來說,機器要做的就兩件事,首先理解對方想要問什麼,然後選擇回答什麼,當然為了完成這個看似簡單的目標,背後需要做許多的工作。

  第一步是基於NLU(自然語言理解,包括)技術去「理解」用戶的問題,這裡就包括要做意圖識別。廣義上來講意圖識別首先要能確認用戶「是真有事情找你」,還是只是「隨便聊聊,調戲你一下」,也就是我們平時說的劃分限定領域對話(有目的性的任務、知識問答等)還是開放領域對話(閑聊、扯淡)。然而目前技術上似乎並沒有成熟的手段在這個大方向上做區分,因此大多廠商的做法是靠場景隔離或者多對話引擎組合(將閑聊引擎,aka chit-chat bot的優先順序放在限定領域對話之後作為兜底的bot,在機器人無法識別特定領域任務的情況下,閑聊機器人出場和用戶扯個淡,以避免頻繁出現「我不知道」這種人工智障答案的尷尬)。

  不過就算我們可以確定用戶的意圖屬於限定領域,我們還是要做意圖的領域分類,或者叫粗分類、大分類等。為什麼呢?我們假設銀行有個用戶想要諮詢還款的事宜,他會問「每月什麼時候需要還錢」,這個粒度就很粗了,在信用卡、房貸、消費貸款等領域都有這個問題,機器便無法區分。當然現在的對話機器人可以通過意圖消歧的方式與你反覆確認事件的本體以達到辨別的目的,但這要求這些業務流程是相似的以及需要的答案其顆粒度也是相似的,可以在同一個知識庫里被維護的。這句話有點啰嗦可能難以理解,我們舉另外一個例子,比如你在電商網站上諮詢機器人客服一個問題,你的問題可能是關於某一個商品功能的,也可能是關於退貨流程的,甚至是和導購對話聊天以找到心儀商品的,這些問題或者對話流程的答案都有不同的顆粒度,因此需要不同的地方來存儲,也就意味著機器人最好在一開始就識別出來用戶的領域意圖。目前的行業里用的手段並不多,包括完全基於規則的,如下圖的恒生銀行HARO,必須要選擇對應的業務領域;以及基於點擊流的、結合用戶行為特徵的深度學習意圖預測模型,這個定義很長,簡單來說就是在某個特定的時效區間內,看你之前在網上的行為特徵,包括點擊、瀏覽、搜索等信息,判斷你對某一類業務/產品的關注程度,按優先順序判斷你可能的意圖,但這種方法的準確率並沒有基於規則的那麼牢靠,而且你得是一個有能力採集數據的互聯網公司,仍會耗費很多研發的人力,因此行業中還是以第一類為主。

  在判斷出初步的領域意圖之後,機器就可以進行意圖分類了。這裡有基於業務規則進行實例匹配、檢索分類的方法,維護起來很麻煩,因此目前大多是基於深度學習模型的分類方法,例如CNN、RNN再加Attention機制,沒有最好的演算法模型、只有最適合的。比如短文本的問答/對話過程中,CNN+ATN的效果會更好些。具體演算法研究的文章網上超級多,我也不是專家,就不裝X了。

  意圖分類之後,我把槽位填充(Slot filling)打了虛框,原因是在任務型對話這種多輪對話(Dialog)中會使用到槽位填充,而單輪問答(Q&A)是使用不到的。槽位填充顧名思義就是把完成一項任務所需要的信息位通過對話的形式一個一個填滿了,使之成為一個完整的、可執行的任務,其技術發展也非常的快,目前有基於Attention機制的RNN、RNN+LTSM等方法......再講就要露餡了。

  完成意圖識別之後,機器就應該知道用戶問得是什麼了,接下去機器就要選擇回答什麼。這時候需要結合一層對話管理系統(DMS)層,可以差不多理解是任務分發器,將意圖分發到相應的引擎中去,執行引擎所規定的相應任務,來完成「選擇回什麼」,功能組件包括了對話狀態跟蹤、對話策略等。對話管理中也有很深的學問,例如狀態記錄之後的行動(Action),可以根據基於業務規則的方法來進行,也可以基於機器學習的方法,現在通常是兩者結合進行。基於機器學習的對話策略本質上是action space的分類和排序問題,簡單的做法是在對話機器人平台上由業務及運維人員對機器進行「教育」,或者稱之為「互動式監督學習」,再由機器提供TOPN的高置信度答案後,人為進行教育標註,缺點當然是費時費力,而且會訓練處帶有強烈主觀(或者叫偏見)的模型。還有種設想是構建兩個機器人,給定一些先驗經驗,從零開始互相聊天。不知道能否像互相下棋一樣,利用這種強化學習構造出一個會聊天的機器人(假設每一步都至少有一個準確的行動)。

  目前大家都在做的引擎一般有任務型(Task Bot)、導購型/推薦型(Rec Bot)、問答型(QA Bot)、閑聊型(Chit-chat Bot),以及比較前沿的閱讀理解型(MRC Bot)、圖片識別型(VR Bot)等。

Q&A Bot

  執行單輪的問答,要求可以準確回答用戶的提問,並一定程度上「超出預期」,帶來「精細」。那用戶的提問肯定是五花八門的,有些人知道自己想問什麼,另外一些則不知道,還有些可能模稜兩可。那麼機器人要做的首先是在明確意圖的基礎上,進行Q-Q的匹配,也就是用戶當前所問的問題和知識庫里的標準問題的進行匹配,這樣才能知道問的問題在我的肚子里有沒有答案,其次是做Q-A的匹配,決定哪個答案回復最好。標準問答對的方式在垂直領域內的應用十分廣泛,因為業務或者流程有限,我們可以指望有限的精力的付出可以覆蓋可能涉及的多種問題與答案。不過為了更好的效果,越來越多的企業使用了基於知識圖譜知識問答方式(KBQA)。這裡不會展開知識圖譜的知識,因為又要說上好幾天,希望有機會今後再來分享,可以舉個例子,比如我們問「誰是奧巴馬」,KBQA不但可以回答預先設定好的「他是第X界美國總統」,還可以告訴你額外的信息,例如他的夫人是誰?星座是什麼?哪裡畢業等。從提問的角度來說,像前面說到的,有時用戶不知道自己想要問什麼,但他知道如何來描述自己的問題,比如「噹噹噹噹是哪首歌的開頭?」,「2008年北京奧運會的主題曲是什麼」等等。因為在知識圖譜中知識的表達是鏈接式的,可以以圖的方式進行推理。知識圖譜還可以用在語義搜索,比如下面這個網站(poem.studentsystem.org/):

我們來試一下,搜索「李白的朋友」:

關於愛情的詩歌(古文成績一直不太好,大家可以看看對不對):

  想像一下如果一個新員工問公司的機器人「報銷系統是什麼」的時候,回復不僅能給出鏈接,還會友情提示「報銷系統需要OA許可權登錄,提供差旅報銷、市內交通、福利報銷等功能,由XXX部門在前年開放上線,去年更新升級......」是不是體驗會更好呢......

  KBQA的回答是基於檢索的,也就是答案事先已經定義好了,機器的作用就是把置信度高的給找出來,多適用於限定領域。在開放領域還有一種是基於生成的,我事先給機器喂很多語料(論文、散文、小說、詩歌、說明書等等),然後根據用戶的詢問生成一個答案進行回答。不過這個真的很難,就不細說了。

Task Bot

  完成某個明確任務的引擎,或許是訂票子、或許是開工資證明、或許是查違章。從功能上來講,主要是基於槽位填充,目前的機器人大多可以「差不多」的完成任務,但仍舊是不溫不火。也許是因為從體驗上來講,並不比現在的方式更有效率。查違章,只需要點一下;訂機票,我可以一目十行、橫向對比。也就是說現在的做法已經代替了以前的人工查詢,所有被代替的人工查詢任務,你現在又用AI去模擬人工,要想C位出道,除非非常有特色可以一鳴驚人,比如說帶有情感的回復。我們還是說回來這個task bot,目前基本上可以做到多輪的對話,不間斷地完成一項任務,中間允許用戶「出爾反爾」,也就是修改意圖、意圖清除。也可以在上下文中出現模糊意圖的情況,比如機器在向用戶獲取某個槽位信息的時候,用戶可能說「我不太清楚」、「我不知道」等情況,這時候機器有幾種處理方法,包括基於槽位回答的頻率來提供答案,比如訂機票的時候大多數倉位選擇是經濟艙,那麼機器會反問「是否預定經濟艙」,還有現在高級一點但還不落地的做法是基於領域內的用戶畫像做客群分類,高富帥/白富美算一類,那麼就會反問「要不訂頭等艙」?除此以外,Task bot還需要可以與QA bot無縫切換來滿足某些詢問場景,比如機票訂到一半,我想問一下目的地的天氣,那麼DMS就需要將意圖分發給QA bot,但這做起來也有限制,就是如果用戶的query同時存在於Task和QA預先定義好的庫中。補充一下,槽位填充並不是要一次填一個,你大可以一下子把要說的都說完,什麼時候、什麼航班、去哪裡、什麼倉位,那麼就可以直接完成整個流程。

  Task bot近期研究的方向除了更準確、更流暢以外,還有情感識別及帶有情感的回復,讓機器帶有之前所說的「同理心」。我們或許會在chit-chat引擎中感覺到情感的反饋,但那更多是預先設定好的,屬於基於檢索的回答,不是實時識別的,還有情感回復就更需要用到NLG(自然語言生成),是基於生成的回答,生成情感詞、生成情感語法和句式,要做好非常的困難。我們離開用戶的視角,從運維人員的視角去看,任務型對話的流程、槽位數目通常都是事先定義好的,上線之後會經受海量用戶的問詢並將數據留存下來。那有沒有辦法通過這些留存的數據自動地去改變某個業務流程或者槽位使得用戶體驗更好的?還是訂機票的場景,如果95%的人都是從本地出發、訂經濟艙,那麼預先設定好的流程能否在某個晚上進行離線計算、發現越過了某種閾值時,第二天自動跳過這兩個槽位的提問,只是在最後生成訂單的時候和用戶確認一次就好了,即有效率又顯得機器很懂你,這或許可以叫做對話過程性知識的自動挖掘,已經有好些組織在研究了。

Machine Reading Comprehension (MRC Bot)

  讓機器對大段文章,甚至是論文、書籍等進行「閱讀理解」,然後回答問題。如果能做到準確度高、泛化能力強,那真的是很高級。想像一下,以後或許不用在人工進行知識庫的構建,機器學習了關於歷史的百科全書,你問超雲的兒子是誰,他就會把答案告訴你(什麼,你也不知道?)。目前我們已經在這個方面有些許成就,包括段落式的文章輸入之後,你可以問一些不複雜的問題,例如「誰在什麼時候做了什麼事情」,這樣的問題機器還是可以回答的。但如果你要問,「以上這篇文章作者描述了一件什麼事」,那我們就需要用另外一種實現方式了,也就是利用機器進行語義層面的總結。目前的做法是要對閱讀的範圍做好定義,比如說網上的100篇文章、或者企業內部的100篇PPT/Word等,而機器要做的就是自動完成總結/摘要,實現的方式無外乎基於檢索和基於生成的。基於檢索的是將文章中重要的語句或段落摘出來,拼在一起;基於生成的,就是自然語言生成一段話。這2種方式目前在中文上都做得不好。我們再往後一步,如果你偏要問「以上這篇文章作者想表達什麼樣的中心思想,弦外之音是什麼」,那目前在NLP領域只好說聲對不起了。

Visual Recoginition Bot

  基於視覺識別能力的機器人,雖然不是傳統對話機器人所必要的功能,但我卻也認為是發展路徑上必要經過的一站。在你和人聊天的時候,有時會用大量的詞句去描述一個風景、一個人物、一件物品,希望你的聽眾可以體會到你所體會的東西,甚至有時候還會有些許「詞不能達意」的懊惱;在社交網路的發展下,人與人通過網路的交流,更頻繁地使用表情、照片,來表達自己的情感、支持自己的論點、傳達某些視覺化的信息,那麼我們的對話機器人也應當有這樣的視覺識別能力來應對需求。現在的搜索引擎、電商、社交工具都已經自帶了基本的以圖搜圖的能力,這個引擎可以直接移植時候。除此之外,我們還在教會機器去「看圖說話」。大量的圖片和語義資料,教會機器「理解」和「表達」,將視覺和語言連接在一起,所有人都在期待從量變到質變的過程,等待一個「奇點」到來。

Recommendation Bot

  推薦型機器人(也有人叫導購機器人)發展的起初也是一種Task Bot,槽位中填的是各種商品的描述/參數,然後按置信度返回的推薦多少都是經過人工或者機器競價排序的。近年來電商都在將用戶畫像、商品畫像、推薦引擎和對話機器人捏合到一起,期望構建一個更智能的導購。但似乎和task bot一樣,在實際應用的場景中TA並不能比首頁的推薦或者APP推送帶來更高的轉換率,那麼,如果讓對話機器人在聊天的過程中「不知不覺」、「潤物細無聲」地將產品推薦出去便成了一個問題。

Chit-chat Bot

  開放領域的對話機器人,或者叫閑聊型機器人想必大家一定最熟悉,畢竟平時調戲的各種智能產品就屬於此類。因此,這裡想著重探討一下這種機器人目前所存在的情況與挑戰,看看大家平時有沒有注意到此類情況。回答一致性:用戶今天可以是威嚴的國王,明天就可以變成風流的作家,機器人今天是你的王后、明天又需要變成你的情人,這種人設的不確定性無法讓機器背後產生長久可記憶的對話邏輯,那麼用戶反過來要求機器人有人設的一致性本身就是不太現實的。時效性是回答一致性的問題之二。通常來說閑聊機器人背後是基於百科式的知識圖譜,例如IBM Watson Q&A背後的DBPedia/Freebase,如果我們問一個問題,比如「誰是世界上最美麗的女人」,機器人今天爬的數據告訴你是白雪公主,第二天網上熱點改了,知識重新融合了,變成了范冰冰,有些人難免會覺得不適宜。

  缺乏多輪閑聊的能力,是大多數chit-chat bot的短板,要麼是前言不搭後語,也就是沒有上下文對話管理;要麼是回答太過籠統,放之四海而皆準,而且尚沒有辦法進行情感的理解與互動,包括語音情感(Tone Analysis)和語義情感的識別,並帶有情感的回復。

  之前對於閑聊機器人的回答信息含量不多的詬病,目前可以通過構建知識圖譜來解決,「三國演義是誰寫的?」,「羅貫中,明朝人」。

未來機器人 Future Bot

  從功能上看,多模型融合的機器人,將用戶畫像、推薦引擎、預測模型、圖像識別等有機結合在一起,可以完成類似如下的對話:「你喜歡什麼?」,「你想聊聊跑車嗎?」;「我每天少吃100Kcal,多少天能瘦回原來的樣子呀?」。在必要的時候還可以連接物聯網/可穿戴設備,在你心跳過快的時候來一句,「這是戀愛的感覺嗎?」,完成從被動型聊天主動型聊天的轉換。多模態(文本、語音、圖像)、情感化、機器閱讀理解這些前面也都說到了,這些功能仍舊是今後要發展的一些方向。而在技術領域也仍需要進行持續探索,包括生成模型、增強學習、遷移學習等。模型的生成我們甚至期望機器全自動的建模、高效的人機協同建模等。

  我有時候自己在想,人類社會在各個時代都有一項很重要的任務,就是維持身邊的人際關係,社交網路時代更是如此,「朋友圈很多,朋友卻很少」似乎是現在很多人的真實寫照,那麼如果有一個機器人可以「幫」你去和別人聊天,而且別人還發現不了,豈不是甚好?後來我再一想不對吖,誰知道對面是真人還是機器人呢?弄不好變成機器人vs機器人聊天了。

  很多具有前瞻的領導者都認為對話入口將是今後一切形式流量的入口,包括喬布斯大大,所以各大互聯網廠商、硬體廠商、傳統IT廠商都想方設法強佔這個入口,想想你現在家中那個有些「智障」的小Ai、小Q、小微、小度、小三、小四...智能音箱、冰箱、烤箱等,以後都有可能成為《鋼鐵俠》中Javis那樣的存在。

  說了那麼多,就算有朝一日可以通過圖靈測試,其實我們可能離虛擬生命還很遠,比如說我們與機器交互的方式,不會一直僅局限於文本、聲音與圖像等,人們始終期望自己的「創造物」和自己像,有自己的特點,就像上帝希望我們能像他一樣。所以就需要機器人有「臉」、有「表情」,能看到我們的臉和表情,聽到我們所說的話,並相應地做出反應。

  早些時候IBM與一家叫Soul Machine的公司合作,Watson提供語音、對話、自然語言處理、語調情感識別等能力,Soul Machine則基於這些使對話機器人看起來更像「一個人」,他們叫TA 「Rachel」。 Rachel會根據人的自然輸入,返回相應的自然回答,有表情的,形成自然的交互。

  當然虛擬生命的內涵遠不止如此,是否具有自我意識,也許就是衡量「是否具有虛擬生命」的圖靈測試。如何創造或者說植入意識,此類話題在計算機領域仍是一片空白。所以前端時間我和一位有人打趣說,與其期待AI技術能創造真正意義上的類人智能,還不如好好期待生物科技的發展,比如生物晶元、基因技術、克隆技術什麼的。

  從對話機器人到圖靈機器人,從圖靈機器人到虛擬生命,也行我們等待的是技術的進步與奇點的到來、更是信仰的飛躍與生命的進化。

人:接下去聊什麼?

TA:我們來聊聊你吧。

(部分圖片素材均來自互聯網,侵刪)


長按下方二維碼關注微信公眾號「睿懂」,知者不惑、仁者不擾、勇者不懼。

weixin.qq.com/r/yExUTAX (二維碼自動識別)

版權聲明:本篇文章來自火大哥原創,轉載請註明原文鏈接和作者,任何問題可以聯繫harryhuo23@163.com,謝謝。


我是有底線的人。

推薦閱讀:

說一些與預測分析無關的題外話
如何幫助學生更好地學習|宋宋的讀論文筆記 week 5/14
人工智慧助力神經科學:DeepMind 復現大腦空間導航方式!
沒有情緒的人工智慧如何識別人類的情緒? | 機智過人
作為我自己是什麼感覺

TAG:認知科學 | AI技術 | 客服 |