1. 引言
在大规模推荐系统中,如何从海量候选物品中高效检索出用户可能感兴趣的物品是一个关键问题。传统的矩阵分解方法在处理稀疏数据和长尾分布时面临挑战。本文介绍了一种基于双塔神经网络的建模框架,通过采样偏差校正技术提升推荐质量,并成功应用于YouTube视频推荐系统。
2. 建模框架
论文的亮点不在于提出了新的架构,而是针对训练时负采样的处理。
- 模型架构
2.1 问题定义
给定查询(用户和上下文)和物品的特征表示:
- 查询特征: x i ∈ X x_i \in \mathcal{X} xi∈X
- 物品特征: y j ∈ Y y_j \in \mathcal{Y} yj∈Y
目标是通过双塔神经网络学习嵌入函数:
u : X × R d → R k v : Y × R d → R k \begin{aligned} u &: \mathcal{X} \times \mathbb{R}^d \rightarrow \mathbb{R}^k \\ v &: \mathcal{Y} \times \mathbb{R}^d \rightarrow \mathbb{R}^k \end{aligned} uv:X×Rd→Rk:Y×Rd→Rk
其中模型参数 θ ∈ R d \theta \in \mathbb{R}^d θ∈Rd,输出为内积得分:
s ( x , y ) = ⟨ u ( x , θ ) , v ( y , θ ) ⟩ s(x,y) = \langle u(x,\theta), v(y,\theta) \rangle s(x,y)=⟨u(x,θ),v(y,θ)⟩
2.2 损失函数
将推荐视为带连续奖励的多分类问题,采用softmax概率:
P ( y ∣ x ; θ ) = e s ( x , y ) ∑ j ∈ [ M ] e s ( x , y j ) \mathcal{P}(y|x;\theta) = \frac{e^{s(x,y)}}{\sum_{j\in[M]} e^{s(x,y_j)}} P(y∣x;θ)=∑j∈[M]es(x,yj)es(x,y)
加权对数似然损失:
L T ( θ ) = − 1 T ∑ i ∈ [ T ] r i ⋅ log ( P ( y i ∣ x i ; θ ) ) L_T(\theta) = -\frac{1}{T}\sum_{i\in[T]} r_i \cdot \log(\mathcal{P}(y_i|x_i;\theta)) LT(θ)=−T1i∈[T]∑ri⋅log(P(yi∣xi;θ))
2.3 批处理softmax
当物品集 M M M极大时,计算完整softmax不可行。一种常见的方法是使用一批项目的一个子集,特别是对于来自同一批次的所有查询,使用批次内的项目作为负样本。给定一个包含 B 对 ( x i , y i , r i ) i = 1 B {(x_i,y_i,r_i)}_{i=1}^{B} (xi,yi,ri)i=1B 的小批次,批次 softmax 为:
P B ( y i ∣ x i ; θ ) = e s ( x i , y i ) ∑ j ∈ [ B ] e s ( x i , y j ) \mathcal{P}_B(y_i|x_i;\theta) = \frac{e^{s(x_i,y_i)}}{\sum_{j\in[B]} e^{s(x_i,y_j)}} PB(yi∣xi;θ)=∑j∈[B]es(xi,yj)es(xi,yi)
2.4 采样偏差校正
流行物品因高频出现在批次中会被过度惩罚,引入对数校正项:
s c ( x i , y j ) = s ( x i , y j ) − log ( p j ) s^c(x_i,y_j) = s(x_i,y_j) - \log(p_j) sc(xi,yj)=s(xi,yj)−log(pj)
其中 p j p_j pj为物品 j j j的采样概率。
校正后的损失函数:
L B ( θ ) = − 1 B ∑ i ∈ [ B ] r i ⋅ log ( e s c ( x i , y i ) e s c ( x i , y i ) + ∑ j ≠ i e s c ( x i , y j ) ) L_B(\theta) = -\frac{1}{B}\sum_{i\in[B]} r_i \cdot \log\left(\frac{e^{s^c(x_i,y_i)}}{e^{s^c(x_i,y_i)} + \sum_{j\neq i}e^{s^c(x_i,y_j)}}\right) LB(θ)=−B1i∈[B]∑ri⋅log(esc(xi,yi)+∑j=iesc(xi,yj)esc(xi,yi))
3. 流式频率估计算法
3.1 核心思想
通过全局步长(global step)估计物品采样间隔 δ \delta δ,进而计算采样概率:
p = 1 δ p = \frac{1}{\delta} p=δ1
3.2 算法实现
数据结构:
- 哈希数组 A A A:记录物品最后一次出现的步长
- 哈希数组 B B B:估计物品的采样间隔 δ \delta δ
更新规则(SGD形式):
B [ h ( y ) ] ← ( 1 − α ) ⋅ B [ h ( y ) ] + α ⋅ ( t − A [ h ( y ) ] ) B[h(y)] \leftarrow (1-\alpha) \cdot B[h(y)] + \alpha \cdot (t - A[h(y)]) B[h(y)]←(1−α)⋅B[h(y)]+α⋅(t−A[h(y)])
数学性质:
-
偏差分析:
E ( δ t ) − δ = ( 1 − α ) t δ 0 − ( 1 − α ) t − 1 δ \mathbb{E}(\delta_t) - \delta = (1-\alpha)^t\delta_0 - (1-\alpha)^{t-1}\delta E(δt)−δ=(1−α)tδ0−(1−α)t−1δ -
方差上界:
E [ ( δ t − E [ δ t ] ) 2 ] ≤ ( 1 − α ) 2 t ( δ 0 − δ ) 2 + α E [ ( Δ 1 − δ ) 2 ] \mathbb{E}[(\delta_t - \mathbb{E}[\delta_t])^2] \leq (1-\alpha)^{2t}(\delta_0 - \delta)^2 + \alpha\mathbb{E}[(\Delta_1 - \delta)^2] E[(δt−E[δt])2]≤(1−α)2t(δ0−δ)2+αE[(Δ1−δ)2] -
各学习率误差的结果
3.3 多哈希优化
使用 m m m个哈希函数减少碰撞误差:
p ^ = max 1 ≤ i ≤ m 1 B i [ h i ( y ) ] \hat{p} = \max_{1\leq i\leq m} \frac{1}{B_i[h_i(y)]} p^=1≤i≤mmaxBi[hi(y)]1
4. 在YouTube推荐系统中的应用
4.1 系统架构
- 查询塔:融合用户观看历史和种子视频特征
- 候选塔:处理候选视频内容特征
- 共享特征嵌入提升训练效率
4.2 关键创新
- 流式训练:按天顺序消费数据,适应分布变化
- 哈希桶技术:处理新出现的内容ID
- 索引管道:量化哈希技术加速最近邻搜索
5.Trick
在相似度得分上添加温度参数 τ \tau τ
此外,为了使预测结果更加尖锐,我们在每个 logit 上添加了一个温度参数 τ。具体来说,我们使用以下公式计算查询和候选项目之间的相似度得分:
s ( x , y ) = ⟨ u ( x , θ ) , v ( y , θ ) ⟩ τ s(x,y)= \frac{⟨u(x,θ),v(y,θ)⟩}{\tau} s(x,y)=τ⟨u(x,θ),v(y,θ)⟩
Youtube实验结果
6. 结论
本文提出的采样偏差校正方法通过:
- 理论保证的无偏频率估计
- 适应动态变化的流式环境
- 可扩展的分布式实现
在十亿级物品的推荐场景中显著提升了检索质量,为大规模内容推荐提供了新的解决方案。
引用
Yi, X., Yang, J., Hong, L., Cheng, D. Z., Heldt, L., Kumthekar, A., Zhao, Z., Wei, L., & Chi, E. (2019). Sampling-bias-corrected neural modeling for large corpus item recommendations. Proceedings of the 13th ACM Conference on Recommender Systems, 269–277.