作者:朱凱華
【新智元導(dǎo)讀】百度度秘事業(yè)部首席技術(shù)官朱凱華日前在上海計算機學(xué)會做了題為《AI賦能的搜索和對話交互》的報告,主要介紹了現(xiàn)在的百度搜索及度秘“DuerOS”系統(tǒng)。由陸奇領(lǐng)銜、百度全新組建的度秘事業(yè)部有什么技術(shù)干貨?本文為你帶來詳盡的解讀。
很榮幸能夠被上海計算機學(xué)會邀請來給大家做一個匯報,今天我講的是AI賦能的搜索和對話交互。
簡單介紹一下自己,我之前負(fù)責(zé)百度的搜索算法,現(xiàn)在技術(shù)負(fù)責(zé)百度的對話式操作系統(tǒng)DuerOS,所以今天分享下在工作過程中遇到的技術(shù)挑戰(zhàn),以及學(xué)習(xí)到的收獲。
今天的演講主要集中在以下兩個部分:
AI賦能的現(xiàn)代搜索引擎——現(xiàn)在的百度搜索;
AI賦能的對話式交互計算機——我們現(xiàn)在正在做的DuerOS系統(tǒng)。
現(xiàn)代搜索引擎進展:兩大挑戰(zhàn)
首先看一下現(xiàn)代搜索引擎遇到的挑戰(zhàn)。
現(xiàn)代搜索引擎面臨兩個重要挑戰(zhàn):1. 更好的建模搜索結(jié)果的語義相關(guān)性;2. 更直接地給用戶答案。
第一部分討論現(xiàn)代搜索引擎的進展時,我們主要分成:1. 通過語義匹配來提升語義相關(guān)性;2. 通過知識的幫助來給用戶直接答案。
首先討論語義匹配的部分。
更好的建模語義表達能力(representation capability)是不斷改進語義匹配能力的基礎(chǔ)。
我們通過經(jīng)典的BM25匹配算法(信息檢索的一個經(jīng)典算法)來分析一下語義表達能力的基本組成部分。
關(guān)鍵詞命中(Keyword hits):如果Document中的一個詞(Term)是Query中有的,那么算法會認(rèn)為這個Document和Query更相關(guān),BM25匹配的得分更高。可以認(rèn)為這個命中詞對整體語義相關(guān)性有正向貢獻。
關(guān)鍵詞權(quán)重(Term weighting):通過TFIDF來決定每個命中詞正向貢獻的大小。
頁面長度歸一化(Document length normalization):如果Document的長度越長,這個Document和Query就更不相關(guān)(典型例子是:如果這個Document是一個詞典,任何一個Query中的詞在它中都出現(xiàn)),BM25匹配得分越低。可以認(rèn)為Document中所有未被Query命中的詞都會對整體語義相關(guān)性有負(fù)向貢獻。
上面討論的命中詞對整體語義相關(guān)性的正/負(fù)向貢獻,是語義表達能力的基礎(chǔ)。
那么,我們就通過一個running example來討論一下整個信息檢索方向的發(fā)展史,它本身就隨著語義表達能力的提升而不斷前進的。
Running example的設(shè)定如下:
Query當(dāng)中有A B C D E五個Term;
Document當(dāng)中有X ? B Y C D' Z七個Term。
我們要計算該Query和Document的相關(guān)性。
大家會注意到,Document中B和C都屬于精確命中Query的Term,他們的對整體語義相關(guān)性的貢獻可以認(rèn)為已經(jīng)被BM25討論了,我們就不贅述。但是Document中沒有命中Query的Term: X ? Y D' Z,這些『未命中的詞』對整體語義相關(guān)性的貢獻的建模方式的改進,貫穿了信息檢索理論的進化。
所以我們分成以下四個層次來討論這些『未命中』的詞對相關(guān)性的建模方式:
歸一化命中
同義詞命中
建模詞與詞之間“愛” 的關(guān)系
建模短語與詞之間的“愛 / 恨”的關(guān)系
歸一化命中主要表明兩個詞基本上是完全等價的,我們記作 A和?是1.0的關(guān)系。像這樣基本等價的關(guān)系,會有一些詞干提?。⊿temming),拼寫糾錯,繁簡體轉(zhuǎn)換和數(shù)字格式歸一化,上面在每種情況給了例子。
從歸一化命中向前進一步,我們不要求兩個詞完全等價,放松要求他們只要有有類似的概念,基本可以互換,這就是同義詞(Synonym)命中。在例子中記作 D和D'是0.8的關(guān)系(弱一點)。同義詞有很多種,上面列舉了一些例子。這都是百度系統(tǒng)中實際考慮的一些情況。
從同義詞命中再前進一步,我們不要求兩個詞概念類似,而是有一種弱的『愛』的關(guān)系就行了。比如X雖然沒有出現(xiàn)在Query中,但是因為Query中出現(xiàn)了E,我們認(rèn)為兩者的相關(guān)性有一個小提升(0.2),Y的貢獻是0.05,Z的貢獻更小是0.03。
建模詞與詞之間『愛』的關(guān)系的一個有價值的工作是Gao Jianfeng在微軟做的一個基于統(tǒng)計機器翻譯(SMT)的一個模型,它通過SMT來計算詞語之間『愛』的關(guān)系。
看一下表中的例子:
如果用戶Query中有vista,那么如果一個Document中,出現(xiàn)了Windows, download,甚至是free,都會讓系統(tǒng)認(rèn)為這個Document更相關(guān)。
如果用戶Query中有titanic,那么如果一個Document中,出現(xiàn)了ship, pictures,甚至是rose,都會讓系統(tǒng)認(rèn)為這個Document更相關(guān)。
上面這三種建模方式其實本質(zhì)都是相同的:都是對任何一個query中的詞,建立一個相關(guān)詞的列表,每個相關(guān)詞配上一個權(quán)重,如果Document中出現(xiàn)了任一個相關(guān)詞,都會得到大小不等的正向貢獻。(例子中,歸一化是1.0;同義詞是0.8;SMT是更小的權(quán)重)
但是,這樣的建模方式有一個根本性的限制,就是相關(guān)詞列表不能太大,否則模型大小會爆炸,無法實用。
在這三種建模方式更前進一步,我們希望能夠建模詞與詞之間,短語與詞之間『愛/恨』關(guān)系。比如Query中出現(xiàn)短語[C D E],那么Document中出現(xiàn)X的時候,系統(tǒng)能夠認(rèn)為這個Document更不相關(guān)。
通過語義匹配提高語義相關(guān)性:百度的例子
我們來討論下百度如何通過DNN模型來建模短語與詞之間的『愛/恨』關(guān)系。
首先Word embedding非常重要,它能夠把詞映射到一個低維(128維或256維)的稠密向量上。任意兩個向量都能計算距離(cosine),而且距離有正有負(fù)(對應(yīng)詞之間的『愛/恨』關(guān)系)。
百度通過100億的用戶點擊數(shù)據(jù)來訓(xùn)練一個DNN模型,該模型有超過1億個參數(shù)。該模型2013年12月第一次上線,之后持續(xù)給百度的相關(guān)性帶來非常大的提高。(2014年之后數(shù)據(jù)由于保密原因,不方便透露。)
據(jù)目前所知,百度是全球第一個將深度學(xué)習(xí)模型應(yīng)用到實際網(wǎng)頁搜索系統(tǒng)中的公司。(Google在2015年7月上線RankBrain,將深度學(xué)習(xí)模型應(yīng)用到搜索系統(tǒng)中。)
該DNN模型初版結(jié)構(gòu)如上圖所示,輸入是Query中的Term和Document的Title中的Term,終輸出是對這個Query和Title對的語義相關(guān)性預(yù)測值。其中 S*|V|的Looking up Table是word embedding層。
該DNN模型的訓(xùn)練是通過同一個Query下有點擊和無點擊的title構(gòu)成Pair來進行Pairwise loss的訓(xùn)練的。這樣構(gòu)建訓(xùn)練樣本的好處(比如相對DSSM來說),它能夠在原有百度很好的頁面相關(guān)性的基礎(chǔ)上進一步捕獲微妙的語義差別,讓模型來專注于語義的差別。
舉一個例子,在2013年上線DNN模型之前,如果用戶查詢百度『ghibli車頭如何放置車牌』,由于這款瑪莎拉蒂旗下的豪車可能在中國賣的不多,所以相關(guān)內(nèi)容非常少。
就算查詢2015年的Google(2015年snapshot),結(jié)果和百度2013年之前的那個一樣不好,都是在做字面匹配。
但當(dāng)百度上線了DNN模型之后,大家可以看一下,搜索結(jié)果立刻明顯改善了。排上來的結(jié)果雖然字面不是精確重現(xiàn)Query的問法,但是語義角度都是能夠回答這個Query的。
仔細(xì)分析可以看到,DNN模型成功捕獲了Query中『車頭』和Document中『前』、『前面』的語義關(guān)系;捕獲了Query中『如何放置』和Document中『放哪里』、『怎么裝』、『咋掛』的語義關(guān)系。
其實這是在訓(xùn)練的100億樣本中,有一些樣本體現(xiàn)了這樣的語義關(guān)系,被DNN模型學(xué)習(xí)到了。兩個例子如上圖,那是兩個用戶點擊過的Query/Document對。
再看一下進一步分析的例子:
如果Query和Document1都完全相同是『三歲小孩感冒怎么辦』的時候,DNN的預(yù)測分?jǐn)?shù)是-15;如果我們在Document1后面加『寶寶樹』,預(yù)測得分立刻大幅提高了(升到-13),雖然『寶寶樹』這個詞沒有出現(xiàn)在Query中,但是DNN模型認(rèn)為這個詞和query其他部分是有語義相關(guān)關(guān)系的,所以給出了正向的貢獻(『愛』)。如果我們在Document1后面加了『搜房網(wǎng)』,預(yù)測得分立刻下降了(降到-15.8),因為DNN模型認(rèn)為這個『搜房網(wǎng)』的出現(xiàn)和query其他部分語義更不相關(guān),所以給出了負(fù)向的貢獻(『恨』)。這個例子中,其實D2、D3和D1的區(qū)別都是增加了一個和Query沒關(guān)系的Term,在傳統(tǒng)的Information Retrieval中是一定會給D2,D3一樣的相關(guān)性得分,而區(qū)別不出兩者的差異。
后面兩個例子類似,DNN能夠區(qū)分『寶寶』和『小寶寶』類似,而和『狗寶寶』語義不相關(guān)?!簞钪靖裱浴慌c『格言』類似,而『幼兒教師』和『幼兒』語義不相關(guān)。
所以DNN模型與現(xiàn)代搜索引擎的結(jié)合是必然,其發(fā)展方向大概是以下幾個:
用更多數(shù)據(jù)和更好的體現(xiàn)搜索特性的標(biāo)注:權(quán)威性、時效性、多樣性……
更好的理解和調(diào)試DNN模型,只用SNE這類工具簡單看一下是遠遠不夠的。上面的一些例子分析就是一些如何更好調(diào)試DNN模型是否符合預(yù)期工作的一些示例。
通過CNN來更好的建模短距離的依賴關(guān)系,百度第一個CNN模型2015年1月上線。
這個是CNN和Bag-of-word(BOW)的DNN對比的例子。
在第一個例子中BOW模型因為不考慮順序,所以無法區(qū)分是從『葫蘆島北到北京西』還是『北京西到葫蘆島北』,給出一樣的得分。而CNN模型能夠知道哪個才是更加語義相關(guān)的。
第二個例子中CNN模型也能更好的區(qū)分『被我刪除的QQ好友』和『被QQ好友刪除』。
更進一步的改進方向是通過RNN賴建模長距離的依賴關(guān)系。百度在2015年7月時第一次上線RNN模型,對整體效果帶來了很大提升。
這個例子可以看出,RNN對建模有跳躍的概念是非常有效的,如例子Document中:『寬屏X電腦XXX玩魔獸XXXXXX』;『沙田XXX到迪斯尼XXXXX地鐵XXXX路線XXXXX』。
總結(jié)一下第一部分:我們可以通過使用DNN/CNN/RNN來更好的建模語義匹配程度,進一步提升語義相關(guān)性。(出于保密考慮,演講提到的都是百度2~3年以前的工作。)
引入“知識”直接給出用戶想要的答案:百度 PK 谷歌
接下來我們來討論如何更好地通過引入『知識』來直接給出用戶想要的答案。
隨著設(shè)備越來越多樣化,屏幕越來越小,現(xiàn)代搜索引擎都想給用戶更少的links,更多的直接答案。
第一個很直白的方式就是通過在知識圖譜上的推理,給出答案。
這邊對比一下百度在知識圖譜上的推理能力。
百度支持『主語+謂詞』方式的推理,例子是『劉德華的老婆』,百度和Google都能給出答案。但從產(chǎn)品上百度更豐富的給出答案的詳細(xì)信息。
百度支持『謂詞+取值范圍』方式的推理,例子是『180cm以上的男明星』,百度能夠給出符合要求的明星列表,Google不能給出答案。
百度支持『謂詞+排名』方式的推理,例子是『世界第五/第八/第十高峰』,百度能夠給出符合要求的知識圖譜卡片,Google給出的答案結(jié)構(gòu)不一(有些是知識圖譜卡片,有些是web answer卡片)。
百度支持多步推理,例子是『謝霆鋒的爸爸的兒子的前妻的年齡』,百度能夠通過多步推理給出答案,而Google不能給出答案(雖然真實用戶不太會真的這樣搜索百度,但是這個例子體現(xiàn)的是能力的差異)。
如何進行基于知識圖譜的推理,這方面討論很多,不多贅述。簡言之就是按照知識先分析關(guān)系,然后在知識圖譜上解釋執(zhí)行獲取答案。上面的例子是『謝霆鋒是誰的兒子』和『謝霆鋒的兒子是誰』,雖然這兩句話用詞差不多,但是依存分析(Dependency Parsing)的解釋完全不同,依據(jù)依存分析的解釋,百度能夠執(zhí)行知識圖譜查詢并且獲得正確的答案。
基于知識圖譜推理的兩大限制及三種解決方案
但是,基于知識圖譜推理有一些關(guān)鍵的限制,限制之一是知識圖譜有盲區(qū)(Blindness)。
舉個例子,看到『Bush wives』大家會猜到什么?一般都會理解為『小布什/老布什的老婆』(雖然wives復(fù)數(shù)有點奇怪)。包括Google在2015年的時候也是這么理解的(2015年WSDM演講時的截圖,后來Google修復(fù)了這個例子),但是如果仔細(xì)看一下頭幾條搜索結(jié)果,大家就會發(fā)現(xiàn),bush wives講的是非洲內(nèi)戰(zhàn)時,被擄獲到叢林中充當(dāng)慰安婦的婦女。
這就是典型的知識圖譜的盲區(qū)問題,一旦某概念不在知識圖譜其中,知識圖譜會做一個它自己盡可能好的解釋,但他可能和真正的解釋相差很多。(一個類似的中文例子是『從百草園到三味書屋』,中國地大物博,確實有地名叫百草園,也有三味書屋,一個只關(guān)注地理位置POI的知識圖譜就會覺得他是一個完美匹配導(dǎo)航需求的Query。但放大來看,大家都知道他是魯迅的一篇散文。)
基于知識圖譜推理的第二個限制是靜態(tài)的圖譜很難描述用戶意圖的分布以及變化。
舉例來說,『天龍八部』這四個字,可以是小說,游戲,電視劇,電影。。。那么用戶在一個上下文中說這四個字的時候,他到底要的是什么?如果世界上正好一部新的天龍八部的電影上映了,用戶說這四個字的時候,他的需求分布是不是也應(yīng)該相應(yīng)改變?
由于以上限制,只通過只是圖譜推理向用戶直接提供答案是不夠的,我們要其他方向的解法。
其他方向是『和搜索結(jié)合』。搜索能夠幫助知識圖譜解決盲區(qū)和意圖分布的問題:
搜索能夠看到全景:百度搜索索引了幾百億的頁面,基本上涵蓋用戶各種需求的方方面面。
搜索能夠提供用戶真實意圖的分布:有非常多的排序特征和用戶反饋特征能告訴我們用戶在各種上下文下真實的意圖分布,并且會隨著時間推移更新。
所以,搜索和知識圖譜可以完美結(jié)合:
搜索可以為知識圖譜提供上下文
知識圖譜幫助理解搜索的Query和結(jié)果
其中一種是兩者結(jié)合來給用戶『長答案』。
類似“天空為什么是藍色的”這樣的Query,用戶需要詳細(xì)的解釋,我們可以把這個問題轉(zhuǎn)化為在知識圖譜的幫助下,自動識別佳答案段落(Paragraph Ranking)的問題。這就會是一個百度很擅長的排序問題,我們能找出精簡描述『瑞利散射』的段落。
當(dāng)知識圖譜和搜索結(jié)合,我們通過情感分析(Sentiment Analysis),可以更好的理解搜索結(jié)果。
比如非常多人在百度上搜索『孕婦可以』打電話么?吃柿子么?玩電腦么?……或者『蠶絲被能夠放在太陽下曬么』這樣的問題,往往沒有絕對的答案,這時候通過情感分析和知識圖譜,百度能夠告訴用戶說有80%的人說可以,20%的人說不可以。您需要自己判斷一下。 :)
同樣,基于實體和搜索結(jié)合可以把難度很高的問題難度減低到容易通用的實現(xiàn)。
舉個例子:『王剛第二任妻子是誰』這個Query其實對知識圖譜理解的要求很高:要理解這個第二,不是年齡第二,不是身高第二,而是結(jié)婚時間排序第二。但是一旦結(jié)合搜索,知識圖譜的理解難度就下降了:
通過Query中的『是誰』,系統(tǒng)可以知道用戶想要的答案很可能是一個人。
知識圖譜可以標(biāo)出搜索結(jié)果中所有是人的實體。
通過一些排序信號,包括實體出現(xiàn)在所有結(jié)果中的比例,我們較容易就能猜出答案很可能是『成方圓』——這是個正確答案。
總結(jié)一下第二部分,要給用戶更多的直接答案,我們要充分利用知識圖譜以及要和網(wǎng)頁搜索來結(jié)合。(出于保密考慮,所有列出的數(shù)據(jù)都是百度2015年初的情況。)
AI 賦能的對話式計算機:百度 DuerOS
接下來討論一下AI賦能的對話式計算機(Conversational Computer),也就是百度現(xiàn)在在做的DuerOS系統(tǒng)。
首先,我們有一個觀點:從用戶和計算機的交互方式來看,以DuerOS為代表的對話式計算機將會是第三代的操作系統(tǒng)。
第一代操作系統(tǒng)的主要交互方式是鼠標(biāo)和鍵盤,代表的操作系統(tǒng)是Windows/Mac。
第二代操作系統(tǒng)的主要交互方式是觸摸,代表的操作系統(tǒng)是iOS/Android。
第三代操作系統(tǒng)的主要交互方式是語音對話,代表的操作系統(tǒng)是DuerOS。
這三代操作系統(tǒng)一路走來,他們的交互方式越來越自然,使用門檻越來越低,用戶受眾越來越多。
在2017年1月的CES上,百度聯(lián)合小魚在家發(fā)布了第一款搭載DuerOS操作系統(tǒng)的智能家用機器人。
小魚在家是我們合作的第一個設(shè)備,DuerOS還在和非常多的硬件合作伙伴合作,將DuerOS的對話交互的能力嵌入到各個地方。
我們對DuerOS的愿景是這樣的:『我們希望DuerOS是無處不在的,我們希望未來DuerOS的標(biāo)志可以貼在任何地方。無論它貼在哪里,小朋友就知道這個設(shè)備可以對話。它貼在桌子上就可以跟桌子對話,它貼在椅子上就可以跟椅子對話?!?/span>
延時DuerOS語音對話,多輪交互的能力。
DuerOS的場景如上圖所示,它會深入我們生活的場景中(音響、電視、冰箱、手機、家用機器人、車、手表……)并且依托百度整個搜索來給用戶提供各種各樣的能力。
DuerOS在CES和極客公園上也引起了很大的反響和認(rèn)可。
從整個對話系統(tǒng)來說,DuerOS的整體是符合POMDP的框架的。采用POMDP的框架有很大的好處:
整個系統(tǒng)可以整體建模每個環(huán)節(jié)的出錯可能性。
整個系統(tǒng)可以整體建模幾輪對話后用戶終給予的反饋。
DuerOS系統(tǒng)正在不斷完善過程中,出于保密考慮,沒辦法分享全部的技術(shù)細(xì)節(jié),所以只能選擇一些小點來和大家粗略分享一下。
首先我們看一下和ASR相關(guān)的糾錯部分。
普通的語音識別和糾錯就不多說了。說一個主動糾正的例子。
用于語音搜索『chen’yu’juan』;百度給出結(jié)果是『陳玉娟』,用戶糾正『下面是月的雨(育)』,后一個字還是別錯了,但是百度可以給出正確的『陳育娟』的結(jié)果。
這個例子里面,我們就充分利用了RNN的序列標(biāo)注能力,來找到語義上可能的替換點,然后通過Skip-gram的檢索終產(chǎn)生正確的替換。
我們接下來看一下自然語言理解(NLU)的部分。自然語言理解中的意圖分類(Intent classification)和槽位填寫(Slot filling)是其中兩個重要的問題。
簡單討論下槽位填寫的例子,百度采用一個字符級的雙向LSTM和CRF層來做槽位填寫的標(biāo)注。如上圖,在藍色的演員這個序列上,『王樂君』就是一個比較可能的候選?!簜窝b者』就是劇名這個綠色的序列上可能的候選。
接下來我們討論下對話狀態(tài)跟蹤。
在封閉領(lǐng)域(買飛機票,問汽車班次等)中的狀態(tài)跟蹤各處有過非常多的討論,這里就不贅述。我們來看一個在比較開放的領(lǐng)域做狀態(tài)跟蹤并且更新的例子。
在這里,我們主要把Query間的上下文狀態(tài)更新分為兩種:上下文替換和主體補全。
上面兩個是在百度系統(tǒng)中的真實Case,通過RNN + CRF來做到的狀態(tài)更新:用戶順序說Q1,Q2,百度看到Q2會直接更新理解為Q3。
接下來我們討論下對話狀態(tài)管理,這個階段主要是系統(tǒng)要選擇合適的Action來動作。
我在這里舉一個度秘高考的例子,度秘在高考期間服務(wù)了非常多的填報志愿的考生,通過對話回答高考相關(guān)的問題,并且引導(dǎo)考生進一步了解他關(guān)心的學(xué)校的信息,幫助考生結(jié)合充分信息,來終做出人生中這個非常重要的決定。
在這里我們會把這個Dialogue management的問題構(gòu)建成一個MDP問題(由于在實際產(chǎn)品中,我們并不知道考生終填報了哪個志愿,所以我們把Reward設(shè)計成每次交互都會給出顯示的獎懲),放在經(jīng)典的Reinforcement learning的框架中來求解。上線之后,用戶的交互體驗大幅提升。
總結(jié)一下這一部分,自然的語音交互是未來,未來的DuerOS會是無處不在的。在這樣的對話系統(tǒng)中,技術(shù)挑戰(zhàn)有很多:更好建模上下文,更好的處理異構(gòu)下游服務(wù)……在百度,我們充分利用在深度學(xué)習(xí)上的積累,相信能夠在對話系統(tǒng)中提供讓用戶感到驚艷的交互體驗。
總結(jié)一下今天的演講,AI現(xiàn)在逐步深入人們生活的方方面面,賦能各種產(chǎn)品。我們今天討論的是AI賦能的現(xiàn)代搜索引擎(百度搜索)和AI賦能的對話式計算機(DuerOS)。
今天講的所有工作都是歸功于整個百度技術(shù)團隊所有人的努力工作!并且今天講的所有內(nèi)容,都是我們上線給億萬用戶每天在使用的!
謝謝大家!
做個廣告:)
我們在百度有非常多的實際有意思的問題,有非常自由的空間來嘗試想法,有實際的系統(tǒng)每天被億萬用戶使用,我們有非常多的很棒的工程師和研究員。如果你感興趣,我們提供各種各樣的機會,請發(fā)信來:duer-recruit@baidu.com。 :)
3月27日,新智元開源·生態(tài)AI技術(shù)峰會暨新智元2017創(chuàng)業(yè)大賽頒獎盛典隆重召開,包括“BAT”在內(nèi)的中國主流 AI 公司、600多名行業(yè)精英齊聚,共同為2017中國人工智能的發(fā)展畫上了濃墨重彩的一筆。
官方微博
官方微信公眾號
官方百家號