深度學習推薦#

深度學習在推薦系統中的應用日益廣泛,能夠自動學習複雜的特徵交互和序列模式。

Wide & Deep#

動機#

Wide & Deep 是 Google 2016 年提出的經典模型,結合了記憶能力(Wide)和泛化能力(Deep)。

組件能力特點
Wide記憶 (Memorization)記住歷史中的高頻模式
Deep泛化 (Generalization)發現新的特徵組合

模型結構#

                    Output
                      ↑
                   Sigmoid
                      ↑
        ┌─────────────┴─────────────┐
        │                           │
    Wide Part                   Deep Part
        ↑                           ↑
Cross-Product                   Hidden Layers
  Features                          ↑
        ↑                       Embedding
        │                           ↑
    ┌───┴───┐               ┌───────┴───────┐
 Raw Features            Categorical Features

Wide 部分#

y_wide = w^T [x, φ(x)] + b

其中 φ(x) 是交叉特徵:
φ(x) = Π x_i^{c_ki}  (c_ki ∈ {0, 1})

例如:gender=Female AND language=English

Deep 部分#

a^(0) = [e_1, e_2, ..., e_k]  # 拼接所有 embedding
a^(l) = ReLU(W^(l) a^(l-1) + b^(l))
y_deep = W^(L) a^(L-1) + b^(L)

聯合訓練#

P(Y=1|x) = σ(w_wide^T [x, φ(x)] + w_deep^T a^(L) + b)

Wide 和 Deep 部分同時訓練,共享梯度。

TensorFlow 實現
import tensorflow as tf

# Wide 部分
crossed_feature = tf.feature_column.crossed_column(
    ['gender', 'language'], hash_bucket_size=100)

# Deep 部分
embedding_columns = [
    tf.feature_column.embedding_column(
        tf.feature_column.categorical_column_with_hash_bucket(
            'user_id', hash_bucket_size=10000), dimension=32),
    # ... 更多 embedding
]

# Wide & Deep 模型
model = tf.estimator.DNNLinearCombinedClassifier(
    linear_feature_columns=[crossed_feature],
    dnn_feature_columns=embedding_columns,
    dnn_hidden_units=[256, 128, 64])

YouTube DNN#

系統架構#

YouTube 推薦系統分為兩個階段:

百萬級影片 → Candidate Generation → 數百影片 → Ranking → 數十影片
             (召回層)                        (排序層)

召回網路#

輸入特徵:

  • 用戶觀看歷史(影片 embedding 平均)
  • 搜尋歷史(query embedding 平均)
  • 地理位置、年齡、性別

模型結構:

[video embeddings] → Average → ┐
[search embeddings] → Average → ├→ Concat → DNN → User Vector
[demographic features] ────────┘

訓練目標:

max Σ log P(w_t | U, C)

其中:
- U:用戶向量
- C:上下文
- w_t:用戶下一個觀看的影片

YouTube 使用 softmax 分類器訓練,但線上服務時使用近似最近鄰搜尋。

排序網路#

更豐富的特徵:

  • 影片觀看歷史
  • 用戶與影片的交互歷史
  • 影片發布時間
  • 影片元資料

輸出:

  • 預測觀看時長(而非 CTR)

YouTube 發現優化觀看時長比優化點擊率更能提升用戶滿意度。

DeepFM#

動機#

DeepFM = FM + DNN,端到端學習低階和高階特徵交互。

模型結構#

       Output
         ↑
      Sigmoid
         ↑
    ┌────┴────┐
    FM      DNN
    ↑         ↑
 Sparse   Dense
 Features Embedding

FM 部分#

y_FM = <w, x> + Σ <v_i, v_j> x_i x_j

DNN 部分#

y_DNN = σ(W^L ... σ(W^2 σ(W^1 e + b^1) + b^2) ... + b^L)

其中 e 是 embedding 層的拼接

關鍵點#

FM 和 DNN 共享 embedding 層,減少參數量,避免過擬合。

序列推薦:RNN/LSTM#

應用場景#

  • 音樂歌單生成
  • 影片序列推薦
  • 購物籃推薦

核心思想#

用戶的行為是有序的,後續行為依賴於之前的行為。

用戶行為序列:[item_1, item_2, ..., item_t] → 預測 item_{t+1}

LSTM 結構#

         h_t
          ↑
    ┌─────┴─────┐
    │   LSTM    │
    └─────┬─────┘
          ↑
    [h_{t-1}, x_t]

LSTM 通過門控機制解決長序列依賴問題:

  • 遺忘門:決定丟棄哪些資訊
  • 輸入門:決定添加哪些新資訊
  • 輸出門:決定輸出哪些資訊

示例:歌單生成#

# 輸入:歷史播放歌曲的 embedding 序列
# 輸出:下一首歌曲的概率分佈

model = Sequential([
    Embedding(vocab_size, embedding_dim),
    LSTM(128, return_sequences=True),
    LSTM(64),
    Dense(vocab_size, activation='softmax')
])

Attention 機制#

動機#

不是所有歷史行為對當前推薦都同等重要。

Self-Attention#

Attention(Q, K, V) = softmax(QK^T / √d_k) V

其中:
- Q:查詢向量
- K:鍵向量
- V:值向量
- d_k:鍵向量維度

在推薦中的應用#

用戶歷史行為:[item_1, item_2, ..., item_n]
候選物品:item_candidate

Attention 權重 = softmax(item_candidate · [item_1, ..., item_n])
用戶表示 = Σ attention_i × item_i

阿里的 DIN (Deep Interest Network) 就是使用 Attention 機制根據候選物品動態計算用戶興趣表示。

模型對比#

模型特點適用場景
Wide & Deep記憶 + 泛化通用推薦
YouTube DNN兩階段架構大規模影片推薦
DeepFMFM + DNNCTR 預估
RNN/LSTM序列建模序列推薦
Attention動態興趣建模長序列、多興趣

工程實踐#

Embedding 技巧#

技巧說明
預訓練使用 Word2Vec 或圖神經網路預訓練
共享相關特徵共享 embedding
維度選擇根據類別數確定,通常 log₂(類別數)

模型訓練#

# 使用 TensorFlow 分布式訓練
strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
    model = build_model()
    model.compile(optimizer='adam', loss='binary_crossentropy')
    model.fit(dataset, epochs=10)

線上服務#

深度學習模型推理延遲較高,需要:

  • 模型裁剪和量化
  • 使用 TensorRT 等推理優化工具
  • 特徵預計算和快取

總結#

要點說明
Wide & Deep結合記憶和泛化,Google 經典模型
YouTube DNN兩階段架構,召回 + 排序
DeepFMFM 和 DNN 共享 embedding
序列推薦RNN/LSTM 捕捉行為序列模式
Attention動態計算用戶興趣表示
工程實踐Embedding 技巧、分布式訓練、推理優化