0
本文作者: 汪思穎 | 2018-07-12 10:26 | 專題:2018 CCF-GAIR 全球人工智能與機(jī)器人峰會 |
雷鋒網(wǎng)按:2018 全球人工智能與機(jī)器人峰會(CCF-GAIR)在深圳召開,峰會由中國計算機(jī)學(xué)會(CCF)主辦,由雷鋒網(wǎng)、香港中文大學(xué)(深圳)承辦,得到了深圳市寶安區(qū)政府的大力指導(dǎo),是國內(nèi)人工智能和機(jī)器人學(xué)術(shù)界、工業(yè)界及投資界三大領(lǐng)域的頂級交流盛會,旨在打造國內(nèi)人工智能領(lǐng)域最具實力的跨界交流合作平臺。
在 7 月 1 日上午的 NLP 專場上,騰訊知文算法負(fù)責(zé)人鐘黎為大家?guī)砹祟}為《從 0 到 1 打造下一代智能對話引擎》的主題演講。
作為騰訊知文算法負(fù)責(zé)人,鐘黎與大家分享了他們在智能對話系統(tǒng)上的研究經(jīng)驗。
他表示,在業(yè)界打造通用智能問答平臺通常需要解決如下三種問答類型:一是任務(wù)驅(qū)動型,二是信息獲取型,三是通用閑聊型。
他重點描述了第二種類型,即如何讓問答系統(tǒng)解決用戶的信息獲取類問題。圍繞這一類型,他講解了智能問答系統(tǒng)的基礎(chǔ)架構(gòu),以及非監(jiān)督學(xué)習(xí)和監(jiān)督學(xué)習(xí)在這里所起的作用。
此后,他闡述了目前業(yè)界較為通用的快速召回方案:第一種,基于詞匯計數(shù)(Lexical term counting)的方法;第二種,基于語言模型的方法;第三種,基于向量化的方法。
在演講的最后,他談到知文團(tuán)隊在建設(shè)業(yè)界問答系統(tǒng)的一些心得體會。
第一,要重視 Baseline。
第二,盡早建立起整個流程的 pipeline。
第三,沒有免費午餐定理,不存在萬能算法。
第四,領(lǐng)域相關(guān)的數(shù)據(jù)準(zhǔn)備、數(shù)據(jù)清洗非常重要。
以下為鐘黎的演講內(nèi)容,雷鋒網(wǎng)做了不改變原意的編輯整理。
大家好,我是騰訊知文的負(fù)責(zé)人鐘黎,今天很榮幸站在這里跟大家分享我們團(tuán)隊在過去一年里打造智能問答的一些心得。前面幾位老師從學(xué)術(shù)角度講了自然語言處理技術(shù)最新的發(fā)展,我會更多地講到如何打造一個業(yè)界可用的智能問答平臺。
首先對我們團(tuán)隊做一個簡短介紹,我們團(tuán)隊成立時間不長,到現(xiàn)在不足一年,成員來自五湖四海。我們研究的重點是自然語言的智能交互,圍繞著這一研究重點的內(nèi)涵和外延,我們在問答、對話、搜索這些領(lǐng)域都做了一些探索和嘗試,也在 AAAI、IJCAI、SIGIR、EMNLP 等學(xué)術(shù)會議上發(fā)表了多篇論文。我們和騰訊金融云的同事一起打造了金融行業(yè)的智能客服解決方案,和騰訊視頻云的同事一起打造了通用行業(yè)的小微智能客服解決方案,另外我們研發(fā)和支持了騰訊云內(nèi)容理解產(chǎn)品。
下面這張圖是微軟周明老師的一張圖,也是我非常贊同的一種分類。我們在業(yè)界打造通用智能問答平臺的時候要解決如下幾種問答類型:
第一種類型,任務(wù)驅(qū)動型。這種類型通常是用戶希望去完成一些任務(wù),比如查天氣、查匯率等。
第二種類型,解決用戶信息獲取類的問題。這種類型也是我們這次分享的重點,我們將主要在這點展開。這也是目前業(yè)界落地最多的一種問答系統(tǒng)類型。
第三種類型,通用閑聊型。比如微軟的小冰、蘋果的 Siri 都支持通用閑聊,通用閑聊的加入會使對話系統(tǒng)更富于人性化,也可以加入個性化信息、用戶畫像信息,包括前面教授們提到的情感信息。
今天我將重點分享第二種問答類型,即如何讓問答系統(tǒng)解決用戶的信息獲取類問題。這可以看作是一種問答,在問答領(lǐng)域可以將數(shù)據(jù)分為三種類型:
第一種,基于標(biāo)準(zhǔn)的、結(jié)構(gòu)化的知識,比如說 FAQ 和 KG。FAQ 是常見問題解答,KG 是組織好的知識圖譜,這兩種都是比較結(jié)構(gòu)化的數(shù)據(jù)類型。
第二種,數(shù)據(jù)以非結(jié)構(gòu)化的形式存在,比如說表格、文檔。
第三種,多模態(tài)、跨媒體問答,比如說 VQA,或可能存在視頻、音頻問答的語料庫。
接下來講我們在結(jié)構(gòu)化的 FAQ 上怎么打造智能問答系統(tǒng)。
下圖右邊所示是一個非常通用的框架,這個框架跟搜索引擎的框架非常類似,主要包括如下模塊:
首先是問題處理模塊,這一模塊的工作包括查詢、問詢改寫,錯詞糾正,同義詞替換。第二步是召回,即在 FAQ 里召回文檔,最主要的目標(biāo)是召回要快,召回率要很高,準(zhǔn)確性可以比較低,可以召回不那么相關(guān)的信息。之后,我們會做一個匹配。
這跟搜索有什么區(qū)別?搜索會得到搜索結(jié)果列表,有很多的評價方式,比如說基于列表的評價,然后再用一些指標(biāo)來評價搜索結(jié)果的好壞。問答的要求更高,有時候是沒有列表顯示出來,只有一句話或者只有一個答案,我們要追求 top1 的準(zhǔn)確率,對匹配的要求會更高一些。
這里提到兩種方式,非監(jiān)督學(xué)習(xí)和監(jiān)督學(xué)習(xí),大家可以用非監(jiān)督學(xué)習(xí)快速召回,但監(jiān)督信號的加入可以較大提升匹配的準(zhǔn)確性。
講一講比較流行或者在業(yè)界我們用得比較多的快速召回的方案。
第一種,基于詞匯計數(shù)(Lexical term counting)的方法。大家都很熟悉這類方法,它基于字面匹配,好處在于很簡單,對長尾的詞有很好的魯棒性,只要在標(biāo)準(zhǔn)問里有出現(xiàn)過,做匹配的時候一定可以召回。但是它的缺點很明顯,它基于符號,沒有語義層面的理解,所以很難處理字面不同語義相近的表述。
第二種,基于語言模型,主要思想是用概率的方法來判斷知識庫里面的 FAQ 和用戶問詢在哪一種在概率上更為接近。它的實戰(zhàn)表現(xiàn)更好一些,但是它對語言模型參數(shù)的優(yōu)化非常敏感,所以要做很多平滑實驗。
第三種,基于向量化的方法。我把用戶的問詢投射到這樣的向量空間里去,把知識庫的 FAQ 也投射到這樣的向量空間里去,在向量空間里用距離的方法去做度量。目前存在很多種投射方案,比如基于矩陣的分解,可以把向量拿出來,還可以基于一些其他方法做向量化,向量空間算距離的時候也有很多種方法,比如用平均求和來算這兩個點之間的距離。
WMD 是 2015 年的工作,它用了一些更加新的方法來算這種距離,這樣的方法比簡單的平均化求距離要更好一些。但存在一個問題,這種方法對多義性的解決不太好。
后面先講 TF-IDF,這個想法非常直觀。TF 表示這個詞在當(dāng)前文檔的頻繁程度,IDF 表示這個詞的性質(zhì)。如果 IDF 非常高,說明這個詞是一個比較獨特的詞,如果比較低,說明在很多文檔中普遍出現(xiàn),是一個比較泛的詞。我們可以對它進(jìn)行求乘積,得到 TF-IDF 的分?jǐn)?shù)。
語言模型的基本思想是用概率分布的方式去描述句子。語言模型在很多地方都有廣泛應(yīng)用,比如說在機(jī)器翻譯、拼寫糾錯中,它可以判斷哪種可能性更高。在我們自己的召回里,我們基于文檔或者標(biāo)準(zhǔn) FAQ 來生成當(dāng)前用戶 Query 的概率大小,進(jìn)而判斷得分,這是語言模型用在 IR 上的基本思想。
要解決的問題和遇到的困難是,很可能用戶 Query 中的詞并沒有在 FAQ 里出現(xiàn),所以我們要做如下的平滑——如果該詞出現(xiàn)了要怎樣,如果沒有出現(xiàn)要怎樣。
不同平滑的方法對應(yīng)不同的語言模型。從實踐角度來看,TF-IDF 和語言模型比較,語言模型有比較大的提升,可以看到圖右?guī)醉棻容^里有五項取得顯著提升。
剛才提到詞移距離的方法,這個方法就是 WMD,基于加權(quán)平均的方法比較簡單,這里主要講一下 WMD。我們投射的每個詞都要算距離,需要找到與這個詞最像的那個詞,而不是簡單地把這個詞和所有詞加權(quán)平均以后才會擴(kuò)散。
看這個例子,對于「奧巴馬」這個詞來說,跟奧巴馬最相近的詞是總統(tǒng),把這個詞算出來,求的應(yīng)該是最小的距離。這有點像旅行的問題,我有一些貨品要從這邊移到那邊,總是要找出每次移動的最小距離,把這些距離加起來。
從下圖可以看到 WMD 的效果,在幾個評測里,它的錯誤率相對來說比較低,比其他方法低了將近十幾、二十個百分點。它的實際效果確實不錯,但是算法復(fù)雜度比較高,因為需要全部做兩兩比較來計算,所以耗時會長一點。我們一個很大的要求是快,對 WMD 有一些擴(kuò)展研究,有興趣的同學(xué)可以繼續(xù)關(guān)注后面的一些工作。
剛才講的是快速召回,接下來一個很關(guān)鍵的點是做深度匹配。現(xiàn)在有很多深度匹配的方式,最多的是監(jiān)督匹配,在這當(dāng)中有兩類比較多的方法,一類是 Siamese 網(wǎng)絡(luò),一類是基于交互矩陣的網(wǎng)絡(luò)。
像 CNN 的 ARC-1 就是 Siamese 網(wǎng)絡(luò)典型的例子,Siamese 網(wǎng)絡(luò)比較直觀,它的想法很簡單,把兩個輸入用同樣的編碼器做一個表達(dá),把表達(dá)做出來以后,可以用一個模塊來做相似度的計算,它的特點是共享網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)。右邊是具體的實現(xiàn),可以用 CNN 實現(xiàn) Encoder。
基于交互矩陣的網(wǎng)絡(luò)的不同之處在于,除了最終表達(dá)相關(guān)性度量時,中間某些詞可能會有更強(qiáng)的交互,特別是在文檔很長的時候。這一類型的網(wǎng)絡(luò)和 Siamese 網(wǎng)絡(luò)相比,在兩個問句很短的時候打成平手,但是如果問題很長,包含了很多的內(nèi)容,里面有一些關(guān)鍵信息,這一網(wǎng)絡(luò)就會有更好的表現(xiàn),當(dāng)我們做好表達(dá)以后,會看這個表達(dá)里面每一個小的詞組之間交互的情況。
下圖是用的比較好的一個網(wǎng)絡(luò),左邊是剛才提到的結(jié)構(gòu),右邊加入了交互。左邊非常簡單,Question 和 Answer 進(jìn)入以后得到了表達(dá)的矩陣,然后再得到向量,最后求出得分,這是非常直觀的流程。在 Attentive Pooling 網(wǎng)絡(luò)里,會把交互放在求向量之前,想要在交互矩陣中得到行的取值和列的取值,就要得到它們重新的表達(dá),再用最后的表達(dá)求擴(kuò)散的分?jǐn)?shù)。對于長文檔,特別是如果 FAQ 很長,基于交互矩陣的網(wǎng)絡(luò)會帶來更多信息。
剛才講的是結(jié)構(gòu)化文檔構(gòu)建的情況。在實際場景下,結(jié)構(gòu)化的數(shù)據(jù)很少,因為結(jié)構(gòu)化意味著人力的投入,意味著很多人要去做數(shù)據(jù)標(biāo)注、做知識庫的構(gòu)建。目前非結(jié)構(gòu)化的數(shù)據(jù)更多一些,這也是我們團(tuán)隊研究的重點,也是我們認(rèn)為非常有前景的方向,即如何在非結(jié)構(gòu)化文檔里尋找信息和答案。
非常相似的一個領(lǐng)域是機(jī)器閱讀理解,它有如下幾個類型:
完形填空。在文章里挖幾個實體詞,用模型算法把實體詞填上。
多項選擇。讀了這篇文章以后我會有問題,接下來會有幾個答案,我會從里面選擇所對應(yīng)的答案。
答案匹配。通常給定一個問題,這個問題在原文中有出現(xiàn),找到原文中哪些內(nèi)容可以回答這個問題。
下圖右邊是比較典型的答案匹配的例子,這是斯坦福比較著名的 SQuAD 比賽。SQuAD 現(xiàn)在已經(jīng)出了 2.0,在 1.0 的時候,所有的問題答案都在原文中出現(xiàn)過,所以很多學(xué)者覺得這并不是特別符合實際,所以現(xiàn)在升級到 2.0 版本。我們現(xiàn)在研究的場景還是基于答案是原文中有的,類似政府的一些文書、材料、文件,可以在里面找到答案。
實際上我們離真正做閱讀理解還存在差異,我們在業(yè)界做閱讀理解時,首先要做召回,因為不知道哪篇文章里包含了問題的答案。這里先要快速去做檢索,做完檢索才到下一個部分——文檔閱讀理解模塊。文檔閱讀理解并不是這兩年才發(fā)展起來的,很多年前就有相關(guān)工作了,以前是基于傳統(tǒng)特征,比如說基于三元組的關(guān)系抽取的方法,現(xiàn)在更多想用一些深度模型的方法來做閱讀理解。
下面是一般的 Doc Reader 框架。這幾年閱讀理解框架非?;穑灿泻芏嘞嚓P(guān)工作。下圖右所示是谷歌最近得分最高的一個單模型 QANet,可以看到,首先會有一些 Encoder,把用戶的問題都讀取進(jìn)來,它的核心在 Attention,可以設(shè)置很多 Attention 機(jī)制,比如基于字、基于短語,或基于時刻、步長的 Attention。Attention 是一個很大的舞臺,可以嘗試很多方法。當(dāng)拿到問題和文檔交互的內(nèi)容信息,送到 Decoder 部分,來生成文檔在文章中的位置。所以這是一個分類問題,即這個詞是不是這個檔案的開頭,另外是找結(jié)尾,看這個詞是不是檔案的結(jié)尾。這是一個比較通用的框架。
最后談?wù)勎覀冊跇I(yè)界的一些心得。
首先,要重視 Baseline,這一點非常重要。不要把 Baseline 搞得太復(fù)雜,因為要通過 Baseline 理解數(shù)據(jù)和問題。
第二,盡快地構(gòu)建 pipeline。我們的 pipeline 是一整套系統(tǒng),包括數(shù)據(jù)處理、模型訓(xùn)練、模型加載、模型預(yù)測、模型評價,特別要注意評價指標(biāo)和整個流程的打通,只有建立 pipeline 才有迭代的基礎(chǔ),如果沒有 pipeline,就沒辦法迭代,沒辦法評價模型,也沒辦法更新框架。
第三,沒有免費的午餐,沒有倚天屠龍刀,不存在一種可以解決所有問題的算法,算法一定有其適用的數(shù)據(jù)和場景。有了基準(zhǔn)和評價標(biāo)準(zhǔn),我們才可以嘗試更多模型,才能知道模型在哪種條件下更加合適,做到揚(yáng)長避短。
最后,要有領(lǐng)域相關(guān)的數(shù)據(jù)。領(lǐng)域相關(guān)的數(shù)據(jù)不只是指訓(xùn)練數(shù)據(jù),也包括該領(lǐng)域的專家經(jīng)驗和知識,與該領(lǐng)域相關(guān)的框架和模型。就我們的經(jīng)驗來講,領(lǐng)域數(shù)據(jù)的優(yōu)化,比如清洗領(lǐng)域數(shù)據(jù),或者構(gòu)建領(lǐng)域詞典、詞表,這些方法帶來的提升比較顯著,甚至比模型帶來的提升更加顯著,所以要重視領(lǐng)域數(shù)據(jù)的工作。
我今天的分享就到這里。感謝大家!
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。
本專題其他文章