本文是做者在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,買家數,轉化率等),約束通常是預算約束,有時也會有其餘約束好比發放疲勞度約束、單個用戶領取紅包金額約束等。spa
按照以前提到的先識別用戶意圖再進行權益發放這一思路,咱們提出了一個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五部分組成。接下來分別介紹。
模型的輸入主要是實時用戶特徵和紅包特徵,用戶特徵包括實時特徵(端上收集到的:點擊、加購等)、歷史特徵(用戶核身、年齡等),紅包特徵如今只加入了面額。這些特徵是高度異質的,須要進行一步處理把它們映射到相同的向量空間中。咱們採用[9]提到的嵌套技術,把原始的異質特徵映射爲長度固定的向量,並把該向量做爲後續結構的輸入。
咱們紅包發放的業務邏輯是:用戶在詳情頁產生瀏覽行爲並返回landing page的時候觸發決策模型,判斷給該用戶發放紅包的面額(0元表明不發放)。因爲用戶一般會產生一系列的詳情頁瀏覽行爲,所以咱們收集到的數據也是高度序列化的。爲了更好地描述序列化數據當中的時間依賴關係,咱們在特徵抽取環節採用了Long Short Term Memory (LSTM) 來捕捉這種序列化信息。
對於LSTM產出的序列化的feature map,咱們使用注意力機制抽取當中的局部和全局依賴關係。咱們將LSTM每層的輸出都經過Attention計算權重並參與最終的結果計算。這樣的好處是模型不只關注LSTM最終層輸出,還會關注逐層的輸出結果,從而增長模型對於輸入信息的感知能力。
因爲用戶實時特徵的序列長度不固定,而紅包特徵和用戶歷史特徵是靜態的固定特徵,咱們須要一種機制來進行有效的特徵融合。受到Natural Language Generation (NLG) 當中語句生成的啓發,咱們採用一種seq2seq的結構:包括encoder和decoder,咱們將在下一小節介紹decoder。這裏encoder將以前產生的全部feature map做爲輸入,經過全鏈接層產生一個固定長度的向量,這個向量囊括了進行用戶意圖識別的一切信息,並做爲以後decoder進行意圖識別的依據。
Decoder被用來輸出最終的意圖識別結果。在最開始,咱們的模型只輸出用戶下單的機率,可是隨着業務的深刻,咱們發現類別不均衡這一問題給結果預測形成了不小的干擾。在提升預測精度的實踐當中,咱們發現了一個有趣的現象:若是在進行下單率預估的時候在特徵中加入用戶在此次瀏覽以後是否離開這一信息,預測精度會有很大的提高。這引起了咱們的思考:用戶離開和用戶下單之間存在什麼樣的關係。隨後咱們又作了一個實驗:進行用戶離開意圖識別,並在特徵中加入了用戶兩小時內是否下單這一特徵。實驗結果代表加入是否下單這一特徵並不能給離開率預估的任務帶來增益。這樣的實驗結果實際上是符合邏輯的:用戶可以下單的前提是用戶必定要留在APP內不離開,前者的發生在邏輯上須要依賴後者的發生,所以在進行下單率預估的時候加入是否離開可以爲模型提供必定的信息增益;相反,用戶是否離開更多取決於用戶當前的心態以及APP可否很好地承接他,用戶是否下單並不能影響用戶是否離開。咱們能夠認爲:
由上式能夠很天然地推導出下式:
能夠看到,在進行下單率預估的時候(P的計算),用戶停留意圖識別(S的計算,或者說離開意圖,兩者等價)將能夠用來做爲輔助任務提高預測效果。咱們的實驗也驗證了這點。
儘管在咱們這一任務當中,咱們只須要預測停留意圖和下單意圖,可是在以後擴展的場景中,更多意圖也能夠被識別:好比用戶去往搜索的意圖,用戶去往新人專區的意圖等。全部意圖其實都像下單意圖和停留意圖同樣存在一個邏輯上的前後關係(至少全部意圖的產生都依賴於用戶不離開),這樣的關係使得咱們想到了機器翻譯當中語句生成:後一個單詞的生成依賴於前一個單詞的預測,這啓發了咱們在encoder-decoder的基礎上採用seq2seq的思想:decoder會先生成S,並在此之上生成P。這樣作有兩個好處:
1.在必定程度上緩解了咱們一開始提到類別不均衡問題:儘管不是全部用戶都下單,可是全部用戶必定會離開APP,離開意圖識別並不存在類別不均衡的問題
2.咱們這一套意圖識別框架能夠擴展到無限多的意圖識別當中,只要提供先驗的邏輯前後關係
咱們使用普通的RNN完成每個意圖的識別。
全局的loss是由停留意圖識別和下單意圖識別兩個任務的loss相加獲得:
其中CE表示交叉熵:
根據第一階段獲得的實時意圖$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更加符合真實狀況。
原文連接 本文爲阿里雲原創內容,未經容許不得轉載。