YouTube深度学习视频推荐系统

2023-11-10

YouTube推荐系统架构

在这里插入图片描述
YouTube推荐系统架构是经典的两级模型——召回、精排模型。
第一级用候选集生成模型完成候选视频的快速筛选,在这一步,候选视频集合由百万量级降至几百量级。这相当于经典推荐系统架构中的召回层。
第二级用排序模型(Ranking Model)完成几百个候选视频的精排。这相当于经典推荐系统架构中的排序层。

候选集生成模型

在这里插入图片描述
三层神经网络过后,使用softmax函数作为输出层。读者看到softmax函数就应知道该模型是一个多分类模型。YouTube是把选择候选视频集这个问题看作 用户推荐next watch (下一次观看视频)的问题,模型的最终输出是一个在所有候选视频上的概率分布,显然这是一个多分类问题,所以这里用softmax作为最终的输出层。 总的来讲,Y o u T u b e 推荐系统的候选集生成模型是一个标准的利用 Embedding预训练特征的深度神经网络模型。

候选集生成模型独特的线上服务方式

细心的读者可能已经发现,架构图左上角的模型服务方法与模型训练方法完全不同。在候选集生成网络的线上服务过程中,YouTube并没有直接采用训练时的模型进行预测,而是采用了一种最近邻搜索的方法,这是一个经典的工程和理论做权衡的结果。
具体来讲,在模型服务过程中,如果对每次推荐请求都端到端地运行一遍候选集生成网络的推断过程,那么由于网络结构比较复杂,参数数量特别是输出层 的参数数量非常巨大,整个推断过程的开销会很大。因此,在通过“候选集生成模型”得到用户和视频的Embedding后,通过Embedding最近邻搜索的方法进行模型服务的效率会高很多。这样甚至不用把模型推断的逻辑搬上服务器,只需将用户Embedding和视频Embedding存到Redis等内存数据库或者服务器内存中就好。
那么这里的视频Embedding和用户Embedding是如何生成的呢?
因为模型的输入的特征向量全部都是用户相关的特征,所以最后一层 ReLU层的输出向量可以当作用户的Embedding向量。此外,由于最后的输出层是softmax,该softmax层的参数本质上是一个mxn维的矩阵,其中m指的是最后一层(ReLU层)的维度,n指的是分类的总数,也就是YouTube所有视频的总数为n。那么视频Embedding就是这个m x n 维矩阵的各列向量。这样的Embedding生成方法其实和Word2vec中词向量的生成方法相同。

在模型训练完成后,逐 个输人所有用户的特征向量到模型中,就可以得到所有用户的Embedding向量, 之后导人线上Embedding数据库。在预测某用户的视频候选集时,先得到该用户 的Embedding向量,再在视频Embedding向量空间中利用局部敏感哈希等方法搜 索该用户Embedding向量的Top尺近邻,就可以快速得到A个候选视频集合。

排序模型

在这里插入图片描述
第一眼看上去,你可能会认为排序模型的网络结构与候选集生成模型没有太大区别,在模型结构上确实是这样的,它们都遵循 Embedding MLP 的模型架构。但是我们来看其中的细节,特别是输入层和输出层的部分,它们跟候选集生成模型还是有很大不同的,这就是我们要重点关注的。
我们先看输入层,相比于候选集生成模型需要对几百万候选集进行粗筛,排序模型只需对几百个候选视频进行排序,因此可以引入更多特征进行精排。具体来说,YouTube 的输入层从左至右引入的特征依次是:
impression video ID embedding:当前候选视频的 Embedding;
watched video IDs average embedding:用户观看过的最后 N 个视频 Embedding 的平均值;
language embedding:用户语言的 Embedding 和当前候选视频语言的 Embedding;
time since last watch:表示用户上次观看同频道视频距今的时间;
previous impressions:该视频已经被曝光给该用户的次数;
其中,第 4 个特征 time since last watch 说的是用户观看同类视频的间隔时间。如果从用户的角度出发,假如某用户刚看过“DOTA 比赛经典回顾”这个频道的视频,那他很大概率会继续看这个频道的其他视频,该特征就可以很好地捕捉到这一用户行为。第 5 个特征 previous impressions 说的是这个视频已经曝光给用户的次数。我们试想如果一个视频已经曝光给了用户 10 次,用户都没有点击,那我们就应该清楚,用户对这个视频很可能不感兴趣。所以 previous impressions 这个特征的引入就可以很好地捕捉到用户这样的行为习惯,避免让同一个视频对同一用户进行持续的无效曝光,尽量增加用户看到新视频的可能性。
把这 5 类特征连接起来之后,需要再经过三层 ReLU 网络进行充分的特征交叉,然后就到了输出层。这里我们要重点注意,排序模型的输出层与候选集生成模型又有所不同。不同主要有两点:
一是候选集生成模型选择了 softmax 作为其输出层,而排序模型选择了 weighted logistic regression(加权逻辑回归)作为模型输出层;
二是候选集生成模型预测的是用户会点击“哪个视频”,排序模型预测的是用户“要不要点击当前视频”。

那么问题来了,YouTube 为什么要这么做呢?其实,排序模型采用不同输出层的根本原因就在于,YouTube 想要更精确地预测用户的观看时长,因为观看时长才是 YouTube 最看中的商业指标,而使用 Weighted LR 作为输出层,就可以实现这样的目标。这是怎么做到的呢?在 Weighted LR 的训练中,我们需要为每个样本设置一个权重,权重的大小,代表了这个样本的重要程度。为了能够预估观看时长,YouTube 将正样本的权重设置为用户观看这个视频的时长,然后再用 Weighted LR 进行训练,就可以让模型学到用户观看时长的信息。这是因为观看时长长的样本更加重要,严格一点来说,就是观看时长长的样本被模型预测的为正样本的概率更高,这个概率与观看时长成正比,这就是使用 Weighted LR 来学习观看时长信息的基本原理。最后,我们再聊一聊排序模型的模型服务方法。
我们现在回顾一下,候选集生成模型是可以直接利用用户 Embedding 和视频 Embedding 进行快速最近邻搜索的。那排序模型还能这样做吗?
答案是不可以了,原因有两点:
一是因为我们的输入向量中同时包含了用户和视频的特征,不再只是单纯的用户特征。这样一来,用户 x 物品特征的组合过多,就无法通过预存的方式保存所有模型结果;
二是因为排序模型的输出层不再是预测视频 ID,所以我们也无法拿到视频 Embedding。因此对于排序模型,我们必须使用 TensorFlow Serving 等模型服务平台,来进行模型的线上推断。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

YouTube深度学习视频推荐系统 的相关文章

随机推荐

  • B. Permutation

    Problem B Codeforces include
  • pandas中对列进行上下平移(shift)

    在利用Python进行数据操作时 有时需要对数据某列数据进行上下平移 比如对某一列进行错位加减 pandas里的groupby和shift两个函数就能轻松实现上述操作 df pd DataFrame name a a a b b c val
  • 新系统如何确定性能测试目标

    前提 新系统上线没有明确数字对比 性能需求非可度量 完成目标 1 服务器的某些资源已耗尽 如CPU 内存 句柄 数据库存在大量slow query 2 需求证明系统是可水平扩展的 即增加服务器配置系统TPS 吞吐量 能上去
  • 回忆,这一年(华师918血泪贴)

    回忆 这一年 华师918血泪贴 考研前夕 回想一年前 当时这个时候我应该刚通过了部门的实习答辩 拿了不错的评分 不出意外就等着签三方了 打算骑牛找马看看秋招的机会 但是双非出身的我 一直希望摆脱那种囚笼困境 需要付出比常人更多才能得到人家脱
  • 【五一创作】跑alpaca-lora语言模型的常见问题(心得)

    训练部署alpaca lora语言模型常见问题 Alpaca Lora是一个开源的自然语言处理框架 使用深度学习技术构建了一个端到端的语言模型 在训练和部署alpaca lora语言模型时 可能会遇到一些常见问题 本文将介绍一些这些问题及其
  • 计算机应用基础绩点3.0,学分绩点和期末考说明(华师).doc

    学分绩点和期末考说明 华师 doc 由会员分享 提供在线免费全文阅读可下载 此文档格式为doc 更多相关 学分绩点和期末考说明 华师 doc 文档请在天天文库搜索 1 关于学分绩点的一些说明首先 我们先来了解下几个概念吧1 学分 是用于计算
  • 【CANN训练营】Ascend目标检测与识别-定制自己的AI应用

    参考 https gitee com ascend samples tree master cplusplus level3 application 1 cv detect and classify 1 准备工作 cd samples cp
  • python画易烊千玺_Python02

    class A object def init self 私有 在变量名称前加上 私有 不可继承 不可在外部调用 但是可以在内部调用 self a 1000 约定使用 来表示私有 self def B self print self a A
  • python(数据分析)第4天:绘制网格

    plt grid import matplotlib pyplot as plt import random import matplotlib from matplotlib import cycler from matplotlib f
  • 解决ssh_exchange_identification: read: Connection reset by peer

    解决ssh exchange identification read Connection reset by peer linux远程免密登陆出现上述报错 1 先在远程机器上 vi etc hosts allow 在里面写入 允许所有ip连
  • Pyspark的dataframe写入hive表

    文章最前 我是Octopus 这个名字来源于我的中文名 章鱼 我热爱编程 热爱算法 热爱开源 所有源码在我的个人github 这博客是记录我学习的点点滴滴 如果您对 Python Java AI 算法有兴趣 可以关注我的动态 一起学习 共同
  • 第八章,索引的创建与设计原则

    第八章 索引的创建与设计原则 1 索引的声明与使用 1 1 索引的分类 SQL的索引包括普通索引 唯一性索引 全文索引 单列索引 多列索引和空间索引等 功能逻辑上说 索引主要有 4 种 分别是普通索引 唯一索引 主键索引 全文索引 按物理实
  • 面试题-Java集合、IO

    一 Java集合 HashMap的内部结构 扩容 为什么是2的幂次方 https www cnblogs com chengxiao p 6059914 html HashMap的实现原理 http www importnew com 27
  • 三个空饮料瓶可以换一瓶饮料,给你1箱(50瓶)饮料,你能喝多少瓶饮料?

    突然想起来了一道小学生的数学题 三个空饮料瓶可以换一瓶饮料 给你1箱 50瓶 饮料 你能喝多少瓶饮料 哈哈 于是写了一段代码 不知道还有没有高人了指点下 本人小菜鸟一只 function demo num kong test num2 nu
  • 第三章部分作业重新调试结果(第五周)

    求 百钱百鸡 问题 鸡翁一值钱五 鸡母 一值钱三 鸡雏三值钱一 百钱买百鸡 问鸡翁 鸡母 鸡雏各几何 设买了x只鸡翁 y只鸡目 z只鸡雏 则有 x y z 100 5 x 3 y 1 3 z 100 15 x 9 y z 300 inclu
  • 变分贝叶斯

    Variational Bayesian inference 参考文献 徐亦达老师变分推断课件 A tutorial on variational Bayesian inference 白板推导指数族分布 白板推导变分推断 Log like
  • 实测最像ChatGPT的中文产品:能解释三体、懂弱智吧的梗,内测开启人人都能试!...

    明敏 发自 凹非寺量子位 公众号 QbitAI 最像ChatGPT的中文产品 出现了 昨晚 一个名叫Inspo的生成式对话AI 刚刚在 民间 开启内测 马上引发不小反响 体验过的博主表示 1分钟搞定3份策划 工作5年没它能写 有人自己上手试
  • IP数据报检验和计算

    在进行计算之前先补充一下基础知识 一 原码 反码和补码 原码 原码是计算机机器数中最简单的一种形式 数值位就是真值的绝对值 符号位位 0 时表示正数 符号位为 1 时表示负数 原码又称带符号的绝对值 为了方便整数和小数区别 整数的符号位与数
  • Android 实现按钮 跳转到某网页

    这个是我在刚开始学习Android的时候 我同学要做一个手机端的控制 他说我的东西都用 java web写好了 你只要给我写一个跳转按钮即可 其实很简单只是简单地按钮点击事件和Intent跳转 但是毕竟是第一次帮别人做东西还觉得挺有意义的
  • YouTube深度学习视频推荐系统

    YouTube推荐系统架构 YouTube推荐系统架构是经典的两级模型 召回 精排模型 第一级用候选集生成模型完成候选视频的快速筛选 在这一步 候选视频集合由百万量级降至几百量级 这相当于经典推荐系统架构中的召回层 第二级用排序模型 Ran