Categories
程式開發

智能語音交互技術在360的落地實踐


導讀:隨著語音交互技術的發展,對話系統已經越來越成熟。對話系統的最新進展絕大多數是由深度學習技術所貢獻的,深度學習技術可以通過利用大規模數據來學習有意義的特徵表示和回復生成策略,並有助於提升用戶的對話體驗。今天和大家分享的是360人工智能研究院主導的語音交互技術在360的落地實踐,目前已在360智能音箱、360兒童手錶、360安全衛士等產品上得到了深度應用。

本次分享的主要內容包括:

  1. 對話系統的基礎知識
  2. 360智能語音交互平台介紹
  3. 對話核心技術:語義理解、對話管理、QA

對話系統的基礎知識

智能語音交互技術在360的落地實踐 1

上圖是目前常見的對話系統的框架,當用戶和機器人聊天時,首先要讓機器人能夠”聽懂”用戶說的話,通過ASR ( Automatic Speech Recognition,語音識別) 技術將聲音信號轉成文字,接著使用NLU ( Natural Language Understanding,自然語言理解) 技術讓機器人明白用戶表達的意思。緊接著,NLU 模塊輸出處理後的信息,並傳入 DM ( Dialog Manager,對話管理 ) 模塊,通過引入對話上下文和知識庫等方式,進行對話決策,確定使用一個策略或技能。再將結果合成文字並以聲音信號的形式輸出,這裡主要採用 NLG ( Natural Language Generating,自然語言合成 ) 和TTS ( Text To Speech,語音合成 ) 技術。

對話系統分類

智能語音交互技術在360的落地實踐 2

根據具體應用來劃分,目前常見的對話系統可分為任務型、QA 型、閒聊型三種。任務型對話系統是為了解決特定的任務,如設定鬧鐘、訂機票等。 QA 型的對話系統主要用來解決信息檢索的需求,回答用戶的問題,通常在客服場景中使用比較廣泛。閒聊性對話系統沒有特定的規則,只要能一直和用戶聊下去就好。

360智能語音交互平台

智能對話系統這種產品的實現一般有兩種方式:一種是基於業務導向的,比如要實現智能音箱與用戶的對話系統,需要針對智能音箱這個場景進行代碼的實現;另一種是平台化的思路,即實現一個更大的對話系統平台,將業務邏輯與核心對話引擎解耦。我們平台化的優勢很明顯,包括創建技能可以流水線化,利於分工合作、架構穩定容易擴展、遷移性好等特點,可以快速支持多個產品線的業務。目前360智能語音交互平台已經內置了82個技能,在360智能音箱、360兒童手錶、360安全衛士等業務上均有廣泛的應用。

智能語音交互技術在360的落地實踐 3

當平台建好之後,新技能的擴展就會變得很方便,一般一個新技能只需要一周就能實現,複雜的新技能也能在兩週左右打造完成。

目前我們的業務架構如下:

智能語音交互技術在360的落地實踐 4

這裡我們的主要創新在於”多模態接入層”中”事件”的引入。例如,如果我們支持一個智能攝像機的需求,看到一個人後判斷有沒有戴口罩,若沒有則進行相應的提示;那麼我們只要連通攝像機,根據事件觸發系統對應的處理模塊,監測”人沒有戴口罩”這個事件有沒有發生。引入”事件”後,我們系統不僅能處理自然語言,還可以處理多種多樣的信息。只有系統有了”事件”的概念,我們才能說這一系統是多模態的。

對話核心技術

接下來主要介紹自然語言對話的核心技術,包括語義理解、對話管理和 QA。

1. 對話核心技術-語義理解

在對話系統中,task 型語義理解主要是將自然語言轉換為”領域 ( domain )、意圖 ( intent )、信息槽 ( slots )”三要素,將自然語言轉換為結構化信息。這個功能直接影響後續處理,因此在對話系統中的地位非常重要。

舉個例子,用戶說”給我放一首周杰倫的東風破”,NLU 模塊應解析出領域是音樂、用戶意圖是播放音樂,信息槽為{“singer”: 周杰倫,“song”:東風破},即:

智能語音交互技術在360的落地實踐 5

於是我們可以將這些信息可以傳入後面的對話管理模塊,由 DM 來決策出系統的反饋是做什麼事情。

目前學術界對語義理解有很多方案,理想情況是採用一個模型去解決一個端到端的問題,但現實比較骨感,目前的語義理解模塊並不能達到這一點。冷啟動問題也很困難,我們初期並沒有足夠數據去訓出一個理想的模型。

智能語音交互技術在360的落地實踐 6

針對這些問題,我們做了以下方案:

  • 規則匹配,也就是精確匹配,可以解決 top query,規則匹配沒有泛化能力。
  • 生成模型,基於規則匹配的泛化 ( 請注意這裡生成模型是內部說法,並不是”生成式模型 ( Generative Model )”的概念 )。
  • 相似度匹配模型,主要應用在沒有槽位 ( slots ) 的語義理解,如用戶說”我要聽歌”,我們可以找到相似的 Query,根據相似 Query 的反饋回復用戶。
  • 深度模型,我們做了 SF-ID ( Slot Filling and Intent Detection ) 聯合學習的方案。

規則匹配和相似度匹配的方案大家都比較熟悉,這一節我們主要分享生成模型和深度模型。

① 語義理解-生成模型

我們的生成模型是基於匹配模型的泛化,是完整精確匹配與片段式匹配的區別,類似隱馬爾可夫模型,我們可以用轉移序列和發射序列進行匹配。例如下圖中,我們的標註人員只標註了3種句式,直接匹配只能匹配這三種說法。我們增加了3-gram 模型進行匹配,將原始序列拆成三元片段,在這個基礎上通過beam search 進行解碼,這樣像例子中的3條語料,在實際匹配中可以額外泛化出6種句式,達到了很好的效果。

這裡還可以加上三元回退、二元回退、停用詞、同義詞等,還可以把泛化效果做的更好。

智能語音交互技術在360的落地實踐 7

② 語義理解-深度模型 SF-ID

業界通用型的 NLU 一般會先過意圖識別模型,再將識別出的意圖傳給槽位識別模型進行判斷。整個 Pipeline 如下:

智能語音交互技術在360的落地實踐 8

經過我們的技術分析和業務反饋,這樣的流程有以下問題:

  • 誤差傳遞。即意圖識別模型判斷錯誤,會影響槽位識別的效果
  • 沒有引入外部知識。如”播放忘情水”的意圖應該是 play_music,而”播放白雪公主”的意圖應該是 play_story
  • OOV問題。如用戶說”播放你的酒館打了烊”,真實意圖是”播放你的酒館對我打了烊”,用戶說錯的時候沒有辦法解決

我們的槽位-意圖識別 ( Slot Filling – Intent Detection ) 的方案有一個演進過程,針對這些問題我們的方案如下:

首先是誤差傳遞問題,這個問題的解法,我們有兩個階段。最開始我們的模型是 LSTM-CRF,針對它效果不好的問題,我們首先加了 Attention,並且 Softmax 和 CRF 可以互換調整。第一個比較大的提升是採用聯合訓練的方式,也就是 Slot Gated Modeling 這篇論文[1]的方案。

智能語音交互技術在360的落地實踐 9

這個方案引入了 slot gate,模型在預測公式上引入了 intent 影響,論文裡用的標註模型是 Softmax,但我們換 CRF 後效果會更好。有些情況Softmax 標註的序列中,I 標註會在B 前面( ps:這個是序列標註問題的標註類型,B:Begin,I:Inside,O:outside,即序列的開始、中間、結束),但CRF不會將I 標註在B 前面。這個可能是因為 Softmax 更專注於局部信息,但 CRF 是對全局的概率轉移進行了建模。

接下來,我們又更新到了 SF-ID 模型。比較巧的是這個方案的作者當時在我們組工作,也就把這個思路帶來了,後來論文[2]被 ACL 2019 發表了。這個方案和slot gate 方案的主要區別是,slot gate 方案中只有intent 影響slot,slot 的結果不能對intent 起作用,還是有誤差傳遞的情況;新方案的SF-ID 是兩個子網絡,兩個子網絡互相迭代訓練,兩個子網絡互相傳遞信息迭代,這樣就把intent 對slot 的單向影響變成了intent 和slot 互相影響。大家若有興趣,歡迎看一下參考文獻中第二篇論文。

智能語音交互技術在360的落地實踐 10

基於聯合訓練 SF-ID 兩任務的思想,我們基本在模型層面解決了誤差傳遞的問題。

接下來我們討論一下外部知識的引入。我們的經驗是沒有外部知識 ( 輸入層增加 knowledge vector ),模型效果並不好。但引入外部知識之後,準確率馬上提高了15%。

舉個例子,用戶說”播放張學友的吻別”,我們通過外部知識可以打上標籤( 張學友:張:B-singer、學:I-singer、友:I-singer;吻別:吻:B-song、別:I-song ),於是可以在word embedding 的基礎上增加knowledge embedding,如圖所示:

智能語音交互技術在360的落地實踐 11

再就是 OOV 問題,這個問題業務上比較困難,因為用戶如果說的是”你的酒館打了烊”,但這個並不是歌名,知識庫也就引不進去了。我們的做法與NER 類似,首先學習槽位邊界,提供多種解碼路徑,如路徑1:意圖為play_music,並給”你的酒館打了烊”打上like_song ( 疑似歌曲) 的標籤;路徑2:意圖為play_story,並給”你的酒館打了烊”打上like_story ( 疑似歌曲) 的標籤。接著通過知識庫進行校驗,我們根據編輯距離、文本相似度等策略可以判斷路徑1的置信度更高,因此選出路徑1。具體可見 Rank 策略。

③ 語義理解-Rank

這個步驟是多路徑選擇消歧,即獲取到多個解碼路徑後,我們選擇一個置信度最高的,作為語義理解部分的結果。 Rank 階段我們主要採用的還是經典的 xgboost 模型+規則策略。這裡規則是為了業務的可干預性,有利於產品運營人員快速解決一些業務 case。

智能語音交互技術在360的落地實踐 12

2. 對話核心技術-對話管理

對話管理 ( Dialog Manager ) 系統分為兩個部分:DST ( Dialog State Tracking,對話狀態跟踪 ) 和 DP ( Dialog Policy,對話策略 ) 兩個模塊。

DST 主要用於狀態追踪,這一模塊維護對話的上下文狀態、進行上下文語境的管理、意圖槽位繼承等。 DP 是決策模塊,它根據 DST 記錄的當前系統狀態,進行系統動作決策。

目前對話管理模塊的實現主要有基於框架 ( Frame based ) 的管理、基於有限元狀態機 ( FSM ) 的管理和基於 Agenda 的管理等。我們引入了其中的兩種:

Frame Based:在以完成任務為導向的對話系統中,Frame Based 的系統將對話建模成一個填槽 ( slot filling ) 的過程。槽是多輪對話過程中將初步用戶意圖轉化為明確用戶指令所需要補全的信息。例如:“告訴我去車站怎麼走”,其中目的地是一個槽位,”車站”是該槽位所填充的值。目前,360智能語音交互系統已經支持這一模式。

智能語音交互技術在360的落地實踐 13

該方法的特點是:

  • 輸入相對靈活,用戶回答可以包含一個或多個槽位信息
  • 對槽位提取準確度的要求比較高
  • 適用於相對複雜的多輪對話

FSM Based:這種方法主要用於特定的任務,如訂票。這種方法通常將對話建模成一棵樹或者有限狀態機。系統根據用戶的輸入在有限的狀態集合內進行狀態跳轉並選擇下一步輸出,如果從開始節點走到了終止節點則任務就完成了。

該方法的特點是:

  • 提前設定好對話流程並由系統主導
  • 建模簡單,適用於簡單任務
  • 將用戶的回答限定在有限的集合內
  • 表達能力有限,靈活性不高

智能語音交互技術在360的落地實踐 14

我們的創新點在於通過上下文語境實現了跨場景的信息繼承,這裡要引出兩個概念:上文語境和下文語境。上文語境是指上文出現過的信息,主要用於信息繼承;下文語境是指當前對話中要存儲的信息,我們可以給不同類型的信息設置不同的繼承輪數。我們可以把語境信息想像成一個銀行,根據”存錢+取錢”的工作模式進行語境信息的獲取與更新,並且支持基於對話輪數和事件的遺忘,這樣就可以做到跨場景的繼承。

對話管理的工作流程

智能語音交互技術在360的落地實踐 15

對話管理模塊的工作流程和強化學習的”馬爾科夫決策過程”比較類似[3]。在用戶和 bot 的對話過程中,每一輪對話都有當前狀態 ( state,圖中為 s1-s4 ) 以及 bot 根據當前狀態做出的反應 ( action,圖中為 a1-a4 )。 DST 做的就是追踪 state,管理對話狀態的轉移;DP 做的是管理各狀態下的系統動作,根據當前 state 的信息,做出反應。這裡 DP 可以做出的反應包括調用子功能、繼續詢問、澄清、兜底回答等。

下圖展示了在訂票場景下的一輪對話中,對話管理系統的流程:

智能語音交互技術在360的落地實踐 16

3. 對話核心技術-QA

最後介紹的是 QA 部分,QA 的系統很大程度上依賴相似搜索,其實和檢索式閒聊系統非常相似。

智能語音交互技術在360的落地實踐 17

在360智能語音對話平台上,QA 系統通過預處理 -> 粗召 -> 精排 -> 過濾的流程得到最接近的答案並輸出給用戶。下面詳細介紹一下這個流程:

  • Query 預處理:這部分是對輸入 Query 進行歸一化,方法和業界比較通用,不再贅述
  • 粗召:分為基於 keyword 的召回和基於 Embedding 的召回。基於keyword 召回是利用ElasticSearch 實現,找出字面相似的結果;基於Embedding 的召回是我們將所有候選Answer 建立了Faiss 索引,通過Query 的深度語義Embedding 進行語義相似性的檢索,這樣可以召回字面不同但實際含義相似的結果
  • 精排:主要用的是我們訓練的 LSTM-DSSM 模型,將 Query 和粗召結果做相似性打分,根據相似度由高到低排序
  • 過濾:根據業務邏輯的過濾,最終輸出符合條件的相似度最高的候選

這裡重點講一下我們的 LSTM-DSSM 模型,模型示意如下:

智能語音交互技術在360的落地實踐 18

文本相似度問題的傳統解法有 BM25、TF-IDF、編輯距離、Jaccard 相似度等,使用的時候可以多個距離都算出來,用一個模型擬合各個距離的權重,進行加權求和。基於深度學習的方法主要有 DSSM 的各種變種 ( 增加卷積層、增加 LSTM 等 ),近年來還有基於 BERT 的相似度計算。

DSSM 模型[5]最早是微軟提出來的,通過 Bing 搜索引擎的點擊日誌數據訓練,它非常適合擬合搜索 Query 和 Document 的文本相似度。而公司有360搜索的搜索日誌,每天都有億級別的點擊行為正負例出現,給我們的模型訓練提供了豐富的語料,這是我們的優勢。嘗試了不同模型後發現,在我們的業務場景下,LSTM-DSSM 模型比其他模型效果都要好,甚至比 BERT 更好,而且計算量更低。

總結

本文首先介紹了語音交互系統的基本知識和系統流程;然後介紹了360智能語音交互平台,重點分享了我們的業務架構;最後講解了對話系統的核心技術,包括語義理解的SF-ID 模型、對話管理系統和QA 的技術架構。

本次分享就到這裡,謝謝大家。

參考資料

[1] Goo C W, Gao G, Hsu Y K, et al. Slot-gated modeling for joint slot filling and intent prediction[C]//Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 2 (Short Papers). 2018: 753-757.

[2] Haihong E, Niu P, Chen Z, et al. A novel bi-directional interrelated model for joint intent detection and slot filling[C]//Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics. 2019: 5467-5471.

[3] Zhou L , Gao J , Li D , et al. The Design and Implementation of XiaoIce, an Empathetic Social Chatbot[J]. 2018.

[4] Palangi H, Deng L, Shen Y, et al. Semantic Modelling with Long-Short-Term Memory for Information Retrieval[J]. Computer Science, 2014.

[5] Huang P S , He X , Gao J , et al. Learning deep structured semantic models for web search using clickthrough data[C]// Proceedings of the 22nd ACM international conference on Conference on information & knowledge management. ACM, 2013

作者介紹

龔小春,360高級算法專家。

本文來自 DataFunTalk

原文鏈接

https://mp.weixin.qq.com/s/ACURDfwamImA70UPXrY8IA