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

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

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

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

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

機(jī)器學(xué)習(xí)主要分為兩大類:有監(jiān)督和無監(jiān)督。

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

機(jī)器學(xué)習(xí)包含以下幾個(gè)主要概念:

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

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

1)問題建模

把實(shí)際場景中遇到的問題轉(zhuǎn)化為機(jī)器學(xué)習(xí)可以預(yù)估的問題。

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

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

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

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

3)特征提取和選擇

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

4)模型選擇

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

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

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

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

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

6)訓(xùn)練/優(yōu)化

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

7)性能評估

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

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

8)線上AB測試

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

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

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

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

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

1. 獨(dú)立同分布

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

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

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

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

2. 信息增益

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

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

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

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

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

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

二、特征提取與選擇

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

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

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

1. 特征提取

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

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

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

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

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

主要包括以下方法:

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

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

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

截?cái)啵哼^長的精度對模型沒有太大幫助反而會形成噪音,適當(dāng)?shù)倪M(jìn)行截?cái)嗫梢栽鰪?qiáng)魯棒性。

缺失值處理:實(shí)際數(shù)據(jù)會因?yàn)楦鞣N原因出現(xiàn)值缺失。

主要有兩種處理方式:

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

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

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

2)類別特征

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

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

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

2. 特征選擇

特征千千萬,不是每個(gè)都有效,精簡掉冗余、不相關(guān)的特征選出重要的子集是很有價(jià)值的操作,選取時(shí)主要考慮兩個(gè)方面:

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

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

具體選擇時(shí)主要有以下幾種方法:

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

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

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

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

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

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

 

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

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

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