人工智能在搜索算法中的應(yīng)用
2016年以來,IT行業(yè)最大的技術(shù)突破應(yīng)該是人工智能了,不僅在一年左右時間,在最后一個人類曾經(jīng)自以為機(jī)器很難戰(zhàn)勝人類的游戲項(xiàng)目上完勝人類,前幾天更是出現(xiàn)了逆天的AlphaGo Zero,完全不用借鑒人類知識,自學(xué)3天就超越了人類。
人工智能領(lǐng)域最牛X的公司,國外是Google,國內(nèi)是百度。都是搜索引擎。這恐怕也不是什么巧合,而是因?yàn)樗阉饕媸亲钸m合開發(fā)人工智能的公司,他們擁有最大量的數(shù)據(jù),包括文字、圖片、視頻,還有地圖、路況、用戶使用數(shù)據(jù)等等。
搜索引擎公司的AI成果在多大程度上運(yùn)用到了他們的核心業(yè)務(wù)-搜索中?他們都沒有明確地對外說明,從搜索工程師的零碎發(fā)言中猜測,至少目前還沒有大規(guī)模使用,并沒有改變搜索算法的基礎(chǔ)。畢竟人工智能雖然概念存在了幾十年,但效果突飛猛進(jìn)只是近幾年的事,還沒有出現(xiàn)通用人工智能,在圍棋這種規(guī)則簡單明確的領(lǐng)域中牛X,遷移到規(guī)則模糊的系統(tǒng)中,比如搜索,還需要一些時間。
但我想,人工智能大規(guī)模應(yīng)用于搜索算法是早晚的事。據(jù)說以前百度大搜索部門和人工智能/深度學(xué)習(xí)部門之間是有些矛盾的,現(xiàn)在吳恩達(dá)離開了百度,陸奇對百度又進(jìn)行了很多人事調(diào)整,搜索部門對人工智能的排斥也許就大大降低了。
其實(shí)人工智能已經(jīng)在搜索算法中有所運(yùn)用。舉兩個例子。
百度DNN模型
前幾個月看到了百度朱凱華的一篇《AI賦能的搜索和對話交互》演講報道。數(shù)年前和朱凱華還做過一次訪談,那時候他還是Google的主任架構(gòu)師,是著名的熊貓算法的主要參與者之一,現(xiàn)在他是百度的首席架構(gòu)師了。演講內(nèi)容很多,感興趣的搜索標(biāo)題就能找到全文,很值得深入讀一下。這么長時間SEO行業(yè)很少人注意到這篇這么有價值的關(guān)于搜索算法的公開信息,還是挺意外的。
演講里提到了百度2013年上線的DNN模型,極大提高了語義相關(guān)性的判斷范圍和準(zhǔn)確性,2013年百度相關(guān)性提高的34%來自于DNN模型,2014年全年相關(guān)性提升的25%來自DNN模型。DNN模型使用的就是深度學(xué)習(xí)方法,通過100億的用戶點(diǎn)擊數(shù)據(jù)訓(xùn)練模型,有超過1億個參數(shù)。下面介紹的Google RankBrain是2015年上線的,所以百度是世界上第一個將人工智能應(yīng)用到實(shí)際搜索算法中的公司。
下圖是DNN訓(xùn)練的示意圖:
百度DNN模型是人工智能在算法中的第一次應(yīng)用
簡單說,就是對同一個查詢詞,模型分析了真實(shí)用戶點(diǎn)擊了的頁面的標(biāo)題,和沒有點(diǎn)擊的頁面標(biāo)題,從而更深入理解哪些標(biāo)題是滿足了用戶需求的。經(jīng)常出現(xiàn)的情況是,頁面標(biāo)題并不包含查詢詞,用戶卻更愿意點(diǎn)擊這些頁面,說明這些頁面滿足了用戶需求,這些頁面的標(biāo)題,即使不包含查詢詞,也是與查詢詞語義相關(guān)的。這是經(jīng)典的頁面-關(guān)鍵詞相關(guān)性算法無法計(jì)算出來的。
演講中提到的例子:
百度DNN模型案例
在DNN上線之前,用戶搜索“ghibli車頭如何放置車牌“時,由于相關(guān)信息很少,沒有什么頁面是以這個查詢詞為標(biāo)題或者頁面出現(xiàn)這些關(guān)鍵詞的,所以搜索結(jié)果質(zhì)量不高,傳統(tǒng)搜索算法只能按關(guān)鍵詞匹配返回一些ghibli相關(guān)信息,卻沒幾乎有“車頭如何放置車牌”的信息。
(注:看到這里的讀者不用去百度搜索“ghibli車頭如何放置車牌”了,您看到的將是被這篇帖子污染的搜索結(jié)果,會看到本帖,以及被轉(zhuǎn)載、抄襲的本帖。)
DNN上線之后的搜索結(jié)果是這樣的:
百度DNN模型上線效果
可以看到,搜索結(jié)果中還是沒有以“ghibli車頭如何放置車牌“為標(biāo)題的頁面,但解決了用戶的需要,算法理解了“前”、“前面”和“車頭”是一個意思,“放哪里啊”、“怎么裝”、“咋掛”和“任何放置“是一個意思,所以”ghibli車牌咋掛“這種頁面回答了“ghibli車頭如何放置車牌“這個查詢,雖然他們包含的關(guān)鍵詞是不一樣的。
這種對相關(guān)性的理解不是傳統(tǒng)以關(guān)鍵詞匹配為基礎(chǔ)的搜索算法能算出來的,而是真實(shí)用戶的點(diǎn)擊數(shù)據(jù)告訴搜索算法的。用戶搜索“ghibli車頭如何放置車牌“時,經(jīng)常點(diǎn)擊”ghibli車牌咋掛“、”ghibli前面車牌照怎么裝“這些頁面,DNN模型被訓(xùn)練后知道,這些詞之間是語義相關(guān)的。
Google RankBrain
2015年上線的Google RankBrain解決的也是對查詢詞的深入理解問題,尤其是比較長尾的詞,找到與用戶查詢詞不完全匹配、但其實(shí)很好回答了用戶查詢的那些頁面。和百度DNN是非常類似的。Google沒有具體說明RankBrain的訓(xùn)練方法,估計(jì)和百度DNN也是類似的。
2015年RankBrain上線時,15%的查詢詞經(jīng)過RankBrain處理,2016年所有查詢詞都要結(jié)果RankBrain處理。
Google自己經(jīng)常舉的RankBrain例子是這個查詢:
What’s the title of the consumer at the highest level of a food chain
這個查詢詞相當(dāng)長尾,完全匹配的結(jié)果比較少,而且查詢中的幾個詞容易有歧義,比如consumer通常是消費(fèi)者的意思,food chain也可以理解為餐飲連鎖,但這個完整的查詢和商場、消費(fèi)者、飯館之類的意思沒有任何關(guān)系,RankBrain能理解其實(shí)用戶問的是食物鏈頂端的物種是什么名字。同樣,搜索結(jié)果不能按照傳統(tǒng)的關(guān)鍵詞匹配來處理。
這種長尾查詢數(shù)量很大,每天Google收到的查詢里有15%是以前都沒出現(xiàn)過的。這種查詢要靠關(guān)鍵詞匹配就比較難以找到高質(zhì)量頁面,數(shù)量太少,甚至沒有,但理解了查詢的語義和意圖,就能找到滿足用戶需求的、關(guān)鍵詞并不完全匹配的頁面。
對SEO的影響以后再詳細(xì)寫,這里只是先簡單提示一下:頁面要包含關(guān)鍵詞,這在目前的關(guān)鍵詞優(yōu)化過程中是必然的,現(xiàn)在搜索引擎能理解兩句不同的話意思是一樣的了,以后創(chuàng)作或編輯頁面內(nèi)容時,是不是還一定要包含關(guān)鍵詞呢?
2019年2月10號更新:Google工程師Gary Illyes在Reddit上舉辦的一次問答活動上這樣描述RankBrain的工作原理:
RankBrain is a PR-sexy machine learning ranking component that uses historical search data to predict what would a user most likely click on for a previously unseen query. It is a really cool piece of engineering that saved our butts countless times whenever traditional algos were like, e.g. “oh look a “not” in the query string! let’s ignore the hell out of it!”, but it’s generally just relying on (sometimes) months old data about what happened on the results page itself, not on the landing page
就我的理解,基本上和百度DNN模型一樣,對某些查詢量很小,甚至以前沒出現(xiàn)過的查詢詞,RankBrain使用歷史搜索數(shù)據(jù)(搜索結(jié)果頁面上的點(diǎn)擊數(shù)據(jù),不是網(wǎng)頁本身數(shù)據(jù))預(yù)測用戶最可能點(diǎn)擊哪個頁面。
來源:SEO每天一貼 Zac 昝輝