Facebook廣告推薦算法的人工智能原理

        Facebook廣告推薦算法的人工智能原理

        ?

        作為一名digital marketer, 西西莉亞一直對Facebook廣告背后的運作機制非常感興趣。

        網上可以查找到很多關于Facebook廣告競價的算法的文章,卻因為未被公開,很少有關于廣告投放中推薦受眾的算法的討論。

        西西莉亞之前做過機器學習的課題,再加上對AdTech的一些小小的心得和研究,決定自己動手豐衣足食,親自上陣寫一寫Facebook廣告背后的故事。?

         

        這是一篇關于Facebook廣告(推薦受眾)算法的技術分析貼。目的在于和大家探討一下,機器學習和人工智能在算法中的作用,揭開“黑盒”機制的神秘面紗。

        西西莉亞會盡量講的通俗一些,而且只挑選對廣告投手們比較有用的部分。太細節太深度的內容,我們還是留給學術界吧。

         

        1 社交網絡與人工智能

        首先,Cecilia覺得有必要簡單的區分下“人工智能(AI)”和“機器學習(Machine Learning)”兩個概念。人工智能最近火的不行,它其實是一個比較寬泛的名詞,指的是所有可以用計算機模仿人類的行為并且代替人類執行人工作業。

         

        機器學習是人工智能的實踐和應用,具體是通過大數據來訓練算法和數據模型,從而更加準確地對新的(未知)數據及指令作出預測和判斷。再往下走,又會是深度學習(Deep Learning)等,作為廣告投手不需要知道那么學術和專業的東西。

         

        本文中西西莉亞主要用的名詞“機器學習”,但是大家要知道人工智能和機器學習某些情況下其實指的是一回事。人工智能的概念其實很早就被提出來了,大家還記得經典電影《黑客帝國》嗎?電影中就講到人類和智商卓越的機器之間的斗爭。

         

        但是為什么近幾年才大火?

        因為人工智能需要依靠數據驅動,而早前的計算機是沒有辦法高速處理海量數據信息的。

        直到硬件產業的瓶頸被突破,海量數據并行處理的CPU甚至更強大的GPU面世,AI終于可以擺脫束縛,盡情地汲取所有可以獲得的信息,發展一日千里。

        所以可以簡單粗暴的說,沒有數據,就沒有人工智能。

         

        那么,數據從哪里來?

        除了專業的研究數據采集,對于像Facebook這樣的社交網絡,每天有上億的用戶自發地生成各種數據(UGC):照片、影片、語音、文字、社交互動等等。除此之外,Facebook還可以通過你的瀏覽器的cookie來追蹤你在互聯網上的一切行為。比如你瀏覽過哪些網站?你搜索過哪些內容?你產生過哪些購買行為?

         

        在Facebook的官網中有這樣一段話:

        “ We use cookies to help us show ads and to make recommendations for businesses and other organizations to people who may be interested in the products, services or causes they promote.”

        所以,Facebook主要是通過追蹤瀏覽器的cookie來收集用戶的數據,進而對用戶的喜好和行為進行預測,選擇最適合的廣告呈現在用戶面前

        同時Facebook又用cookie來判斷控制廣告的投放,以及評估廣告的質量。

        比如確保該廣告出現在同一個用戶的時間線上不超過X次(impression)。再比如該用戶是否與廣告產生了交互行為(點擊、留言、點贊、購買。。。等等)。

        作為互聯網時代的小尖兵,又穩坐社交網絡頭把交椅,Facebook擁有這個世界上最值錢的數據:全世界超過20億的活躍用戶信息。

        但凡走過,必留下痕跡。

        你在互聯網上的一切行為都被轉換成計算機可以讀懂的數據,進而為之所用。

         

        2 機器學習算法在廣告受眾推薦上的應用

        Facebook ad算法是預測性算法(Predictive Algorithm)。

        簡單的說,機器學習的算法通過“學習”廣告投放得到的反饋(歷史數據),對新的廣告投放效果進行預測。

        機器學習算法的兩大類別:回歸算法(Regression)分類算法(classification)

        回歸算法的結果是一些連續的值,比如一元二次方程里的一條直線,任意一個橫坐標的X值,都可以找到一個對應的Y值。而分類算法的輸出結果并不是連續的,而更像是一段又一段的區間

        舉個例子?,當你問“這個用戶看到廣告后會不會點擊購買我的產品”?

        通過分析,分類算法會告訴你,“Yes”還是“No”。

        但是回歸算法會告訴你“只有68.59%的可能性會買,也有31.41%的可能性不會買”。

        實際上,兩種算法并不是完全無法不兼容彼此的。

        比如你在回歸算法的輸出層規定區間,“低于60%的值輸出No”,“不低于60%的輸出值為Yes”,這樣回歸算法就轉化為一個分類算法了

        不管使用哪種算法,在廣告投放領域,機器學習的核心都是通過分析audience的特性(demographics),來對TA的行為進行預測。

        用戶的每一個特性都是一個“自變量X”,而模型的輸出值,也就是“因變量Y”。

        在回歸模型中,一個擬合的方程可以寫為:

        Y = a*X1 + b*X2 - c*X3 +d*X4。。。

        其中的X1/X2/X3/X4。。。可能代表的含義是:

        - 性別、

        - 年齡、

        - 地址、

        - 是否為Engaged shopper、

        - 熱愛時尚、

        - 喜歡小狗、

        - 家里有剛出生的寶寶、

        - 喜歡的顏色、

        - 喜歡的音樂類型。。。

        而a/b/-c/d。。。就是一些常量參數,影響每個自變量的權重,也可以理解為,對因變量Y的影響程度高低

        因變量Y就代表你的廣告的目標(objective)。

        當你選擇購買的時候,Y可能就代表這個用戶是否會轉化產生購買行為。當你選擇的目標是“視頻觀看(Video View)”時,Y就代表廣告推送給的這個人會不會耐心地看完你的廣告。

        因為Facebook廣告的算法對外界仍然是非公開的,是個黑盒(Black Box)。所以兩種算法其實都有可能,甚至可能是兩種算法的結合。

        分類算法最簡單的就是“決策樹(Decision Tree)”

        決策樹是我認為最直觀的一種機器學習算法。最簡單的決策樹是“二元決策樹”,即對每一個問題的回答只有兩個答案:“Yes”或者是“No”。

        比如通過訓練,Facebook ads的算法發現,年齡在25~35歲、性別為“女”、愛好為“美妝和時尚”的受眾最容易對你的廣告產生轉化。

        于是在此之后,對每一個新的“潛在受眾”,Facebook廣告算法都會問:

        - 這個人的年齡是在25到35之間嗎?不是 -> PASS。是 -> 進入下一題。

        - 這個人是女的嗎?不是 -> PASS。是 -> 繼續下一題。

        - 這個人有跟”美妝時尚相關的愛好嗎?“ 不是 -> PASS。是 -> 好噠!就是你了!美女,這里有個廣告你要不要了解一些?

        接下來,靈魂畫手西西莉亞就用幾張直(超)觀(丑)的圖來解釋一下這幾個算法:

         

        Facebook廣告推薦算法的人工智能原理

         

        而回歸算法就略微復雜一些。

        最簡單、也是最基礎的算法就是線形回歸(Linear Regression)。

        假設我們只有一個自變量X,表示用戶的年齡。

        因變量Y就是我們的廣告投放的目標(Objective),比如說“購買”的可能性(概率)。

        這個模型簡單粗暴,通過一個用戶的年齡來決定TA的購買行為。

        根據廣告的投放經驗,我們得到一些離散的點,每個點可以被描述為(年齡,是否會購買),比如(25,Yes),(65,No), (30,Yes) 。

        最后得到的曲線可能看起來像下面這張圖:

         

        Facebook廣告推薦算法的人工智能原理

         

        為了方便,我們把“Yes”和“No”都轉化為“1”和“0”。

        【PS:其實這個例子不太好啦,因為因變量Y只有兩個值0和1,算是比較特例。

        真實生活中Y往往也是個連續的值,比如觀看視頻的時常,或者消費的金額。】

        這個例子里,我們得到一個簡單的一元一次方程。

        比如算法發現,年齡越大,錢越多,購買力越強。

        所以就會使勁兒把你的廣告盡可能的推送給上了年紀的人。

        但是在現實生活中呢,我們的Target Audience的屬性才不會這么簡單只有年齡一個。

        想想我們之前舉例說的那些X1/X2/X3/X4/X5。。。

        每一個興趣,都在某一個維度上描述了某一個受眾。

        比如,(“張三”,“男”,“30歲”,“單身”,“愛好擼貓”。。。)。

        如果只有”年齡“一個維度,算法的擬合結果就給我們一條二維空間的”直線“。

        而如果加上“性別”,我們有了2個自變量,算法就會給我們一個三維空間里的”面“。

        再加上“感情狀況”,我們就有了3個自變量,算法就會給我們一個四維空間里的“體”。

        至于五維、六維、七維。。。就是一些無法描述的“形狀”了。

        每一個受眾,在算法的世界里,都是一個被拆解為多維向量代表的“點”。

        而機器學習,就是尋找在這浩瀚的空間中、無數個散落的點之間的聯系和規律。

        算法的最終結果,就是一條劃過這個“多維宇宙”的、能穿起數量最多的“星星”的一條“線”。

        這條“線”,就是機器學習的擬合(Fitting)結果。

         

        【PS: 其實在多維空間上,這已經不是一條“線”了。大家可以想象為投影在二維的坐標軸上的一條線比較容易理解。】

        當機器學習得到穩定的擬合結果后,對于每一個新的受眾,算法就會通過對TA的特征進行分析,然后得到一個這個“點”距離預測的“線”之間的距離

        如果距離為零,代表這個受眾完美符合我們的所有條件,非常有可能轉化,Facebook ads的算法就會把廣告推送到他面前。

        距離越遠,代表這個受眾越不可能轉化。算法于是自動跳過他而不會投放給他廣告。

        Facebook廣告的Learning Phase就是在不斷的訓練算法模型,尋找完美的擬合曲線。一旦學習結束,算法就會尋找目標受眾中,距離曲線最近的點(潛在受眾)。

         

        3 數據!數據!!數據!!!

        不管是分類算法,還是回歸算法,要想讓算法訓練出最精準的模型,最重要的就是需要足夠的數據。

        a/b/-c/d。。。是這個模型中的參數,它們一開始都沒有固定的值,是在算法收集到足夠的數據后才會推算出來他們的數值。

        當你開始推送廣告之后,Facebook的算法還沒有任何數據(或者是它的數據庫里的有限的自有數據),它只是試探著,在你選擇的target audience里面隨機地推送廣告。

        一旦某個用戶有了相應的反饋,比如給廣告點贊、或者點擊了購買鏈接,Facebook會將該用戶的數據收集入你的數據庫里。

        如果我們只有零散的幾個數據,得到的擬合結果也會比較簡單,甚至會產生過擬合(overfitting)。

        簡單說就是很容易被一些特例的數據影響,而無法準確找到更加通用的擬合曲線。

         

        Facebook廣告推薦算法的人工智能原理

         

        數據越多,越容易找到這些離散的點之間的相似性,從而對新的數據進行更加準確的預測。

         

        Facebook廣告推薦算法的人工智能原理

         

        所以,聰明的童鞋們四不四已經恍(早)然(知)大(如)悟(此),如果我們得到的數據足夠多(花的錢足夠多),我們就會得到大量在多維宇宙里如群星般散落的點。

        這個時候會不會有人說,你說的不是廢話嘛?誰不知道廣告就是要多花錢。

        《奇葩說》有一期黃執中在辯論中講到:

        “真實的世界,是由一連串隨機、混沌、細小的決策,以及漫長的因果鏈所組成的。一只蝴蝶煽動翅膀,可以在遠方引起風暴。”

        我想說,在廣告屆這個理論也是成立的。

        在廣告主最初選擇的一個target audience之后,Facebook Ads的算法其實是隨機的開始選擇初始受眾。

        在得到一個最初的模型之后,算法會嘗試著尋找和這些用戶有相似特性的其他用戶、并且推送相同的廣告來反復確認自己的判斷。

        如果結果不符合預期,算法就會調整策略,比如調整某個特性的權重。

        在這個調整的過程中,有可能會影響到廣告主的決策。

        比如你的完美受眾可能是20~25歲的女生,但是你一開始并沒有對年齡做任何的限制,而Facebook根據它已有的數據可能就“猜測”35~40歲的受眾比較理想。

        結果跑了幾天,廣告效果很差,沒有耐心的人有可能就此打住,終止廣告。

        其實你再堅持一下,就可以“看到明天的太陽了”。。。啊不對。。是算法可能就找到更理想的受眾了。

        因為隨機性,導致決策的變化,從而影響整個數字營銷的效果。

        數據不會說謊,但是片面的數據,會誤導我們的判斷能力。

        接下來,西西莉亞就和大家討論一下,如何降低這些偶然性和不確定性。

         

        4 所以。。。我們應該?

        說了這么多,到底要怎么做,才可以避免被一些算法的不確定性影響廣告投放的效果呢?

        西西莉亞在這里列幾點,是我目前能想到的、也是最容易做到的、廣告投手可以注意到的事項:

         

        4.1 -?保證足夠的budget

        我們已經知道,算法的本質就是尋找數據之間的關聯和共性,所以簡單來講,數據越多越好。

        但是到底要多少數據才夠呢?

        很遺憾告訴大家,這并沒有一個“定量”。

        “大數據”的5V特征包括:大體量(Volume),多樣性(Variety),高速度(Velocity),準確性(Veracity)、稀缺性(Value)。

        但是到底多“大”才能被稱為大數據,學術界并沒有統一的定義。

        同理,到底多少廣告數據才夠,也只能見仁見智了。

        Facebook官方文檔說,至少25~50次轉化才建議優化。這應該是差不多訓練算法需要的數據的最少要求了。

        西西莉亞建議大家量力而行。根據自己的能力決定一個初始預算,制定相應的KPI。

        如果廣告投放的效果沒法達到自己的預期目標,那就調整預算或者KPI。如果一直入不敷出就可以嘗試停掉這個campaign,改變廣告的素材或者調整受眾,重新投放。

        不用擔心之前投放的錢打了水漂了,你之前花掉的那些錢相當于跟Facebook買了數據。

        Facebook會保存數據180天,這意味著180天之內你的數據都可以被算法所用。

         

        4.2 - 加快廣告的投放速度

        理論上來講,同一個campaign,如果你的預算是1000刀,那么每天10刀持續投放100天和一天之內全部花掉1000刀買到的數據的數量一樣。

        實際上,如果算法決定了某個受眾是你的廣告的完美受眾,決定是否投放給TA還需要由很多別的因素決定。

        比如廣告的Quality Score,又比如競價(Auction)算法。

        高質量的受眾和數據誰都想要,當然就是出價高者得咯!

        尤其是對于“購買轉化”為目標的廣告,本來受眾的價格平均來說就很高。如果你的出價低于平均水平,Facebook只能幫你找到一些質量比較低的leads。

        遲遲得不到轉化,相當于就得不到有效的數據,算法就“巧婦難為無米之炊”。

        再加上Facebook存儲數據有時間限制,西西莉亞建議,與其每天10刀連續投放100天地“擠牙膏”,倒不如一次性地投入1000刀,得到大量優質數據。

        之后再用這些買到的數據,進行“再營銷(Re-targeting)“和建立“相似受眾(Look Like Audience)”,理論上來講,效果會好得多。

         

        4.3 - 不要頻繁地改變投放策略

        很多沒有耐心的童鞋,廣告放出去一兩天,看到沒有效果就坐不住了,想立刻改素材或者改受眾。

        可是。。。心急吃不了臭豆腐啊喂!

        我了解大家的心情,感覺每一分鐘money都在不停地嘩嘩地往外流,heart疼的要死。

        可是作為專業的廣告投手,當然要有看的更長遠的眼光和能力啦!

        你要轉化思維,想象這些錢都換成數據嘩嘩嘩地流回到你的帳戶里。╮( ̄▽ ̄"")╭

        算法也是需要數據才可以訓練出穩定的投放模型哪!

        特別是一開始,從無到有的積累過程,算法是及其不穩定的(Facebook廣告算法的Learning phase)。

        要是一有波動就調整策略,很可能會“誤殺”有潛力的廣告,白白浪費掉一些數據。

        所以廣告投放也要做好“放長線釣大魚”的心理準備,通過觀察長期的數據曲線變化來做出更實際的預測和更合理的調整。

        Facebook廣告的算法不斷地經過海量數據的洗禮,要對它的智能有信心啊。

         

        4.4 - 獲取盡量精準的數據

        算法的訓練需要數據,可是數據和數據也是不一樣的哦!

        最簡單的例子,對于不同的投放目標(objective), 獲取數據的難易程度也是不一樣的。

        如果只是簡單的PPE,Facebook廣告算法知道哪些受眾最可能和廣告產生互動,它自己的數據庫里就有需要的數據。

        但是如果是購買轉化(Purchase Conversion),這些數據只能來自于你的網站。

        有很多人說,就算沒有任何初始數據,也可以直接投放轉化廣告。

        在之前的文章中,西西莉亞反復提及,Facebook廣告的目標是“沖動型消費者”。

        所以就算不是同一個business或者產品,沖動型消費者們也會有一些共通的特質。

        Facebook可以在你的target audience里找到之前有過購買經驗的人,以他們的數據作為訓練集。

        但是Facebook并不鼓勵這樣做。

        每一個廣告和產品都(應該是)獨一無二的。

        如果你用別的產品的數據來訓練另一個產品的推送算法,弊端就是價格貴,數據少、甚至有偏差。

        當然如果您是土豪,當我沒說。只要能出得起價,總是能買到足夠的優質數據的。

        類似的問題,還有比如是開一個“雜貨鋪”還是某一個精準的“niche”的網店。

        越是精準的niche,在數據體量相同的條件下,流量純度會越高,對算法的訓練越有利。

        比如一個“雜貨鋪”之前是賣牙齒美白產品,現在又開始賣釣魚鉤,兩個完全不搭旮的niche。

        就算之前已經有了很多的購買量,但是這些數據可能在訓練“魚鉤廣告”的模型中就不好使。

        但是這些問題也是可以通過對數據分類克服的。

        你可以在自己的數據“倉庫”里,設置一個“牙齒美白購買者”的類別,和一個“釣魚愛好者”的類別。在投放廣告的時候,使用相應組別的數據就OK。

        當然,也不排除不同niche的消費者之間會有相似的特性,說什么也不如真金白銀跑幾組廣告試試。

         

        5 事物的兩面性

        總有人說Facebook廣告越來越不好做了,西西莉亞希望大家還是要努力看到好的一面啊。

        雖然廣告越來越貴,競爭越來越激烈,可是同時機器學習的算法也越來越智能呀

        最開始的時候,Facebook的受眾特征(Demoraphics)只有可憐的幾個性別啊、地址什么的。看看今天,有多少個興趣特征等著你去target!

        無數的廣告主在Facebook投放的廣告,也在不斷地幫助Facebook改進算法、篩選精準受眾。這對于后入場者,也算是一種福利嘛!

        再說了,西西莉亞一直以來的信念就是,做好產品更重要。好的產品是會自己說話的,廣告只是幫助它把信息傳達給需要的人。

        所以最后正能量一波:好好做產品,好好做營銷。

        Keep Calm and Run The Ads!


        Ending:

        Facebook廣告的受眾推送機制是不對外公開的。

        算法就像一個黑盒,你只知道你的輸入(設置預算,和設置target audience),然后通過廣告算法的輸出(impression數/點擊數/視頻觀看數/轉化數。。。等等)來評估和調整自己的投放策略。

        本文是西西莉亞結合自己的課題經驗、以及搜索相關領域的論文而作出的分析。

        會有一些主觀的猜測和觀點,主要是希望和大家一起探索這個“黑盒”內部的工作機制。

        如果能給大家一些不一樣的思考角度,西西莉亞也就覺得是功勞一件啦!筆芯~?

        END

         

        作者:西西莉亞 來源:西西莉亞的營銷筆記

        本文為作者獨立觀點,不代表出海筆記立場,如若轉載請聯系原作者。
        (1)
        西西莉亞的頭像西西莉亞
        上一篇 2019年9月8日 上午2:45
        下一篇 2019年9月8日 上午4:08

        相關推薦