当前位置: 首页 > news >正文

Youtube双塔模型

1. 引言

在大规模推荐系统中,如何从海量候选物品中高效检索出用户可能感兴趣的物品是一个关键问题。传统的矩阵分解方法在处理稀疏数据和长尾分布时面临挑战。本文介绍了一种基于双塔神经网络的建模框架,通过采样偏差校正技术提升推荐质量,并成功应用于YouTube视频推荐系统。

2. 建模框架

论文的亮点不在于提出了新的架构,而是针对训练时负采样的处理。

  • 模型架构
    在这里插入图片描述

2.1 问题定义

给定查询(用户和上下文)和物品的特征表示:

  • 查询特征: x i ∈ X x_i \in \mathcal{X} xiX
  • 物品特征: y j ∈ Y y_j \in \mathcal{Y} yjY

目标是通过双塔神经网络学习嵌入函数:
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×RdRk:Y×RdRk
其中模型参数 θ ∈ 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(yx;θ)=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]rilog(P(yixi;θ))

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(yixi;θ)=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]rilog(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)]+α(tA[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α)t1δ

  • 方差上界:
    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[(δtE[δ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^=1immaxBi[hi(y)]1

4. 在YouTube推荐系统中的应用

4.1 系统架构

  • 查询塔:融合用户观看历史和种子视频特征
  • 候选塔:处理候选视频内容特征
  • 共享特征嵌入提升训练效率

4.2 关键创新

  1. 流式训练:按天顺序消费数据,适应分布变化
  2. 哈希桶技术:处理新出现的内容ID
  3. 索引管道:量化哈希技术加速最近邻搜索

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. 结论

本文提出的采样偏差校正方法通过:

  1. 理论保证的无偏频率估计
  2. 适应动态变化的流式环境
  3. 可扩展的分布式实现

在十亿级物品的推荐场景中显著提升了检索质量,为大规模内容推荐提供了新的解决方案。

引用

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.

http://www.lqws.cn/news/561673.html

相关文章:

  • 第27篇:SELinux安全增强机制深度解析与OpenEuler实践指南
  • eTools 开源发布
  • 如何在 Ubuntu 上通过终端或在 VirtualBox 中安装 GCC
  • 佳能Canon PIXMA G1020打印机信息
  • scGPT-spatial 复现
  • KS值:风控模型的“风险照妖镜”
  • Transformer结构--输入编码(BPE,PE)
  • Java面向对象(一)
  • JVM 之双亲委派机制与打破双亲委派
  • 【软考高项论文】论信息系统项目的进度管理
  • 【C++】简单学——类和对象(实现双向循环链表)
  • Python基础(吃洋葱小游戏)
  • Java Optional 详解:优雅处理空指针异常
  • 顺序表应用实践:从通讯录实现到性能优化深度解析
  • 有理函数积分——分式分解时设分解式的规则
  • Fine-Tuning Vision-Language-Action Models:Optimizing Speed and Success论文学习
  • SQL关键字三分钟入门:ROW_NUMBER() —— 窗口函数为每一行编号
  • FreeSWITCH配置文件解析(2) dialplan 拨号计划中xml 的action解析
  • 第一章 从零开始学习大型语言模型-搭建环境
  • 人大金仓数据库jdbc连接jar包kingbase8-8.6.0.jar驱动包最新版下载(不需要积分)
  • 5G核心网,NAS短消息的实现
  • 可编程逻辑器件的发展与比较
  • 构建 AI 系统的 4 大 Agentic AI 设计模式
  • Python 可迭代的对象、迭代器 和生成器(何时使用生成器表达式)
  • 2099. 找到和最大的长度为 K 的子序列
  • 第6篇:中间件——Gin的请求处理管道
  • 大事件项目记录10-文章分类接口开发-更新文章分类
  • AtCoder AT_abc412_c [ABC412C] Giant Domino 题解
  • JavaEE:CAS单点登录
  • 数据结构1 ——数据结构的基本概念+一点点算法