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