search
你是如何被微信廣告選中的?微信廣告引擎與社交傳播演算法實踐

你是如何被微信廣告選中的?微信廣告引擎與社交傳播演算法實踐

作者|陳功 編輯|小智 微信廣告自 2014 年上線以來,分別發布了公眾號與朋友圈廣告。微信廣告系統承載了每天十億級以上的訪問量,緊密與微信平台生態相結合,同時利用了騰訊大數據體系進行效果優化。本文首先會給大家展示微信廣告的整體系統架構,並介紹重要的功能模塊和數據流程。其中會深入講解廣告投放時的播放節奏演算法,看如何解決微信環境下的投放優化問題。

註:本文整理自 QCon 北京 2017 上的演講,原題為:《微信廣告引擎與播放節奏演算法實踐》。

寫在前面

圖中這句話,也許大家曾在朋友圈中看到過,這就是比亞迪汽車投放廣告的文案。該廣告效果反響非常的好,於是有人就說,這是借著大數據的商業炒作,也有人說,所謂的選中其實是被廣告演算法選中,微信在其後有一個複雜網路在支持。那麼這背後真正的邏輯是怎麼樣的呢?就讓本文來揭秘吧。

本文將分為兩個部分:第一部分,由於首次對外分享,先介紹一下微信廣告的產品形態以及系統架構;第二部分,介紹微信廣告是如何區別於傳統效果廣告,在品牌社交廣告上曾做過的探索與思考。

由於篇幅限制,微信廣告引擎核心演算法策略模塊就不展開一一介紹。這裡選擇品牌廣告社交投放模塊介紹,一個是因為它是我們微信廣告核心特色模塊之一,另外業界在品牌廣告播放演算法層面上的分享也十分少,所以希望能夠通過本文和大家多做交流。

微信廣告介紹公眾號廣告

通過圖中可以看到,除了傳統的下載與圖文外鏈形式之外,還有平台特色的關注類與卡券類廣告。

最近我們也發布了廣告互選平台,讓流量主和廣告主可以在上面進行自行交易,這也是廣告產品的新形態。

朋友圈廣告

如圖所示的三個商業廣告:寶馬、可口可樂、VIVO 智能手機,在最初投放時期引發了社會熱議。有些人表示收到的廣告是可口可樂,有些人表示看見的是寶馬廣告,而有些人卻在分析該類人背後的性格特點。然而,無論如何,他們討論的話題恰好就是社交廣告的精髓所在。

社交廣告的效果,如下圖右邊所顯示的第一個數字,其首次覆蓋人群超過一億;而第二個數字,點擊互動率已超過 40%,40% 是極高的點擊率,能產生這樣的效果,廣告的社交屬性功不可沒。

微信廣告系統介紹投放模塊視圖

先來看下系統的整體模塊視圖,我們分為 4 個層面。

第一層是投放端,除了可以在騰訊廣告官網上投放外,還能在公眾號平台內部閉環投放。

第二層是播放引擎,這裡主要分為檢索,粗選,精選。檢索就是當一個用戶來了之後,根據他自身的屬性,比如年齡性別地域,以及廣告投放的人群,做個匹配,選擇出適合該用戶的廣告,可能有幾千個。粗選就是將這上萬條廣告篩選 100 個再給後面的精選模塊,精選再選擇一個給到用戶。可見粗選是注重速度,效果次之。這裡會考慮新廣告的扶持,類目的多樣性,和預算不要花超等問題。最後是精選,會考慮更為細緻。首先就是播放的節奏控制,這是我們後面重點要講的,就是廣告以一個什麼樣的節奏來投放。其次,也會考慮用戶體驗和生態等問題。

第三層,主要是數據相關的模塊,之後會逐個介紹一下。

最後是一些支持的模塊,比如反作弊,監控,審核等,我們也用了很多公司的基礎組件。

這裡是從模塊層面整體看了下,下面再從數據流的角度來看下廣告的業務場景。

業務數據流

首先,當用戶刷朋友圈的時候,朋友圈後台就會把這個請求丟到廣告引擎了,廣告引擎根據自身的演算法和其他數據模塊綜合計算給出一條合適的廣告。引擎演算法其中主要還會調用社交傳播控制模塊,在廣告排序之前,先根據社交傳播過程動態選定人群。用戶拉取到廣告之後,會對廣告有各種行為,分別是曝光,點擊和轉化,在經過我們的反作弊模塊鑒別之後,就用來計費和更新相關的數據模塊。

而社交行為,還會進入到專門的社交擴散模塊進行計算,供引擎使用。這個後面會詳細講到。

可以看到廣告引擎的位置至關重要。

引擎在微信廣告系統下如何考慮?

廣告引擎的作用是不斷調整廣告主、用戶、廣告平台、生態方平台這四者之間的價值利益。對於用戶而言,用戶希望提升自己的體驗,不願看見過多的廣告,不接受過多的廣告騷擾,並且希望得到有價值的信息;而對於廣告主,它想提升自己的效果或者品牌力;對於平台,它不僅僅為了賺錢,也要兼顧口碑;而對於生態方,即對朋友圈和公眾號而言,不能有損生態方的利益,相反地,我們應該促進它的更好發展。

用戶畫像體系

要做好廣告,首先得識別准用戶。那麼用戶畫像就是幫我們做這件事的。騰訊有近千款產品,分別覆蓋了社交平台,遊戲平台,電商平台等,提供了豐富的行為日誌。幫助我們識別用戶的基本人口屬性,興趣愛好等。

舉個例子,我們通過用戶在公眾號中閱讀的文章,就能挖掘出用戶的閱讀興趣,也可以挖掘出用戶的個人狀態,比如是否高端等。那如果我們再加上時間的維度,我們就能知道用戶的軌跡 -- 戀愛,結婚,生子,那麼也就可以推送對應階段的廣告了。

在移動互聯網時代,我們也對用戶做了設備畫像,這樣就可以打通多個平台的數據,大大豐富了我們的原始數據。

互動和點擊率預估模塊

在知道用戶屬性之後,我們自然就想知道這個用戶發生某種行為的概率,也就是廣告領域裡一直在說的點擊率或者轉化率預估問題。我們的系統已經做到全流程的實時化,從數據的收集到模塊的訓練更新。實時化對效果的提升是十分之大的。其次在模型的選擇方面,我們也是經歷了從 LR 到 FM,最後到 DNN。這也是業界發展的方向。最後也是比較特殊的地方在於我們的多目標預估問題,朋友圈廣告有許多行為,比如頭像點擊,圖片點擊,名稱點擊等,我們需要在 10ms 內完成十幾種行為的預估,這對演算法和系統都是一種考驗。

社交播放演算法實踐為什麼要做社交廣告?

首先,我們為什麼要做社交廣告呢?這是因為微信廣告誕生在微信平台之上,而微信是目前國內最大最有影響力的社交平台,所以廣告也被寄予厚望。正如之前提到我們的初衷 -- 嘗試做些改變。所以,我們在設計朋友圈廣告產品時候,就希望讓朋友圈廣告,也像朋友圈的其他內容一樣,成為一個話題,在朋友間流傳開來,讓好友去給這個品牌代言。於是我們就這樣去設計了社交廣告。

品牌廣告在朋友圈場景下,它的話題傳播會更有優勢。

首先,朋友圈廣告本身就是一條普通的內容,而且收到且互動之後就會沉澱在朋友圈 timeline 中,這樣後續的互動提醒都是可以全程參與的,而市面上其他的社交平台廣告產品都是在出賣廣告位。

其次,朋友圈是一個熟人網路,而且是目前市面上最優質的熟人關係網。直觀的想,熟人的推薦和口碑肯定是比陌生人要有力量的多。大家想想微商為什麼能火,靠得是什麼。這是因為現在的營銷方式已經發生變化了。傳統的效果廣告,我們優化素材,吸引點擊,進去還要想辦法促成轉化,一系列的鏈條。而現在基於社交傳播的營銷越來越火,不管是微信里的微商,還是微博的大 V 推薦和軟文,都是利用社交關係在做營銷。這裡關鍵點是,社交影響力越強,營銷的效果就越大。

舉個朋友圈中例子,如果你看到一個好友做微商發布一個廣告后,可能嗤之以鼻,把他拉黑,然後默默同情他怎麼墮落到如此地步了。但如果很多好友都在同時推薦一個商品,你還能保證不受影響嗎,這可就不好說了。我們希望社交廣告也能有如此的效果。

社交廣告推薦過程

我們先來看下傳統的效果廣告推薦過程:首先,用戶通過檢索系統,檢索出 100 條廣告。然後經過基於個人興趣的點擊率預估,得出對這 100 條廣告每個的點擊概率,再結合廣告出價,統一進行排序,排第一的廣告返回給用戶。

而在朋友圈的社交廣告中,首先當然還是經過檢索。然後這裡不再只是根據用戶點擊興趣推薦,還需要考慮用戶對這個廣告的社交意願。然後,在排序之前,我們還要經過一次社交傳播的投放節奏控制。看看每個廣告當前適合給哪些人群投放,對用戶做一輪篩選,此時 100 個廣告可能只有 50 個適合投放給該用戶。最後,再經過考慮社交因素的廣告排序,返回一個廣告給到用戶。

下面就來具體看看這 3 個過程

社交意願、社交傳播節奏控制、基於社交廣告排序是社交廣告投放三部曲。

第一階段,社交意願計算階段,假設此刻有三個用戶同時訪問朋友圈,有寶馬和可口可樂兩個廣告在線,該三個用戶對這兩個廣告兩兩社交互動意願;

第二個階段,社交傳播節奏控制,它是廣告選人階段,假如這個時刻是讓三個人中最好那兩個人才能收到廣告,那麼根據分數計算,發現此時小明此時此刻是沒辦法收到寶馬和可樂這兩個廣告。但這僅僅只代表此時此刻,隨著傳播範圍的擴散,以及小明受到越來越多的好友的影響,他在之後的某個時刻還是可能繼續收到廣告的。

第三個階段,基於社交的排序階段。此時用戶已經拿到了那些他可以收到的廣告列表,然後再把社交意願分加入到排序公式之中,選擇最合適的那條廣告給到用戶。

社交意願的計算

用戶的社交意願,除了受個人主動的互動興趣外,還受好友的影響。可以看下圖下面影響力作用的幾個階段。首先,最中間,用戶對兩個廣告有一個主動興趣,這是不受其他人影響的。左邊,有兩個好友分別對兩個廣告進行了互動,他們與該用戶的影響力都是不同的。右邊,是一個傳播的過程,表示假如我收到廣告后,我的互動可能對其他人造成的影響。

我們通過一個例子來看下影響力在朋友圈環境下和品牌力感知的關係。假如你看到一個洗髮水廣告,可能就是超市常見的牌子,沒用過也沒怎麼留意過。但此時已經有許多你的好友在下面點贊評論了,而且反應去屑效果真的很棒。這個時候,你可能會想到我的洗髮水貌似用了還有頭屑啊,那麼要不要試試這個呢?此時,你可能回復一個好友說「我也試試去」,但也可能你就不回復了,不過此時你對這個品牌的印象一定是加深的。再想想這些討論的好友中,假如還有一個是你的老闆,可能平時你們都沒機會說話,那這個時候要不要也點個贊表達下贊同呢?還可能能吸引下關注。這個就是社交影響力的作用,而這裡的主要問題是影響力如何量化。

首先,好友之間的影響力評估,越是親密的兩位好友影響力越大,因此一般會基於親密度進行模型建設。但我們通過限量的系統發現其帶來的收益很小,便對其進一步的數據分析發現主要原因是目標不一致。

舉個例子,我們與父母特別親密,但是我們卻不會在他們的朋友圈發表的內容進行評論。於是,我們進一步改進通過更加相關的行為評價影響力,即 A 能影響 B 日常互動的概率,將其定義為影響力,但該數據在一定置信度下十分稀疏,所以通過模型預估方式進行計算。

這裡,除了基礎的一些特徵之外,我們還運用了幾個網路特徵。比如,好友關係網,正常情況下微信用戶有 8 億,那麼這就是一個 8 億 *8 億的鄰接矩陣。這個是很難用作模型訓練的 feature 的。同時,還有其他的一些關係網,比如消息互動,文章閱讀等。那麼這裡,我們採用一種叫 node2vec 的方法將這些圖節點映射為一個向量。這個向量維度比較低,我們就能拿這些來進行訓練。最終通過 GBDT 和 LR 來進行影響力的預估。

Node2vec 是一種 embedding。首先,就是如何採用圖中的節點信息可以盡量保留多一些原始的網路信息。 換到自然語言處理的場景,一般個詞可以用它周圍的詞來表示它,這個也就是 word2vec 的思想。那同理到圖中,我們就是可以用一個節點的周圍節點來代表它,node2vec 就是用解決如何抽樣的問題。

那麼,我們拿到抽樣后的向量就可以用 word2vec 的方法來進行訓練,得出每個網路節點可表示的向量。

前面我們已經知道了兩個好友對自己的影響,那麼多個好友又是如何互相影響呢?這裡我們就引入了傳播力模型來對這個問題建模求解。

傳統的影響力模型有許多種,這裡我列了最為常見的獨立級聯模型。它的原理是這樣的,一個用戶每個好友都對自己有一個影響力,這個影響力可以用前面我們提到的方法計算出來。初始時刻,已經有一些人是被激活的,這些人就是種子用戶,具體的選擇我後面會說到。然後,一個用戶的每個已經被激活的好友,根據他們之前的影響力去計算一個激活概率,輪流去激活該用戶。這樣子迭代下去直到每輪沒有新激活用戶位置。

傳統獨立級聯模型直接應用會存在圖中說的一些問題,所以改為上圖中下面的形式(示意),但這樣直接做還會存在工程上的問題。主要在於廣告系統的時延要求是十分低的,假如用戶有 5000 個好友,分佈在幾百台存儲機器上,要在 20ms 內讀完,這幾乎是不可能完成的事情。

那麼這種讀擴散的方式不行,我們就換一個思考,採用寫擴散的方式。當用戶的一個點贊評論數據接收到之後,我們放入消息隊列之後,然後社交擴散模塊取出,根據關係鏈,權威度,傳播力在內存中計算他對每個好友的影響,然後再告知所有好友這個信息。但是,假如是一一告知,5000 個好友就要 5000 次網路調用,這個開銷也是接受不了的。所以,我們會根據路由規則和機器列表,將屬於一台機器的用戶合併起來寫入,最小化網路調用。

完成這些之後,當一個用戶來拉取廣告時候,只需要一次網路調用,就可以拿到好友對他的影響力了。

註:目前為了引入更多的特徵做實時推薦,我們已經將上面架構改為基於圖形資料庫的形式,架構上更加複雜和巧妙,之後會有文章專門再介紹。

社交傳播節奏控制

社交傳播節奏控制的核心思想是先傳播給優質人群,再讓優質人群帶動其他人。如下圖所示,Ripple 擴散傳播系統。

所謂優質人群,在投放初期被定義為種子用戶。他們可以通過一些方法進行挖掘:第一,廣告主的冬粉,鐵杆冬粉用戶;第二,廣告主最為了解自己的用戶,因此根據廣告主的需求做出定向挖掘,歷史行為用戶。正如大家所了解的,InfoQ 冬粉群體龐大,我們之前將冬粉和行業影響力大的人群選擇出來進行投放,確定優質人群。與此同時,如果覺得量級不夠,我們還可以通過 lookalike 的方法進行用戶擴展,在大盤裡面找到與之前兩步得到的相似用戶。

那麼投放中如何確定優質人群?我們通過引入一個全局的實時排名隊列來分析每個用戶與每個廣告實時的社交價值,在不同的時段,我們定義優質人群的函數是不同的。

選取優質用戶之後,就會在我們的 ripple 擴散傳播系統中進行擴散,從種子用戶階段投放,然後逐漸向外擴展,一直到廣告預算結束。過程看似簡單,但實際投放是一個較為複雜的過程。

首先,影響力是實時動態變化的過程;其次,朋友圈廣告是基於用戶的拉取,而不是簡單的推送,所以無法理想化的擴散。

在這兩個背景之後,還需要面臨具體如何擴散的問題,比如擴散的比例值如何確定;另外,一般品牌廣告主也需要合約保量,在保量需求下完成社交擴散動作,這對系統實時性與演算法都有很高要求。下面的圖中列舉了波紋傳播系統的幾個組成。

基於社交的排序

能換取別人的關注、評論、點贊的事物都可以稱之為社交貨幣。系統內所引入的變數將它價值化、貨幣化。將貨幣化的值放入總的價值排序之中和廣告主的初價以及廣告主的信息進行排序,廣告價值的放大代表著我們對社交傳播的重視。

寫在最後

當初有很多人問,什麼是社交廣告?回答普遍都是在社交平台上的廣告就是社交廣告。開始我也以為就是這樣,可是經歷了一個一個優秀的案例,以及一波又一波的社會熱點,我覺得,那些能讓我們抒發情感,聆聽好友心聲的廣告才稱得上社交廣告。我們也會繼續在社交廣告上繼續做出創新,因為我們的目標是讓廣告,也可以成為生活的一部分。

作者介紹

陳功,騰訊微信廣告引擎邏輯負責人。浙江大學計算機研究所畢業,2011 年加入騰訊微信,負責微信數據計算系統建設,以及微信基礎數據的分析與挖掘工作。2014 年加入微信廣告項目團隊,主要負責廣告引擎精選的系統架構與演算法策略設計,現任微信廣告引擎策略 Team Leader。平時對廣告業界動態,大型系統架構,模型演算法,都十分感興趣。

推薦一款高性價比的雲產品

120000IOPS 是很多雲計算攻城獅們心心念念都想攻關的技術巔峰。比格雲公布的測試數據顯示:隨機讀 IOPS 達 219743,隨機寫 IOPS 達 57531,讀吞吐率達 12213(MB/s),寫吞吐率達 4119.7 (MB/s)。現在掃描下圖二維碼或者點擊 「 閱讀原文 」,1000 台價格僅 79 元高性能雲主機限量放送,先到先得。

一本開源的程序員快速成長秘笈

熱門推薦

本文由 一點資訊 提供 原文連結

一點資訊
寫了5860316篇文章,獲得23288次喜歡
留言回覆
回覆
精彩推薦