計算廣告系統演算法與架構綜述

達觀資料發表於2019-04-01

計算廣告系統演算法與架構綜述

前言

我們當今身處一個被廣告包圍的時代,無論是走在馬路上、收看電視劇、或者是玩手機遊戲,都能看見形形色色的廣告。隨著時代和技術的發展,廣告的形式呈現出多樣化、立體化的趨勢,從最早的紙媒廣告發展到如今的網頁的展示、搜尋廣告,廣告的定位也從原先的“廣而告之”發展成大資料時代的“精準營銷”,相應地,人們對廣告的態度也在悄然變化。這一切都得益於網際網路技術的快速發展以及使用者資料的爆炸式增長。作為IT從業者,自然想對廣告產業背後的產品、技術一探究竟,正如劉鵬博士在其《計算廣告》一書中所說的“不論你在做一款使用者產品還是商業產品,不深入瞭解線上 廣告,就不太可能全面地瞭解網際網路業務”,因此本文也希望能帶領讀者從產品、技術以及整個生態的角度深入淺出的瞭解計算廣告。

核心術語

首先,在深入瞭解計算廣告之前, 有必要先對一些核心術語做簡單的介紹。 

  • 廣告主:有廣告需求的客戶公司,也稱為需求方

  • 媒體:可以是網站或者app,即有多餘的廣告位可以出售,也稱為供給方

  • RTB(Real Time Bidding,實時競價):綜合利用演算法、大資料技術在網站或移動應用上對線上的流量實時評估價值,然後出價的競價技術

  • DSP(需求方平臺):為各廣告主或者代理商提供實時競價投放平臺,可以在該平臺上管理廣告活動及其投放策略,並且通過技術和演算法優化投放效果,從中獲得收益

  • SSP(供應方平臺):為各媒體提供一致、整合的廣告位庫存管理環境

  • DMP(資料管理平臺):整合各方資料並提供資料分析資料管理、資料呼叫等,用來指導廣告主進行廣告優化和投放決策

  • Ad Exchange,簡稱Adx(廣告交易平臺):同時接入了大量的DSP和SSP,給雙方提供一個“交易場所”,將SSP方的廣告展示需求以拍賣的方式賣給DSP方。可以類比於股票交易中的證券大廳角色

  • CTR(點選率):廣告點選與廣告展現的比例,這是廣告主、各大DSP廠商都非常重視的一個數字,從技術角度看,這一數字可以影響到廣告的排序、出價等環節,從業務來看,這是運營人員的考核指標之一

  • CVR(轉化率):轉化(主要由廣告主定義,可以是一次下單或是一次下載app等)次數與到達次數的比例

  • eCPM(千次展示期望收入):點選率 * 點選價值,這個數字在計算廣告中是核心指標,涉及到對召回廣告的排序策略,以及最終出價策略

  • CPM(Cost per mille):每千次展現收費,最常見的廣告模式,即不考慮點選次數、轉化次數,只要廣告在網站上被展現給一千個人看到就收費,是大型網站變現的最有效的方式。對廣告主來說,適合於注重推廣品牌的廣告,力求最快最廣的觸及大眾

  • CPC(Cost per click):每次點選收費,無論廣告被展現了多少次,只要沒有產生點選就不收費。對於廣告主來說選擇 CPC 模式可以有助於提升點選量、發現潛在使用者,進而可以真正做到精準營銷;對於廣大DSP廠商來說,這種收費模式也是獲取利潤的最有效來源之一

  • CPA(Cost per action):每次動作收費,此處的動作一般定義為轉化,可以是註冊、諮詢、交易、下載、留言等等,按照轉化的數量來收費。對於廣告主來說,這是價效比較高的一種收費方式,但是對於DPS和媒體方來說,想要把這種收費做好,卻是有相當的難度。因此,目前也只有大廠或者技術實力深厚的DSP廠商才有能力接這種單子

  • 其他的還有CPT(按展現時間收費)、CPL(按潛線上索收費)、CPS(按成功銷售收費)等模式,由於應用沒有那麼廣泛,在此不一一介紹了

競價流程

在RTB模式出現之後,我們發現展現的廣告越來越精準了,好像網站知道使用者是誰、使用者在做什麼、使用者對什麼感興趣,因此,在瞭解了上述這些核心術語之後,接下來就以網站使用者角度,從流程上解析RTB是如何做到精準展示廣告的。

  • 使用者通過瀏覽器訪問網站

  • 瀏覽器傳送廣告請求給網站伺服器,即SSP方

  • SSP將廣告展示需求傳送給Adx

  • Adx組織一次競價,將本次的競價請求通知給所有DSP方,並傳輸使用者ID、使用者IP以及廣告位資訊等等

  • 各家DSP監聽服務收到Adx發來的競價請求後,根據傳送來的當前使用者的資訊、上下文資訊、代理的廣告主資訊對照投放需求,評估該請求

  • 各家DSP將根據評估結果決定是否參與出價,若參與,則將出價結果通知Adx

  • Adx收到所有出價響應後根據出價排序,通知出價最高的DSP勝出,同時將勝者的競價資訊告知SSP

  • 勝者DSP會收到Adx傳送的競價訊息(WinNotice),表示該次展現已經競價成功。DSP此時將廣告物料傳送至瀏覽器展示。至此,一次完整的競價流程就完成了

    計算廣告系統演算法與架構綜述

有兩點需要說明:

  • 以上流程需在100毫秒之內完成,也就是一眨眼的功夫都不到,這樣才能讓訪問網站的使用者馬上看到廣告。

  • 雖然競價最後的勝者是出價最高的DSP,但其實際支付的價格是出價第二高的報價再加上一個最小值,這就是著名的廣義二階拍賣(GSP)。這種定價模式的好處主要是為了避免各家DSP在多次競價中,下一次的出價只需比上一次的勝出價格高一點點即可,從而導致出價越來越低。在GSP模式下,每個勝者只需要支付次高出價的金額,這樣各家DSP也就沒有動力相互壓價。GSP是一種穩定的競價方式,可操作性很強,現階段幾乎所有的網際網路廣告平臺都使用這一種競價方式。

技術細節

縱觀計算廣告的發展會發現,整個市場本質上是計算驅動的,而計算背後最大的推動力正是網際網路以及大資料,而大資料的發展動力又來自於硬體和軟體。因此接下來,就來剖析下技術細節。

1.架構

一個典型的廣告系統架構如下圖:

計算廣告系統演算法與架構綜述

結合上圖,廣告系統有以下幾個重要組成部分:

(1)受眾定向平臺:這部分一般為離線挖掘,是系統中最具演算法挑戰的部分,利用資料探勘機器學習等技術進行受眾定向,點選率預估等工作。具體還可以細分為以下幾個模組:

  • 會話日誌生成(Session loggeneration):從各個資料平臺收集日誌,並最終根據使用者ID為主鍵彙整合一份統一儲存格式的日誌,從而為後續的資料分析、演算法研發提供資料來源。

  • 行為定向(Audience targeting):從會話日誌中根據使用者的行為,利用資料探勘機器學習等演算法建模,從而可以刻畫出使用者的行為模式、興趣點等,最終為使用者打上結構化標籤,以供廣告定向投放使用。該模組在整個系統具有非常關鍵的作用。

  • 點選率建模(Click modeling):利用大資料工具以及演算法,從會話日誌中提取預定義的特徵,訓練一個點選率模型,載入到快取中以供線上投放系統決策時使用。

  • 商業智慧模組(BusinessIntelligence):包括ETL(Extract-Transform-Load)過程、Dashboard、cube。BI系統可以為決策者提供直觀且即時的資料分析,而演算法對決策者來說相當於黑盒,因此,設計一個良好的BI系統可以為決策提供有力的幫助。另外,在廣告投放中,除了技術之外,運營是非常重要的角色。所以,這一模組也影響到了廣告運營的策略執行以及調整。

(2)高併發的投送系統:也就是線上的廣告投放機(Ad server),主要任務是與各模組互動,將它們串聯起來完成線上廣告的投放決策。特點是高併發,要做到10ms級別的實時決策,百億次/天的廣告投放系統。具體可細分為以下幾個模組:

  • 廣告檢索(Ad retrieval):也稱為廣告召回,即根據使用者屬性以及頁面上下文屬性從廣告索引(Ad index)中查詢符合條件的廣告候選。

  • 廣告排序(Ad ranking):主要功能是對廣告檢索模組送來的廣告候選集計算eCPM,並按照值的大小倒排。eCPM的計算依賴於受眾定向平臺離線計算好的點選率。由於最終投放出的廣告都是來自於排序的結果,因此這一模組也是至關重要,成為各種演算法模型和策略大展身手的地方。

  • 收益管理(Yield management):將區域性廣告排序的結果進一步優化,以做到全域性最優收益。

(3)資料高速公路:聯絡線上與離線的部分,可以用開源工具實現。作用是準實時地將日誌推送到其它平臺上,目的一是快速地反饋到線上系統中,二是給BI人員快速看結果。它還可能收集其它平臺的日誌,比如搜尋廣告會收集搜尋日誌。

(4)流式計算平臺:主要功能是對線上資料的處理,做到準實時的挖掘和反饋,解決那些離線計算平臺無法快速響應的計算問題。具體又可分為:

  • 實時受眾定向(Real-timetargeting)實時點選反饋(Real-time click feedback):對使用者的實時行為進行計算,如實時更新點選率模型、動態調整使用者標籤,進而更好的適應線上環境。實踐表明,實時系統的作用對於最終效果提升明顯大於離線系統,舉個簡單例子,當實時點選反饋模組發現當前使用者的行為與其歷史點選行為有較大差異時,可以反饋給其他模組並通知進行及時的更新,從而可以更好的滿足使用者變化的需求,最終提升效果。

  • 計費(Billing):該模組掌管著廣告系統的“錢袋子”,執行的準確性和穩定性直接影響了系統的收益。在廣告投放過程中,經常會遇到投放預算用完的情況,這時計費模組必須及時反應,採取例如通知索引系統暫時將廣告下線的辦法,避免帶來損失。

  • 反作弊(Anti-spam):利用演算法和人工規則等實時判斷流量來源中是否有作弊流量,並將這部分流量從後續的計價和統計中去掉,是廣告業務非常重要的部分。

2. 硬體

在以上介紹的架構圖中,都離不開大資料工具的作用,其中大多來自開源社群,正所謂,工欲善其事,必先利其器。可以說,正是由於這些成熟的開源工具有力的保障了資料通訊、資料傳輸、負載分配等底層架構的健康執行,才使得上層的廣告演算法和策略能快速發展。

(1)Hadoop:一個由Apache基金會所開發的分散式系統基礎架構,使用者可以輕鬆地在Hadoop上開發和執行處理海量資料的應用程式,主要優點有:高可靠性、高擴充套件性、高容錯、低成本。Hadoop框架最核心的設計就是:HDFS和MapReduce

  • HDFS是一種易於橫向擴充套件的分散式檔案系統,是分散式計算中資料儲存管理的基礎,適合應用於流資料模式訪問和處理超大檔案的需求,不適合於要求低時間延遲資料訪問的應用、儲存大量的小檔案、多使用者寫入。廣告系統中使用者生成的海量日誌就是存在HDFS上,為各種離線計算提供服務。

  • MapReduce 是用於並行處理大資料集的軟體框架。MapReduce的根源是函式性程式設計中的 map 和 reduce 函式。它由兩個可能包含有許多例項(許多 Map 和 Reduce)的操作組成。Map函式接受一組資料並將其轉換為一個鍵/值對列表,輸入域中的每個元素對應一個鍵/值對。Reduce 函式接受 Map 函式生成的列表,然後根據它們的鍵(為每個鍵生成一個鍵/值對)縮小鍵/值對列表。在Spark出現之前,MapReduce是在大規模資料上計算點選率預估、挖掘使用者行為、生成使用者畫像等的首選計算框架。

(2)Spark:一個用來實現快速而通用的叢集計算的平臺,擴充套件了廣泛使用的MapReduce計算模型,Spark的一個重要特點就是能夠在記憶體中計算,因而更快,即使在磁碟上進行的複雜計算,Spark依然比MapReduce更加高效。舉例來說,機器學習中很多演算法都要迭代訓練多次才能達到收斂,例如聚類演算法K-Means,每次迭代需要將K箇中心點的位置儲存下來,以進行下次的更新,傳統的MapReduce計算框架在Map階段和Reduce階段用硬碟進行資料交換,這就使得整個訓練過程效率很低,而Spark的做法則是將資料載入到記憶體中,直接在記憶體中更新K箇中心點的位置,大大加快了訓練過程。Spark支援各種機器學習演算法為代表的迭代型計算、流式實時計算、社交網路中常用的圖計算、互動式即席查詢等。

(3)Lucene:用於全文檢索和搜尋的開源程式庫,提供了一個簡單卻強大的應用程式介面,但它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構。目前大多數的計算廣告採用的是檢索加排序模式,為了加快檢索的時間,可以對所有廣告的關鍵字建立倒排索引(主鍵為關鍵字,值為文件ID),這樣在廣告召回時,便能快速地從規模巨大的廣告庫中返回結果。

(4)Storm:廣告系統中除了需要離線挖掘資料,同樣還需要線上、準實時的處理資料,例如反作弊處理、實時點選反饋、實時檢視某地區當前的廣告投放情況等,業界常用的工具是Storm。利用Storm可以很容易做到可靠地處理無限的資料流,像Hadoop批量處理大資料一樣,主要的特點有:

  • 高效能:應用於需要對廣告主的操作進行實時響應的場景.

  • 可擴充套件: 隨著業務發展,資料量和計算量越來越大,系統可水平擴充套件.

  • 訊息不丟失:能夠保證每個訊息都能得到處理.

  • 程式設計容易:任務邏輯MapReduce類似,熟悉MapReduce框架的開發人員可以快速上手

(5)ZooKeeper:ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Hadoop和Hbase的重要元件,為分散式應用提供一致性服務。分散式應用程式可以基於 ZooKeeper 實現諸如資料釋出/訂閱、負載均衡、命名服務、分散式協調/通知、叢集管理、Master選舉、配置維護等功能。簡單來說ZooKeeper=檔案系統+監聽通知機制。在廣告系統中,大量的廣告投放機就是通過ZooKeeper進行管理,可以把所有機器的配置全部放到ZooKeeper上的某個目錄節點中,所有相關應用程式對這個目錄節點進行監聽。當需要增加一臺新的投放機時,配置資訊發生了變化,應用程式就會收到 ZooKeeper 的通知,然後從 ZooKeeper 獲取新的配置資訊應用到系統中。

3.核心演算法

介紹完了上述的硬體架構之後,接下來就要了解一下計算廣告背後的核心演算法和技術。

CTR(點選率)預估是所有廣告系統、推薦系統中非常重要的一個指標,可以反映出一個系統是否做的精準,是各個廣告系統的“必爭之地“。點選率預估的目的是為了廣告排序,排序的依據是eCPM,即點選率*點選單價,然後再根據其他策略進行後續處理。

目前業界的點選率預估方法,是利用系統中已有的大量使用者行為日誌、根據規則抽取特徵、離線訓練機器學習模型、將模型上線後對每一個請求計算其點選廣告的概率值,值的範圍為計算廣告系統演算法與架構綜述這裡既然用到了模型,就不得不提其背後的兩個細節。

(1)特徵:在實際的廣告系統中,其實有非常多的因素會決定廣告的點選率,這些因素在模型中即稱為特徵,主要分為三大類:

  • 廣告主側(Advertiser):比如廣告創意、廣告的表現形式、廣告主行業等。

  • 使用者側(User):如人群屬性、年齡、性別、地域、手機型號、WiFi環境、興趣等等。

  • 上下文側(Context):比如不同的廣告位、投放時間、流量分配機制、頻次控制策略等。

在有了使用者日誌後,就需要根據上述三類特徵進行特徵工程特徵工程對於機器學習來說非常重要,可以使特徵更好地在演算法上發揮作用,一般包括特徵選擇、特徵提取、特徵構造。

1.1 特徵選擇

在實際拿到的資料中一般都有非常多的特徵,但並非每一個都能拿來訓練模型,可能有些特徵有用,而另外一些特徵就毫無作用,即冗餘特徵,特徵選擇的作用就是從已有的特徵全集中選擇出一部分的特徵子集。

進行特徵選擇有兩個重要的原因:

一、維數災難。若對所有特徵不加篩選而一股腦全扔進模型,比如,使用者ID和裝置ID交叉之後,特徵的維度就會非常高,而其實這樣的組合特徵完全可以只用一個特徵來代替,進行特徵選擇就會大大減少冗餘特徵,緩解維數災難問題。

二、去除冗餘特徵可以減輕模型的學習難度,直觀感受就是減少模型的訓練時間。常見的特徵選擇方法主要有三種:過濾式、包裹式、嵌入式。

  • 過濾式:使用一些評價指標單獨地計算出單個特徵跟類別變數之間的關係。如Pearson相關係數,Gini-index(基尼指數),IG(資訊增益)等。以Pearson係數為例,計算公式:

計算廣告系統演算法與架構綜述

計算廣告系統演算法與架構綜述描述的是兩個變數間線性相關強弱的程度,絕對值越大表明相關性越強。計算廣告系統演算法與架構綜述的取值在-1與+1之間,若計算廣告系統演算法與架構綜述,表明兩個變數是正相關,即一個變數的值越大,另一個變數的值也會越大;若計算廣告系統演算法與架構綜述,表明兩個變數是負相關,即一個變數的值越大另一個變數的值反而會越小。

  • 包裹式:直接將模型要使用的效能(如AUC)作為特徵子集的評價標準,只選擇模型效能表現最佳的特徵,相對於過濾式來說,包裹式考慮了特徵與特徵之間的關聯性,最終的模型表現也更好。常用的有逐步迴歸(Stepwise regression)、向前選擇(Forward selection)和向後選擇(Backward selection)。

  • 嵌入式:特徵選擇過程與模型訓練過程融為一體,即在訓練過程中自動地進行了特徵選擇。例如,針對訓練樣本數量較少,而特徵數量又比較多時,可以使用L1正則化,即在損失函式基礎上直接加上權重引數的絕對值:

計算廣告系統演算法與架構綜述

在上式求解過程中,最初的特徵全集中只有對應於非零權重的特徵才會出現在最終模型中。這樣,L1正則化就起到了特徵篩選的作用,其特徵選擇過程與模型訓練過程融為一體,同時完成。

1.2 特徵提取

將原始特徵轉換為一組具有明顯物理意義(Gabor、幾何特徵角點、不變數、紋理LBP HOG)或者統計意義或核的特徵,比如通過變換特徵取值來減少原始資料中某個特徵的取值個數等。常用的方法有:

  • PCA: PCA的主要思想是將維特徵對映到維上,這維是全新的正交特徵也被稱為主成分,是在原有n維特徵的基礎上重新構造出來的維特徵。其中,第一個新維度選擇原始資料中方差最大的方向,第二個新維度選取與第一維正交的平面中方差最大的,第三個新維度是與第1、2維正交的平面中方差最大的,依次類推,可以得到n個這樣的維度,最終,大部分方差都包含在前面k個維度中,而後面的維度所含的方差幾乎為。

  • ICA:PCA是將原始資料降維,並提取不相關的部分;而ICA是將原始資料降維並提取出相互獨立的屬性;尋找一個線性變換,使得線性變換的各個分量間的獨立性最大。ICA相比於PCA更能刻畫變數的隨機統計特性。

  •  LDA:也叫做Fisher線性判別(Fisher Linear Discriminant ,FLD),是模式識別的經典演算法,基本思想是將高維的模式樣本投影到最佳判別空間,投影后保證模式樣本在新的子空間有最大的類間距離和最小的類內距離,即模式在該空間中有最佳的可分離性。

1.3特徵構建

在經過了特徵選擇之後,確定了需要放入模型的特徵後,接下來就要對特徵進行處理,對特徵進行轉換、加工、處理成模型能夠識別的格式。根據不同的資料型別,需要採取不同的處理方式:

  • 連續型:例如使用者年齡、反饋點選率等。由於連續型數值的分佈非常廣,各特徵的取值範圍差別很大,如使用者的反饋點選率一般為0到1之間,而使用者的年齡取值則遠遠大於1,所以,需要對連續特徵進行特別處理,使特徵值在同樣的量綱範圍內:

  • Z-score標準化: 計算廣告系統演算法與架構綜述 即求出樣本特徵計算廣告系統演算法與架構綜述的均值計算廣告系統演算法與架構綜述和標準差計算廣告系統演算法與架構綜述,然後用來代替原特徵。這樣新的特徵值就變成了均值為0,方差為1。

  • 最大-最小標準化: 計算廣告系統演算法與架構綜述求出樣本特徵計算廣告系統演算法與架構綜述的最大值計算廣告系統演算法與架構綜述和最小值計算廣告系統演算法與架構綜述,然後計算廣告系統演算法與架構綜述用來代替原特徵值。不過,這種方法有個問題,若預測集裡的特徵有小於計算廣告系統演算法與架構綜述,或者大於計算廣告系統演算法與架構綜述的資料,會導致計算廣告系統演算法與架構綜述計算廣告系統演算法與架構綜述發生變化,需要重新計算。所以一般實際應用中,最大-最小標準化不如Z-score標準化魯棒。

  • 離散化:對於連續型特徵,除了上述兩種標準化方法之外,還有一種常用的處理方式:離散化。和標準化不同的是,離散化可以加入人工經驗,也可以是和業務緊密相關的規則,因此這種方法更容易被人類理解。

一般採用分桶或者分段的方式,即事先指定每個桶的取值範圍,然後將特徵值劃分到桶中,最後用桶的編號作為新的特徵值。對於桶的劃分又可以分為等頻(各個桶中的數量大致相同)、等寬(各個桶的上下界的差值相同)、人工指定。一般來說,等頻離散不會像等寬離散出現某些桶中數量極多或者極少。但是等頻離散為了保證每個區間的資料一致,很有可能將原本是相同的兩個數值卻被分進了不同的區間,會對最終模型效果產生一定影響。人工指定則需要根據過去的經驗來進行劃分,例如對於反饋點選率,發現過去的點選率集中在1%和2%之間,因此,可以這樣劃分(python程式碼):

計算廣告系統演算法與架構綜述

  • 離散特徵:例如廣告尺寸、廣告樣式、投放城市等等。對於離散特徵一般採用One-hot(獨熱編碼)方式,即將所有樣本的離散特徵放在一起,稱為特徵空間,每個特徵就轉換為一個特徵空間大小的向量,其中該特徵值對應下標的值為1,其餘的都為0,從數學角度可以理解為將離散特徵的取值擴充套件到了歐式空間,因為常用的距離或相似度的計算都是在歐式空間中進行,因此,One-hot對於離散特徵來說是最合理的選擇。

  • 文字特徵:例如廣告的標題、描述資訊等等。對於文字型特徵,可以用如下處理方法:

  • tf-idf:基於統計詞的出現頻次的方法,用以評估一個詞的重要程度,具體計算公式:

    計算廣告系統演算法與架構綜述

    計算廣告系統演算法與架構綜述

    計算廣告系統演算法與架構綜述

其中, 計算廣告系統演算法與架構綜述反映的是該詞在當前文件中的熱門程度,但是對於那些幾乎每篇文章都會出現的助詞來說,如“的”、“了”、“這”等等,就需要給它們降權,從計算廣告系統演算法與架構綜述的計算公式可以看出,包含該詞的文件數約多,倒數就越小,從而就可以起到降權的作用。因此最終的乘積就可以認為是該詞在整篇文章的重要性。

  • Word2vec:深度學習大熱之後,出現了Word2vec模型,可以將詞向量化,即轉化為低維度的連續值、稠密向量,從而使得意思相近的詞在向量空間中也處於相同的位置。Word2vec實際上是一個具有隱含層的神經網路,輸入是One-hot編碼的詞彙向量表,隱含層沒有啟用函式,也就是線性單元,輸出層使用Softmax迴歸,但其實我們不關心輸出層的結果,只需要拿到隱藏層的輸出單元即是所需的向量。

Word2Vec其實訓練了一個語言模型,即通過前n 個字預測下一個字的概率,是一個多分類器,輸入一個one hot,然後連線一個全連線層、再連線若干個層,最後接一個Softmax分類器,就可以得到語言模型了,然後將大批量文字輸入訓練就行了,最後得到第一個全連線層的引數,就是字、詞向量表。

Word2vec主要有兩個模型:

計算廣告系統演算法與架構綜述

CBOW:主要用來從原始語句推測目標詞彙。CBOW用周圍詞預測中心詞,從而利用中心詞的預測結果情況。當訓練完成之後,每個詞都會作為中心詞。把周圍詞的詞向量進行了調整,這樣也就獲得了整個文字里面所有詞的詞向量。

Skip-gram從目標詞彙推測原始語境。與CBOW相反的是,Skip-gram使用中心詞預測周圍詞,Skip-gram會利用周圍的詞的預測結果情況,不斷的調整中心詞的詞向量,最終所有的文字遍歷完畢之後,也就得到了文字所有詞的詞向量。對比而言,Skip-gram進行預測的次數多於CBOW的:因每個詞作為中心詞時,皆需使用周圍詞進行預測一回,訓練時間相對更長。

  • 動態特徵:在計算廣告模型的特徵中,除了有使用者年齡、地理位置、廣告尺寸等相對不變的靜態特徵,還可以加入其他特徵:如相同廣告尺寸的歷史點選率、歷史到達率等,這類特徵我們稱之為動態特徵,因為這些特徵的值隨著時間視窗的取值不同而不同。使用動態特徵主要有兩個好處:1. 可以大大減少模型引數數目 2. 模型不必快速更新。

  • CoEC(Clickon Expected Click)特徵:由於廣告在實際展示時,最終效果經常會受到廣告位置的影響,例如一個展示在首頁頂端位置的廣告往往比另一個在內容頁下端展示的廣告效果好的多,這其實是由於位置帶來的偏差,導致在位置上佔據優勢的廣告點選率被嚴重高估。其他的影響因素還包括廣告位尺寸、廣告位型別、創意型別等,以上這些特徵都稱為偏差因素。因此為了去除這些偏差等因素的影響,工業界的做法是:

    • 首先,訓練一個偏差模型,只用那些偏差因素訓練一個點選率模型,稱為偏差模型。

    • 利用偏差模型,計算下式:

計算廣告系統演算法與架構綜述

其中,計算廣告系統演算法與架構綜述表示是否點選(0或1),計算廣告系統演算法與架構綜述為使用者端特徵,計算廣告系統演算法與架構綜述為上下文特徵。這一式子其實是點選與期望點選的比值,因此稱為CoEc特徵,該特徵可以更準確的表徵某部分流量上廣告投放的實際點選率水平,比較適用於點選反饋的動態特徵。

(2)模型

經過了上述特徵工程處理之後,就需要將特徵放入到具體的模型中。針對ctr預估問題,工業界也產生了很多的模型,由最初的邏輯迴歸模型到目前非常熱門的深度學習模型,效果也隨之提升了很多。下面就來具體看下ctr預估模型的一路發展。

2.1 LR(邏輯迴歸)

LR是ctr預估模型的最基本的模型,也是工業界最喜愛使用的方案。LR 是廣義線性模型,與傳統線性模型相比,LR 使用了 Logit 變換將函式值對映到 0~1 區間,對映後的函式值就是 CTR 的預估值。

LR 利用了 Logistic 函式,函式形式為:

計算廣告系統演算法與架構綜述

優點:由於LR 模型簡單,訓練時便於並行化,在預測時只需要對特徵進行線性加權,所以效能比較好,往往適合處理海量 id 類特徵,模型的結果直觀易解釋。

缺點:LR 的缺點也很明顯,首先對連續特徵的處理需要先進行離散化,如上文所說,對連續特徵的分桶方式有很多種,各種方式都有差異。另外 LR 需要進行人工特徵組合,這就需要開發者有非常豐富的領域經驗,才能不走彎路。這樣的模型遷移起來比較困難,換一個領域又需要重新進行大量的特徵工程

2.2 FM(Factorization Machine)、FFM(Field-aware factorization machine)

在一般的線性模型中,各個特徵獨立考慮的,沒有考慮到特徵與特徵之間的相互關係。但實際上,大量的特徵之間是有關聯的。

一般的線性模型為:為了表述特徵間的相關性,可以採用多項式模型。在多項式模型中,特徵計算廣告系統演算法與架構綜述計算廣告系統演算法與架構綜述的組合用計算廣告系統演算法與架構綜述表示。二階多項式模型如下:

計算廣告系統演算法與架構綜述

其中計算廣告系統演算法與架構綜述表示樣本的特徵數量,這裡的特徵是離散化後的特徵。與線性模型相比,FM的模型多了後面的特徵組合的部分。

FM主要有如下特點:

1.可以在非常稀疏的資料中進行合理的引數估計

2.FM模型的時間複雜度是線性的

3.FM是一個通用模型,它可以用於任何特徵為實值的情況


而FFM則是在FM的基礎上,考慮了特徵交叉的field的特點,但是也導致它沒有辦法實現線性的時間複雜度,模型訓練要比FM慢一個量級,但是效果會比FM來得更好。在業界,目前已經有公司線上利用FM去預測ctr。

2.3 LR + GBDT

在Facebook2014年的一篇論文中,提及到GBDT+LR的解決方案。即先使用GBDT對一些稠密的特徵進行特徵選擇,得到的葉子節點,再拼接離散化特徵放進去LR進行訓練。在方案可以看成,利用GBDT替代人工實現連續值特徵的離散化,而且同時在一定程度組合了特徵,減少了人工的工作量。

計算廣告系統演算法與架構綜述

從上圖可以看到,輸入x分別落到2顆樹的葉子節點上,每個葉子節點對應的編號就作為新的特徵送入LR中,其中新的特徵維度與樹的數目相同,在實際應用中,需要進行調參的有每棵樹的深度、樹的總數等。

另外,對於廣告來說,ID類特徵在CTR預估中是非常重要的特徵,直接將AD ID作為feature進行建樹不可行,可以考慮為每個AD ID建GBDT樹。具體做法,使用GBDT建兩類樹,非ID建一類樹,ID建一類樹。

1)非ID類樹:不以細粒度的ID建樹,此類樹作為base,即便曝光少的廣告、廣告主,仍可以得到有區分性的特徵、特徵組合。

2)ID類樹:以細粒度的ID建一類樹,用於發現那些曝光充分的ID有區分性的特徵、特徵組合。在實際應用中,效果略有提升,但是需要綜合考慮GBDT的效能問題。

2.4 Wide & Deep

Wide & Deep 模型是 Google在2016年發表的文章中提出的,並應用到了 Google Play 的應用推薦中。Wide & Deep模型的核心思想是結合線性模型的記憶能力(memorization)和 DNN 模型的泛化能力(generalization),在訓練過程中同時優化 2 個模型的引數,從而達到整體模型的預測能力最優。

Wide & Deep模型中使用的特徵包括兩大類: 一類是連續型特徵,主要用於deep模型的訓練,包括連續值型的特徵以及embedding型別的特徵等;一類是離散型特徵,主要用於Wide模型的訓練,包括稀疏型別的特徵以及組合型的特徵等。

模型結構:

計算廣告系統演算法與架構綜述

模型特點:

記憶(memorization)通過特徵叉乘對原始特徵做非線性變換,輸入為高維度的稀疏向量。通過大量的特徵叉乘產生特徵相互作用的“記憶(Memorization)”,高效且可解釋。

泛化(generalization)只需要少量的特徵工程,深度神經網路通過embedding的方法,使用低維稠密特徵輸入,可以更好地泛化訓練樣本中未出現過的特徵組合。

Memorization趨向於更加保守,推薦使用者之前有過行為的items。相比之下,generalization更加趨向於提高推薦系統的多樣性(diversity)。

2.5 DeepFM

DeepFM是由哈工大與華為諾亞方舟實驗室共同發表的論文中提出的,模型有效的結合了神經網路與因子分解機在特徵學習中的優點。DeepFM可以同時提取到低階組合特徵與高階組合特徵,併除了得到原始特徵之外無需其他特徵工程

模型結構:

計算廣告系統演算法與架構綜述

比起Wide& Deep的LR部分,DeeFM採用FM作為Wide部分的輸出,FM部分如下圖:

計算廣告系統演算法與架構綜述

Deep component 如下圖:

計算廣告系統演算法與架構綜述

Deep Component是用來學習高階組合特徵的。網路裡面黑色的線是全連線層,引數需要神經網路去學習。

由於ctr或推薦系統的資料One-hot之後特別稀疏,如果直接放入到DNN中,引數非常多,我們沒有這麼多的資料去訓練這樣一個網路。所以增加了一個Embedding層,用於降低緯度。

優點:首先,FM提取低階組合特徵,Deep提取高階組合特徵。但是和Wide & Deep不同的是,DeepFM是端到端的訓練,不需要人工特徵工程

其次,共享feature embedding。FM和Deep共享輸入和feature embedding不但使得訓練更快,而且使得訓練更加準確。

相比之下,Wide & Deep的輸入vector非常大,裡面包含了大量的人工設計的pairwise組合特徵,因此增加了計算複雜度。

生態

說到整個程式化交易廣告的生態圈,除了以上介紹的SSP、DSP、Adx等,還有其他大大小小的角色在其中發揮著作用。在此,列舉幾個如下:

  • 廣告代理商:指由一些創作人員和經營管理人員所組成的,能夠為廣告客戶制定廣告計劃、商業宣傳、製作廣告和提供其它促銷工具的一個獨立性機構,收入來源為服務費和合作的各大廣告平臺的返點。但最近幾年,隨著代理商之間的競爭激烈,加之返點模式也越來越被詬病,也導致了許多的代理商或轉型或退出這個行業。

  • 廣告網路:在PC端介於想出售廣告資源的Web網站與想在PC端釋出廣告的廣告主之間的平臺。擁有大量的媒體資源,一方面幫助媒體將廣告位資源整合打包出售,另一方面幫助廣告主定向目標人群。廣告主按照千次展示數或按點選付費。

  • 資料交換平臺:是實現使用者標籤資料交換的平臺,服務專案包括為客戶提供統一CookieMapping技術解決方案,以及使用者標籤資料的私有交換,幫助企業客戶提高資料管理能力。

  • 第三方監測公司:由於程式化廣告的交易模式是由多方參與其中,因此,為了保證資料的準確性、避免各方在結算時的資料差異,同時為廣告主有效評估線上廣告的接觸效果(包括接觸人數、頻次和目標受眾特徵等)以及網際網路廣告的投入產出(ROI),需要引入第三方監測公司。這些公司往往具有完整且成熟的產品或者解決方案,因此目前這些服務都是收費的。

目前國內完整的生態圈如下圖:

計算廣告系統演算法與架構綜述

關於趨勢,最近有國外的廣告科技前沿作者預測,媒體方削減推送給廣告交易平臺的流量並自主搭建與DSP的直接對接或許會成為趨勢,並預測,未來主流大型媒體通過程式化方式售賣的形態很可能是僅和二、三家廣告交易平臺對接,同時直接和十多家DSP對接,以獲得更好的利潤和控制權。此趨勢如發生,將進一步削弱開放式廣告交易平臺的作用並進一步減少優質庫存通過廣告交易平臺交易的機會。

對於獨立的移動廣告技術公司而言,出海的發展機會似乎大於固守本土的機會,2018年廣告技術公司上市的情況即是佐證。OTT和OOH以及音訊媒體庫存正在處於醞釀進入程式化模式的前夜,這或許是未來幾年的持續增長點。

參考文獻

  • 《計算廣告》 劉鵬 / 王超

  • 機器學習周志華

  • https://clearcode.cc/blog/how-the-real-time-bidding-rtb-ad-exchange-works-infographic/

  • http://hadoop.apache.org/

  • http://spark.apache.org/

  • http://lucene.apache.org/

  • http://zookeeper.apache.org/

  • Practical Lessonsfrom Predicting Clicks on Ads at Facebook, 2014

  • DistributedRepresentations of Sentences and Documents, 2014

  • Word2vec Parameter LearningExplained, 2016

  • Wide & Deep Learningfor Recommender Systems, 2016

  • DeepFM: AFactorization-Machine based Neural Network for CTR Prediction, 2017

  • http://www.rtbchina.com/china-programmatic-ad-tech-landscape-2018-vq4.html

關於作者


吳威駿:達觀推薦演算法工程師,負責推薦演算法的研究、應用。先後在SAP、力美、百度等公司從事資料探勘和廣告系統的演算法開發,對機器學習演算法、廣告系統有深入研究。

相關文章