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