Facebook日賺千萬美元的NewsFeed,到底是怎麼運作的?

首頁 > 最新資訊 > Facebook日賺千萬美元的NewsFeed,到底是怎麼運作的?

七月 11, 2016

mark

NewsFeed 怎麼來的

2004 年,Facebook 問世,兩年後的 9 月份,NewsFeed 問世,同時問世的還有 MiniFeed(個人動態)。今年是 NewsFeed 上線十周年了,這 10 年裡,Facebook 是怎麼一步一步把 NewsFeed 打造成了日收入幾千萬美元的現金牛的?不管你對這充滿銅臭的問題感不感興趣,反正我很感興趣。

今天我們都已經習慣了把照片、文字等內容主動分享給好友,但是當時 Facebook 上線了這個功能時,引起了廣泛的爭議,焦點就是「隱私」問題,使用者認為我發的動態怎麼能讓別人看見呢?用戶一直不停質疑和抗議,又忍不住繼續使用,Facebook 就這樣在爭議聲中增加了最初的隱私控制,比如隱藏自己的動態,而 NewsFeed 就這樣堅持了下來。看來,佐克伯真是一個把妹高手,看穿了用戶們「嘴上說不要,身體卻誠實」的內在。

隨著用戶們漸漸地愛上了流覽好友的分(ㄒㄩㄢˋ)享(ㄧㄠ ˋ)了,2009 年,Facebook 加上了讚(like)功能(FriendFeed 在 2007 年發明了讚按鈕,FriendFeed 後來於 2009 年被 Facebook 收購,並將讚這個功能整合進來),開始按照熱門程度對 Feed 重排序,不出意外,這又引起了用戶們的反抗,因為大家已經習慣按照時間順序閱讀。

伴隨這麼多爭議,為什麼 Facebook 一直堅持做興趣 feed?從資料上看,平均每個用戶每天待看的新動態有1500 條之多,但平均每個用戶每天只能閱讀300條;從商業角度,將 Feed 排序交給上帝的做法,非常不利於商業化且有損用戶體驗,公共主頁可以使用很多伎倆吸引用戶關注,然後肆無忌憚發廣告。

10 年來,NewsFeed 有數不清的改進,甚至每天線上會同時部署很多演算法版本進行 A/B 測試。但 EdgeRank 是這條優化反覆運算之路上的一個標誌性建築。我們可以將 NewsFeed 排序策略按照 EdgeRank 分為 PreEdgeRank 時代、InEdgeRank 時代、PostEdgeRank 時代。

EdgeRank 演算法

EdgeRank,顧名思義,就是對邊(Edge)進行排序(Rank)。

每一個朋友的每一個操作(Action)都可能以新動態(News)的方式呈現在使用者面前,比如朋友發佈了一條新動態,朋友讚了朋友的朋友一條新動態,朋友評論了朋友的朋友一條新動態,朋友給自己的照片加了一個標籤,等等。稍微用腳後跟想一想就知道,按照這樣排列的話,每個用戶得看多少新消息?於是Facebook就想在一條動態呈現給一個使用者之前,先預估一下這個用戶對這條新動態感興趣程度。在 Facebook 的定義下,一個 Action 就是一個 Edge,所以這套量化興趣的演算法就叫做 EdgeRank。

別看今天 Facebook 各種風光,又是深度學習又是人工智慧,要知道,在 EdgeRank 提出之前,Facebook也是有過刀耕火種時代的,Facebook的產品總監Chris Cox談及早期 NewsFeed 是這樣說的:

「In the beginning, News Feed ranking was turning knobs. Turn up photos a little bit, turn down platform stories a little bit.」(最初,NewsFeed 排序就是給照片加點權重,給平台動態消息降點權重)

「a photo might be worth 5 points, while joining a group was worth 1 point」 (把照片權重定為 5,把社團權重定為 1)

中國演算法工程師們聽到這些,想必都要會心地笑了:原來Facebook也是從這個時代走過來的。但 Facebook 不同的是,這只是暫時的情形,他們已經走到更高階的階段了。

Serkan Piantino 在 2010 年左右領導並開發了第一版 EdgeRank 演算法。下面說說大名鼎鼎的 EdgeRank 是怎麼回事。

EdgeRank 主要有三個因素在起作用:

  1. 親密度(Affinity Score)
  2. Edge的權重(Edge Weight)
  3. 新鮮程度(Time Decay)

想像一條內容誕生後,會經過什麼路徑流動到你的面前?

  1. 首先經你的一個朋友(或者你關注的對象)之手產生了一條新消息(他發佈、讚、加標籤這些產生了新消息);
  2. 然後經過你這個朋友(或者你的關注對象)的介紹,到了你家門口,你一開門(登入)就可能看見它;
  3. 內容不多時,開門一個一個寒暄可能還行,它們也等得起,也無所謂先來後到,內容太多時,就得考慮一下先來後到了。

這三個步驟,就大致刻畫了 EdgeRank 的思想了,其實還是很簡單直接的。

親密度對應了第二個步驟背後的思想,那麼多人介紹過來,我們當然要優先照顧更「喜歡」的人了,親密度的量化要考慮平常裡你和這個朋友「走動」是否頻繁,連接是否緊密。主要考慮下面幾點:

  1. 你們連接的強度,點讚之交,還是評論之交,或是私訊之交,連接方式不同,強度就不同;
  2. 你們連接的頻繁程度,一日百讚,還是百日一讚,差別也很大;
  3. 你們有多久沒有建立連接了,一年沒有了,關係自然就更淡了;
  4. 親密度是單向的,也就是說你對朋友的親密度,和朋友對你的親密度可能不一樣哦。

你看,看似神秘的 EdgeRank 演算法,其實跟大家不太常見的雞湯居然意思是一樣的,是不是覺得它竟然如此平易近人?

Edge的權重也很直接,其實它反映了產生一條新鮮事的成本,成本越高的,權重越大。點讚、評論、發一條文字、發一張照片、發一個連結,背後使用者付出的成本不一樣,反應在Edge的權重上也就不一樣。顯然,你點個讚的成本,和你發佈一條新消息的成本差別很多。

最後,新鮮程度,也是一個符合直覺的自然假設:NewsFeed 總是青睞 New 一些的 Feed,新的po文整體上更可能得到用戶的臨幸。Facebook 用了一個類似指數衰減的函數來量化動態的新舊程度。

三個分數,最終用相乘的方式共同作用於每一條新動態的分數,用於排序和篩選。

這個排序方法的確是很簡單,基本上只考慮了社交方面的因素,而沒有考慮太多內容本身對使用者吸引力。

從公開的資料看 EdgeRank,並不是什麼高深的演算法,它只是量化了三個主要因素,然後主觀地相乘,而沒有任何目標優化思想在背後,根據 Facebook 透露的消息看,早期的 EdgeRank 的確沒有引入機器學習,所以根本稱不上是智慧的演算法。

為什麼 EdgeRank 這麼有名?因為它是在 F8 開發者大會上公開介紹過,經過一知半解的媒體渲染,變成了一個神秘高深的存在。

後 EdgeRank 時代

2011 年之後,Facebook 內部就不再提 EdgeRank 演算法了,因為使用者數和廣告主的飛增,導致 NewsFeed 的排序演算法必須要更上一層樓。如今月活躍超過 10 億用戶,約 2000 萬的公共主頁,行動裝置貢獻了大多數流量,複雜的上下文因素,必須引入機器學習才能 Hold 住整個場面。

在原來 EdgeRank 的基礎上,更加細緻地定義了不同層級的親密度。用深度神經網路理解圖片內容和文字內容,從而可以知道相片中的物體是不是使用者感興趣的,可以知道新動態的討論話題。隨著產品反覆運算,也加入了更多產品特徵,諸如閱讀時間長短、影片內容、連結內容等,關注、隱藏一個來源。前前後後一共考慮了 10 萬 + 的變數(模型的特徵空間應該會更高),如果還按照原來的方式去調節權重,顯然既不科學又很低效率。

從 Facebook 的機器學習應用頁面可以看到,2010 年之後就開始逐漸有機器學習方面的文章出現了。

相關資料顯示,2011 年之後的 NewsFeed 排序演算法,全面轉向了機器學習,用優化理論來決定每個因素的權重,將人從繁雜的策略量化中解放出來。

在被機器學習接管後的 NewsFeed,很多地方都更加細緻。

用機器學習預估新動態的品質。透過構造了一份問卷調查,訪問了若干使用者來收集資料,用收集的資料構建了一個機器學習模型,用於 NewsFeed 排序時預測一條動態的品質,將預測的品質分數作為最終排序的一個特徵。用樹模型構造離散特徵,結合最常見的 LR 模型預估廣告點擊率。

除了全面轉向機器學習之外,NewsFeed 團隊也在重新思考人和演算法的關係。他們要關心的是到底「如何把用戶真正最關心的找出來」,而不僅僅是「提高點擊率」。Facebook 一直是數據驅動的,也是他們能夠在爭議中把 NewsFeed 堅持下來的信念來源,而是不是唯資料馬首是瞻,團隊內部有很多思考,也有很多變化。

僅舉幾例:

  • 團隊發現有 85%的隱藏新動態操作來自 5%的人,經過與這些用戶溝通才發現,原來這 5%的人把「隱藏」當作郵件裡的「標記已讀」了,對喜不喜歡的新鮮事只要看過就會點擊隱藏。
  • 對於悲傷的事情,用戶可能關心但不會點讚。
  • 對於有些點讚,用戶可能並不是真的感興趣,只是「點讚狂魔」發狂而已。
  • 用戶閱讀一長篇文章,讀到一半不讀了,也並不能說明他對這篇文章不感興趣。

這些 case,都讓他們開始關注到機器學習和資料的局限。

於是,在演算法團隊之外,Facebook 搭建了一個遍佈全球的人肉評測小組。人肉評測小組不是簡單地對演算法篩選結果進行喜歡 / 不喜歡的標注,而是會非常深入地闡述為什麼喜歡 / 不喜歡演算法篩選結果,而且會與工程師詳細交流評測結果,因為這種人肉評測方式可以有效地拆穿資料說謊,讓產品遠離一味追求提高資料指標的圈子。

除此之外,產品上還加強了篩檢程式功能(Filter):你可以選擇你的動態給誰看,你可以選擇不看誰的動態(Hide),你也可以選擇優先看到誰的動態(See first),當然你可以取消關注一些人或者公共主頁,將這些控制權交給用戶,一方面安撫了使用者被演算法接管的不安,另一方面也是一項重要的資料來源。事實上,如今的篩檢程式已經複雜到大多數用戶都不會使用這些控制權。

「如何衡量用戶真的感興趣」這個問題也許遠遠沒有最終答案,為什麼?因為人的非理性佔據了絕大多數時候,而「不一致性」又是非理性的最重要表現,根據心情不同,使用者有不同的感興趣的標準,而且這些標準也許還是相互矛盾的。

NewsFeed 的配套設施

NewsFeed 存在的前提是要依賴用戶建立大量的社交聯繫,這樣才會出現資訊超載,因此 NewsFeed 的一個重要的配套設施就是「你可能感興趣的人」(People you may like)推薦系統。

這是一個我們在產品形式上比較熟悉的推薦系統,它是一套大規模矩陣分解演算法,利用已有的協同矩陣為你推薦你可能想建立聯繫的新 Item,包括用戶、app、公共主頁等。

NewsFeed 還有另一個配套設施,也是它為什麼每天能吸金幾千萬美元的原因:廣告系統。Facebook 的廣告形態多樣:

  • Suggested Page (你可能喜歡的粉絲專頁)
  • Page Post (粉絲頁文章推廣)
  • Suggested App (你可能喜歡的應用程式)
  • Video Ads (影片廣告)

現在,每一次 NewsFeed 調整演算法都會引來廣告主們的抗議,他們都是在 FB 上擁有公共主頁的商業機構。

在以前,FB 鼓勵這些商業機構花錢投廣告增加粉絲,彼時的 NewsFeed 演算法允許隨意發廣告(以原生的動態形式)。而現在,FB 嚴格限制商業廣告和普通用戶的觸及。企業感覺自己被耍了,花了錢之後卻不能發原生廣告,無獨有偶,根據微博 CEO(@來去之間)在微博上的透露,現在微博企業號也被限制博文到粉絲 feed 的次數。

據國外某專門做 NewsFeed 推廣的公司追蹤,1000 個公共主頁的 50000 條內容以原生方式觸及使用者的比例,從 2012 年 16%降低到了 2014 年的 6.51%,降了一倍還多,這當然也可能因為用戶平均關注的公共主頁增多了。

世界上最遙遠的距離,就是:手握大把粉絲,卻不能隨心所欲地曝光自己的產品。

當然,所有的公共主頁們,不要灰心,並不是沒有辦法,NewsFeed 的廣告系統大門永遠向你們敞開。

對 NewsFeed 的展望

具體 NewsFeed 會怎麼發展,無法預測,但是可以肯定的有三點:

  1. NewsFeed 的演算法會一直進化下去。
  2. NewsFeed 團隊把人和演算法的關係處理得更好,從資料驅動(Data-Driven)到資料啟示(Data-Informed)。
  3. 越來越多的 Feed 型產品會效仿 NewsFeed,加入到興趣 feed 的潮流中去。

全方位一站式網絡推廣

創意(國際)傳媒整合手機、社交、搜尋網絡推廣,全港網上商機,幫你一網打盡!