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.pswp.cn/diannao/88965.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88965.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/88965.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.net8创建tcp服务接收数据通过websocket广播

注册TCP服务器 注册WebSocket中间件 using System.Net; using System.Net.Sockets; using System.Text; using System.Text.Json; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.SignalR.Client; using Microsoft.AspNet…

阅读服务使用示例(HarmonyOS Reader Kit)

阅读服务使用示例(HarmonyOS Reader Kit) Reader Kit到底能干啥? 第一次搞电子书阅读器,真以为就是“读txt显示出来”这么简单,结果各种格式、排版、翻页动效、目录跳转……全是坑。还好有Reader Kit,救了…

ASP.NET Core Web API 实现 JWT 身份验证

在ASP.NET Core WebApi中使用标识框架(Identity)-CSDN博客 因为一般需要和标识框架一起使用,建议先查看标识框架用法 一.为什么需要JWT 我们的系统需要实现认证,即服务端需要知道登录进来的客户端的身份,管理员有管理员的权限,普通用户有普通用户的权限. 但服务…

优化Cereal宏 一行声明序列化函数

Cereal序列化库中宏递归展开的优化方案及技术解析 未优化&#xff1a;参考nlohmann json设计Cereal宏 一行声明序列化函数 宏实现 #include <cereal/cereal.hpp>// 强制二次展开 #define CEREAL_EXPAND( x ) x// 获取宏参数的数量&#xff0c;对应的CEREAL_PASTEn宏NAME…

14-C#的弹出的窗口输入与输出

C#的弹出的窗口输入与输出 1.文件名输入 string fileName Interaction.InputBox("输入保存的文件名", "保存");2.弹窗信息输出 MessageBox.Show("请选择轮询!", "Error", MessageBoxButtons.OK);catch (Exception ex){MessageBox.S…

多模态大语言模型arxiv论文略读(141)

Mini-InternVL: A Flexible-Transfer Pocket Multimodal Model with 5% Parameters and 90% Performance ➡️ 论文标题&#xff1a;Mini-InternVL: A Flexible-Transfer Pocket Multimodal Model with 5% Parameters and 90% Performance ➡️ 论文作者&#xff1a;Zhangwei …

VScode使用usb转网口远程开发rk3588

我使用的是鲁班猫的板&#xff0c;只有一个网口&#xff0c;需要接雷达&#xff0c;因此另外弄了一个usb转网口来连接电脑开发。 在使用vscode或MobaXterm连接板子时&#xff0c;使用主机名与用户名来连接&#xff1a; ssh catlubancat rk那边就直接插入usb转网口以及网线&a…

AUTOSAR图解==>AUTOSAR_AP_EXP_SOVD

AUTOSAR服务导向车辆诊断详解 面向现代化车辆架构的诊断方案 目录 1. 引言 1.1 ASAM SOVD简介1.2 SOVD产生的动机 2. SOVD参考架构 2.1 SOVD网关2.2 诊断管理器2.3 SOVD到UDS转换2.4 后端连接 3. SOVD用例 3.1 SOVD和UDS的共同用例3.2 SOVD特定用例 3.2.1 访问权限3.2.2 软件更…

第八讲:STL简介

1. 什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复的 组件库&#xff0c;而且是一个包罗数据结构与算法的软件框架。 2. STL的版本 a. 原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本…

高弹性、高可靠!腾讯云 TDMQ RabbitMQ Serverless 版全新发布

导语 2025年6月起&#xff0c;腾讯云 TDMQ RabbitMQ 版正式推出 Serverless 版本&#xff0c;该版本基于自研的存算分离架构&#xff0c;兼容 AMQP 0-9-1 协议和开源 RabbitMQ 的各个组件与概念&#xff0c;且能够规避开源版本固有的不抗消息堆积、脑裂等稳定性缺陷&#xff0…

Linux 内存调优之 BPF 分析用户态小内存分配

写在前面 博文内容为 使用 BPF 工具跟踪 Linux 用户态小内存分配(brk,sbrk)理解不足小伙伴帮忙指正 😃,生活加油我看远山,远山悲悯 持续分享技术干货,感兴趣小伙伴可以关注下 _ brk 内存分配简单概述 一般来说,应用程序的数据存放于堆内存中,堆内存通过brk(2)系统调用进…

心理测评app心理测试系统框架设计

一、逻辑分析 用户管理逻辑 新用户注册&#xff1a;需要收集用户的基本信息&#xff0c;如用户名、密码、邮箱等&#xff0c;并且要对输入信息进行合法性校验&#xff0c;确保信息完整且符合格式要求。同时&#xff0c;为每个新用户生成唯一的标识符&#xff0c;方便后续数据管…

配置有nvlink的H20A800使用pytorch报错

背景 装有nvlink的h20机器上配置好驱动和cuda之后使用pytorch报错 A800机器同样 (pytorch2.4) rootxx-dev-H20:~# python Python 3.12.0 | packaged by Anaconda, Inc. | (main, Oct 2 2023, 17:29:18) [GCC 11.2.0] on linux Type “help”, “copyright”, “credits” or …

sql的语句执行过程

第一步&#xff1a;客户端把语句发给服务器端执行 当我们在客户端执行SQL语句时&#xff0c;客户端会把这条SQL语句发送给服务器端&#xff0c;让服务器端的进程来处理这语句。也就是说&#xff0c;Oracle 客户端是不会做任何的操作&#xff0c;他的主要任务就是把客户端产生的…

深度学习-分类

深度学习-分类方式 &#xff08;重点&#xff09;一、按数据类型与处理逻辑分类1. 序列数据&#xff08;时序/顺序相关&#xff09;2. 网格状数据&#xff08;空间相关&#xff09;3. 图结构数据&#xff08;非欧几里得结构&#xff09;4. 其他特殊类型数据 &#xff08;重点&a…

C语言---常见的字符函数和字符串函数介绍

目录 前言 1 字符分类函数 2 字符转换函数 3 strlen的使用和模拟实现 3.1 strlen的模拟实现 4 strcpy的使用和模拟实现 4.1 strcpy的模拟实现 5 strcat的使用和模拟实现 5.1 strcat的模拟实现 6 strcmp的使用和模拟实现 6.1 strcmp的模拟实现 7 strncpy函数的使用…

Minio入门+适配器模式(实战教程)

一、安装Minio 1.1 拉取镜像 docker pull minio/minio docker images 1.2创建挂载目录 1.2.1 创建数据目录 mkdir -p /docker-minio/data 1.2.2 创建配置文件目录 mkdir -p /docker-minio/config 1.2.3 设置权限 chmod -R 777 /docker-minio/data /docker-minio/config …

LLaMA-Factory 对 omnisql 进行 ppo dpo grpo nl2sql任务 实现难度 时间 全面对比

在LLaMA-Factory框架下&#xff0c;针对omnisql任务&#xff08;自然语言到SQL生成&#xff09;应用PPO、DPO、GRPO三种算法的实现难度、时间及全面对比如下&#xff1a; 一、实现难度对比 1. PPO&#xff08;近端策略优化&#xff09; 难度&#xff1a;★★☆☆☆&#xff…

Kingbase 数据库中的 sys_guid() 函数报错

解决 Kingbase 数据库中的 sys_guid() 函数报错问题 问题背景 Kingbase 数据库在迁移或使用过程中&#xff0c;可能会遇到 select sys_guid() 函数报错 , 提示函数不存在的情况&#xff0c;这通常是由于以下几种原因造成的&#xff1a; 函数未正确安装或未启用函数参数不符合…

零基础RT-thread第五节:电容按键(2)

上一章的电容按键完全使用的HAL库的代码&#xff0c;并没有使用线程。这里尝试使用线程来控制电容按键。 依旧是 F767 本来以为会很容易实现&#xff0c;没想到尝试了很久&#xff0c;电容按键一直没有反应。 static rt_uint32_t measure_charge_time(void) {// 步骤1: 放电 …