以人工智能為基礎(chǔ)的搜索算法是什么樣的?
三年前,Googled的AlphaGo橫空出世時,我寫了《AlphaGo、深度學(xué)習(xí)及SEO》這篇帖子,在那之后,我一直非常關(guān)注人工智能與搜索算法的進(jìn)展。
人工智能與搜索算法
我不知道搜索算法什么時候會大規(guī)模以AI為基礎(chǔ),也不知道目前AI技術(shù)在搜索算法中應(yīng)用到了什么程度。由于目前人工智能技術(shù)的不可解釋性,搜索引擎以AI作為算法基礎(chǔ)會是非常謹(jǐn)慎的,不然很不容易debug。
不過算法中的一些模塊應(yīng)用AI是肯定的,以前介紹過百度的DNN模型和Google的RankBrain算法,都是AI在搜索算法中的應(yīng)用。
那么完全以人工智能為基礎(chǔ)的搜索算法是什么樣的?工作原理和流程是什么?簡單說一下我的理解。
人工智能的優(yōu)勢與搜索
目前實(shí)現(xiàn)人工智能的主流方法是機(jī)器學(xué)習(xí)中的深度學(xué)習(xí)分支,在這篇帖子里就不加嚴(yán)格區(qū)分了。
簡單說,人工智能是給予系統(tǒng)大量訓(xùn)練數(shù)據(jù),人工智能自己從中尋找模式和規(guī)律。給予AI系統(tǒng)的數(shù)據(jù)是打了標(biāo)簽的,或者說是告訴了AI系統(tǒng)結(jié)果。比如,在圍棋中,AI系統(tǒng)有了大量歷史棋局?jǐn)?shù)據(jù)(后來的Alpha連歷史棋局都不需要了,自我對局的數(shù)據(jù)就行了),以及這些棋局的輸贏結(jié)果,這個結(jié)果就是標(biāo)簽。然后AI系統(tǒng)自我學(xué)習(xí)棋局盤面與結(jié)果(輸贏)之間的關(guān)系。
在搜索中,AI系統(tǒng)有了頁面的大量數(shù)據(jù),也就是搜索引擎本身的索引庫,還需要標(biāo)簽,也就是要知道哪些頁面是高質(zhì)量的?針對一個查詢詞,哪些搜索結(jié)果是用戶滿意的?然后AI算法自己學(xué)習(xí)頁面特征(也就是排名因素)和排名之間的關(guān)系。
傳統(tǒng)的搜索算法是搜索工程師人工選擇排名因素,人工給予排名因素一定的權(quán)重,根據(jù)給定公式,計算出排名。這種方法的弊端是,當(dāng)數(shù)據(jù)量大了,排名因素多了的時候,調(diào)整排名因素的權(quán)重是件很困難的事。最初的權(quán)重很可能就是根據(jù)常識,再加上拍腦袋,具有很大的主觀隨意性。當(dāng)有幾百個因素,這些因素又互相影響時,調(diào)整這些因素的權(quán)重就變成混亂、無法預(yù)見結(jié)果的事了。
而從海量數(shù)據(jù)中找模式正是AI的擅長。AI可以快速尋找可能的排名因素,調(diào)整排名因素權(quán)重,自動迭代計算,擬合出排名因素和用戶滿意的搜索結(jié)果之間的計算公式。
通過訓(xùn)練數(shù)據(jù)訓(xùn)練出來的計算公式就是AI搜索算法,可以應(yīng)用于用戶更多的搜索了。
誰來打標(biāo)簽?
既然訓(xùn)練AI搜索算法時需要打了標(biāo)簽的數(shù)據(jù),那么這些標(biāo)簽數(shù)據(jù)是從哪來的?這就是搜索引擎質(zhì)量評估員的作用了。
前不久Google質(zhì)量評估指南帖子里詳細(xì)介紹了質(zhì)量評估員的工作。這些真實(shí)用戶(他們不是Google員工),在學(xué)習(xí)質(zhì)量評估指南后,Google在評估系統(tǒng)中給評估員真實(shí)網(wǎng)站、真實(shí)查詢詞數(shù)據(jù),評估員進(jìn)行相關(guān)評估,最主要的就是:
給頁面質(zhì)量打分
給特定查詢詞的搜索結(jié)果打分
Google的質(zhì)量評估員很早就存在了,應(yīng)該不是為了開發(fā)AI算法招募的,而是用來評估傳統(tǒng)算法質(zhì)量的。但他們的評估數(shù)據(jù)剛好可以被人工智能系統(tǒng)有效使用。
這樣,AI系統(tǒng)就知道,針對某個查詢詞,用戶滿意的搜索結(jié)果是哪些頁面,是按什么順序排名的。
現(xiàn)在,AI系統(tǒng)有了海量頁面特征數(shù)據(jù),也知道什么樣的搜索結(jié)果是真實(shí)用戶滿意的,下一步就是訓(xùn)練系統(tǒng),尋找頁面特征和搜索排名之間的關(guān)系。
訓(xùn)練人工智能搜索算法
搜索引擎可以把打了標(biāo)簽的搜索結(jié)果數(shù)據(jù)分成兩組。一組訓(xùn)練用,一組驗(yàn)證用。
AI算法檢查訓(xùn)練組搜索結(jié)果中的頁面有哪些特征,這些特征又應(yīng)該給予什么樣的權(quán)重,根據(jù)什么樣的計算公式,才能計算出用戶滿意的(打過標(biāo)簽的)搜索結(jié)果。
與傳統(tǒng)算法不同的是,需要哪些特征(排名因素),這些特征給予多少權(quán)重,不是工程師決定的,是AI系統(tǒng)自己尋找和評估的。這些因素也許是工程師想得到、早就在用的,比如:
頁面的關(guān)鍵詞密度
頁面內(nèi)容長度
頁面上有沒有廣告
頁面有多少外部鏈接
頁面有多少內(nèi)部鏈接
頁面有多少以查詢詞為錨文字的鏈接
頁面所在域名有多少外鏈
頁面打開速度多快
等等等等,可能有幾百上千個
也許是工程師壓根兒沒想過的,也許有些是表面上看起來毫無關(guān)系、毫無道理的,比如:
頁面正文用的幾號字
文章作者名字是三個字
頁面第一次被抓取是星期幾
頁面外鏈數(shù)是單數(shù)偶數(shù)
以上只是舉例,為了說明,AI尋找的不是因果關(guān)系,而是相關(guān)關(guān)系。只要AI看到排名好的頁面有哪些特征就夠了,至于把這些特征與排名聯(lián)系起來是不是看著有道理,并不是AI關(guān)心的,也是不必要關(guān)心的。
當(dāng)然,有些因素可能是負(fù)面的,比如域名長度,很可能與高排名是負(fù)相關(guān)的。
AI系統(tǒng)被訓(xùn)練的過程就是找到這些排名因素(無論人類看著是否有道理),給予這些因素一定權(quán)重,擬合出一個計算公式,剛好能排出用戶滿意的那個搜索結(jié)果。這個擬合過程應(yīng)該是迭代的,一個權(quán)重數(shù)值、一個公式不行,自動調(diào)整,再次計算,直到比較完美擬合出評估員打過標(biāo)簽的搜索結(jié)果。這個訓(xùn)練過程也許要幾天,也許幾個星期,要看數(shù)據(jù)量。
AI搜索算法驗(yàn)證
被訓(xùn)練過的AI搜索算法就可以應(yīng)用于其它沒在訓(xùn)練數(shù)據(jù)里的查詢詞了。
首先用前面提到的驗(yàn)證組數(shù)據(jù)驗(yàn)證一下,如果新訓(xùn)練出來的算法給出的搜索結(jié)果與驗(yàn)證組數(shù)據(jù)(同樣是評估員打過標(biāo)簽的)吻合,說明算法不錯,可以上線了。如果AI算法給出的搜索結(jié)果與驗(yàn)證組搜索結(jié)果里的頁面不同,或者頁面基本相同但排序差別很大,可能就要重新訓(xùn)練AI系統(tǒng)了。
當(dāng)然,要做到所有查詢詞,AI算法給出的搜索結(jié)果與評估員打過最滿意標(biāo)簽的搜索結(jié)果完全一樣,是不大可能的。估計只要排在前面,比如前20名的頁面順序差異在一定的容錯范圍內(nèi)就可以了。排在越前面,需要越低的容錯率,比如排在第一第二的頁面不對,比排在第三頁之后的頁面不對嚴(yán)重多了。
驗(yàn)證過的算法就可以上線,接受真實(shí)用戶的檢驗(yàn)了。這里很可能牽扯到一個SEO們普遍認(rèn)為與排名有關(guān)、但搜索引擎一直否認(rèn)的排名因素:用戶體驗(yàn)數(shù)據(jù)是否是排名因素?
很多SEO排名因素統(tǒng)計表明,頁面點(diǎn)擊率、跳出率、用戶停留時間、訪問深度與排名有很高的相關(guān)性,但Google一直明確否認(rèn)這些數(shù)據(jù)是排名因素。當(dāng)然,對百度來說,點(diǎn)擊率顯然是排名因素。
原因很可能就是,搜索引擎需要用這些用戶體驗(yàn)數(shù)據(jù)驗(yàn)證搜索算法質(zhì)量,如果用戶普遍點(diǎn)擊率降低、跳出率提高,說明新上線的算法有問題,需要調(diào)整。雖然搜索引擎沒有直接使用用戶數(shù)據(jù)來排名,但算法的目標(biāo)就是提高用戶數(shù)據(jù),使得這兩者之間高度相關(guān)。
新的AI算法上線后,搜索引擎監(jiān)控的用戶數(shù)據(jù)說明用戶滿意,算法就成功了,等待下一輪的優(yōu)化。
以上純屬猜測。
來源:SEO每天一貼 Zac 昝輝