智能語(yǔ)音交互技術(shù)在360的落地實(shí)踐
本次分享的主要內(nèi)容包括:
1. 對(duì)話系統(tǒng)的基礎(chǔ)知識(shí)
2. 360智能語(yǔ)音交互平臺(tái)介紹
3. 對(duì)話核心技術(shù):語(yǔ)義理解、對(duì)話管理、QA
▌對(duì)話系統(tǒng)的基礎(chǔ)知識(shí)
-
規(guī)則匹配,也就是精確匹配,可以解決 top query,規(guī)則匹配沒(méi)有泛化能力。 -
生成模型,基于規(guī)則匹配的泛化 ( 請(qǐng)注意這里生成模型是內(nèi)部說(shuō)法,并不是"生成式模型 ( Generative Model )"的概念 )。 -
相似度匹配模型,主要應(yīng)用在沒(méi)有槽位 ( slots ) 的語(yǔ)義理解,如用戶說(shuō)"我要聽(tīng)歌",我們可以找到相似的 Query,根據(jù)相似 Query 的反饋回復(fù)用戶。 -
深度模型,我們做了 SF-ID ( Slot Filling and Intent Detection ) 聯(lián)合學(xué)習(xí)的方案。
規(guī)則匹配和相似度匹配的方案大家都比較熟悉,這一節(jié)我們主要分享生成模型和深度模型。
① 語(yǔ)義理解-生成模型
我們的生成模型是基于匹配模型的泛化,是完整精確匹配與片段式匹配的區(qū)別,類(lèi)似隱馬爾可夫模型,我們可以用轉(zhuǎn)移序列和發(fā)射序列進(jìn)行匹配。例如下圖中,我們的標(biāo)注人員只標(biāo)注了3種句式,直接匹配只能匹配這三種說(shuō)法。我們?cè)黾恿?3-gram 模型進(jìn)行匹配,將原始序列拆成三元片段,在這個(gè)基礎(chǔ)上通過(guò) beam search 進(jìn)行解碼,這樣像例子中的3條語(yǔ)料,在實(shí)際匹配中可以額外泛化出6種句式,達(dá)到了很好的效果。
這里還可以加上三元回退、二元回退、停用詞、同義詞等,還可以把泛化效果做的更好。
② 語(yǔ)義理解-深度模型 SF-ID
業(yè)界通用型的 NLU 一般會(huì)先過(guò)意圖識(shí)別模型,再將識(shí)別出的意圖傳給槽位識(shí)別模型進(jìn)行判斷。整個(gè) Pipeline 如下:
經(jīng)過(guò)我們的技術(shù)分析和業(yè)務(wù)反饋,這樣的流程有以下問(wèn)題:
誤差傳遞。即意圖識(shí)別模型判斷錯(cuò)誤,會(huì)影響槽位識(shí)別的效果
沒(méi)有引入外部知識(shí)。如"播放忘情水"的意圖應(yīng)該是 play_music,而"播放白雪公主"的意圖應(yīng)該是 play_story
OOV問(wèn)題。如用戶說(shuō)"播放你的酒館打了烊",真實(shí)意圖是"播放你的酒館對(duì)我打了烊",用戶說(shuō)錯(cuò)的時(shí)候沒(méi)有辦法解決
我們的槽位-意圖識(shí)別 ( Slot Filling – Intent Detection ) 的方案有一個(gè)演進(jìn)過(guò)程,針對(duì)這些問(wèn)題我們的方案如下:
首先是誤差傳遞問(wèn)題,這個(gè)問(wèn)題的解法,我們有兩個(gè)階段。最開(kāi)始我們的模型是 LSTM-CRF,針對(duì)它效果不好的問(wèn)題,我們首先加了 Attention,并且 Softmax 和 CRF 可以互換調(diào)整。第一個(gè)比較大的提升是采用聯(lián)合訓(xùn)練的方式,也就是 Slot Gated Modeling 這篇論文[1]的方案。
這個(gè)方案引入了 slot gate,模型在預(yù)測(cè)公式上引入了 intent 影響,論文里用的標(biāo)注模型是 Softmax,但我們換 CRF 后效果會(huì)更好。有些情況 Softmax 標(biāo)注的序列中,I 標(biāo)注會(huì)在 B 前面 ( ps:這個(gè)是序列標(biāo)注問(wèn)題的標(biāo)注類(lèi)型,B:Begin,I:Inside,O:outside,即序列的開(kāi)始、中間、結(jié)束 ),但 CRF 不會(huì)將 I 標(biāo)注在 B 前面。這個(gè)可能是因?yàn)?Softmax 更專(zhuān)注于局部信息,但 CRF 是對(duì)全局的概率轉(zhuǎn)移進(jìn)行了建模。
接下來(lái),我們又更新到了 SF-ID 模型。比較巧的是這個(gè)方案的作者當(dāng)時(shí)在我們組工作,也就把這個(gè)思路帶來(lái)了,后來(lái)論文[2]被 ACL 2019 發(fā)表了。這個(gè)方案和 slot gate 方案的主要區(qū)別是,slot gate 方案中只有 intent 影響 slot,slot 的結(jié)果不能對(duì) intent 起作用,還是有誤差傳遞的情況;新方案的 SF-ID 是兩個(gè)子網(wǎng)絡(luò),兩個(gè)子網(wǎng)絡(luò)互相迭代訓(xùn)練,兩個(gè)子網(wǎng)絡(luò)互相傳遞信息迭代,這樣就把 intent 對(duì) slot 的單向影響變成了 intent 和 slot 互相影響。大家若有興趣,歡迎看一下參考文獻(xiàn)中第二篇論文。
基于聯(lián)合訓(xùn)練 SF-ID 兩任務(wù)的思想,我們基本在模型層面解決了誤差傳遞的問(wèn)題。
接下來(lái)我們討論一下外部知識(shí)的引入。我們的經(jīng)驗(yàn)是沒(méi)有外部知識(shí) ( 輸入層增加 knowledge vector ),模型效果并不好。但引入外部知識(shí)之后,準(zhǔn)確率馬上提高了15%。
舉個(gè)例子,用戶說(shuō)"播放張學(xué)友的吻別",我們通過(guò)外部知識(shí)可以打上標(biāo)簽 ( 張學(xué)友:張:B-singer、學(xué):I-singer、友:I-singer;吻別:吻:B-song、別:I-song ),于是可以在 word embedding 的基礎(chǔ)上增加 knowledge embedding,如圖所示:
再就是 OOV 問(wèn)題,這個(gè)問(wèn)題業(yè)務(wù)上比較困難,因?yàn)橛脩羧绻f(shuō)的是"你的酒館打了烊",但這個(gè)并不是歌名,知識(shí)庫(kù)也就引不進(jìn)去了。我們的做法與 NER 類(lèi)似,首先學(xué)習(xí)槽位邊界,提供多種解碼路徑,如路徑1:意圖為 play_music,并給"你的酒館打了烊"打上 like_song ( 疑似歌曲 ) 的標(biāo)簽;路徑2:意圖為 play_story,并給"你的酒館打了烊"打上 like_story ( 疑似歌曲 ) 的標(biāo)簽。接著通過(guò)知識(shí)庫(kù)進(jìn)行校驗(yàn),我們根據(jù)編輯距離、文本相似度等策略可以判斷路徑1的置信度更高,因此選出路徑1。具體可見(jiàn) Rank 策略。
③ 語(yǔ)義理解-Rank
這個(gè)步驟是多路徑選擇消歧,即獲取到多個(gè)解碼路徑后,我們選擇一個(gè)置信度最高的,作為語(yǔ)義理解部分的結(jié)果。Rank 階段我們主要采用的還是經(jīng)典的 xgboost 模型+規(guī)則策略。這里規(guī)則是為了業(yè)務(wù)的可干預(yù)性,有利于產(chǎn)品運(yùn)營(yíng)人員快速解決一些業(yè)務(wù) case。
2. 對(duì)話核心技術(shù)-對(duì)話管理
對(duì)話管理 ( Dialog Manager ) 系統(tǒng)分為兩個(gè)部分:DST ( Dialog State Tracking,對(duì)話狀態(tài)跟蹤 ) 和 DP ( Dialog Policy,對(duì)話策略 ) 兩個(gè)模塊。
DST 主要用于狀態(tài)追蹤,這一模塊維護(hù)對(duì)話的上下文狀態(tài)、進(jìn)行上下文語(yǔ)境的管理、意圖槽位繼承等。DP 是決策模塊,它根據(jù) DST 記錄的當(dāng)前系統(tǒng)狀態(tài),進(jìn)行系統(tǒng)動(dòng)作決策。
目前對(duì)話管理模塊的實(shí)現(xiàn)主要有基于框架 ( Frame based ) 的管理、基于有限元狀態(tài)機(jī) ( FSM ) 的管理和基于 Agenda 的管理等。我們引入了其中的兩種:
Frame Based:在以完成任務(wù)為導(dǎo)向的對(duì)話系統(tǒng)中,F(xiàn)rame Based 的系統(tǒng)將對(duì)話建模成一個(gè)填槽 ( slot filling ) 的過(guò)程。槽是多輪對(duì)話過(guò)程中將初步用戶意圖轉(zhuǎn)化為明確用戶指令所需要補(bǔ)全的信息。例如:"告訴我去車(chē)站怎么走",其中目的地是一個(gè)槽位,"車(chē)站"是該槽位所填充的值。目前,360智能語(yǔ)音交互系統(tǒng)已經(jīng)支持這一模式。
該方法的特點(diǎn)是:
輸入相對(duì)靈活,用戶回答可以包含一個(gè)或多個(gè)槽位信息
對(duì)槽位提取準(zhǔn)確度的要求比較高
適用于相對(duì)復(fù)雜的多輪對(duì)話
FSM Based:這種方法主要用于特定的任務(wù),如訂票。這種方法通常將對(duì)話建模成一棵樹(shù)或者有限狀態(tài)機(jī)。系統(tǒng)根據(jù)用戶的輸入在有限的狀態(tài)集合內(nèi)進(jìn)行狀態(tài)跳轉(zhuǎn)并選擇下一步輸出,如果從開(kāi)始節(jié)點(diǎn)走到了終止節(jié)點(diǎn)則任務(wù)就完成了。
該方法的特點(diǎn)是:
提前設(shè)定好對(duì)話流程并由系統(tǒng)主導(dǎo)
建模簡(jiǎn)單,適用于簡(jiǎn)單任務(wù)
將用戶的回答限定在有限的集合內(nèi)
表達(dá)能力有限,靈活性不高
我們的創(chuàng)新點(diǎn)在于通過(guò)上下文語(yǔ)境實(shí)現(xiàn)了跨場(chǎng)景的信息繼承,這里要引出兩個(gè)概念:上文語(yǔ)境和下文語(yǔ)境。上文語(yǔ)境是指上文出現(xiàn)過(guò)的信息,主要用于信息繼承;下文語(yǔ)境是指當(dāng)前對(duì)話中要存儲(chǔ)的信息,我們可以給不同類(lèi)型的信息設(shè)置不同的繼承輪數(shù)。我們可以把語(yǔ)境信息想象成一個(gè)銀行,根據(jù)"存錢(qián)+取錢(qián)"的工作模式進(jìn)行語(yǔ)境信息的獲取與更新,并且支持基于對(duì)話輪數(shù)和事件的遺忘,這樣就可以做到跨場(chǎng)景的繼承。
對(duì)話管理的工作流程:
對(duì)話管理模塊的工作流程和強(qiáng)化學(xué)習(xí)的"馬爾科夫決策過(guò)程"比較類(lèi)似[3]。在用戶和 bot 的對(duì)話過(guò)程中,每一輪對(duì)話都有當(dāng)前狀態(tài) ( state,圖中為 s1-s4 ) 以及 bot 根據(jù)當(dāng)前狀態(tài)做出的反應(yīng) ( action,圖中為 a1-a4 )。DST 做的就是追蹤 state,管理對(duì)話狀態(tài)的轉(zhuǎn)移;DP 做的是管理各狀態(tài)下的系統(tǒng)動(dòng)作,根據(jù)當(dāng)前 state 的信息,做出反應(yīng)。這里 DP 可以做出的反應(yīng)包括調(diào)用子功能、繼續(xù)詢問(wèn)、澄清、兜底回答等。
下圖展示了在訂票場(chǎng)景下的一輪對(duì)話中,對(duì)話管理系統(tǒng)的流程:
3. 對(duì)話核心技術(shù)-QA
最后介紹的是 QA 部分,QA 的系統(tǒng)很大程度上依賴相似搜索,其實(shí)和檢索式閑聊系統(tǒng)非常相似。
在360智能語(yǔ)音對(duì)話平臺(tái)上,QA 系統(tǒng)通過(guò)預(yù)處理 -> 粗召 -> 精排 -> 過(guò)濾的流程得到最接近的答案并輸出給用戶。下面詳細(xì)介紹一下這個(gè)流程:
Query 預(yù)處理:這部分是對(duì)輸入 Query 進(jìn)行歸一化,方法和業(yè)界比較通用,不再贅述
粗召:分為基于 keyword 的召回和基于 Embedding 的召回?;?keyword 召回是利用 ElasticSearch 實(shí)現(xiàn),找出字面相似的結(jié)果;基于 Embedding 的召回是我們將所有候選 Answer 建立了 Faiss 索引,通過(guò) Query 的深度語(yǔ)義 Embedding 進(jìn)行語(yǔ)義相似性的檢索,這樣可以召回字面不同但實(shí)際含義相似的結(jié)果
精排:主要用的是我們訓(xùn)練的 LSTM-DSSM 模型,將 Query 和粗召結(jié)果做相似性打分,根據(jù)相似度由高到低排序
過(guò)濾:根據(jù)業(yè)務(wù)邏輯的過(guò)濾,最終輸出符合條件的相似度最高的候選
這里重點(diǎn)講一下我們的 LSTM-DSSM 模型,模型示意如下:
文本相似度問(wèn)題的傳統(tǒng)解法有 BM25、TF-IDF、編輯距離、Jaccard 相似度等,使用的時(shí)候可以多個(gè)距離都算出來(lái),用一個(gè)模型擬合各個(gè)距離的權(quán)重,進(jìn)行加權(quán)求和?;谏疃葘W(xué)習(xí)的方法主要有 DSSM 的各種變種 ( 增加卷積層、增加 LSTM 等 ),近年來(lái)還有基于 BERT 的相似度計(jì)算。
DSSM 模型[5]最早是微軟提出來(lái)的,通過(guò) Bing 搜索引擎的點(diǎn)擊日志數(shù)據(jù)訓(xùn)練,它非常適合擬合搜索 Query 和 Document 的文本相似度。而公司有360搜索的搜索日志,每天都有億級(jí)別的點(diǎn)擊行為正負(fù)例出現(xiàn),給我們的模型訓(xùn)練提供了豐富的語(yǔ)料,這是我們的優(yōu)勢(shì)。嘗試了不同模型后發(fā)現(xiàn),在我們的業(yè)務(wù)場(chǎng)景下,LSTM-DSSM 模型比其他模型效果都要好,甚至比 BERT 更好,而且計(jì)算量更低。
▌總結(jié)
本文首先介紹了語(yǔ)音交互系統(tǒng)的基本知識(shí)和系統(tǒng)流程;然后介紹了360智能語(yǔ)音交互平臺(tái),重點(diǎn)分享了我們的業(yè)務(wù)架構(gòu);最后講解了對(duì)話系統(tǒng)的核心技術(shù),包括語(yǔ)義理解的 SF-ID 模型、對(duì)話管理系統(tǒng)和 QA 的技術(shù)架構(gòu)。
本次分享就到這里,謝謝大家。
▌參考資料
[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
特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒(méi)關(guān)注的小伙伴,可以長(zhǎng)按關(guān)注一下:
長(zhǎng)按訂閱更多精彩▼
如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!