- 產品
- 產品解決方案
- 行業解決方案
- 案例
- 數據資產入表
- 賦能中心
- 伙伴
- 關于
時間:2022-02-24來源:可愛的害羞鬼瀏覽數:167次

? ? ? ?導讀:互聯網推薦廣告的排序,關鍵在于對流量價值的預估,其中最重要的一部分是對點擊率的預估。為了提高廣告的變現效率,核心的問題是如何提高廣告的預估精度。同一個廣告,在上下文不一樣的情況下,點擊率是不同的,點擊率不只是受用戶和廣告的影響,還受上下文的影響,所以如果只是從召回到粗排再到精排做一個pointwise的預估,對于廣告的CTR預估是不準的,需要對整個廣告序列整體考量。
? ? ? ?本文的介紹將圍繞下面四點展開:
推薦廣告排序技術選型介紹
Context-aware CTR重預估
基于強化學習的序列優化
會話級別廣告拍賣機制優化

? ? ? ?為了提高變現效率,我們的技術演進路線是從最初的對單物料的排序優化,到請求級別進行序列的整體優化,最后是會話級別的廣告拍賣機制優化。其中請求級別的序列整體優化,經歷了從前向貪心搜索到序列生成和評估的演進過程。

? ? ? ?對序列進行優化,就是要對候選集的排列空間進行優化。理想的狀態下是對候選集做全排列,用全局的序列評估模型,把所有的排列方式都評估出一個打分,選出全局最優序列。但這種方式難以實現,因為序列的組合空間是爆炸的,線上耗時高導致框架無法落地,所以考慮如下兩種思路。
? ? ? ?第一種是做序列的前向貪心搜索,不考慮序列的整體優化,每一次只是根據上一個item選擇了什么,把它作為上文信息,然后貪心的逐個選取當前位置最有價值的一個物料進行排序。可以利用類似beam search的貪心搜索。這種前向貪心建模方式的缺點在于,決策過程和請求模型的過程是分開的,每做一次決策,就需要請求一次模型,線上就會反復的進行模型的調用,時間開銷大。
? ? ? ?第二種優化的思路,是對整個候選集的全排列做篩選,篩選出一些很有可能成為最終比較優的候選序列集合。候選序列集合做一個序列的全局評估,選出一個近似最優的序列。第一步,如何篩選?可以使用啟發式的人工規則,或者基于業務邏輯的啟發式生成方法,獲取候選序列集合。進一步可以做一個模型化的序列生成。優勢在于,序列的全局評估模型可以看到上下文信息,對CTR的預估更準確。可以先生成序列,再對所有序列一次性預估,控制線上耗時。如下圖表,對上面優化方案的耗時進行了對比。

? ? ? ?第一種是用上文作為context或者和會話里面的其他序列的上文都作為context,逐個的貪心來選取,這樣模型的耗時是序列長度L乘以候選集的大小N。第二種用context DNN + beam search的方法,保存貪心搜索過程中的top 部分,因為探索了額外的分支,所以耗時變成W倍,如果W選擇足夠大,可以接近理想的優化能力。第三種是把所有的排列都枚舉,然后加上一個序列評估,這是理想的方式,但復雜度極高。第四種是序列生成加上評估選優,近似全局搜索,只進行一次模型調用,優化能力比較強,兼顧了線上性能和優化能力。

? ? ? ?Context-aware預估,第一步就是貪心的前向搜索,如圖,每放一個sku,就把它當成上文,再重新預估一次,再選第二個、第三個sku。這樣訓練Context-aware CTR模型,也是一個只有上文信息的模型,跟普通CTR模型沒有太大差別。


? ? ? ?第二個思路,是序列生成加序列選優的集成框架。有兩個問題需要解決:
第一個問題是如何對序列的樣本進行選優和正確的評估,即如何得到序列評估模型。沒有上線序列的優化框架之前,整個線上排序系統都是一個ranking base的排序系統,所有的序列的組成都是按照廣告的Q值得分排序的。如果用這樣的訓練樣本,模型無法感知順序打亂之后會怎么樣。
? ? ? ?第二個問題是序列生成是怎么樣的,我們只能知道某一些情況可能是好的序列,但是到底什么是最好的序列,無從判斷。
因此設計了兩步上線流程。先解決相對比較簡單的序列評估問題。Ranking base的序列和打亂順序的序列是有差別的。但基于Ranking方式生成的樣本訓練對的模型雖然是有偏的,我們也認為是可以接受的。先用Ranking Base方法生成的樣本去徐蓮序列評估模型,然后在線上使用這個模型對樣本做小流量序列選優,配合隨機的策略和啟發式序列生成策略,這樣線上的一部分流量生成一些打亂順序的樣本,這樣的小流量的樣本落盤下來,再去retrain序列評估模型。迭代一段時間之后,就把隨機策略疊加啟發式策略,跟序列評估模型配合上線。
? ? ? ?第二步是解決如何讓Actor自學習的問題,目標是讓生成模型傾向于生成出一些更好的序列被評估模型選出來。序列生成模型要做的是模擬評估模型選取的序列的樣子。第二階段主要是上線了序列生成模型和蒙特卡洛采樣序列生成算法。

? ? ? ?序列生成和評估模型結構設計如上圖右半部分,底層是特征抽取,往上是PointDNN結構,Point DNN是對每一個item單獨抽取特征,把這些稀疏的embedding轉化為dense feature,得到綠色的item的特征向量,然后在序列評估模型里,把序列對應的向量抽取出來組成一個序列,上面進行序列的attention操作,將最相關的特征高亮出來。最后,輸出預估序列里每一個item的預估點擊率,item的預估點擊率會和它的出價、多樣性等業務指標融合成一個最終的得分。
? ? ? ?序列生成模型建模過程如下。首先把整個候選集的集合作為生成模型的輸入,把所有候選集中item的特征做max pooling處理后的特征向量作為候選集合的特征向量,去和每一個item的特征向量拼接起來,得到一個新的特征。新的特征去經過幾層DNN,最后得到一個表。如圖舉例,假設一共有五個item,序列長度是四。如上圖左上的表格,按行來看表示的是每一個item出現在當前這個位置的概率,按列來看表示的是item出現在不同位置的概率。模型訓練使用2D softmax的交叉熵loss。如果一個item在候選集里被選中了,并且是出現在第一個位置,它的第一個位置的label就是1。如圖,SKU1在第一個位置label是1,SKU2在第三個位置label是1。訓練完成的模型在線上預測過程中預測采樣頻率,用一個受控的temperature參數來控制這個采樣頻率。按照這個表去生成序列,逐個位置去采樣多次生成多個序列。舉例來說,生成第一個位置需要的SKU,類似扔一個骰子,如果小于0.9,SKU1被選中,如果是0.9到1,SKU2被選中。第二個位置去除第一個位置已經出現過的SKU,進行重新歸一化,再采樣一次,這樣可以生成多個候選序列。再把這些候選序列與啟發式的或者隨機生成的序列融合起來,變成一個序列的候選集,統一交給序列的評估模型去評估,選出一個最好的序列。

? ? ? ?強化學習解決的是在策略空間做探索以得到新的更好的策略的問題。序列生成和序列評估是互相迭代的,因為如果序列生成不是一個好的模型,序列評估就只能在一個差的候選序列集合里面選擇。如果切換其他的模式上進行探索,序列評估模型可能會在新的模式下不準,有可能把錯誤的東西推給用戶。序列評估模型在探索模式下變好了,序列生成模型就會學習到新的生成策略,會在一個序列評估模型不準的地方去學習,直到序列評估模型模型變準為止。所以這是一個交互迭代的過程。模型上線過程有三個指標用來監控:
? ? ? ?給定一個位置,猜item被選擇的準確率;
? ? ? ?給定一個商品,猜能不能出現在這個to gateway 某一位置的準確率,這對應于圖表里邊的按行求accuracy和按列求accuracy;
? ? ? ?模型化的序列生成策略在線上勝出的比例。類似召回評估里,某一路召回能夠在下游出現的比例。
? ? ? ?線上監控可以看到,按天來觀察,這些指標都在上漲,可以讓生成和評估模型變得越來越準。這個算法有兩個生效位置,一是推薦廣告內部的重排,二是廣告和自然推薦的混排。

? ? ? ?基于序列推薦和評估選優的機制,可以解決通用推薦問題,但是在廣告業務里有一定的問題。受廣告競價機制的限制,我們只能讓廣告先計費,然后再重排。廣告主允許平臺收此費用,應該是讓sku展現在當前這個位置需要花的錢,確定了費用之后又改變位置不太合理。計費機制既不滿足廣義二價計費,又不激勵相容。而且,序列生成加評估選優的機制,只能量化請求內的若干個SKU排列的價值,沒有辦法量化會話內部的長期價值,所以我們需要實現會話級別的廣告拍賣機制,優化此問題。
? ? ? ?拍賣機制有幾個設計原則:
? ? ? ?激勵相容,鼓勵競價者說真話,要求它能夠展現的概率和它的bid是單調的;
? ? ? ?對平臺的這些多目標以及平臺的長期價值敏感;
? ? ? ?排序和計費機制比較容易實現。
? ? ? ?京東廣告的精排公式如圖所示。我們希望將目標優化成learning base的指標,一方面它和Bid成正比,一方面它和平臺融合的learning base的綜合score成正比。這樣用一個learning base的融合廣告分可以做二價計費。這個算法和前文提到的序列評估選優的算法框架不同點在于它是一個單actor強化學習算法。候選集先輸入一個候選集編碼器,然后被模型評分。針對多個廣告坑位的拍賣問題,這里做了一些思考,因為推薦廣告本來就是一個多廣告坑位的一個拍賣問題。我們使用分位次拍賣的方式解決多坑位的拍賣問題。按照分位次拍賣和計費的結果,得出一個新的勝出廣告序列,然后把這個序列展現出來,讓用戶做出一些反饋,用戶的反饋可以通過計算會話內部的長期收益,用policy gradient的方式來反饋到評分模型里。
? ? ? ?這里有2個難點:
? ? ? ?第一個難點是,在序列評估加選優的框架上面迭代新的會話級別廣告拍賣機制,從推薦效率的角度上,單actor模型建模能力和生成模型加評估模型組合的全系統相比很難打平。
? ? ? ?第二個難點是,如何融合業務先驗知識。
? ? ? ?解決第一個難點,這里的方案把actor做成更大的模型,使用CV領域的模型mixer MLP,它很適合集合建模。第二個難點的解決方案是,把業務reward以某種方式融合到loss function里。分位次的序列采樣和分位次的廣告拍賣,有非常大的共同之處。分位次序列采樣是對每一個位次有一個采樣概率,分位次的廣告拍賣,是對每個位次給出每一個競爭商品的數值得分。

? ? ? ?這里類似序列生成模型的結構,只是它的backbone網絡變成更大更復雜的mixer MLP,模型的輸出是一個像右邊藍色的表格,對于每一個SKU在每一個位置有一個得分,模型訓練的reward融合了當前廣告收入,遠期廣告收入,推薦的多樣性,以及所有要考慮的業務指標。廣告拍賣是一個二價計費過程,但是二價計費過程并不是每一個SKU都只有一個得分,并根據此打分做排序。舉例說明,第一個位置應該勝出哪一個SKU。如圖,第一個位置應該勝出得分等于9的SKU1,它計費應該是Sku1的bid*2÷9,因為第二名的SKU的得分是2。第二個位置的拍賣不取決于第一行,而是第二行,應該勝出SKU3,它的計費是SKU3的bid*1.2÷6。
? ? ? ?每一個位置只根據模型在這個位置的打分來做排序和計費。因為每個sku在每一個位置的得分是不同的,所以可以解決分位次拍賣的問題。此外,Mixer MLP適合集合建模的原因是,它可以對每一個item都有一個特征抽取,在每一個block中對每一個item的dense feature做特征交互,因此它既能把集合的共有的特征建模到item當中去,又能保持每一個item的獨立性,讓每一個item能夠計算出自己的得分。模型訓練過程與序列生成模型基本一致,用一個2D的softmax的loss function來訓練,只是把點擊,廣告收入等一系列業務指標融合進來,變成一個reward base的softmax。
? ? ? ?Q:在京東的廣告重排工作,和業界其他的一些rerank的工作有什么關聯,場景上的主要差異是什么?
? ? ? ?A:業界阿里和百度有公開的rerank工作,原理是類似的,京東的方案是一種可以平滑上線的工程化方案,這是一個通用的序列推薦解決方案。場景上的差異不大。
? ? ? ?Q:在京東內部,混合排序是怎么去衡量或者怎么度量廣告價值和自然流量價值差異?
? ? ? ?A:第一版方案,是不管自然結果出什么,廣告側只優化廣告出什么,加上一些必要的策略。第二版是和斯坦福的經濟學家合作,給自然結果提出了一個virtual bid的概念,相當于把自然流量也當成是一個廣告流量,它有一個虛擬的競價,用virtual bid來衡量自然流量業務價值。這樣就可以用virtual bid把自然流量和廣告當成一個一樣的東西來排序。這個策略還在實驗中。
? ? ? ?Q:在模型訓練之中可能會考慮到多個指標,這多個指標之間的融合在訓練中是怎么樣的?怎么設計多個指標之間融合loss,或者其他的一個訓練方式也好?
? ? ? ?A:多個指標的融合,最主要的就是在后面拍賣機制優化reward。這個東西基本上就是通過調參和業務的先驗知識,暫時也沒有找到特別好的方法來自動化的把這些參數給定出來。
? ? ? ?Q:對于強化學習的bidding策略,相對原來固定的bid,它的主要的優勢在哪里?以及說應用了之后,對于線上的業務結果的提升,主要是來自哪些方面?
? ? ? ?A:這里其實沒有做一個基于強化學習的bidding策略,做的是一個基于強化學習的拍賣機制優化,Bid還是原來的Bid。Bid分兩種,一種是廣告主手動出的,一種是它用智能出價產品來出的,這不是優化的目標,優化的目標是根據廣告主的Bid,用一個learning base的方式來學習一個平臺多目標融合的分數,然后基于這個分數和廣告主的Bid來實現流量重新的分配和pricing的過程。這個過程一方面考慮了會話級別的長期價值,不只是說當前的請求能拿到多少業務價值。第二點,優化拍賣機制,解決了廣告拍賣的生態問題,讓它變得更激勵相融,讓廣告競價生態變得更好。
? ? ? ?Q:對于這樣的一個多版本的重排的迭代,在線上的話,大概各自取得什么樣的收益?
? ? ? ?A:序列生成評估這個框架上線了多次,因為生成的策略也是可以調的,評估模型也是可以調的,以及融合公式都是可以調的,打包反轉顯示RPM漲15%左右。在京東的場景下,會話級別的廣告拍賣機制,第一版小流量做出來,RPM漲五六個點,在機制的優化上面,至少有20個點的空間,所以這個方向的優化空間應該是非常大的。