科学地花钱:基于端智能的在线红包分配方案
一、前言
本文是作者在1688進行新人紅包發放的技術方案總結,基于該技術方案的論文《Spending Money Wisely: Online Electronic Coupon Allocation based on Real-Time User Intent Detection》已經被CIKM2020接收,歡迎交流指正!
關于作者
李良偉:阿里巴巴算法工程師,郵箱 leon.llw@alibaba-inc.com
孫劉誠: 阿里巴巴高級算法工程師,郵箱 liucheng.slc@alibaba-inc.com
二、背景介紹
用戶權益(包括現金紅包、優惠券、店鋪券、元寶等,圖-1)是電商平臺常用的用戶運營手段,能夠幫助平臺促活促轉化。 圍繞著權益的技術優化也層出不窮[1,2,3,4,5]。
?
?
圖-1: 1688新人紅包
紅包發放作為一種營銷手段,其ROI是我們非常關心的一個指標,因為它直接反映了在有限的預算內紅包為整個平臺促活促成交的能力。優化紅包發放的ROI要求我們把紅包發到最合適的用戶手上。而判斷哪些用戶適合領到紅包需要我們在真正發紅包之前判斷當前用戶的意圖。舉例來講,一個購買意圖非常明確、無論是否有紅包都會下單的用戶顯然不適合領到紅包;相反,紅包對一個猶豫不決、貨比三家的用戶很有可能起到“臨門一腳”的作用。
隨著1688業務的快速發展,每天都會有大量的平臺新用戶涌入,其中有很多用戶在整個阿里經濟體的數據都十分稀疏,基于常規手段,我們很難對這種“陌生”的用戶進行精準刻畫。然而,只要一個用戶進入了APP,或多或少都會和平臺產生相互作用(滑動,點擊等),這種在端上實時產生的數據能夠幫助我們對用戶尤其是新用戶的實時意圖進行精準捕捉,進而完成紅包發放的決策。
本文將介紹我們基于端智能的用戶意圖識別和智能權益發放方案。
三、技術方案
從數學的角度,權益發放是一個帶約束的優化問題。優化目標是關心的業務指標(GMV,買家數,轉化率等),約束一般是預算約束,有時也會有其他約束比如發放疲勞度約束、單個用戶領取紅包金額約束等。
按照之前提到的先識別用戶意圖再進行權益發放這一思路,我們提出了一個two-stage的求解方案。在第一階段,我們基于端智能技術[6],根據用戶實時行為數據,通過瞬時意圖識別網絡(Instantaneous Intent Detection Network, IIDN) 識別出用戶當前意圖;在第二階段,我們將優化問題建模成一個多選項背包問題(Multiple-Choice Knapsack Problem, MCKP),并運用[7]提到的primal-dual框架求解。在這里,我們強調我們關于IIDN的兩個創新點:
1.IIDN最主要檢測的用戶意圖是下單意圖,但是實踐發現在新人當中,用戶下單的比例是比較小的,這樣我們在進行下單意圖識別的時候會面臨一個類別不均衡的問題(下單:不下單 = 1:10甚至更低),這樣的類別偏差會降低常見的分類器的分類效果[8]。為了解決這一問題,受到ESMM[11]和seq2seq[10]啟發,我們引入了一個輔助任務:停留意圖識別。我們隨后會從理論上驗證這一做法
2.我們采用encoder-decoder的結構,靈活地處理序列化的輸入和輸出
第一階段:瞬時意圖識別
?
?
圖-2: IIDN結構
圖-2是IIDN的整體結構,它由Embedding Layer, LSTM layer, Attention Layer, Encoder和Decoder五部分組成。接下來分別介紹。
Embedding Layer
模型的輸入主要是實時用戶特征和紅包特征,用戶特征包括實時特征(端上收集到的:點擊、加購等)、歷史特征(用戶核身、年齡等),紅包特征現在只加入了面額。這些特征是高度異質的,需要進行一步處理把它們映射到相同的向量空間中。我們采用[9]提到的嵌套技術,把原始的異質特征映射為長度固定的向量,并把該向量作為后續結構的輸入。
LSTM Layer
我們紅包發放的業務邏輯是:用戶在詳情頁產生瀏覽行為并返回landing page的時候觸發決策模型,判斷給該用戶發放紅包的面額(0元代表不發放)。由于用戶通常會產生一系列的詳情頁瀏覽行為,因此我們收集到的數據也是高度序列化的。為了更好地描述序列化數據當中的時間依賴關系,我們在特征抽取環節采用了Long Short Term Memory (LSTM) 來捕捉這種序列化信息。
Attention Layer
對于LSTM產出的序列化的feature map,我們使用注意力機制抽取當中的局部和全局依賴關系。我們將LSTM每層的輸出都通過Attention計算權重并參與最終的結果計算。這樣的好處是模型不僅關注LSTM最終層輸出,還會關注逐層的輸出結果,從而增加模型對于輸入信息的感知能力。
Encoder
由于用戶實時特征的序列長度不固定,而紅包特征和用戶歷史特征是靜態的固定特征,我們需要一種機制來進行有效的特征融合。受到Natural Language Generation (NLG) 當中語句生成的啟發,我們采用一種seq2seq的結構:包括encoder和decoder,我們將在下一小節介紹decoder。這里encoder將之前產生的所有feature map作為輸入,通過全連接層產生一個固定長度的向量,這個向量囊括了進行用戶意圖識別的一切信息,并作為之后decoder進行意圖識別的依據。
Decoder
Decoder被用來輸出最終的意圖識別結果。在最開始,我們的模型只輸出用戶下單的概率,但是隨著業務的深入,我們發現類別不均衡這一問題給結果預測造成了不小的干擾。在提高預測精度的實踐當中,我們發現了一個有趣的現象:如果在進行下單率預估的時候在特征中加入用戶在這次瀏覽之后是否離開這一信息,預測精度會有很大的提升。這引發了我們的思考:用戶離開和用戶下單之間存在什么樣的關系。隨后我們又做了一個實驗:進行用戶離開意圖識別,并在特征中加入了用戶兩小時內是否下單這一特征。實驗結果表明加入是否下單這一特征并不能給離開率預估的任務帶來增益。這樣的實驗結果其實是符合邏輯的:用戶能夠下單的前提是用戶一定要留在APP內不離開,前者的發生在邏輯上需要依賴后者的發生,因此在進行下單率預估的時候加入是否離開能夠為模型提供一定的信息增益;相反,用戶是否離開更多取決于用戶當前的心態以及APP能否很好地承接他,用戶是否下單并不能影響用戶是否離開。我們可以認為:
由上式可以很自然地推導出下式:
可以看到,在進行下單率預估的時候(P的計算),用戶停留意圖識別(S的計算,或者說離開意圖,二者等價)將可以用來作為輔助任務提升預測效果。我們的實驗也驗證了這點。
盡管在我們這一任務當中,我們只需要預測停留意圖和下單意圖,但是在之后擴展的場景中,更多意圖也可以被識別:比如用戶去往搜索的意圖,用戶去往新人專區的意圖等。所有意圖其實都像下單意圖和停留意圖一樣存在一個邏輯上的先后關系(至少所有意圖的產生都依賴于用戶不離開),這樣的關系使得我們想到了機器翻譯當中語句生成:后一個單詞的生成依賴于前一個單詞的預測,這啟發了我們在encoder-decoder的基礎上采用seq2seq的思想:decoder會先生成S,并在此之上生成P。這樣做有兩個好處:
1.在一定程度上緩解了我們一開始提到類別不均衡問題:盡管不是所有用戶都下單,但是所有用戶一定會離開APP,離開意圖識別并不存在類別不均衡的問題
2.我們這一套意圖識別框架可以擴展到無限多的意圖識別當中,只要提供先驗的邏輯先后關系
我們使用普通的RNN完成每一個意圖的識別。
loss設計
全局的loss是由停留意圖識別和下單意圖識別兩個任務的loss相加得到:
其中CE表示交叉熵:
第二階段:求解MCKP
根據第一階段得到的實時意圖$P$和$S$,我們在這一階段完成紅包的最終發放。我們將這一問題建模成一個多選項背包問題,我們作以下定義:
1.j用來索引紅包,表示第j個紅包,i用來索引用戶,表示第i個用戶 2.c_j表示第$j$個紅包的面額 3.x_{ij} = 1當且僅當第i個用戶被發到了j紅包 4.\gamma 表示用戶停留興趣閾值,我們只給那些停留意圖足夠低的用戶發紅包,停留意圖如果不夠低我們認為他還會繼續瀏覽,因此這次先不發放紅包 5.P_{ij}、S_{ij}分別表示第$i$個用戶領取到第$j$個紅包以后的下單率和停留率 6.B表示全局預算約束運用以上的定義,紅包發放問題可以被寫作:對于任意的用戶,滿足S_{ij} <= gamma,我們求解以下最優化問題:
為了求解以上問題,我們采用[7]提到的primal-dual框架。定義alpha和beta_j分別是相關的對偶變量,據此框架我們可以在線求解以上問題。具體來講,x_{ij}可以根據以下公式求得:
通過上式求得的x_{ij}和j,我們就得到了最終的分配方案。
四、系統部署
目前在集團做端智能首推jarvis平臺,在這里給相關同學點贊,在最開始的時候沒少麻煩jarvis同學解決問題。運用jarvis,我們可以收集端上實時數據并將深度模型部署到端上。我們主要是將IIDN部署到端上,MCKP決策模型由于需要考慮全局最優,所以放在了服務端。
?
?
圖-3: 系統大圖
圖-3是我們整體的系統架構,每一個用戶在詳情頁回退到landing page的時候會觸發決策模型,IIDN首先根據端上采集到的行為數據識別出用戶的下單和停留意圖,隨后該意圖會被推送到服務端參與最終的紅包決策。我們這套系統在日常線上持續生效,同時還參與了0331商人節,助力買家數的提升。
五、實驗
實驗設置
我們從1688客戶端收集數據,用到的特征如下表:
?
實驗分為兩部分:離線實驗和在線實驗。離線實驗主要驗證IIDN對于意圖的識別效果,驗證指標是AUC和logloss;在線實驗主要驗證我們二段式建模對于紅包發放的效果,主要的驗證指標是增量買家成本 (increment cost, ic),它被用來衡量每帶來一個增量買家需要消耗的成本,計算公式如下:
離線實驗
在離線實驗環節,我們分別使用以下方法進行下單意圖識別,并進行比較:
1.Logistic Regression (LR) 2.Gradient Boosting Decision Tree (GBDT) 3.DNN + RNN [12] 4.IIDN-single-LSTM (單層LSTM) 5.IIDN-non-attention (無Attention機制,使用簡單的全連接) 6.IIDN-non-auxiliary-task (沒有輔助任務的IIDN) 7.IIDN離線結果如下表:
?
可以看到IIDN達到最高的AUC和最低的Logloss,這證明了IIDN的合理性。
在線實驗
我們主要和另外三個發放方案做比較:
1.不發:該桶所有用戶均不發紅包 2.全發:該桶所有用戶均發紅包 3.uplift:我們采用廣告營銷當中常用的uplift方案,對每一個用戶發放使他轉化率提升最大的面額,同時該面額帶來的轉化率提升需要大于一定的閾值,否則不發放紅包在線效果如下表:
可以看到盡管全發桶帶來的轉化率提升最明顯,但是它也帶來了最大的增量買家成本。我們提出的方案不僅相對自然轉化率提升了25.7%,同時也比全發桶的增量買家成本減少了44.3%,這證明了我們方案的優越性。
模型分析
學習曲線
?
?
圖-4: 學習曲線
圖-4展示了不同方法的學習曲線,可以看到LSTM, Attention以及停留意圖識別任務均可以起到加速模型訓練的效果。
單調性分析
正常來講,紅包面額越大,對于用戶的刺激作用也越大,用戶下單率曲線應該是一條關于紅包面額單調遞增的曲線,我們實驗得到的曲線如下圖:
?
圖-5: 單調性曲線
可以看到所有模型基本呈現單調性,其中IIDN更加符合真實情況。
?
?
原文鏈接
本文為阿里云原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的科学地花钱:基于端智能的在线红包分配方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 淘宝直播在冲刺最复杂的人工智能技术!
- 下一篇: 万张图片,流畅体验——记一次 Vue 列