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

1 評(píng)論 5270 瀏覽 17 收藏 15 分鐘

導(dǎo)語(yǔ):特征對(duì)于機(jī)器學(xué)習(xí)很重要,整個(gè)模型發(fā)展的主旋律之一就是對(duì)有效特征及其組合的發(fā)現(xiàn)和使用。實(shí)際場(chǎng)景中影響結(jié)果的特征有很多,隨著發(fā)展業(yè)務(wù)對(duì)預(yù)估的精度要求不斷提高,模型結(jié)構(gòu)也越來(lái)越復(fù)雜。召回與排序涉及的模型如過(guò)江之鯽,不勝枚舉,本文試圖通過(guò)梳理發(fā)展歷程找出其中的演化痕跡,歡迎大家探討學(xué)習(xí)。

一、通過(guò)梳理可以發(fā)現(xiàn)有幾條主線

  • 特征的范圍:從只使用動(dòng)態(tài)交互信息的協(xié)同過(guò)濾,到引入用戶(hù)/廣告自身靜態(tài)信息(sideinfo),再到火熱的知識(shí)圖譜圖神經(jīng)網(wǎng)絡(luò),特征涵蓋的范圍不斷擴(kuò)展。動(dòng)態(tài)交互類(lèi)特征相比其他特征更為重要,模型在起始階段聚焦于主要因素,后續(xù)隨著業(yè)務(wù)發(fā)展向周邊延伸使整體覆蓋的信息更加全面,這是一種正常的演化思路。
  • 特征的使用:對(duì)特征的使用在不斷創(chuàng)新,從線性到非線性、從低階特征到高階,借助模型結(jié)構(gòu)不斷發(fā)現(xiàn)新的組合方式, 這是另一個(gè)主方向。
  • 現(xiàn)有結(jié)構(gòu)的深層次刻畫(huà):將一個(gè)點(diǎn)擴(kuò)展成一個(gè)復(fù)雜系統(tǒng),利用內(nèi)部結(jié)構(gòu)擬合真相,比如embeding把一個(gè)概念擴(kuò)展成多維向量,再?gòu)撵o態(tài)表示到結(jié)合上下文獲得動(dòng)態(tài)向量,比如attention思想將簡(jiǎn)單的一視同仁發(fā)展到根據(jù)實(shí)際情況區(qū)別對(duì)待。

在展開(kāi)之前先簡(jiǎn)要介紹下協(xié)同過(guò)濾,作為傳統(tǒng)手藝它啟發(fā)了FM、NN后續(xù)發(fā)展,有重要的歷史地位。協(xié)同過(guò)濾主要的場(chǎng)景用數(shù)據(jù)形式表達(dá):用戶(hù)對(duì)物品有個(gè)打分矩陣,其中部分值已經(jīng)填充代表用戶(hù)和物品有過(guò)交互,還有部分空缺的值代表未交互,最終任務(wù)是把這些空缺填上。

針對(duì)上面的場(chǎng)景協(xié)同過(guò)濾提出一種假設(shè):用戶(hù)對(duì)物品的分?jǐn)?shù)是用戶(hù)隱向量和物品隱向量求點(diǎn)擊積獲得的,這個(gè)假設(shè)很強(qiáng)大:把求未知分?jǐn)?shù)轉(zhuǎn)化為求二者的隱向量,學(xué)習(xí)過(guò)程比較常規(guī)利用矩陣中已有的值來(lái)訓(xùn)練向量,當(dāng)預(yù)估值足夠接近真實(shí)標(biāo)記時(shí)獲得隱向量,然后通過(guò)點(diǎn)積將空缺填滿(mǎn)。

協(xié)同過(guò)濾通過(guò)轉(zhuǎn)換建立起已知和未知的紐帶,利用已知預(yù)測(cè)去未知從邏輯上變成可能,操作雖然簡(jiǎn)單但里面包含的思想很了不起。

下面主要從特征組合這條線梳理模型脈絡(luò),實(shí)際場(chǎng)景的特征數(shù)量很多,做笛卡爾積太簡(jiǎn)單粗暴,不僅運(yùn)算量大特征有效性也無(wú)法保障,所以LR以后包括FM 、樹(shù)、圖、神經(jīng)網(wǎng)絡(luò)在內(nèi)都是借助自身結(jié)構(gòu)來(lái)獲得有效特征。

二、特征組合

1. LR

主要學(xué)習(xí)特征與標(biāo)記的線性關(guān)系是機(jī)器學(xué)習(xí)的起點(diǎn)。簡(jiǎn)單直白,各特征的影響清清楚楚,欠缺之處在于表達(dá)能力有限,不足以表征數(shù)據(jù)內(nèi)在的復(fù)雜規(guī)律和分布,容易欠擬合,如果有很強(qiáng)的專(zhuān)家知識(shí)提煉出高信息量的特征,面對(duì)各種后浪依然可以一戰(zhàn)。

2. MLR

分而治之思想很好的體現(xiàn)。通過(guò)兩階段分類(lèi)器進(jìn)行非線性擬合,先對(duì)樣本聚類(lèi)分組,然后在組內(nèi)利用線性模型預(yù)測(cè),最后加權(quán)求和,其中第一步聚類(lèi)是軟分類(lèi),算出樣本對(duì)不同類(lèi)別隸屬度作為后面求和時(shí)的權(quán)重。整個(gè)過(guò)程也可以看做綜合不同專(zhuān)家意見(jiàn)最后確定結(jié)論。

3. DT

從根到葉子節(jié)點(diǎn)的路徑可以看做帶有繼承關(guān)系的層級(jí)結(jié)構(gòu),最終的落腳點(diǎn)在葉子節(jié)點(diǎn)上。

  • 應(yīng)用場(chǎng)景1:特征組合。Facebook利用GBDT來(lái)進(jìn)行特征組合,在NN興起之前是特征組合界最靚的仔。
  • 應(yīng)用場(chǎng)景2:高效檢索。阿里在TMD論文中提出利用樹(shù)的分層結(jié)構(gòu)檢索全量候選,大幅減少計(jì)算量從而提升檢索效率,召回環(huán)節(jié)運(yùn)用復(fù)雜模型的性能問(wèn)題得到解決,功在千秋。

4. FM

二階特征組合自動(dòng)化。針對(duì)二級(jí)組合的參數(shù)提出了假設(shè):通過(guò)兩個(gè)特征隱向量的點(diǎn)積獲得參數(shù)(思路看起來(lái)是不是有點(diǎn)眼熟),解決了樣本數(shù)據(jù)稀疏時(shí)的訓(xùn)練問(wèn)題,提升了模型的泛化能力,其中隱向量就是NN中embedding后的向量表示,相比協(xié)同過(guò)濾中隱向量包含的信息,F(xiàn)M可以加入各種邊信息含義更豐富。

5. FFM

在FM的基礎(chǔ)上引入領(lǐng)域的概念,與不同領(lǐng)域的特征做組合時(shí)用不同的向量表達(dá)(f個(gè)領(lǐng)域則每個(gè)特征有f-1個(gè)向量表示),對(duì)真相刻畫(huà)的更細(xì)致,缺點(diǎn)在于參數(shù)太多(f*n*k),在高性能要求下大規(guī)模上場(chǎng)發(fā)揮的空間有限。

6. NN

通過(guò)MLP和激活函數(shù)隱式提取高階特征組合,從此機(jī)器學(xué)習(xí)邁入深度紀(jì)元。

神經(jīng)網(wǎng)絡(luò)歷史上一度被遺棄到現(xiàn)在如火如荼,其中很關(guān)鍵的一個(gè)轉(zhuǎn)折是反向傳播的提出:運(yùn)用鏈?zhǔn)椒▌t求導(dǎo)來(lái)迭代參數(shù),在數(shù)據(jù)和算力的推動(dòng)下NN重返舞臺(tái),針對(duì)NN稍微展開(kāi)聊幾個(gè)有意思的點(diǎn)。

1)雙塔結(jié)構(gòu)

用戶(hù)塔使用用戶(hù)側(cè)特征經(jīng)過(guò)多次組合獲得向量表示,廣告塔獲得廣告表示,二者在學(xué)習(xí)過(guò)程中不交互,確定表示后通過(guò)點(diǎn)積/余弦相似度計(jì)算相關(guān)度,雙塔的重點(diǎn)在于學(xué)習(xí)向量表示是召回階段的主力模型。

2)Embedding

廣告召回排序涉及很多類(lèi)別特征,針對(duì)離散化數(shù)據(jù)一般使用獨(dú)熱編碼,考慮到訓(xùn)練成本和過(guò)擬合風(fēng)險(xiǎn)進(jìn)入網(wǎng)絡(luò)前會(huì)映射為低維稠密向量,就是embedding,這里它的主要作用是降維,其優(yōu)秀之處在于獲得的向量不僅維數(shù)減少而且保留了深層語(yǔ)義信息,可以進(jìn)行表征、比較和運(yùn)算。

3)Attention

不一視同仁根據(jù)實(shí)際情況區(qū)分主次,從而進(jìn)行更細(xì)致的刻畫(huà)。

attention的關(guān)鍵點(diǎn)在于如何確定重要度,谷歌在論文中提到Query、Key和Value,計(jì)算Query和Key的相關(guān)度作為作為權(quán)重,權(quán)重表示信息的重要程度,Value對(duì)應(yīng)信息,權(quán)重越大對(duì)應(yīng)Value給與更高的重視。

attention思想自提出以來(lái)得到廣泛認(rèn)同和使用,尤其在處理用戶(hù)歷史行為方面,機(jī)器學(xué)習(xí)的主要目標(biāo)之一就是對(duì)數(shù)據(jù)進(jìn)行辨識(shí)區(qū)分,attention很好的體現(xiàn)了這一點(diǎn)。

4)Pooling

pooling體現(xiàn)的是提取和壓縮,CNN中通過(guò)pooling將多個(gè)向量壓縮成一個(gè)向量,在處理歷史行為序列時(shí)不同用戶(hù)長(zhǎng)度不同,一般也會(huì)做壓縮提煉為確定的長(zhǎng)度,pooling的方法有很多如max/sum/average等,當(dāng)然還有上面提到的attention。

延伸一下pooling背后也包含了降維/聚類(lèi)思想,如果因素太多維數(shù)太高不利于分析,需要進(jìn)一步精簡(jiǎn),化多為少需要智慧,關(guān)鍵在于簡(jiǎn)化過(guò)程中如何保持/凸顯核心信息。降維思想在很多方面都有體現(xiàn):PCA、聚類(lèi)、分桶、散列函數(shù)、embedding等,雖然使用場(chǎng)景不同但主旨思想是相通的。

監(jiān)督學(xué)習(xí)利用有標(biāo)記數(shù)據(jù)訓(xùn)練模型,訓(xùn)練數(shù)據(jù)終究有限,部分特征與標(biāo)記的關(guān)系在數(shù)據(jù)中已經(jīng)體現(xiàn)出來(lái),還有部分特征的關(guān)系沒(méi)有很好體現(xiàn)。

前面介紹的模型在處理特征組合時(shí)各有側(cè)重,要么低階要么高階,要么顯式要么隱式,谷歌在論文中指出低階和高階特征都很重要不能偏執(zhí)一方,提出混合模型用擅長(zhǎng)記憶的模型去提取已經(jīng)體現(xiàn)的,用擅長(zhǎng)擴(kuò)展泛化的模型去學(xué)習(xí)還未體現(xiàn)的,雙劍合璧威力大增。

混合模型提供了一個(gè)很好的的思路,把模型看做組件,以混合搭配的方式結(jié)合起來(lái)創(chuàng)造出需要的結(jié)構(gòu)類(lèi)似樂(lè)高積木,其中比較關(guān)鍵的點(diǎn)是對(duì)模型的選擇,每個(gè)模型有自己的屬性,組件的選取要與實(shí)際場(chǎng)景的訴求所匹配:模型擅長(zhǎng)的恰恰是場(chǎng)景所看中和需要的。

例如CNN擅長(zhǎng)在移動(dòng)窗口內(nèi)捕捉結(jié)構(gòu)信息并通過(guò)不斷加深卷積來(lái)提升抽象層級(jí),這與圖像周邊像素聚集并不斷拉長(zhǎng)距離來(lái)感知整體不謀而合。下面簡(jiǎn)單梳理下由谷歌引發(fā)的混合模型潮流。

7. wide&deep

整體模型分為兩部分,Wide部分是LR,負(fù)責(zé)顯式提取低階特征,強(qiáng)調(diào)記憶,特征組合需要人工構(gòu)建,Deep部分一般使用前饋神經(jīng)網(wǎng)絡(luò),負(fù)責(zé)隱式提取高階特征,強(qiáng)調(diào)泛化,兩個(gè)部分通過(guò)并行方式組合,低高階特征共同作用于輸出。

8. deepFM

模型整體結(jié)構(gòu)與W&D一致,區(qū)別在于Wide部分由LR替換為FM,相比LR它能自動(dòng)提取二階特征組合,規(guī)避了依賴(lài)人工的弊端,且兩部分共用embedding提升了效率,模型能抗能打是居家旅行必備之選。

9. DCN

與deepFM一樣也是在Wide部分動(dòng)手腳,用Cross Network顯式提取特征,每層都對(duì)特征交叉組合,隨著層數(shù)增加組合的階數(shù)也持續(xù)增加,網(wǎng)絡(luò)最后一層涵蓋了從一階到N+1階的特征,根據(jù)實(shí)際情況來(lái)確定層數(shù),不過(guò)既然有專(zhuān)門(mén)負(fù)責(zé)提取高階的DNN美玉在前,層數(shù)不宜太高。

10. PNN

PNN指出神經(jīng)網(wǎng)絡(luò)以或的形式進(jìn)行特征組合捕捉信息能力太差,不如以且的方式更有辨識(shí)度,所以?xún)蓚€(gè)組件模型以串行組合,在特征接入神經(jīng)網(wǎng)絡(luò)前加了一層product layer處理,該層分為兩個(gè)部分:

一部分是常規(guī)特征embedding后拼接,另一部分是進(jìn)行product后獲得交叉向量,兩部分拼接后一起送入神經(jīng)網(wǎng)絡(luò),PNN為混合模型提供了另一個(gè)組合思路,但在預(yù)測(cè)中低階特征沒(méi)有直接發(fā)揮作用,可謂有得有失。

上面的栗子可以看出演化的基本趨勢(shì)是結(jié)構(gòu)越來(lái)越復(fù)雜,復(fù)雜度增加意味著運(yùn)算時(shí)間也會(huì)隨之上揚(yáng),可實(shí)際廣告場(chǎng)景中必須在規(guī)定時(shí)間內(nèi)返回廣告,從召回到排序基本控制在幾十毫秒內(nèi):

一方面是性能的硬性限制,一方面又要提升效果,真是臣妾做不到啊,不,老板說(shuō)你能做的到,于是就做到了,是真的,勤勞勇敢的程序員們發(fā)明了知識(shí)蒸餾。

知識(shí)蒸餾的本質(zhì)是把復(fù)雜模型學(xué)到的知識(shí)遷移給簡(jiǎn)單模型,一般采用teacher-student模式,線下兩個(gè)模型聯(lián)合訓(xùn)練,正式上線時(shí)只用簡(jiǎn)單的student模型,復(fù)雜的teacher充當(dāng)導(dǎo)師的角色。

在訓(xùn)練時(shí),teacher的損失函數(shù)是常規(guī)交叉熵,student的損失函數(shù)由兩部分組成:

一部分是常規(guī)的交叉熵?fù)p失,用來(lái)學(xué)習(xí)真實(shí)標(biāo)記與預(yù)估值的差距,一部分是蒸餾損失,用來(lái)學(xué)習(xí)和teacher之間的差距,損失達(dá)到最小時(shí)teacher把自身學(xué)到的知識(shí)遷移給student完成蒸餾,既可以保證效果又能滿(mǎn)足性能限制是蒸餾的典型應(yīng)用。

另一個(gè)場(chǎng)景是阿里提到關(guān)于特征的蒸餾,論文指出在預(yù)估CVR時(shí),用戶(hù)點(diǎn)擊進(jìn)入頁(yè)面的停留時(shí)長(zhǎng)、查看評(píng)論、與商家溝通等都是影響CVR的強(qiáng)特征,可線上排序時(shí)物品還未推出去上述特征數(shù)據(jù)無(wú)法提前獲得。

但是訓(xùn)練時(shí)使用歷史數(shù)據(jù)這些特征可以拿到,所以在訓(xùn)練時(shí)也是兩個(gè)模型聯(lián)合訓(xùn)練,主要差別在于輸入特征,teacher在student特征基礎(chǔ)上增加了上述的Privileged Features,讓模型學(xué)習(xí)這些特征對(duì)結(jié)果的影響然后將其獲得的知識(shí)遷移給student,不得不感嘆思路清奇。

上面簡(jiǎn)要梳理了模型的發(fā)展,由簡(jiǎn)單到復(fù)雜體現(xiàn)了對(duì)真相刻畫(huà)的不懈追求,其中不乏智慧閃現(xiàn),精彩紛呈,模型結(jié)構(gòu)是直觀呈現(xiàn),其背后的假設(shè)蘊(yùn)含了對(duì)世界的認(rèn)知,它把已知和未知統(tǒng)一起來(lái),從此世界不再是不可知的神秘,而是可以被發(fā)現(xiàn)和認(rèn)識(shí)的運(yùn)轉(zhuǎn)規(guī)律,這是一種偉大的思想。

 

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

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

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 學(xué)習(xí)了

    回復(fù)