谷歌人工智慧演算法 RankBrain 執行原理解析
近日,新聞爆料說谷歌正在使用一個機器學習人工智慧系統“RankBrain”來對搜尋結果排序。想知道它的工作原理以及如何在谷歌排序系統上執行嗎?以下是我們對RankBrain的全部瞭解。
下面的資訊來自於三個不同的地方。第一個,Bloomberg story,昨天釋出了谷歌RankBrain的新聞(也可以看看我們寫的文章)。第二個,谷歌目前直接提供給Search Engine Land的其他資訊。第三個,我們自己的知識,和對谷歌沒有回答的問題的猜測。在必要時,我們要明確任何一個來源不會作為背景資料使用。
什麼是RankBrain?
Bloomberg報導說,RankBrain是一個谷歌機器學習人工智慧系統的名稱,用於幫助處理搜尋結果,這得到了谷歌的肯定。
什麼是機器學習?
機器學習是計算機教自己如何處理事情,而不是由人類告知或是遵循固定的程式。
什麼是人工智慧?
真正的人工智慧,或簡稱AI,是計算機能和人類一樣聰明,至少在獲取知識方面,通過學習或者建立在知識庫的基礎上得到新的聯絡。
當然,真正的AI只存在於科幻小說裡。事實上,AI是設計成能夠學習和做出聯絡的計算機系統。
AI與機器學習有什麼不同呢?就RankBrain而言,給我們的感覺好像是它們是等同的。你可能會聽到它們交替使用,或是聽到使用機器學習來描述人工智慧方法的使用。
那麼RankBrain是谷歌Ranks搜尋結果的新方式嗎?
不,RankBrain只是谷歌眾多搜尋演算法的一部分,它是一套計算機程式,能把知識庫中上十億個頁面進行排序,然後找到與特定查詢最相關的結果。
谷歌搜尋演算法的名字是什麼?
我們過去報導過,它叫做蜂鳥( Hummingbird)。許多年來,整個演算法沒有一個正式的名稱。但在2013年中,谷歌對這個演算法進行了徹底檢修,並命名它為蜂鳥。
那麼RankBrain是谷歌蜂鳥搜尋演算法的一部分麼?
這是我們的理解。蜂鳥是整個搜尋演算法,就好比車裡面有個引擎。引擎本身可能由許多部分組成,比如濾油器,燃油泵,散熱器等。同理,蜂鳥也由多個部分組成,RankBrain就是其中一個最新組成部分。
特別指出,我們知道RankBrain是整個蜂鳥演算法的一部分是因為Bloomberg文章明確指出RankBrain不能處理所有的搜尋,只有整個演算法可以。
蜂鳥同時包含其他的部分,這些名字對SEO圈的人來說已經耳熟能詳了,比如Panda, Penguin和 Payday,用於垃圾郵件過濾, Pigeon用於優化本地結果, Top Heavy用於給廣告太多的頁面降級,Mobile Friendly用於給移動友好型頁面加分,Pirate用於打擊版權侵犯。
我認為谷歌演算法曾被稱為PageRank
PageRank是整個蜂鳥演算法的一部分,它使用特定的方式給網頁信用排序,基於其他頁面指向此頁面的連結來計算。
PageRank比較特別,因為它是谷歌有史以來給它的排序演算法賦予的第一個名字,這個名字早在1998年穀歌創立的時候就有了。
谷歌用於排序的“訊號”是什麼?
谷歌使用訊號來決定如何為網頁排序。比如,它會讀取網頁上的詞語,那麼詞語就是一個訊號。如果某些詞語是粗體,那麼這又是一個值得注意的訊號。計算的結果作為PageRank的一部分,給一個網頁設定一個PageRank分數,這作為一個訊號。如果一張網頁被檢測到是移動友好型的,那麼這又會成為一個訊號。
所有的這些訊號都由蜂鳥演算法中的各個部分處理,最後決定針對不同搜尋返回哪些網頁。
一共有多少種訊號?
谷歌稱進行評估的主要排序訊號大約有 200多種,反過來, 可能有上萬種變種訊號或者子訊號。但通常是說幾百種,正如昨天Bloomberg文章中說的那樣。
如果你想有一個更直觀的排序訊號嚮導,來看看我們的SEO成功因素元素週期表:
我們認為這是個非常好的嚮導,說明了類似谷歌的搜尋引擎對網頁排序使用的東西。
RankBrain是第三個最重要的訊號?
沒錯。這個新的系統突然冒出來,已經成為網頁排序第三個最重要的因素。以下摘自Bloomberg 文章:
Corrado說,RankBrain是上百個訊號中的一個,用於在演算法中決定哪些結果該展示在谷歌搜尋頁面,該排在第幾位。他還表示,在RankBrain部署的這幾個月裡,它已經成為為搜尋查詢提供結果的第三個最重要的訊號。
第一和第二個最重要的訊號是什麼?
我們詢問了兩次,但是谷歌還是不願意告訴我們第一和第二個最重要的訊號是什麼。
這很煩人而且有點誤導人。Bloomberg文章也不出意外沒能得到答案。谷歌想要提高一些效能需求來作為機器學習的突破。
但是真正評估這種突破,有助於瞭解谷歌現在使用的其他最重要的因素,包括被RankBrain超過的因素。這就是為什麼谷歌要來解釋這些因素來襯托前兩個最重要的訊號的效能。
順便提一下,我個人猜測連結仍然是最重要的訊號。谷歌以投票的形式統計這些連結。這也是一個非常老的系統,我在以前的一篇文章裡做了介紹:The Broken “Ballot Box” Used By Google & Bing。
至於第二個最重要的訊號,我認為是“詞語”,詞語將會包含一切資訊,從網頁上的詞語到RankBrain分析之外的人們字搜尋框輸入的關鍵字。
RankBrain到底做什麼?
從與谷歌的來往電子郵件之中,我瞭解到RankBrain主要用於翻譯人們可能不清楚該輸入什麼確切詞語的搜尋詞條。
難道谷歌之前沒有處理沒有確切查詢詞條的方式嗎?
有,谷歌很早就找到不根據具體詞條搜尋頁面的方式。比如,許多年前,如果你輸入“鞋”(shoe),谷歌可能不會找到那些有“鞋”(shoes)的頁面,因為從技術上來說這是兩個不同的詞彙,但是“stemming”使得谷歌變得更聰明,讓引擎瞭解shoes的詞根是shoe,就像“running”的詞根是“run”。谷歌同樣瞭解同義詞,因此,如果你搜尋“運動鞋”,它可能知道你想找“跑鞋”。它甚至有概念性的知識,知道哪些網頁是關於“蘋果”公司,哪些是關於水果“蘋果”的。
Knowledge Graph是什麼?
Knowledge Graph在2012年推出,使谷歌在處理詞彙關聯方面更出色。更重要的是,谷歌說它學會如何搜尋事物而不是蒼白的字串。
字串意味著只按照字串本身搜尋,比如搜尋匹配“Obama”字串的網頁。而事物則是谷歌知道當某人搜尋“Obama”的時候,他們可能想找的是美利堅總統巴拉克奧巴馬,一個與其他人物和事物關聯的實實在在的人物。
Knowledge Graph是一個事實資料庫,包含世上萬物的內在聯絡。這就是為什麼當你輸入“when was the wife of obama born”的時候,你可以在下面看到關於米歇爾奧巴馬的資訊,而不需要特定輸入她的名字:
RankBrain如何幫助提煉搜尋?
谷歌目前提煉搜尋的方法一般都是由人工處理,無論是建立詞幹列表或者同義詞列表或者建立事物關聯資料庫。當然,這其中有一些自動化的操作,但是很多時候都是靠人工來完成。
問題是,谷歌每天要處理30億條搜尋。2007年,谷歌表示,有20%至25%的搜尋是從來沒見過的。2013年這個數字降至15%,,這也引用在了昨天的Bloomberg 文章中,我們也得到了谷歌的重新證實。但是30億之中,15%的從未搜尋過的詞條仍然是非常大的數目——每天4.5億條。
這些可能是很複雜的搜尋,多字查詢,或者是“long-tail”查詢。RankBrain旨在幫助更好地解釋這些查詢,並有效地翻譯它們,通過查詢關鍵字背後的資訊,找到最合適的網頁。
谷歌告訴我們,它可以觀察到看似無關複雜搜尋之間的模式,並理解它們實際上是如何彼此關聯的。這種學習方式,又讓它更好地理解未來複雜搜尋,以及知道它們是否與特定主題相關。最重要的是,它還可以將這些搜尋組與它認為最匹配的搜尋結果關聯起來。
谷歌並沒有給出搜尋組的例子,也沒詳細說明RankBrain如何猜到哪些是最匹配的頁面。後者可能是因為如果它可以將模糊搜尋轉化成某些更具體的東西,那麼它就可以得到更好的答案。
來看看一個例子?
雖然谷歌並沒有給出搜尋組的例子,但是Bloomberg文章裡有一個單個搜尋的例子,假設得到了RankBrain的幫助。如下:
What’s the title of the consumer at the highest level of a food chain
像我這樣的外行,“consumer”聽起來像是買東西的人。然而,這也是個科學術語,表示消耗食物的東西。在食物鏈中同樣有不同等級的消費者。最高等級的消費者?就叫做“捕食者”(predator)。
把這個輸入谷歌中,我們得到了不錯的答案,雖然這個查詢語句本身看起來十分古怪:
現在來看看搜尋“top level of the food chain”的結果相似性,如下:
設想下,RankBrain將原本那條冗長且複雜的查詢關聯到了這條更短的上面,這可能是最常見的做法。它知道它們非常相似。所以結果是,谷歌可以利用它所知的一切,從更常見的查詢中尋找答案,然後將它提供給不常見的查詢。
我要強調,我並不知道RankBrain關聯了這兩條查詢。我只知道谷歌給出了第一個例子。而這只是對RankBrain如何將不常見搜尋與常見搜尋聯絡來提高搜尋質量的一種說明而已。
Bing使用RankNet同樣可以達到這種效果嗎?
回到2005年,微軟開始使用自己的機器學習系統,名叫RankNet,如今已是Bing搜尋引擎的一部分。事實上,RankNet的首席研究員和創始人最近才被肯定。但這些年來,微軟幾乎沒有談到RankNet。
你可以打賭,這將有可能改變。有趣的是,當我在Bing中輸入同樣的詞條的時候,Bing得到了不錯的結果,其中一條與谷歌返回的結果一致。
一條查詢並不意味著Bing的RankNet和谷歌的RankBrain同樣出色,反之亦然。不幸的是,很難拿出一份清單來做這種比較。
還有更多的例子嗎?
谷歌的確給出了一個新的案例:“How many tablespoons in a cup?”谷歌表示,對來自於澳大利亞和美國搜尋會有不同的結果,因為兩個國家的度量標準不同,儘管名稱類似。
為了測試這點,我在Google.com和澳大利亞版本的Google上分別搜尋。我並沒有發現太多的不同。即使沒有RankBrain,結果通常會不同,僅僅因為使用“老土”的方式,從澳大利亞網站中為使用澳大利亞版本Google搜尋的使用者呈現頁面。
RankBrain真的有幫助嗎?
儘管我上面給出的兩個例子不足以說明RankBrain的強大,但我確實相信它可能正在產生巨大的影響,正如谷歌宣稱的那樣。谷歌在選擇什麼演算法來排序方面相當保守。谷歌總是在做小測試。但是當對此演算法有很大信心時,使用這個演算法會帶來極大的突破。
整合RankBrain,把它作為第三個最重要的訊號,是一個巨大的變化。我認為,如果它沒有幫助的話谷歌也不會使用它。
RankBrain什麼時候開始的?
谷歌告訴我們,在2015年初的時候就在逐步推出RankBrain,現已全面部署了好幾個月了。
哪些查詢受到影響?
谷歌告訴Bloomberg說,有相當一部分的查詢將由RankBrain來處理。我們詢問具體數字,但還是得到同樣的答案。
RankBrain一直在學習嗎?
谷歌說,RankBrain所有的學習都是離線完成的。輸入多批次歷史搜尋記錄,然後學習使用這些資料做出預測。
測試這些預測,如果預測效果準確,那麼學習之後的RankBrain版本就上線。然後離線學習測試的過程重複進行。
RankBrain除了做查詢優化還做了其他的嗎?
通常情況下,一條查詢如何優化的——無論是通過提取詞根,同義詞還是RankBrain——不會作為排序因素或訊號。
訊號是繫結內容的典型因素,比如網頁上的詞語,指向頁面的連結,網頁是否部署在安全的伺服器上等。它們也可以繫結使用者,比如使用者地理位置資訊或搜尋瀏覽歷史。
那麼當谷歌提及RankBrain是第三個最重要的訊號時,它真的是一個排序訊號嗎?是的,谷歌再次確認說,他們有一個元件,RankBrain以某種方式直接來計算網頁的排名。
具體如何做的呢?是否有某種“RankBrain分數”的因子可能來評估網頁質量呢?有可能吧,但RankBrain似乎更可能基於網頁包含的內容以某種方式幫助谷歌更好地分類頁面。RankBrain可能比谷歌已有的系統更好地總結網頁內容。
或許也不是這樣,谷歌只是說有某種排序元件。
我怎麼了解RankBrain更多的資訊?
谷歌告訴我們說,如果想要了解詞語“向量”——單詞和短語用數學連線的方式——應該看看這個 部落格,這篇部落格講述了系統(文章中沒有說明是RankBrain)如何僅僅通過掃描新聞學習到國家的省會城市:
有一篇更長的研究論文,基於 此。你可以使用谷歌的 word2vec工具玩轉自己的機器學習工程。另外,谷歌有 一整塊區域是關於人工智慧和機器學習論文的,微軟 也一樣。
相關文章
- 谷歌人工智慧演算法RankBrain執行原理解析谷歌人工智慧演算法AI
- 解讀文字背後的需求!谷歌推人工智慧演算法RankBrain谷歌人工智慧演算法AI
- 深刻改變SEO行業:谷歌人工智慧演算法RankBrain對搜尋結果重新排序行業谷歌人工智慧演算法AI排序
- JavaScript執行原理解析JavaScript
- JavaScript 執行原理解析JavaScript
- View Animation 執行原理解析View
- MyBatis的解析和執行原理MyBatis
- 從原始碼的角度解析執行緒池執行原理原始碼執行緒
- 多執行緒下載原理解析執行緒
- 屬性動畫 ValueAnimator 執行原理全解析動畫
- 深入淺出MyBatis:MyBatis解析和執行原理MyBatis
- PHP 底層的執行機制與原理解析PHP
- LRU演算法原理解析演算法
- 谷歌熱氣球計劃 人工智慧演算法控制精準飛行谷歌人工智慧演算法
- CLR執行原理
- Yarn執行原理Yarn
- Java開發中Netty執行緒模型原理解析!JavaNetty執行緒模型
- Oracle SQL語句執行流程與順序原理解析OracleSQL
- Java 執行緒池執行原理分析Java執行緒
- Shiro原理解析(二)--過濾器的執行機制過濾器
- 深入原始碼,深度解析Java 執行緒池的實現原理原始碼Java執行緒
- Java 執行緒池架構原理和原始碼解析(ThreadPoolExecutor)Java執行緒架構原始碼thread
- MySQL 執行原理【表】MySql
- Spark的執行原理Spark
- spark執行原理、模型Spark模型
- SpringMVC執行原理SpringMVC
- 前端-JavaScript執行原理前端JavaScript
- HDFS的執行原理
- 執行緒池原理執行緒
- browserify執行原理分析
- 《微機執行原理》
- Locust 執行原理分析
- GOOGLE RANKBRAIN 完整指南GoAI
- Java併發(四)----執行緒執行原理Java執行緒
- jdk排程任務執行緒池ScheduledThreadPoolExecutor工作原理解析JDK執行緒thread
- 谷歌開發者工具執行JavaScript程式碼谷歌JavaScript
- Java執行緒池二:執行緒池原理Java執行緒
- 執行緒池執行模型原始碼全解析執行緒模型原始碼