姓名:劉成龍 ?學(xué)號(hào):16020199016
轉(zhuǎn)載自:https://www.jiqizhixin.com/articles/111102,有刪節(jié)郑趁。
【嵌牛導(dǎo)讀】:雙十一瘋狂剁手刊驴,你知道阿里是如何跟蹤用戶興趣演化的嗎?
【嵌牛鼻子】:深度興趣進(jìn)化網(wǎng)絡(luò)(DIEN)跟蹤用戶興趣演化
【嵌牛提問(wèn)】:你知道阿里是如何跟蹤用戶興趣演化的嗎寡润?
【嵌牛正文】:
在展示廣告領(lǐng)域捆憎,CPC (cost per click) 是最常見(jiàn)的計(jì)費(fèi)方式之一。這種計(jì)費(fèi)方式下廣告主會(huì)為每一次點(diǎn)擊付費(fèi)梭纹,同時(shí)系統(tǒng)需要預(yù)估每次展現(xiàn)廣告的點(diǎn)擊率來(lái)決定展示哪一個(gè)廣告躲惰。點(diǎn)擊率預(yù)估模型的性能不僅會(huì)影響平臺(tái)的收入同時(shí)也會(huì)關(guān)系到用戶的體驗(yàn),因此點(diǎn)擊率預(yù)估是非常核心的一項(xiàng)任務(wù)变抽。展示廣告場(chǎng)景下础拨,點(diǎn)擊率預(yù)估模型的目標(biāo)是預(yù)估給定廣告、場(chǎng)景瞬沦、用戶的情況下該用戶會(huì)點(diǎn)擊該廣告的概率太伊,即
。
進(jìn)年來(lái)隨著深度學(xué)習(xí)的發(fā)展逛钻,點(diǎn)擊率預(yù)估模型也逐漸從傳統(tǒng)的 LR僚焦、FM、MLR[1] 等模型遷移到深度模型如 Wide&Deep[2]曙痘、DeepFM[3] 等芳悲。Wide&Deep、DeepFM 等模型都可以看做是一種 Embedding&MLP 的范式边坤,先通過(guò) embedding 將輸入的特征 ID 等高維的 one-hot 向量投影到一個(gè)低維稠密的 embedding 空間最后 concat 成一個(gè)向量表達(dá)名扛,再通過(guò)幾層多層感知機(jī)來(lái)根據(jù)輸入的向量表達(dá)預(yù)測(cè)點(diǎn)擊率。這些模型更多是面向了通用的問(wèn)題采用了普適的設(shè)計(jì)茧痒。但是在電商場(chǎng)景下肮韧,會(huì)更多的關(guān)注用戶個(gè)性化需求同時(shí)也有更多的數(shù)據(jù)能更好的去理解用戶,類似 Wide&Deep旺订、DeepFM 的模型就會(huì)顯得缺乏對(duì)應(yīng)用場(chǎng)景的理解弄企。
之前我們的工作深度興趣網(wǎng)絡(luò) DIN[4] (Deep Interest Net) 提出在電商場(chǎng)景下,用戶同時(shí)會(huì)存在多種多樣的興趣区拳,同時(shí)用戶在面對(duì)一個(gè)具體商品的時(shí)候只有部分和此商品相關(guān)的興趣會(huì)影響用戶的行為(點(diǎn)擊 or 不點(diǎn)擊等等)拘领。DIN 提出了一個(gè)興趣激活的模塊,用于根據(jù)被預(yù)測(cè)的商品 candidate C 激活其相關(guān)的歷史行為從而表達(dá)用戶和此商品 C 相關(guān)的部分興趣樱调。相比以往的模型需要用一個(gè)固定的向量表達(dá)用戶所有的興趣约素,DIN 用一個(gè)根據(jù)不同被預(yù)測(cè)商品變化的向量來(lái)表達(dá)用戶相關(guān)的興趣届良,這樣的設(shè)計(jì)降低了模型表達(dá)用戶興趣的難度。
然而 DIN 也有其不足圣猎。首先士葫,DIN 的設(shè)計(jì)中直接將一個(gè)具體的用戶行為(如點(diǎn)擊一個(gè)具體的商品)當(dāng)做了用戶的興趣。用戶的興趣其實(shí)是一個(gè)更為抽象的概念样漆,而某個(gè)歷史的行為只是抽象的興趣一個(gè)具體的體現(xiàn)为障。比如用戶購(gòu)買了某款連衣裙晦闰,其背后可能是因?yàn)橛|發(fā)了用戶對(duì)顏色放祟、品牌、風(fēng)格呻右、當(dāng)季相關(guān)的隱藏興趣跪妥,而用戶的興趣并不僅僅局限于這一款具體的商品。因此我們?cè)O(shè)計(jì)了一個(gè)興趣提取模塊用于從用戶具體的行為中抽取出每一個(gè)行為背后用戶隱藏的興趣声滥。
其次 DIN 缺乏對(duì)用戶興趣演化的構(gòu)建眉撵。在淘寶這樣綜合性的電商網(wǎng)站場(chǎng)景,用戶的歷史行為是很豐富多樣的落塑,隱藏在這背后的用戶興趣也是多元的纽疟。假設(shè)可以用一個(gè)興趣空間
來(lái)表達(dá)所有的興趣,某個(gè)用戶的一段歷史行為序列是
, 其中
表達(dá)假設(shè)的興趣空間內(nèi)兩種不同的興趣,
,
, 可以認(rèn)為是在不同興趣上的行為采樣點(diǎn)憾赁。由于用戶可能具有很多不同的興趣污朽,因此用戶的歷史行為可以被看做是很多個(gè)興趣的很多采樣點(diǎn)混合在一起的綜合序列。DIN 中提出用單純序列建模如 RNNs(GRU, RNN,?LSTM)來(lái)建模這樣一個(gè)綜合序列是不太合理的龙考,不同于語(yǔ)音或者文本信號(hào)有非常強(qiáng)的序列信息蟆肆,電商場(chǎng)景下用戶的行為序列信號(hào)中會(huì)有非常頻繁且隨機(jī)的跳轉(zhuǎn)噪聲。比如
中的
到
的跳轉(zhuǎn)可能是非常隨機(jī)的(比如左圖晦款,某用戶正在選窗簾突然想購(gòu)買個(gè)減肥飲品炎功;又或者右圖,選擇旅游產(chǎn)品的時(shí)間跨度會(huì)很長(zhǎng)缓溅,在此期間可能能會(huì)買些別的商品)蛇损。然而我們又明確的知道有信息隱含在這些序列當(dāng)中,比如用戶某方面興趣的演化坛怪。舉個(gè)例子淤齐,用戶的穿衣風(fēng)格可能是在逐漸變化的,這個(gè)變化的過(guò)程會(huì)在用戶的歷史行為中體現(xiàn)出來(lái)酝陈,如果能去掉歷史行為中其他的噪聲床玻,就能提取出用戶的穿衣興趣演化過(guò)程。同時(shí) ctr 預(yù)估任務(wù)中沉帮,模型只需要關(guān)注用戶是否會(huì)點(diǎn)擊給定的某個(gè)商品锈死,換句話說(shuō)贫堰,對(duì)于某一個(gè)具體的候選商品 candidate C,只需要建模和它相關(guān)的興趣演化過(guò)程待牵。形式化地其屏,假設(shè)
, 就只需要關(guān)心
這個(gè)子序列的演化。
因此缨该,興趣演化模型由兩個(gè)核心工作組成:一是興趣提取模塊用于建模隱藏在用戶具體歷史行為后的抽象用戶興趣偎行;二是建模廣告相關(guān)的用戶興趣的演化過(guò)程和趨勢(shì)的興趣演化模塊。
興趣演化模型
模型結(jié)構(gòu)
由下往上贰拿,其中廣告特征蛤袒、場(chǎng)景特征以及用戶的一般畫像特征都和大多數(shù)的做法一樣,即取完 Embedding 后直接 concat 在一起膨更,然后送入全連接層中妙真。用戶的歷史行為則在通過(guò) Embedding 層后需要先經(jīng)過(guò)興趣提取層獲取每個(gè)行為背后的興趣表達(dá)
,然后通過(guò)給定的廣告
與每個(gè)興趣態(tài)
做 attention 操作來(lái)獲得每個(gè)興趣態(tài)與該廣告
的相關(guān)程度
荚守,最后所有時(shí)刻的
和
通過(guò)興趣演化層得到用戶最終的廣告相關(guān)的興趣表達(dá)
, 這個(gè)興趣表達(dá)和其他特征的 Embedding 會(huì) concat 在一起送入全連接層中珍德。
興趣提取模塊
興趣提取模塊由一層 GRU 構(gòu)成,其輸入是用戶歷史行為序列
矗漾,每次行為是一個(gè) time step锈候。DEIN 設(shè)計(jì)希望第一層 GRU 的每一個(gè) time step 分別表達(dá)這個(gè)時(shí)刻用戶的興趣。因此在每個(gè) time step 引入了輔助 loss 來(lái)幫助刻畫每個(gè)興趣隱狀態(tài)
敞贡,即要求
,
, 其中
是
對(duì)應(yīng)的 Embedding泵琳,
是為
時(shí)刻隨機(jī)采樣的未發(fā)生的行為所對(duì)應(yīng)的 Embedding,
可以是一個(gè)簡(jiǎn)單的全連接網(wǎng)絡(luò)抑或是一個(gè)內(nèi)積運(yùn)算嫡锌。
興趣提取模塊使用 GRU 的隱狀態(tài)來(lái)表達(dá)用戶隱藏在行為背后的興趣虑稼,并且使用輔助 loss 來(lái)約束這個(gè)隱狀態(tài)的學(xué)習(xí)(即通過(guò)給定每個(gè)隱狀態(tài)以及一個(gè)行為能夠準(zhǔn)確的預(yù)測(cè)出用戶是否會(huì)發(fā)生這次行為):從興趣提取的角度來(lái)講負(fù)采樣輔助 loss 能夠約束 GRU 的每個(gè)隱狀態(tài)更好的表達(dá)用戶此刻的興趣。如果不加入這個(gè) loss势木,所有的監(jiān)督信號(hào)都源于最后的點(diǎn)擊樣本蛛倦。點(diǎn)擊率預(yù)估大多數(shù)情況下都會(huì)采用某個(gè)具體場(chǎng)景的樣本,而希望通過(guò)某個(gè)具體場(chǎng)景樣本的反饋信號(hào)能提取到用戶每一個(gè)行為狀態(tài)背后的興趣是不現(xiàn)實(shí)的啦桌,輔助 loss 的設(shè)計(jì)用一種優(yōu)雅的方式引入了用戶的全網(wǎng)行為反饋信息溯壶,同時(shí)不會(huì)引入多場(chǎng)景之間的點(diǎn)擊 bias 以及造成多場(chǎng)景耦合;從優(yōu)化的角度來(lái)講負(fù)采樣輔助 loss 可以在 gru 的長(zhǎng)序列建模中減少梯度反向傳播的難度甫男;最后負(fù)采樣輔助 loss 能提供更多語(yǔ)義信息來(lái)幫助 Embedding 層的學(xué)習(xí)且改,能夠?qū)W習(xí)到更好的 Embedding 表達(dá)。
興趣演化模塊
由于用戶的興趣具有多樣性板驳,用戶的歷史行為序列是多種興趣的采樣混合在一起的綜合序列又跛,這個(gè)序列會(huì)存在很多跳變的點(diǎn)(如背景所介紹),因此很難用一個(gè)序列建模的方式把這個(gè)綜合序列的趨勢(shì)學(xué)習(xí)好若治。好在 ctr 任務(wù)中需要關(guān)注的是給定一個(gè)廣告用戶會(huì)不會(huì)點(diǎn)擊它慨蓝,因此可以從給定廣告出發(fā)感混,只將和廣告相關(guān)的那些興趣態(tài)連成一個(gè)子序列進(jìn)行建模,這樣就能建模和廣告相關(guān)的興趣的演化趨勢(shì)了礼烈。
首先這里用廣告
與興趣提取模塊產(chǎn)生的興趣態(tài)表達(dá)序列
進(jìn)行 attention 操作弧满,得到每個(gè)興趣態(tài)與廣告
的相關(guān)程度
:
其中
代表廣告
的 Embedding,
是參數(shù)矩陣此熬。由于 attention 的方式得到的是一個(gè) soft 的相關(guān)權(quán)重序列庭呜,與廣告相關(guān)度高的興趣態(tài)其 attention score 較大,反之較小犀忱。為了能夠達(dá)到「只將和廣告相關(guān)的那些興趣態(tài)連成一個(gè)子序列進(jìn)行建哪蓟眩」這樣的效果,我們需要設(shè)計(jì)一種序列建模方式峡碉,它能利用 attention score 的大小來(lái)決定序列建模過(guò)程中 hidden state 被更新的力度近哟,即我們希望與廣告更相關(guān)的那些興趣態(tài)能夠更大力度的更新演化序列的 hidden state驮审,與廣告不相關(guān)的興趣態(tài)能夠較小力度甚至不更新演化序列的 hidden state鲫寄。我們使用一種改進(jìn)的 gru 結(jié)構(gòu)來(lái)實(shí)現(xiàn)這個(gè)目的。標(biāo)準(zhǔn)的 gru 更新公式是:
從上述公式可以看到疯淫,更新門
如果等于 0 向量那么
就能保持不更新地来,即等同于
;反之熙掺,隱藏層狀態(tài)就會(huì)受當(dāng)前時(shí)刻的輸入影響而得到更新未斑。因此直觀地,這里我們可以使用 attention score
來(lái)作用于
, 讓
的 scale 受限于興趣態(tài)與廣告的相關(guān)度币绩,即:
以此來(lái)達(dá)到「與廣告越相關(guān)的行為更新隱狀態(tài)向量越多」的目的蜡秽。
實(shí)驗(yàn)
我們?cè)?amazon 公開數(shù)據(jù)集(電子類和書籍類)和阿里媽媽精準(zhǔn)展示廣告的生產(chǎn)數(shù)據(jù)上均進(jìn)行了詳細(xì)的實(shí)驗(yàn),驗(yàn)證了興趣演化模型的有效性缆镣。用到的數(shù)據(jù)規(guī)模如下:
下面我們分別詳細(xì)的介紹各數(shù)據(jù)集的實(shí)驗(yàn)細(xì)節(jié)芽突。
公開數(shù)據(jù)集
我們使用了 amazon 公開數(shù)據(jù)集中的兩個(gè)類目的數(shù)據(jù)做實(shí)驗(yàn),電子類別和書籍類別董瞻。訓(xùn)練集和測(cè)試集按照 user 進(jìn)行隨機(jī)劃分(即測(cè)試集的 user 不會(huì)出現(xiàn)在訓(xùn)練集中)寞蚌,將 user 寫過(guò)的 review 按照時(shí)間進(jìn)行排序,使用前
次 review 來(lái)預(yù)測(cè)第
次 review 是否會(huì)發(fā)生钠糊。
我們對(duì)比了現(xiàn)在主流的一些深度學(xué)習(xí)方法挟秤,發(fā)現(xiàn)使用我們提出的興趣演化模型這個(gè)數(shù)據(jù)集上能夠取得非常明顯的優(yōu)勢(shì)。其中 BaseModel 是三層(200抄伍,80艘刚,2)全連接網(wǎng)絡(luò),其他模型都是在此基礎(chǔ)上進(jìn)行改進(jìn)截珍,全連接部分和 EmbEdding 維度(18)都是完全一致的攀甚,
和
使用的 gru 隱單元數(shù)和 attention 單元數(shù)均為 36啄糙,因此模型的參數(shù)量是相等的。所有的模型均使用 adam 優(yōu)化方法進(jìn)行訓(xùn)練云稚,初始學(xué)習(xí)率為 0.001隧饼。為了分析我們的提升來(lái)自于哪些改進(jìn)點(diǎn)我們還對(duì)模型進(jìn)行了詳細(xì)的分拆實(shí)驗(yàn)。
可以看到興趣提取模塊和興趣演化模塊兩大貢獻(xiàn)點(diǎn)在這份數(shù)據(jù)上均有顯著的提升静陈,尤其是興趣提取模塊的負(fù)采樣輔助 loss 能夠帶來(lái)大幅的提升燕雁。
生產(chǎn)數(shù)據(jù)集
生產(chǎn)數(shù)據(jù)集我們使用 49 天的廣告展示和點(diǎn)擊樣本作為訓(xùn)練集,接下來(lái)的一天作為測(cè)試集鲸拥。使用用戶前 14 天的歷史行為序列作為序列建模的輸入拐格。
生產(chǎn)數(shù)據(jù)集上,用戶的歷史行為非常的豐富刑赶,興趣點(diǎn)也比公開數(shù)據(jù)集呈現(xiàn)更多的多樣性捏浊,因此更具有挑戰(zhàn)性∽策叮可以看到在不使用輔助 loss 的情況下興趣演化模型能夠在 DIN 的基礎(chǔ)上提升 7 個(gè)千分點(diǎn)(DIN vs BaseModel + GRU + AUGRU)金踪,增加輔助 loss 后能再額外提升 5 個(gè)千分點(diǎn)。實(shí)驗(yàn)結(jié)果證明牵敷,在用戶行為豐富多樣的場(chǎng)景胡岔,本文提出的興趣演化模型能夠通過(guò)提取和捕捉到用戶的興趣而大幅的提升 ctr 預(yù)測(cè)的準(zhǔn)確性。
生產(chǎn)化
要想將興趣演化模型實(shí)際部署到任務(wù)是艱巨的枷餐,在淘寶我們每秒鐘面對(duì)的在線請(qǐng)求量都是相當(dāng)大的靶瘸,特別是雙十一這種流量高峰更是會(huì)達(dá)到一個(gè)天文數(shù)字,同時(shí)我們的在線響應(yīng)時(shí)間也有非常嚴(yán)苛的限制需要再幾毫秒內(nèi)做出響應(yīng)毛肋。為了將興趣演化模型 DIEN 全量部署上線怨咪,我們主要使用了以下的優(yōu)化手段:首先在工程實(shí)現(xiàn)上,我們對(duì)模型中的計(jì)算進(jìn)行充分的合并以減少 gpu 對(duì) kernel 的調(diào)用次數(shù)润匙;將可以并行的計(jì)算盡量的并行起來(lái)(比如 gru 的三個(gè)門可以拼在一起一次算完)诗眨;不同用戶的請(qǐng)求可以 batch 在一起充分的利用 gpu;使用 blaze 對(duì)計(jì)算進(jìn)行加速等趁桃;其次在模型本身上我們也進(jìn)行了一系列的工作來(lái)減小模型的 inference 壓力辽话,我們采用了之前在 AAAI2018 中提出的 Rocket Launching[5] 的方法讓一個(gè)小模型在訓(xùn)練過(guò)程中跟隨大模型學(xué)習(xí),最終用更小的參數(shù)量擬合到和大模型差不多的效果卫病;使用半精度壓縮模型的 Embedding?參數(shù)油啤,大大縮小模型的大小,減小在線服務(wù)的內(nèi)存壓力蟀苛,等等益咬。通過(guò)這些努力,我們將模型的 inference 延時(shí)從 38.2ms 壓縮到 5ms帜平,qps 達(dá)到 800+幽告,達(dá)到上線要求梅鹦。
我們進(jìn)行了為期一個(gè)月的在線 A/B test 對(duì)比,相比于其他模型取得了顯著的線上效果:其中 DIEN 模型在全連接的 BaseModel 上取得了 20.7% 的 CTR 提升冗锁,取得了 17.1% 的 eCPM 的提升齐唆,這在工業(yè)界尤其是淘寶精準(zhǔn)展示廣告這樣巨大的業(yè)務(wù)場(chǎng)景,是非常令人興奮的成果冻河,帶來(lái)了可觀的商業(yè)價(jià)值箍邮。目前該模型已經(jīng)支持線上全流量,服務(wù)于精準(zhǔn)廣告的在線 CTR 預(yù)估任務(wù)叨叙。