當前位置:
首頁 > 最新 > 追一科技首席科學家楊振宇:對話機器人里不能「耳聞目覽」卻又「無所不在」的 AI

追一科技首席科學家楊振宇:對話機器人里不能「耳聞目覽」卻又「無所不在」的 AI

機器之心原創

作者:邱陸陸

對話機器人是「怎樣煉成的」。

相比於語音和圖像,自然語言是一個有「更多需求」和「更少標準答案」的領域。紮根自然語言的公司通常也不是從技術和方法出發,而是選擇一個具體的需求,然後用所有可能的方法解決它。追一就是這樣的一家公司,它瞄準的是「對話機器人」這個領域,把問題分類、分解、逐個建立準確高效的機器人,再有序集成起來。三月,機器之心有幸在深圳追一科技總部對首席科學家楊振宇進行了採訪,我們仔細聊了聊「對話機器人是怎樣煉成的」,以及在他眼裡,深度學習與自然語言最好的結合方式是怎樣的。

對話機器人需要解決的問題是如何分類的?

對話機器人是一個相對比較複雜的系統,由許多個模塊組成。其中最核心的模塊就是語義理解,理解用戶想要表達什麼意思。而在利用深度學習處理商業對話機器人的語義理解問題方面,追一是國內最早的一家。

根據服務類型,對話機器人可以分為 FAQ 諮詢、資料查詢、任務型和閑聊四種,涉及的自然語言處理問題也各不相同。

對於FAQ 諮詢來說,模塊的輸出對應知識庫里的一個知識點。解決問答就像解決一個大型分類問題,機器人要將用戶的需求對應到知識庫里的某一個答案。

知識庫里的知識點數量少則幾百個,多則上萬個。而根據知識庫大小不同,適用的模型結構也會有所不同。例如,銀行類客戶通常有多個複雜的業務線,知識庫規模也是數以萬計,直接對幾萬個知識點進行分類是難以取得高準確率的,因此,機器人會採用分層處理的方法,先判定問題與哪一個大領域相關,再進行詳細的知識點分類。

資料查詢類對話需要從客戶的輸入里判定兩件事:意圖和實體。比如「A 公司的市盈率是多少?」這個問句里,就包含了意圖「市盈率」和實體「A 公司」。成功獲得這兩個信息後,機器人會去一個結構化的資料庫里做查詢。得到答案後,按照一個預定義的格式化模板填充後返回給客戶。

資料查詢的一個難點是,用戶在連續發問時,不會每次都重複自己的意圖和實體,比如用戶會在詢問「A 公司的市盈率是多少?」之後,追問說,「那 B 公司的呢?」或者「那市凈率呢?」。這時,系統就需要通過上下文管理,對意圖和實體這些要素進行繼承或切換。用戶的提問到來之後,首先進行判斷:用戶在這一句中是否提供了某一要素?如果沒有,則嘗試從前文追溯繼承;如果有,再判斷用戶是否進行了意圖(實體)轉移,如果是,則需要進行對應更新。

另一個難點是,用戶可能不會直接說出實體全稱,無法進行精準的、基於規則的匹配。因此,機器人需要結合特定用戶的歷史記錄和用戶群體的統計信息,通過學習的方法計算詞與詞之間轉移的概率,然後進行模糊匹配。

任務型對話是當下比較流行的一種交互形式,機器人試圖以對話的形式來執行訂機票、查賬單、買理財等任務。任務型和資料查詢類對話有相似之處:它們同樣要從用戶處獲得兩類信息:意圖和「元素」。區別在於,確定意圖後,任務型機器人需要主導對話:它要理清進行特定任務所必要的元素有哪些,並以對話的形式確保用戶提供了所有元素。以訂機票舉例,用戶說「幫我訂明天北京到上海的機票」,那麼機器人在明確了任務是「訂機票」之後,就要理清,用戶已經提供的元素有時間、出發地、到達地,尚未提供的元素有艙位偏好、時間偏好、特定機場偏好等。只有獲得了全部所需元素,機器人才能「執行任務」。

最後一類是閑聊,與陪護機器人的閑聊功能不同,穿插在查詢、諮詢問答或任務交互之間的閑聊,需要結合上下文一起識別。有時,一句話單獨看是閑聊的意圖,但結合上下文一起看則屬於查詢、諮詢問答或任務交互的一部分。這種場景下的閑聊不僅要識別准,而且要保證上下文對話的流暢性,也非常有挑戰。

一個對話機器人系統通常由哪些模塊組成?

如前所述,系統是由 FAQ 諮詢、資料查詢、任務型和閑聊等不同類型的機器人組成的。除此之外,還有一個中控模塊,是系統的管理控制中樞。

中控負責依據用戶當前問句和歷史會話記錄,初步判斷當前問題應該由哪個機器人來回答,然後下發給一個或多個下游機器人。下游機器人處理後,將答案以及對應的置信度返回給中控,中控根據下游返回的信息進行決策後,將最合適的響應返回給用戶。

對話機器人上線後效果如何持續運營優化?

對話機器人可能發生的誤判有兩種不同形式。

一種是「系統知道自己可能犯錯」:某一請求雖然分配給了特定機器人,但是機器人給出的最佳回答的置信度仍然很低,換言之,該回答能夠滿足用戶請求的可能性很小。此時,中控會進行重新判斷:其他機器人是否有置信度更高的回答?如果仍然無法找到置信度足夠高的答案,系統會啟動拒絕識別機制,即,系統判斷自己無法回答這一問題,返回給用戶一個通用話術,如「十分抱歉,您的問題我暫時回答不了」,然後記錄下問題,定期推送給機器人運營人員通過數據標註、知識庫擴充等手段進行迭代優化。

另一種則是「系統很自信,但還是回答錯了」。這類錯誤要通過分析用戶的反饋來發現,比如用戶選擇點「踩」或者繼續提問,都意味著他們的需求可能沒有得到滿足。系統會結合分析結果把這種疑似錯誤的回答挑出來,形成一個叫做「質檢」的任務,交給客戶的質檢人員判斷並標註,補充進訓練集進行迭代優化。與此同時,客戶也擁有能夠進行即時調整的人工干預工具:如果客戶需要立刻對某個錯誤答案進行調整時,可以利用這個工具找到導致錯誤答案的影響因素,通過對這些影響因素的調整來達到即時生效的干預效果。

對於機器人的優化來說,極其重要的一點是在系統層面有完整的反饋學習機制,能夠讓機器人收集可能的錯誤情景,以及特定場景下的正確回答信號,然後利用這些數據和信號建立正反饋機制。

總體來說,通過初始化教育和持續運營優化,機器人一般能夠達到綜合準確率 95% 的效果,這樣就會獲得比較好的對話體驗了。

自然語言處理的業界與學界:鴻溝與啟發

對於學界而言,最好的研究是用新方法解決新問題,其次是用新方法解決老問題,最次是用老方法解決老問題。而工業界的衡量標準則截然不同,工業界的出發點是以需求為核心,無論什麼方法,能落地提供極致體驗的就是好方法。

舉個例子,業界的系統是需要給客戶提供快速干預工具的:一個無法調整的、干預不了的系統是不合格的。出於對企業形象的重視,客戶需要能夠監控機器的效果、需要在發現問題之後能夠實時干預、需要定期檢查用戶反饋,讓反饋數據作為新的監督信號進一步優化模型。業界搭建的優秀系統要有自適應的閉環和流動性,這是學界很少會考慮的事情。

另外,業界也需要更多地考慮系統上線時的資源限制問題。比如在自然語言領域裡一個典型的測試環境,斯坦福的 SQuAD 數據集上,現在學界里效果最好的做法是把數十個不同的模型集成在一起,然而這種做法是很難在工業界大規模應用的。工業界要考慮成本、客戶在雲端的算力、用戶從提問到得到反饋的時間等種種限制,集成少數幾個模型也許是可行的,但是集成幾十個高代價的模型是不切實際的。

當然,業界也在持續關注學界的新方法,希望得到方法論上的啟示。

例如,深度強化學習的飛速發展也會讓我們關註:能否依靠數據驅動,端到端地訓練具有工業應用價值的任務型機器人?能否在有了足夠多數據之後,把對話信息看做狀態,用深度強化學習的方法學習一個對話策略出來呢?

另外,閱讀理解領域的發展也讓我們看到了不是基於「知識庫」而是基於「文檔庫」進行回答的可能性。例如,一個特定問題的答案可能在某個文檔里,如何構建一個深度學習系統,根據某一問題,定位到特定的文檔,再從文檔中把信息提煉出來用以回答這個問題?

元啟發式優化演算法是否能與深度學習模型結合?

圖片來自:http://blog.otoro.net/2015/01/27/neuroevolution-algorithms/

我個人的研究背景是計算智能(Computational Intelligence),在 2015 年之前的近 10 年裡,主要關注如何應用計算智能中的元啟發式優化演算法求解大規模複雜優化問題。這是一類基礎性的研究難題,長期受到關注,比如我大約 10 年前的一個關於演化優化演算法的工作,到現在已經被引用 500 多次了,而且現在還在逐漸增加,偶爾還會收到同行提出演算法代碼需求的郵件。隨著算力的持續提升,也許元啟發式演算法在不久的將來會成為人工智慧領域新的寵兒,我個人也非常關注它與深度學習結合的可能。

元啟發式演算法的最大的優點在於不要求目標函數可導,通用性強。現在,為了求解方便,建模時往往會對實際應用的真實目標做一些簡化,使得該目標函數可導,以便可以用現成的梯度下降演算法求解。然而這往往不是最優方案:一方面建模的簡化一般會引入求解效果上限的損失;另一方面梯度下降演算法不能保證獲得全局最優解,往往只會收斂到一個極值。

元啟發式優化演算法是一個啟發式框架,一般是設計一些通用的、對問題的依賴沒有那麼強的啟發式策略,使演算法更容易收斂到全局最優解。元啟發式優化演算法的缺點在於演算法對計算能力的要求比較高。這主要是因為梯度下降演算法有明確方向,只要朝著這一個方向下降就可以了,而元啟發式演算法,如其中的「主流分支演化演算法」,用的方法則是試錯法(trial-and-error),需要在空間里進行大量的採樣、評估,再決策接下來去何處繼續採樣更有獲得全局最優解的潛力。這個過程是非常消耗算力的。

現在,學界的關注重點是能否用局部優化的思想減少採樣點的數量,以及能否提高採樣、評估的並行化執行能力。

此外,元啟發式演算法還有一個梯度下降無論如何也做不到的優勢,就是有希望進行結構的優化。如今神經網路的結構是全部由人來設計的,未必或者極有可能不是最優的。利用元啟發式演算法能夠讓機器在卷積層、循環層、全連接層等不同開放組合結構構成的空間中進行搜索,組裝出一個針對特定問題效果最好的結構。這個方向一般叫做 Neuroevolution,正逐漸引起越來越多的學界和業界的關注。

應用深度學習帶來了哪些不同?

在中控的排序模型里,深度學習模型能夠提供含有大量信息的強特徵,讓體量更小、更簡單的模型就能獲得同等,甚至更優的效果。

在前深度學習時代,傳統的搜索推薦經常需要上千萬、上億的特徵,這是因為,在沒有強大的特徵的情況下,只能把各種組合人為構造出來,然後用一個淺層的大模型去學習。然而深度學習模型學習出的特徵本身已經包含了巨大的信息量,因此繁瑣的人工特徵工程變得沒那麼重要了,這對技術的商業化非常有利。

這種信息量是通過深度學習在面對大規模原始數據的抽象、非線性學習能力而獲得的。例如,通過抓取大量金融行業的相關文本,進行統一的文本語義相似度學習建模和訓練,就能得到一個強大的文本特徵提取模型。這個模型可以用於證券領域、基金領域、銀行服務領域等等各個行業系統中。

此外,深度學習也可以通過「多任務學習」(multi-task learning)的方式整合不同類型的問答數據,極大簡化了啟動階段客戶標註數據的工作。

知識點的構建階段需要客戶提供有標註的訓練數據:每一個知識點(標準答案),都需要客戶「手寫」用戶標準提問範式和可能的變體。構建這樣的標準問答集是極其耗費時間的,說服客戶進行標註也是有一定難度的,然而如果客戶之前採用過人工客服,有人工客服日誌,我們就可以結合人工客服日誌,使用多任務學習大量削減需要人工完成的標註數據集創建工作。

追一一直偏重實用、偏重落地,我們不僅僅鑽研最前沿的技術,也致力於優化落地效果,把自適應、有閉環正反饋的系統交付給用戶。令人自豪的是,我們有一批能夠把問題想清楚的人,正在用系統工程的思維為客戶構建具有極致體驗的對話機器人服務。

*****

我們的對話機器人,不追求「一個 AI 模型端到端解決全部問題」,而是在一個完整系統的每個模塊里、各個維度里,都用 AI 技術幫助提升效率、優化體驗。這種優化可能幫助主系統提取了更強的特徵,可能在冷啟動階段幫助客戶簡化了痛苦的數據標註過程,可能在運轉過程里幫助分析輿情、找到客戶產品設計的不合理之處。它們並不顯山露水,卻無處不在。

這也是追一希望向用戶傳達的理念:真正有「AI 意味」的系統,是「草色遙看近卻無」的整體系統,而 AI 的角色,是「潤物細無聲」地、持續地優化其中的每一個細節。

本文為機器之心原創,轉載請聯繫本公眾號獲得授權。

------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

變分自編碼器VAE面臨的挑戰與發展方向
BAIR提出MC-GAN,使用GAN實現字體風格遷移

TAG:機器之心 |