《经典论文阅读1》YouTubeDNN—基于深度学习的搜推系统开山之作

  • 论文链接: https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf
  • 全文由『说文科技』原创出品。版权所有,翻版必究。

这篇发表于2016年九月的文章,在搜索推荐仍然基于矩阵分解的时代,抛出了基于深度学习的召回排序模型,无异于朝平静的湖面扔出了一枚重磅炸弹。如大家所见,在这十年里,基于深度学习的搜推模型几乎已成圭臬。看到这里,你怎么还能说google不伟大?

在这里插入图片描述

1. 摘要

YouTube 代表着现存最大规模以及最复杂的工业级推荐系统。首先文章高屋建瓴般地描述了这个系统,同时展示出了由深度学习带来的极佳的性能提升。根据经典的两阶段信息检索,本文也分成两部分:基于深度学习的候选者生成模型基于深度学习的排序模型。同时给出了一个巨大用户量级的推荐系统的设计、迭代维护等实践经验(为了让读者阅读到最后,这部分经验被原文作者放在了文末的Conclusion 中)。

摘要中的三个关键点:

  • 推荐系统由两类模块构成:candidate generation and ranking
  • 当前的推荐系统仍然是基于矩阵分解,而用deep neural network的工作还非常少。 => 本文提出使用deep learning 的recommendation system
  • 给出YouTube维护系统的经验教训。

2. 当前挑战

推荐系统现存挑战主要有三方面,分别是推荐系统的伸缩性新颖性和(数据中的)噪声

2.1 伸缩性

在小数据集上运行良好的模型很难在大规模的任务上表现优秀。对于YouTube这类应用,需要对有着高度专业分布式学习算法以及高效的服务系统。

2.2 新颖性

如何平衡旧有资源和新资源之间的推荐权重?旧资源中有很多是经过历史沉淀的,经过用户筛选的,质量肯定会高一些,而新颖的资源的时鲜性较好,但是质量可能参差不齐。
这一点,我对我司的推荐系统推荐的使用存在一定的疑惑,我不太清楚是由于我个人的事实认知错误,还是百度当前的推荐针对此方面做了改进。但我的观点很明显:『一个推荐系统必须要有推荐旧资源的能力』。如果只做新颖资源的分发,就很难把优秀的ugc资源沉淀起来,也就很难做高质量,这就导致很难提升用户体验,也无法帮助到用户寻找到高优资源(这违背了搜推是做优秀资源分发的本质)。

本文中多处提到资源的新颖性问题:
在这里插入图片描述

2.3 噪声

  • 系统很难获取用户的真实满意度,而会对有噪声的隐式反馈信号建模。
    在这里插入图片描述

3. 问题思考

3.1. 为啥要替换矩阵分解?

原因如下图所述:可以将任意连续、分类的特征方便的融入到模型中。
在这里插入图片描述

4. 模型

这些东西大家都太熟悉了,也没有太多要分析的了。这里我偷个懒,不赘述了,如果有疑问的地方,还请评论告知,我再补齐。

4.1. deep cadidate generation model

在这里插入图片描述
这个模型还挺有意思的。疯狂的拼接了一大批的 embedding。因为这些信号的来源各不相同,所以被作者称之为『Heterogeneous Signals』。

4.2. deep ranking network

在这里插入图片描述

5. 细节知识

5.1. ID 的空间过大该如何处理?

这里的ID指的是对视频、搜索query的编号,简言之就是把视频做编号处理,然后每个编号对应一个embedding。

5.2. oov问题

oov指的是Out-of-vocabulary,其实这是深度学习中一个常见的问题。Out-of-vocabulary values are simply mapped to the zero embedding.

5.3 『Example Age』 特征

这块儿我看了两遍才弄明白,麻了。理解后,才对作者的聪明才智惊艳到。我先把这部分的全文给贴上,方便大家做对照:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

逐段拆解上面这个原文:

第一段:讲了youtube 上传的视频量大之外,还说用户其实更喜欢新颖的内容。但是YouTube作为一个著名的应用,除了简单推荐用户想观看的新视频这首要因素外,还有一个关键的现象需要考虑:提升并且传播(propagating) 重要的内容。

通过这一段就可以清晰地知道,作者想传达的意思是:他们的系统想实现的是两方面的功能,第一要推荐用户喜欢观看的;第二提升并且传播重要的内容。

第二段:机器学习通常展现出对过去的隐式偏差,原因是它们在训练的时候就是从历史的样例数据中预测未来。(作者这里没有给出一个具体的引用不太合适)接着作者说到,真实世界的视频流行度分布是高度不稳定的,但是我们的训练集中的分布确实稳定的。用训练数据集中的分布去模拟一个动态变化的分布显然是不合理的。于是为了解决这个问题,作者提出:将训练数据的年龄作为一个特征用于训练。而在预测时,则会将这个age设置成0或者是一个偏负值,用于标识是在inference。

看到这里,是不是有点儿惊讶到你?真的挺为作者的聪明惊喜到。很多训练样本其实也是有『年龄』而言的,所以这一部分也不容忽视。

第三段:给出一个case 分析。这个case想说明的就是:在使用『example age』这个特征作为训练特征后,模型有能力精准的表示出视频的上传时间,同时给出(样本数据中存在的)与时间相关的流行度【刚开始发布时,分类的概率高;随着时间推移,分类的概率就低了】。而在没有该特征的情况下,该模型将在训练窗口上近似地预测平均似然。

6. 可借鉴的经验教训

作者在文中介绍到,维护一个拥有广大用户的推荐系统,有很多经验教训值得学习。这部分的内容作者写在了 Conclusion 中,几个关键点总结如下。

6.1. 用户倾向喜欢新颖的内容

在这里插入图片描述
用户更喜欢新颖的内容。 这一点,通读全文后就会有一个非常明显的观感。作者在文中反复提及『资源新颖』,比如上述的『example age』就是为了考虑内容新颖度(视频的生命周期)而加入的一个训练特征。

6.2 推荐系统受益于『描述用户同item的历史行为数据』这类特征

在这里插入图片描述
这类特征比如:观看时长。现如今几乎每名推荐算法工程师都知道观看时长是一个非常重要的特征,但是不可忽视,这是Google在2016年提出的文章。

6.3 将观看时长融入到逻辑回归模型中

在这里插入图片描述
再详细点儿说,是这样的:
融合了观看时长的逻辑回归模型通过预测观看时长的效果(这个效果可能是其它的某些指标)是要比预测点击率好的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/309313.html

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

相关文章

python基础——类型注解【变量,函数,Union】

📝前言: 上一篇文章Python基础——面相对象的三大特征提到,python中的多态,python中,类型是动态的,这意味着我们不需要在声明变量时指定其类型。然而,这可能导致运行时错误,因为我们…

【数据结构】泛型(分享重点)

什么是泛型&#xff1f; 泛型就是适用于许多许多类型&#xff0c;对类型参数化。 怎么创建一个泛型呢 class 泛型类名称<类型形参列表> { // 这里可以使用类型参数 } class ClassName<T1, T2, ..., Tn> { } class 泛型类名称<类型形参列表> extends 继承类…

2024HW --> 安全产品 Powershell无文件落地攻击

在HW中&#xff0c;除了了解中间件&#xff0c;web漏洞&#xff0c;这些攻击的手法&#xff0c;还得了解应急响应&#xff0c;安全产品&#xff0c;入侵排查&#xff0c;溯源反制...... 那么今天&#xff0c;就来说一下安全产品&#xff08;安全公司我就不说了&#xff0c;这个…

自动化收集Unity版本更新日志

自动化收集Unity版本更新日志 &#x1f365;功能介绍&#x1f96a;食用手册填写配置开始搜集 &#x1f368;数据展示 &#x1f365;功能介绍 &#x1f4a1;获取指定年份中所有的Unity版本更新日志。 &#x1f4a1;根据指定字符串过滤。 &#x1f4a1;.收集后自动保存成markdow…

Niobe开发板OpenHarmony内核编程开发——定时器

本示例将演示如何在Niobe Wifi IoT开发板上使用cmsis 2.0 接口进行定时器开发 Timer API分析 osTimerNew() /// Create and Initialize a timer./// \param[in] func function pointer to callback function./// \param[in] type \ref osTimerOnce …

Kafka 架构深入探索

目录 一、Kafka 工作流程及文件存储机制 二、数据可靠性保证 三 、数据一致性问题 3.1follower 故障 3.2leader 故障 四、ack 应答机制 五、部署FilebeatKafkaELK 5.1环境准备 5.2部署ELK 5.2.1部署 Elasticsearch 软件 5.2.1.1修改elasticsearch主配置文件 5.2…

事务隔离级别的无锁实现方式 -- MVCC

MVCC的全称是Multiversion Concurrency Control(多版本并发控制器)&#xff0c;是一种事务隔离级别的无锁的实现方式&#xff0c;用于提高事务的并发性能&#xff0c;即事务隔离级别的一种底层实现方式。 在了解MVCC之前&#xff0c;我们先来回顾一些简单的知识点&#xff1a;…

终端工具命令行颜色配置(解决终端工具连上服务器之后,无颜色问题)

本期主题&#xff1a; 讲解使用mobaxterm等终端工具连上服务器&#xff0c;但是命令行没有颜色的问题 目录 1. 问题描述2. 原因解释3.测试 1. 问题描述 使用终端工具&#xff08;Mobaxterm等&#xff09;连上服务器之后&#xff0c;发现终端工具没有颜色&#xff0c;如下图&am…

API接口京东开放平台item_get-获得京东商品详情API接口根据商品ID查询商品标题价格描述等详情数据

京东商品详情API接口可以提供以下方面的信息&#xff1a; 商品基础信息&#xff1a;包括商品的标题、价格、描述、图片等基本信息&#xff0c;这是构建电商平台的基础数据。商品分类信息&#xff1a;帮助用户更好地了解商品所属的类别&#xff0c;便于商品筛选和查找。商品销售…

RK3568平台 驱动实现IIC设备读取十六位寄存器状态

一.项目需求 要求读取GVS2715这个IIC设置寄存器的值来获取版本号&#xff0c;GVS2715这个芯片是十六位寄存器。 当使用i2ctool工具读取十六位寄存器的时候&#xff0c;发现无法读取出来&#xff0c;读取的都是XXXX。 二.从零开始写IIC设备驱动读取十六位寄存器的状态 #includ…

CentOS 7安装Zookeeper

说明&#xff1a;本文介绍如何在CentOS 7操作系统下使用Zookeeper 下载安装 首先&#xff0c;去官网下载所需要安装的版本&#xff0c;我这里下载3.4.9版本&#xff1b; 上传到云服务器上&#xff0c;解压 tar -xvf zookeeper-3.4.9.tar.gz修改配置 进入Zookeeper目录下的co…

Spark-机器学习(1)什么是机器学习与MLlib算法库的认识

从这一系列开始&#xff0c;我会带着大家一起了解我们的机器学习&#xff0c;了解我们spark机器学习中的MLIib算法库&#xff0c;知道它大概的模型&#xff0c;熟悉并认识它。同时&#xff0c;本篇文章为个人spark免费专栏的系列文章&#xff0c;有兴趣的可以收藏关注一下&…

前端标记语言HTML

HTML&#xff08;HyperText Markup Language&#xff09;是一种用于创建网页的标准标记语言。它是构建和设计网页及应用的基础&#xff0c;通过定义各种元素和属性&#xff0c;HTML使得开发者能够组织和格式化文本、图像、链接等内容。 HTML的基本结构 文档类型声明&#xff0…

SpringBoot+FreeMaker

目录 1.FreeMarker说明2.SpringBootFreeMarker快速搭建Pom文件application.properties文件Controller文件目录结构 3.FreeMarker数据类型3.1.布尔类型3.2.数值类型3.3.字符串类型3.4.日期类型3.5.空值类型3.6.sequence类型3.7.hash类型 4.FreeMarker指令assign自定义变量指令if…

开源版中文和越南语贷款源码贷款平台下载 小额贷款系统 贷款源码运营版

后台 代理 前端均为vue源码&#xff0c;前端有中文和越南语 前端ui黄色大气&#xff0c;逻辑操作简单&#xff0c;注册可对接国际短信&#xff0c;可不对接 用户注册进去填写资料&#xff0c;后台审批&#xff0c;审批状态可自定义修改文字显示 源码免费下载地址抄笔记 (chaob…

详解构造函数

前言 希望这篇文章是有意义的&#xff0c;能够帮助初学者理清构造函数的概念&#xff0c;关系及误区。首先定义一个日期类&#xff0c;借助日期类讲解构造函数。 class Date {public:void Init(int year, int month, int day) //初始化数据的方法{_year year;_month month…

CDP7 下载安装 Flink Percel 包

下载链接&#xff1a;https://www.cloudera.com/downloads/cdf/csa-trial.html 点击后选择版本&#xff0c; 然后点击download now&#xff0c;会有一个协议&#xff0c;勾选即可&#xff0c;然后就有三个文件列表&#xff0c; 我这里是已经注册登录的状态&#xff0c;如果没…

64B/66B GT Transceiver 配置

一、前言 前一篇文章已经讲述了64B/66B的编码原理&#xff0c;此篇文章来配置一下7系列GT的64B/66B编码。并讲述所对应的例子工程的架构&#xff0c;以及部分代码的含义。 二、IP核配置 1、打开7 Series FPGAs Transceiver Wizards&#xff0c;选择将共享逻辑放置在example …

【面试题】s += 1 和 s = s + 1的区别

文章目录 1.问题2.发现过程3.解析 1.问题 以下两个程序真的完全等同吗&#xff1f; short s 0; s 1; short s 0; s s 1; 2.发现过程 初看s 1 和 s s 1好像是等价的&#xff0c;没有什么区别。很长一段时间内我也是这么觉得&#xff0c;因为当时学习c语言的时候教科书…

【数据挖掘】实验6:初级绘图

实验6&#xff1a;初级绘图 一&#xff1a;实验目的与要求 1&#xff1a;了解R语言中各种图形元素的添加方法&#xff0c;并能够灵活应用这些元素。 2&#xff1a;了解R语言中的各种图形函数&#xff0c;掌握常见图形的绘制方法。 二&#xff1a;实验内容 【直方图】 Eg.1&…