實作 wide & deep 從訓練到推薦排序

Memorization & Generalization

在推薦系統中,如果要選第一個深度排序模型從傳統機器學習接軌到 DNN,那首推 google 在 2016 年提出的 Wide & Deep ,Wide & Deep 名稱來自其由一個 shallow 的 model 與一個 deep 的 network 組合而成。

在進入到 DNN 前,我們手上肯定有個正在線上運行的傳統排序模型 ex: FM, GBDT …,還有積累了很久的有效特徵組合,如果直接進入 DNN,這些經驗和積累打水漂不說,還得花很長的時間 tune 模型。

有了 Wide & Deep,我們只需將正在 serving 的那個排序模型的特徵放在 wide side 使用; 另外在建一個 deep side 的深度模型,兩個模型 joint training 即可無縫接軌到 DNN。

那 wide 跟 deep network 分別代表什麼呢 ?

Google 在 2016 的論文中總結出:Wide 負責 memorization , Deep 負責 Generalization , Wide & Deep 是 Memorization & Generalization 的體現,實際上也是推薦領域中經典的 Exploitation & Exploration 問題。


實時推薦策略流程

一個完整的工業級的推薦系統會分成兩大部分

  1. Online serving
  2. Offline data processing

此篇著重在電商推薦系統在 online serving 的算法策略架構

架構概述

Online serving 為當 user request 進來時算法的策略流程,什麼階段該做什麼事。一般來說 online serving 又可大致上分成三個 stages

  1. Match: 從百萬級的商品庫中召回數千或數百的商品
    • 此階段大致上, 模糊地召回 user 感興趣的商品
  2. Rank:對召回的數千或數百商品進行打分,決定針對 user 個性化排序召回的商品
    • 通常會用模型 ranking,模型會綜合考慮 user 的喜好以及商品本身的特徵進行打分
  3. Re rank:根據業務邏輯重新排序 ranking 結果

上面三個 stages 是一個推薦流程的抽象表示,實際上每個 stage 內還會細分出工程和業務考量的模組。


推薦系統中的瑞士刀 Factorization Machine

多才多藝的 Factorization Machine

在推薦領域,現今各種 DNN 模型當道,有個不怎麼深的模型卻小巧而美,既能做召回又能做排序,計算複雜度上又沒 DNN 耗時又耗錢

他 就是現今各種應用在推薦系統 DNN 的前輩 Factorization Machine (FM),這麼多才多藝的模型你值得擁有。

我們都知道 DNN 的本質是特徵的高階交叉,這點在 FM 上就能初見端倪:

FM 前兩項為 LR: $w_0 + \sum^n_{i=1}w_ix_i$,末項為二階特徵交叉項 ,這形式像極了 wide & deep,根本是 wide & deep 的前身,linear 項負責 memorization; cross 項負責 generalization。

FM 既能做召回又能做排序,甚至能在多路召回後對上萬個 entity 粗排打分,到底是怎麼做到的呢?

讓我們往下繼續看下去


內容推薦 (3):主題卡片推薦

什麼是主題卡片推薦?

主題推薦,就是給定一個概念,然後推薦系統圍繞著這個主題將將相關聯的商品推薦給用戶。

“主題” 是個超越類目, 產品詞或標籤的存在,他可以是:

  • 旅行出行
  • 文青
  • 寬鬆顯瘦
  • 愛車人
  • 追星族
  • 愛美

等於是把商品池中的類目關係解構又重構出一個新的子集。

以用戶端接觸的 UI 來看,主題卡片推薦由兩個構成: Feed 流卡片推薦與 Landing Page 主題推薦。


內容推薦 (2) Title Embedding with Keyword

前言

在前篇 內容推薦 (1) 關鍵詞識別 中,我們利用 entropy 從商品池的 title 中辨識出 product word & label word

此篇,我們將利用已經辨識出的 product word & label word 回頭對商品池中的商品 title 做 embedding

當然你也可以直接將所有 title 送進 Word2Vec 硬 train 一發,然後對 title 內的所有的 word vectors 取平均得到 title vector。


內容推薦 (1) 關鍵詞識別

背景

從內容召回說起

電商推薦系統多路召回中,通常會有一路召回商品叫內容召回 $\text{content I2I}$

content I2I 與其他根據用戶行為的召回不同, 最簡單的 content I2I 可以根據 A 商品 title 內容找出其他與 A 相似的 title 的商品,這給了他很強的推薦解釋性

對於商品冷啟動或者系統冷啟動來說,content I2I 可以在沒有用戶交互訊息時,就可以進行推薦,也不失為一種冷啟動方案。

在萬物皆可 Embedding 的今天,content I2I 只要把所有商品的 title 送進 word2Vec 硬 train 一發也就完事了

當然要是這麼簡單,也就不會有這篇了


Thompson Sampling 推薦系統中簡單實用的 Exploring Strategy

Exploring and Exploiting

Exploring and Exploiting (EE) 是推薦系統中歷久不衰的議題,如何幫助用戶發現更多感興趣的 entity 以及基於已有對用戶的認知推薦他感興趣的 entity,在推薦系統的實務上都得考慮。

具象化這個問題:在推薦系統中有$\text{}$ $\text{category A, category B, category C, category D, category E}$ 等五大類的 entity 集合,今天有個新用戶 $U$來了,我們要如何

  1. 知道他對哪個種類的 entity 比較感興趣?
  2. 人的興趣可以分成長期興趣跟短期興趣,在電商場景中,用戶短期興趣指他有立即需求的商品,我們如何快速抓到他的意圖,調整推薦系統的響應?
  3. 推薦哪些類目能帶給他意料之外的驚喜 ? 那些他沒預期,但我們推薦給他,能讓他感到滿意的 category。

Multi-armed bandit problem, K-armed bandit problem (MAP) 中的 Thompson Sampling,簡單又實用