赵鑫:强化学习在京东广告序列推荐中的应用
互聯(lián)網(wǎng)推薦廣告的排序,關(guān)鍵在于對(duì)流量價(jià)值的預(yù)估,其中最重要的一部分是對(duì)點(diǎn)擊率的預(yù)估。
為了提高廣告的變現(xiàn)效率,核心的問題是如何提高廣告的預(yù)估精度。同一個(gè)廣告,在上下文不一樣的情況下,點(diǎn)擊率是不同的,點(diǎn)擊率不只是受用戶和廣告的影響,還受上下文的影響,所以如果只是從召回到粗排再到精排做一個(gè)pointwise的預(yù)估,對(duì)于廣告的CTR預(yù)估是不準(zhǔn)的,需要對(duì)整個(gè)廣告序列整體考量。
本文將分享強(qiáng)化學(xué)習(xí)在京東廣告序列推薦中的應(yīng)用,喜歡本文記得收藏、關(guān)注、點(diǎn)贊。完整版PPT,文末獲取。
本文的介紹將圍繞下面四點(diǎn)展開:
-
推薦廣告排序技術(shù)選型介紹
-
Context-aware CTR重預(yù)估
-
基于強(qiáng)化學(xué)習(xí)的序列優(yōu)化
-
會(huì)話級(jí)別廣告拍賣機(jī)制優(yōu)化
01
推薦廣告排序現(xiàn)狀與技術(shù)選型
為了提高變現(xiàn)效率,我們的技術(shù)演進(jìn)路線是從最初的對(duì)單物料的排序優(yōu)化,到請(qǐng)求級(jí)別進(jìn)行序列的整體優(yōu)化,最后是會(huì)話級(jí)別的廣告拍賣機(jī)制優(yōu)化。其中請(qǐng)求級(jí)別的序列整體優(yōu)化,經(jīng)歷了從前向貪心搜索到序列生成和評(píng)估的演進(jìn)過程。
對(duì)序列進(jìn)行優(yōu)化,就是要對(duì)候選集的排列空間進(jìn)行優(yōu)化。理想的狀態(tài)下是對(duì)候選集做全排列,用全局的序列評(píng)估模型,把所有的排列方式都評(píng)估出一個(gè)打分,選出全局最優(yōu)序列。但這種方式難以實(shí)現(xiàn),因?yàn)樾蛄械慕M合空間是爆炸的,線上耗時(shí)高導(dǎo)致框架無法落地,所以考慮如下兩種思路。
第一種是做序列的前向貪心搜索,不考慮序列的整體優(yōu)化,每一次只是根據(jù)上一個(gè)item選擇了什么,把它作為上文信息,然后貪心的逐個(gè)選取當(dāng)前位置最有價(jià)值的一個(gè)物料進(jìn)行排序。可以利用類似beam search的貪心搜索。這種前向貪心建模方式的缺點(diǎn)在于,決策過程和請(qǐng)求模型的過程是分開的,每做一次決策,就需要請(qǐng)求一次模型,線上就會(huì)反復(fù)的進(jìn)行模型的調(diào)用,時(shí)間開銷大。
第二種優(yōu)化的思路,是對(duì)整個(gè)候選集的全排列做篩選,篩選出一些很有可能成為最終比較優(yōu)的候選序列集合。候選序列集合做一個(gè)序列的全局評(píng)估,選出一個(gè)近似最優(yōu)的序列。第一步,如何篩選?可以使用啟發(fā)式的人工規(guī)則,或者基于業(yè)務(wù)邏輯的啟發(fā)式生成方法,獲取候選序列集合。進(jìn)一步可以做一個(gè)模型化的序列生成。優(yōu)勢(shì)在于,序列的全局評(píng)估模型可以看到上下文信息,對(duì)CTR的預(yù)估更準(zhǔn)確。可以先生成序列,再對(duì)所有序列一次性預(yù)估,控制線上耗時(shí)。如下圖表,對(duì)上面優(yōu)化方案的耗時(shí)進(jìn)行了對(duì)比。
第一種是用上文作為context或者和會(huì)話里面的其他序列的上文都作為context,逐個(gè)的貪心來選取,這樣模型的耗時(shí)是序列長度L乘以候選集的大小N。第二種用context DNN + beam search的方法,保存貪心搜索過程中的top 部分,因?yàn)樘剿髁祟~外的分支,所以耗時(shí)變成W倍,如果W選擇足夠大,可以接近理想的優(yōu)化能力。第三種是把所有的排列都枚舉,然后加上一個(gè)序列評(píng)估,這是理想的方式,但復(fù)雜度極高。第四種是序列生成加上評(píng)估選優(yōu),近似全局搜索,只進(jìn)行一次模型調(diào)用,優(yōu)化能力比較強(qiáng),兼顧了線上性能和優(yōu)化能力。
02
Context-aware CTR重預(yù)估
Context-aware預(yù)估,第一步就是貪心的前向搜索,如圖,每放一個(gè)sku,就把它當(dāng)成上文,再重新預(yù)估一次,再選第二個(gè)、第三個(gè)sku。這樣訓(xùn)練Context-aware CTR模型,也是一個(gè)只有上文信息的模型,跟普通CTR模型沒有太大差別。
03
基于強(qiáng)化學(xué)習(xí)的序列優(yōu)化
第二個(gè)思路,是序列生成加序列選優(yōu)的集成框架。有兩個(gè)問題需要解決:
-
第一個(gè)問題是如何對(duì)序列的樣本進(jìn)行選優(yōu)和正確的評(píng)估,即如何得到序列評(píng)估模型。沒有上線序列的優(yōu)化框架之前,整個(gè)線上排序系統(tǒng)都是一個(gè)ranking base的排序系統(tǒng),所有的序列的組成都是按照廣告的Q值得分排序的。如果用這樣的訓(xùn)練樣本,模型無法感知順序打亂之后會(huì)怎么樣。
-
第二個(gè)問題是序列生成是怎么樣的,我們只能知道某一些情況可能是好的序列,但是到底什么是最好的序列,無從判斷。
因此設(shè)計(jì)了兩步上線流程。先解決相對(duì)比較簡(jiǎn)單的序列評(píng)估問題。Ranking base的序列和打亂順序的序列是有差別的。但基于Ranking方式生成的樣本訓(xùn)練對(duì)的模型雖然是有偏的,我們也認(rèn)為是可以接受的。先用Ranking Base方法生成的樣本去徐蓮序列評(píng)估模型,然后在線上使用這個(gè)模型對(duì)樣本做小流量序列選優(yōu),配合隨機(jī)的策略和啟發(fā)式序列生成策略,這樣線上的一部分流量生成一些打亂順序的樣本,這樣的小流量的樣本落盤下來,再去retrain序列評(píng)估模型。迭代一段時(shí)間之后,就把隨機(jī)策略疊加啟發(fā)式策略,跟序列評(píng)估模型配合上線。
第二步是解決如何讓Actor自學(xué)習(xí)的問題,目標(biāo)是讓生成模型傾向于生成出一些更好的序列被評(píng)估模型選出來。序列生成模型要做的是模擬評(píng)估模型選取的序列的樣子。第二階段主要是上線了序列生成模型和蒙特卡洛采樣序列生成算法。
序列生成和評(píng)估模型結(jié)構(gòu)設(shè)計(jì)如上圖右半部分,底層是特征抽取,往上是PointDNN結(jié)構(gòu),Point DNN是對(duì)每一個(gè)item單獨(dú)抽取特征,把這些稀疏的embedding轉(zhuǎn)化為dense feature,得到綠色的item的特征向量,然后在序列評(píng)估模型里,把序列對(duì)應(yīng)的向量抽取出來組成一個(gè)序列,上面進(jìn)行序列的attention操作,將最相關(guān)的特征高亮出來。最后,輸出預(yù)估序列里每一個(gè)item的預(yù)估點(diǎn)擊率,item的預(yù)估點(diǎn)擊率會(huì)和它的出價(jià)、多樣性等業(yè)務(wù)指標(biāo)融合成一個(gè)最終的得分。
序列生成模型建模過程如下。首先把整個(gè)候選集的集合作為生成模型的輸入,把所有候選集中item的特征做max pooling處理后的特征向量作為候選集合的特征向量,去和每一個(gè)item的特征向量拼接起來,得到一個(gè)新的特征。新的特征去經(jīng)過幾層DNN,最后得到一個(gè)表。如圖舉例,假設(shè)一共有五個(gè)item,序列長度是四。如上圖左上的表格,按行來看表示的是每一個(gè)item出現(xiàn)在當(dāng)前這個(gè)位置的概率,按列來看表示的是item出現(xiàn)在不同位置的概率。模型訓(xùn)練使用2D softmax的交叉熵loss。如果一個(gè)item在候選集里被選中了,并且是出現(xiàn)在第一個(gè)位置,它的第一個(gè)位置的label就是1。如圖,SKU1在第一個(gè)位置label是1,SKU2在第三個(gè)位置label是1。訓(xùn)練完成的模型在線上預(yù)測(cè)過程中預(yù)測(cè)采樣頻率,用一個(gè)受控的temperature參數(shù)來控制這個(gè)采樣頻率。按照這個(gè)表去生成序列,逐個(gè)位置去采樣多次生成多個(gè)序列。舉例來說,生成第一個(gè)位置需要的SKU,類似扔一個(gè)骰子,如果小于0.9,SKU1被選中,如果是0.9到1,SKU2被選中。第二個(gè)位置去除第一個(gè)位置已經(jīng)出現(xiàn)過的SKU,進(jìn)行重新歸一化,再采樣一次,這樣可以生成多個(gè)候選序列。再把這些候選序列與啟發(fā)式的或者隨機(jī)生成的序列融合起來,變成一個(gè)序列的候選集,統(tǒng)一交給序列的評(píng)估模型去評(píng)估,選出一個(gè)最好的序列。
強(qiáng)化學(xué)習(xí)解決的是在策略空間做探索以得到新的更好的策略的問題。序列生成和序列評(píng)估是互相迭代的,因?yàn)槿绻蛄猩刹皇且粋€(gè)好的模型,序列評(píng)估就只能在一個(gè)差的候選序列集合里面選擇。如果切換其他的模式上進(jìn)行探索,序列評(píng)估模型可能會(huì)在新的模式下不準(zhǔn),有可能把錯(cuò)誤的東西推給用戶。序列評(píng)估模型在探索模式下變好了,序列生成模型就會(huì)學(xué)習(xí)到新的生成策略,會(huì)在一個(gè)序列評(píng)估模型不準(zhǔn)的地方去學(xué)習(xí),直到序列評(píng)估模型模型變準(zhǔn)為止。所以這是一個(gè)交互迭代的過程。模型上線過程有三個(gè)指標(biāo)用來監(jiān)控:
-
給定一個(gè)位置,猜item被選擇的準(zhǔn)確率;
-
給定一個(gè)商品,猜能不能出現(xiàn)在這個(gè)to gateway 某一位置的準(zhǔn)確率,這對(duì)應(yīng)于圖表里邊的按行求accuracy和按列求accuracy;
-
模型化的序列生成策略在線上勝出的比例。類似召回評(píng)估里,某一路召回能夠在下游出現(xiàn)的比例。
線上監(jiān)控可以看到,按天來觀察,這些指標(biāo)都在上漲,可以讓生成和評(píng)估模型變得越來越準(zhǔn)。這個(gè)算法有兩個(gè)生效位置,一是推薦廣告內(nèi)部的重排,二是廣告和自然推薦的混排。
04
會(huì)話級(jí)別廣告拍賣機(jī)制優(yōu)化
基于序列推薦和評(píng)估選優(yōu)的機(jī)制,可以解決通用推薦問題,但是在廣告業(yè)務(wù)里有一定的問題。受廣告競(jìng)價(jià)機(jī)制的限制,我們只能讓廣告先計(jì)費(fèi),然后再重排。廣告主允許平臺(tái)收此費(fèi)用,應(yīng)該是讓sku展現(xiàn)在當(dāng)前這個(gè)位置需要花的錢,確定了費(fèi)用之后又改變位置不太合理。計(jì)費(fèi)機(jī)制既不滿足廣義二價(jià)計(jì)費(fèi),又不激勵(lì)相容。而且,序列生成加評(píng)估選優(yōu)的機(jī)制,只能量化請(qǐng)求內(nèi)的若干個(gè)SKU排列的價(jià)值,沒有辦法量化會(huì)話內(nèi)部的長期價(jià)值,所以我們需要實(shí)現(xiàn)會(huì)話級(jí)別的廣告拍賣機(jī)制,優(yōu)化此問題。
拍賣機(jī)制有幾個(gè)設(shè)計(jì)原則:
-
激勵(lì)相容,鼓勵(lì)競(jìng)價(jià)者說真話,要求它能夠展現(xiàn)的概率和它的bid是單調(diào)的;
-
對(duì)平臺(tái)的這些多目標(biāo)以及平臺(tái)的長期價(jià)值敏感;
-
排序和計(jì)費(fèi)機(jī)制比較容易實(shí)現(xiàn)。
京東廣告的精排公式如圖所示。我們希望將目標(biāo)優(yōu)化成learning base的指標(biāo),一方面它和Bid成正比,一方面它和平臺(tái)融合的learning base的綜合score成正比。這樣用一個(gè)learning base的融合廣告分可以做二價(jià)計(jì)費(fèi)。這個(gè)算法和前文提到的序列評(píng)估選優(yōu)的算法框架不同點(diǎn)在于它是一個(gè)單actor強(qiáng)化學(xué)習(xí)算法。候選集先輸入一個(gè)候選集編碼器,然后被模型評(píng)分。針對(duì)多個(gè)廣告坑位的拍賣問題,這里做了一些思考,因?yàn)橥扑]廣告本來就是一個(gè)多廣告坑位的一個(gè)拍賣問題。我們使用分位次拍賣的方式解決多坑位的拍賣問題。按照分位次拍賣和計(jì)費(fèi)的結(jié)果,得出一個(gè)新的勝出廣告序列,然后把這個(gè)序列展現(xiàn)出來,讓用戶做出一些反饋,用戶的反饋可以通過計(jì)算會(huì)話內(nèi)部的長期收益,用policy gradient的方式來反饋到評(píng)分模型里。
這里有2個(gè)難點(diǎn):
-
第一個(gè)難點(diǎn)是,在序列評(píng)估加選優(yōu)的框架上面迭代新的會(huì)話級(jí)別廣告拍賣機(jī)制,從推薦效率的角度上,單actor模型建模能力和生成模型加評(píng)估模型組合的全系統(tǒng)相比很難打平。
-
第二個(gè)難點(diǎn)是,如何融合業(yè)務(wù)先驗(yàn)知識(shí)。
解決第一個(gè)難點(diǎn),這里的方案把a(bǔ)ctor做成更大的模型,使用CV領(lǐng)域的模型mixer MLP,它很適合集合建模。第二個(gè)難點(diǎn)的解決方案是,把業(yè)務(wù)reward以某種方式融合到loss function里。分位次的序列采樣和分位次的廣告拍賣,有非常大的共同之處。分位次序列采樣是對(duì)每一個(gè)位次有一個(gè)采樣概率,分位次的廣告拍賣,是對(duì)每個(gè)位次給出每一個(gè)競(jìng)爭(zhēng)商品的數(shù)值得分。
這里類似序列生成模型的結(jié)構(gòu),只是它的backbone網(wǎng)絡(luò)變成更大更復(fù)雜的mixer MLP,模型的輸出是一個(gè)像右邊藍(lán)色的表格,對(duì)于每一個(gè)SKU在每一個(gè)位置有一個(gè)得分,模型訓(xùn)練的reward融合了當(dāng)前廣告收入,遠(yuǎn)期廣告收入,推薦的多樣性,以及所有要考慮的業(yè)務(wù)指標(biāo)。廣告拍賣是一個(gè)二價(jià)計(jì)費(fèi)過程,但是二價(jià)計(jì)費(fèi)過程并不是每一個(gè)SKU都只有一個(gè)得分,并根據(jù)此打分做排序。舉例說明,第一個(gè)位置應(yīng)該勝出哪一個(gè)SKU。如圖,第一個(gè)位置應(yīng)該勝出得分等于9的SKU1,它計(jì)費(fèi)應(yīng)該是Sku1的bid*2÷9,因?yàn)榈诙腟KU的得分是2。第二個(gè)位置的拍賣不取決于第一行,而是第二行,應(yīng)該勝出SKU3,它的計(jì)費(fèi)是SKU3的bid*1.2÷6。
每一個(gè)位置只根據(jù)模型在這個(gè)位置的打分來做排序和計(jì)費(fèi)。因?yàn)槊總€(gè)sku在每一個(gè)位置的得分是不同的,所以可以解決分位次拍賣的問題。此外,Mixer MLP適合集合建模的原因是,它可以對(duì)每一個(gè)item都有一個(gè)特征抽取,在每一個(gè)block中對(duì)每一個(gè)item的dense feature做特征交互,因此它既能把集合的共有的特征建模到item當(dāng)中去,又能保持每一個(gè)item的獨(dú)立性,讓每一個(gè)item能夠計(jì)算出自己的得分。模型訓(xùn)練過程與序列生成模型基本一致,用一個(gè)2D的softmax的loss function來訓(xùn)練,只是把點(diǎn)擊,廣告收入等一系列業(yè)務(wù)指標(biāo)融合進(jìn)來,變成一個(gè)reward base的softmax。
05
問答環(huán)節(jié)
Q:在京東的廣告重排工作,和業(yè)界其他的一些rerank的工作有什么關(guān)聯(lián),場(chǎng)景上的主要差異是什么?
A:業(yè)界阿里和百度有公開的rerank工作,原理是類似的,京東的方案是一種可以平滑上線的工程化方案,這是一個(gè)通用的序列推薦解決方案。場(chǎng)景上的差異不大。
Q:在京東內(nèi)部,混合排序是怎么去衡量或者怎么度量廣告價(jià)值和自然流量價(jià)值差異?
A:第一版方案,是不管自然結(jié)果出什么,廣告?zhèn)戎粌?yōu)化廣告出什么,加上一些必要的策略。第二版是和斯坦福的經(jīng)濟(jì)學(xué)家合作,給自然結(jié)果提出了一個(gè)virtual bid的概念,相當(dāng)于把自然流量也當(dāng)成是一個(gè)廣告流量,它有一個(gè)虛擬的競(jìng)價(jià),用virtual bid來衡量自然流量業(yè)務(wù)價(jià)值。這樣就可以用virtual bid把自然流量和廣告當(dāng)成一個(gè)一樣的東西來排序。這個(gè)策略還在實(shí)驗(yàn)中。
Q:在模型訓(xùn)練之中可能會(huì)考慮到多個(gè)指標(biāo),這多個(gè)指標(biāo)之間的融合在訓(xùn)練中是怎么樣的?怎么設(shè)計(jì)多個(gè)指標(biāo)之間融合loss,或者其他的一個(gè)訓(xùn)練方式也好?
A:多個(gè)指標(biāo)的融合,最主要的就是在后面拍賣機(jī)制優(yōu)化reward。這個(gè)東西基本上就是通過調(diào)參和業(yè)務(wù)的先驗(yàn)知識(shí),暫時(shí)也沒有找到特別好的方法來自動(dòng)化的把這些參數(shù)給定出來。
Q:對(duì)于強(qiáng)化學(xué)習(xí)的bidding策略,相對(duì)原來固定的bid,它的主要的優(yōu)勢(shì)在哪里?以及說應(yīng)用了之后,對(duì)于線上的業(yè)務(wù)結(jié)果的提升,主要是來自哪些方面?
A:這里其實(shí)沒有做一個(gè)基于強(qiáng)化學(xué)習(xí)的bidding策略,做的是一個(gè)基于強(qiáng)化學(xué)習(xí)的拍賣機(jī)制優(yōu)化,Bid還是原來的Bid。Bid分兩種,一種是廣告主手動(dòng)出的,一種是它用智能出價(jià)產(chǎn)品來出的,這不是優(yōu)化的目標(biāo),優(yōu)化的目標(biāo)是根據(jù)廣告主的Bid,用一個(gè)learning base的方式來學(xué)習(xí)一個(gè)平臺(tái)多目標(biāo)融合的分?jǐn)?shù),然后基于這個(gè)分?jǐn)?shù)和廣告主的Bid來實(shí)現(xiàn)流量重新的分配和pricing的過程。這個(gè)過程一方面考慮了會(huì)話級(jí)別的長期價(jià)值,不只是說當(dāng)前的請(qǐng)求能拿到多少業(yè)務(wù)價(jià)值。第二點(diǎn),優(yōu)化拍賣機(jī)制,解決了廣告拍賣的生態(tài)問題,讓它變得更激勵(lì)相融,讓廣告競(jìng)價(jià)生態(tài)變得更好。
Q:對(duì)于這樣的一個(gè)多版本的重排的迭代,在線上的話,大概各自取得什么樣的收益?
A:序列生成評(píng)估這個(gè)框架上線了多次,因?yàn)樯傻牟呗砸彩强梢哉{(diào)的,評(píng)估模型也是可以調(diào)的,以及融合公式都是可以調(diào)的,打包反轉(zhuǎn)顯示RPM漲15%左右。在京東的場(chǎng)景下,會(huì)話級(jí)別的廣告拍賣機(jī)制,第一版小流量做出來,RPM漲五六個(gè)點(diǎn),在機(jī)制的優(yōu)化上面,至少有20個(gè)點(diǎn)的空間,所以這個(gè)方向的優(yōu)化空間應(yīng)該是非常大的。
今天的分享就到這里,謝謝大家。
技術(shù)交流
目前已開通了技術(shù)交流群,群友已超過2000人,添加時(shí)最好的備注方式為:來源+興趣方向,方便找到志同道合的朋友
- 方式①、發(fā)送如下圖片至微信,長按識(shí)別,后臺(tái)回復(fù):加群;
- 方式②、微信搜索公眾號(hào):機(jī)器學(xué)習(xí)社區(qū),后臺(tái)回復(fù):加群;
- 方式③、可以直接加微信號(hào):mlc2060。加的時(shí)候備注一下:研究方向 +學(xué)校/公司+CSDN,即可。然后就可以拉你進(jìn)群了。
研究方向包括:目標(biāo)檢測(cè)、圖像分割、目標(biāo)跟蹤、人臉檢測(cè)&識(shí)別、OCR、姿態(tài)估計(jì)、超分辨率、SLAM、醫(yī)療影像、Re-ID、GAN、NAS、深度估計(jì)、自動(dòng)駕駛、強(qiáng)化學(xué)習(xí)、車道線檢測(cè)、模型剪枝&壓縮、去噪、去霧、去雨、風(fēng)格遷移、遙感圖像、行為識(shí)別、視頻理解、圖像融合、圖像檢索、論文投稿&交流、PyTorch、TensorFlow和Transformer等。
一定要備注:研究方向+學(xué)校/公司+昵稱(如Transformer或者目標(biāo)檢測(cè)+上交+卡卡),根據(jù)格式備注,可更快被通過且邀請(qǐng)進(jìn)群。
總結(jié)
以上是生活随笔為你收集整理的赵鑫:强化学习在京东广告序列推荐中的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 射频卡流量管理系统
- 下一篇: SQL数据库查询LIMIT 数据分页