廣告系列:召回與排序(二)

0 評論 10785 瀏覽 23 收藏 21 分鐘

編輯導語:在上一篇文章中,作者介紹了關于召回排序的場景特征、異同及目標的一致性問題,《廣告系列:召回與排序》;本文作者將繼續(xù)分享關于召回排序時涉及的一些機器學習知識,我們一起來了解一下。

召回排序需要在大海撈針選出來合適的候選,最簡單的挖掘方法是基于策略規(guī)則的;如匹配用戶標簽和廣告標簽、匹配上下文關鍵詞和廣告關鍵詞一致就召回,規(guī)則簡單直白解釋性好,調(diào)整起來速度也快。

但隨著業(yè)務發(fā)展場景復雜化,新規(guī)則的持續(xù)疊加會導致策略間的沖突和維護成本不斷上升,所以此時機器學習閃亮登場。

機器學習主要分為兩大類:有監(jiān)督和無監(jiān)督。

  • 有監(jiān)督學習:訓練數(shù)據(jù)有標記信息,通過訓練數(shù)據(jù)希望獲得到從輸入空間到輸出空間的映射關系,主要代表有分類和回歸,分類又分為二分類與多分類;召回排序場景下主要是利用有監(jiān)督學習,即召回排序的結(jié)果通過用戶行為來標記是否被點擊和轉(zhuǎn)化。
  • 無監(jiān)督學習:沒有標記數(shù)據(jù),只有輸入空間研究輸入空間各特征之間的關系,主要的代表有聚類和降維;無監(jiān)督學習利用海量數(shù)據(jù)預訓練為有監(jiān)督學習奠定基礎,加快了收斂速度并提升了效果,下面圍繞有監(jiān)督學習展開。

機器學習包含以下幾個主要概念:

  • 輸入空間:也叫屬性空間,將影響結(jié)果的因素通過處理提取成特征,所有特征共同組成屬性空間。
  • 輸出空間:也叫標記空間,樣本的真實結(jié)果就是標記,所有標記組成標記空間。
  • 真相:數(shù)據(jù)中實際蘊含的內(nèi)在規(guī)律和分布結(jié)構(gòu)。
  • 假設空間:針對真相提出了某種假設,用假設來擬合真相,所有假設構(gòu)成假設空間,機器學習的過程也是在假設空間中搜索的過程。

機器學習是根據(jù)已知(數(shù)據(jù))去訓練假設模型,訓練就是不斷優(yōu)化模型的過程,當損失函數(shù)最小時對真相的擬合達到最優(yōu),此時去預估結(jié)果。大概流程如下所示:

1)問題建模

把實際場景中遇到的問題轉(zhuǎn)化為機器學習可以預估的問題。

召回轉(zhuǎn)換為大型多分類問題:將廣告池中每個候選都當做一個分類,基于當前用戶/場景為用戶在全量廣告中預估下一次展示的類別,通過softmax輸出的相關度來判斷召回。

排序轉(zhuǎn)換為二分類問題:廣告排序以ecpm為標準(ecpm=1000*pctr*pcvr*bid),需要精準預估點擊率/轉(zhuǎn)化率,通過sigmoid輸出點擊率/轉(zhuǎn)化率的預估值(廣告和推薦在預估pctr/pcvr時也有區(qū)別:廣告需要精準的值用以排序/計費,推薦更多的需要相對順序:相關候選的值大于不相關的值,損失函數(shù)構(gòu)造一般用pairwise方法)。

2)采樣訓練數(shù)據(jù)

樣本代表總體訓練模型,所以需要盡可能做到無偏,理想狀態(tài)二者是服從同一個分布,其中負樣本的選取很關鍵,尤其是召回環(huán)節(jié)需要結(jié)合實際場景。

3)特征提取和選擇

特征工程流程上介于原始數(shù)據(jù)和模型之間,負責從原始數(shù)據(jù)中提取有效特征供模型使用,傳統(tǒng)的機器學習對特征工程依賴度很高,構(gòu)造一個有效特征對模型性能提升有很大幫助;優(yōu)秀的特征工程即使使用簡單模型也能達到很好的性能,當然需要很強的專業(yè)知識,深度學習的興起在一定程度上承擔了部分特征組合的工作。

4)模型選擇

選擇模型從某種意義上確定了假設的范圍,反映了某種偏好。選用LR認為特征與標記之間的關系相對簡單可以直接通過特征工程獲得影響結(jié)果的因素,選用DNN則是高階特征組合對結(jié)果產(chǎn)生主要影響。

選擇模型需要經(jīng)驗,同時熟悉模型特性和預估問題的場景,太簡單容易導致欠擬合,不足以表征真相,偏差高;太復雜容易導致過擬合,模型學習了樣本特征當做全體特征,方差高,針對前者可以增加模型復雜度來解決,針對后者可以借助增加樣本量級或引入正則項等方法緩解影響。

目標函數(shù)的設置也很關鍵,需要緊密結(jié)合實際場景中的業(yè)務指標,使二者之間盡量正相關,模型優(yōu)化才能給線上業(yè)務帶來切實的提升。

5)構(gòu)造損失函數(shù)

模型的預估值與真實標記之間必然存在偏差,通過損失函數(shù)來獲得參數(shù)優(yōu)化的方向;回歸問題的損失函數(shù)多采用均方誤差,分類問題的損失函數(shù)多采用交叉熵。

6)訓練/優(yōu)化

隨機梯度下降是模型訓練中常用的方法,在最小化損失函數(shù)L(f,y)過程中,通過對函數(shù)求偏導結(jié)合步長不斷修正參數(shù)的值,當損失函數(shù)達到最小或者迭代次數(shù)達到閾值時停止訓練,認為此時假設與真相足夠貼近,將參數(shù)值帶入目標函數(shù)進行測試。

7)性能評估

通過訓練后需要在測試集驗證模型性能。測試集代表了新樣本,并假設與實際場景中樣本服從同一個分布,所以用測試誤差來代表泛化誤差。

一般通過留出法、交叉驗證法或自助法等來獲得測試集;實際評價時通過混淆矩陣計算獲得查準率和查全率,繪制P-R曲線計算曲線下方面積或者F1來比較模型性能,也可以通過ROC曲線計算AUC來判斷,面積更大者表示性能更優(yōu),代表模型處理新樣本的泛化能力更強。

8)線上AB測試

線下測試通過后模型上線,前面說到訓練數(shù)據(jù)與線上數(shù)據(jù)盡可能接近,但避免不了有偏差,為減少波動在模型大規(guī)模鋪量前需要AB測試;借助實驗平臺可以小流量試用新模型,線上指標如ECPM/點擊率/轉(zhuǎn)化率等超過線上版本后開始大規(guī)模放量運行。

上面簡略概述了使用機器學習預估問題的流程,從問題建模到最終線上測試涵蓋多個方面,召回與排序的技術實現(xiàn)也是個發(fā)展的過程從策略規(guī)則到機器學習;由簡單到復雜,將一個不可再分的點擴展成一個系統(tǒng),借助內(nèi)部復雜的結(jié)構(gòu)來刻畫真相,這既是業(yè)務的實際需要也是技術發(fā)展的潮流。

前面簡要介紹了召回與排序時使用機器學習的整體流程,下面主要介紹對樣本數(shù)據(jù)和特征提取的理解,其中參考了美團機器學習實踐,感興趣的同學可以自行搜索。

一、樣本數(shù)據(jù)

樣本選取是機器學習的前置環(huán)節(jié),指從全量數(shù)據(jù)中選出一部分作為樣本來訓練模型,采樣的比例和方法很重要;進行采樣主要出于計算效率和有效信息量的考慮,樣本集細分為訓練集、驗證集和測試集,其中訓練集用于訓練模型,驗證集用來學習超參,測試集用來測試模型的泛化能力。

1. 獨立同分布

樣本數(shù)據(jù)的質(zhì)量很大程度上決定了模型的性能,好的樣本集應該具備無偏性和低方差,即樣本數(shù)據(jù)和全量數(shù)據(jù)服從獨立同分布,如果樣本數(shù)據(jù)分布與線上實際業(yè)務的數(shù)據(jù)分布差別很大,即用擬合A分布的模型去預測B分布,效果必然會受影響。

具體到召回與排序環(huán)節(jié)上,前面說過二者之間的數(shù)據(jù)環(huán)境差別很大,需要分別處理,一般樣本是通過歷史日志來獲取,記錄主要集中在競價成功及曝光的樣本上,對排序一般是滿足的,正樣本:曝光且點擊,負樣本:曝光未點擊。

對召回就有點問題,不管曝光的樣本是否被點擊,都是通過線上召回及排序的篩選后勝出的,意味著相關性已經(jīng)超過了閾值,與全量的候選庫相比這些樣本已經(jīng)非常優(yōu)秀,二者的分布情況有很大差異,不能只用這部分數(shù)據(jù)去訓練。

百度在莫比烏斯的論文中提出通過找出日志中廣告候選集合和query集合,然后做笛卡爾集來模擬負樣本,在對齊訓練數(shù)據(jù)和線上數(shù)據(jù)上提供了一種很好的思路。

2. 信息增益

相比全量廣告庫推出去曝光的廣告都是天之驕子,關于有標記數(shù)據(jù)總是不夠的,尤其對冷啟動,想要預估準確需要通過一些方式來進行信息增益;比如利用靜態(tài)輔助類信息、知識圖譜、多任務訓練共享參數(shù)或無監(jiān)督先預訓練然后微調(diào)等;其中知識圖譜通過關系網(wǎng)構(gòu)建當前物品和周邊的關系,在思路上是sideinfo的擴展,對召回環(huán)節(jié)的幫助較大。

預訓練在數(shù)據(jù)稀疏時可以幫助提升效果,且讓模型有個較高的起點,加快其收斂速度,在embedding時應用比較廣泛;多任務訓練是利用任務間的相關性,通過共享底層參數(shù)提升效果降低過擬合風險;目前多數(shù)聚焦在輸入(feature)共享方面,阿里在ESMM論文中通過實際業(yè)務場景分析,提出點擊率和轉(zhuǎn)化率聯(lián)合訓練的思路巧妙將輸出(label)間建立了關系,對多任務學習提供了一個很好的思路。

下面稍微展開說下冷啟動:

數(shù)據(jù)從產(chǎn)生方式來講可分為靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù),我們說的冷啟動一般是缺乏動態(tài)交互類數(shù)據(jù),靜態(tài)屬性類數(shù)據(jù)是有的,解決的整體思路:找到相似的物品/用戶,用相似物品的數(shù)據(jù)來替代,運行一段時間數(shù)據(jù)量達到閾值后啟用自身數(shù)據(jù),關鍵點是怎么定義和使用相似。

粗糙一些使用全局均值或者所屬行業(yè)均值,細一些用模型算相關度,可以用聚類中心值也可以用相關度超過閾值物品的加權平均(權重用相關度歸一化后的值)。

為了在切換前后平滑過渡,用替代數(shù)據(jù)時可以同時用自身數(shù)據(jù),保持二者權重和為1,隨著數(shù)據(jù)累積替代數(shù)據(jù)權重持續(xù)下降,自身數(shù)據(jù)重要性持續(xù)上升;到閾值時順利切換,在冷啟動期間一般平臺為鼓勵新廣告會乘傾斜系數(shù)來幫助其拿量。

二、特征提取與選擇

特征提取與選擇從流程上處于數(shù)據(jù)和模型中間,主要負責從原始數(shù)據(jù)空間中提取有效特征到特征空間供模型學習使用。

舉個簡單的栗子,比如年齡分布0-100,原始數(shù)據(jù)是連續(xù)的,但與標記之間的關系不是線性的,對廣告點擊的顯著區(qū)別反映在不同年齡段的人如少年/青年/中年/老年,同一年齡段的差別很?。煌ㄟ^離散化將年齡分桶到不同年齡段后輸入模型,有助于模型學習特征與標記之間的關系,一個優(yōu)質(zhì)的特征工程使用簡單模型也有很好的性能。

特征工程主要分為兩大部分:特征提取和特征選擇。

1. 特征提取

特征按照類型主要有類別特征、數(shù)值特征、空間特征、時間特征和文本特征等,其中文本特征處理需要借助NLP方法如詞袋、TF-IDF及word2vec、余弦相似度等。

下面主要介紹類別和數(shù)值,這兩類也是最常見的特征:

1)數(shù)值特征:分為離散型(可數(shù))、連續(xù)型(不可數(shù));例如廣告的的曝光量、點擊量、點擊率、瀏覽時長等。

常用的數(shù)值特征的處理方法如下:

無量綱化:不同特征取值范圍差別很大,平滑函數(shù)對輸入的尺度敏感,輸入范圍很大程度會影響輸出范圍,進而影響性能,因此無量綱化將輸出控制在期望范圍內(nèi)。

主要包括以下方法:

  • 標準化:針對服從正態(tài)分布的特征,使用標準化處理后得到均值為0,標準差為1的標準正態(tài)分布。
  • 區(qū)間放縮:通過放縮:X=(X-min)/(max-min),將范圍映射到[0,1]。

連續(xù)特征離散化:特征與標記間的關系不是線性的,通過離散化處理幫助模型更好的學習,主要有分桶和二值化。

  • 分桶:將連續(xù)數(shù)值根據(jù)一定規(guī)則分配到不同桶并對桶編碼,分桶規(guī)則包括:等距分桶(適合分布均勻)、等頻分桶(包含數(shù)據(jù)的數(shù)量相同)和模型分桶(聚類)。
  • 二值化:設定一個閾值,將大于閾值記為1小于記為0,二值化可以看做是分桶的特殊情況。

截斷:過長的精度對模型沒有太大幫助反而會形成噪音,適當?shù)倪M行截斷可以增強魯棒性。

缺失值處理:實際數(shù)據(jù)會因為各種原因出現(xiàn)值缺失。

主要有兩種處理方式:

  • 按照某種規(guī)則填補,取均值或者中位數(shù);
  • 把缺失值當做特征輸入模型供其學習。

對數(shù)/指數(shù)變換:利用對數(shù)指數(shù)函數(shù)的良好性質(zhì)(對大數(shù)值的范圍進行壓縮,小數(shù)值的范圍進行擴展)對數(shù)據(jù)做轉(zhuǎn)換。

特征組合:不同特征進行組合獲得新信息,一般隨著組合階數(shù)增長新特征蘊含的信息量也會增加,構(gòu)造復雜特征+簡單模型也是個很好的思路,高階特征的使用在一定程度上能夠簡化模型,當然人工構(gòu)造需要很強的專家知識,利用模型是大勢所趨。

2)類別特征

也叫定性特征,如廣告中涉及的用戶ID、性別、常駐城市、學歷,或者廣告ID、分類、標簽等,這些因素通過編碼轉(zhuǎn)為數(shù)值表示后喂入模型,編碼模式包括以下幾種:自然數(shù)編碼、獨熱編碼、分層編碼、散列編碼等。

其中散列編碼和獨熱編碼運用的更廣泛,使用獨熱編碼時如果該特征下有N個取值則生成N維向量,其中只有一個1其余全是0會導致稀疏,所以輸入模型時一般會通過embedding轉(zhuǎn)為低維稠密向量。

當數(shù)據(jù)量很大時也會通過散列編碼將無界數(shù)值映射到有限的范圍內(nèi),散列編碼從某種意義上講是一種聚類,運用散列函數(shù)將多個輸入映射為一個類別,embedding相比之下屬于一種軟分類。

2. 特征選擇

特征千千萬,不是每個都有效,精簡掉冗余、不相關的特征選出重要的子集是很有價值的操作,選取時主要考慮兩個方面:

1)特征的穩(wěn)定性,如果方差小于閾值說明該特征相對穩(wěn)定,不會對結(jié)果太大影響;

2)對結(jié)果的影響程度,如果自變量大幅變動對輸出的影響甚微那么表明相關性很小。

具體選擇時主要有以下幾種方法:

  • 過濾:特征過濾不需要依賴機器學習算法,主要通過方差、互信息、假設檢驗等對特征排序,過濾掉相關性低的變量。
  • 封裝:封裝使用機器學習算法對特征子集的效果進行評估,用同一個模型對不同的子集打分,找出分值最高的子集,需要反復試驗成本較高。
  • 嵌入:將特征選擇嵌入模型當做模型訓練的一部分,如利用樹結(jié)構(gòu)或者LI正則項來精簡特征是使用最廣泛的方法。

特征提取和選擇有共性的方法和處理技巧,同時特征工程也是建立在深入理解業(yè)務邏輯的基礎上,與業(yè)務領域強相關,具體到廣告特征主要分為幾個領域:用戶U(統(tǒng)計類特征、歷史行為、興趣)、廣告A(創(chuàng)意多模態(tài)內(nèi)容、行業(yè)分類、標簽、所屬廣告主)、上下文C(訪問環(huán)境、具體場景、內(nèi)容)、query(檢索詞);其中用戶的歷史行為涵蓋了大量隱藏信息,在眾多特征中對最終結(jié)果影響度更高,需要更細致的設計處理。

行為是興趣的具體表現(xiàn),興趣是行為的抽象提煉,興趣相對長期穩(wěn)定,短期行為更多體現(xiàn)了遷移演化;阿里在DIEN論文里通過歷史行為序列來生成用戶興趣,之后利用attention思想計算與當前候選廣告的相關度,最終動態(tài)生成用戶的興趣向量與其他特征拼接輸入模型,該方法為處理歷史行為特征提供了一個很好的思路。

所有特征構(gòu)成特征空間,數(shù)量龐大通過窮舉效率太低,一種有效的思路:提取一些相互獨立的特征作為基本特征,定義一套組合規(guī)則,用基本特征+組合規(guī)則來表示空間內(nèi)所有特征;其中對組合規(guī)則的嘗試人力有時盡,借助模型的結(jié)構(gòu)來提取逐漸成為主流,從FM、GBDT到DNN。

下節(jié)重點介紹在召回排序時涉及的模型。

受限于個人認知與理解難免管窺蠡測,有紕漏的地方歡迎探討指正。

 

本文由 @知乎-莫菲克 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!