《经典论文阅读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.hqwc.cn/news/619025.html

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

相关文章

4月14日总结

java学习 一.多线程 简介:多线程是计算机科学中的一个重要概念,它允许程序同时执行多个任务或操作。在单个程序内部,多线程使得代码可以并行执行,从而提高程序的性能和响应速度。 这里先来介绍一下创建多线程的几种方法。 1.扩展…

玩鸿蒙项目来了,请尝鲜

文章目录 前言玩鸿蒙项目的介绍效果截图总结 一、前言 记得拉倒底看效果图。 鸿蒙开发热潮已经来了,大家学习热情还是很大的,还有就是华为生态学堂线下的举办,很多都入局了。 鸿蒙要想快速上手,那么就要自己开始去写页面&…

day10 | 栈与队列 part-2 (Go) | 20 有效的括号、1047 删除字符串中的所有相邻重复项、150 逆波兰表达式求值

今日任务 20 有效的括号 (题目: . - 力扣(LeetCode))1047 删除字符串中的所有相邻重复项 (题目: . - 力扣(LeetCode))150 逆波兰表达式求值 (题目: . - 力扣(LeetCode)) 20 有效的括号 题目: . - 力扣&…

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

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

第17天:信息打点-语言框架开发组件FastJsonShiroLog4jSpringBoot等

第十七天 本课意义 1.CMS识别到后期漏洞利用和代码审计 2.开发框架识别到后期漏洞利用和代码审计 3.开发组件识别到后期漏洞利用和代码审计 一、CMS指纹识别-不出网程序识别 1.概念 CMS指纹识别一般能识别到的都是以PHP语言开发的网页为主,其他语言开发的网页识…

IntelliJ IDEA 2022.3.2 解决decompiled.class file bytecode version:52.0(java 8)

1 背景 使用idea 打开一个Kotlin语言编写的demo项目,该项目使用gradle构建。其gradle文件如下: plugins {id javaid org.jetbrains.kotlin.jvm version 1.8.20 } group me.administrator version 1.0-SNAPSHOTrepositories {mavenCentral()jcenter()…

【数据分析】AHP层次分析法

博主总结:根据每个方案x各准则因素权重累加结果 对比来选择目标。数据主观性强 简介 AHP层次分析法是一种解决多目标复杂问题的定性和定量相结合进行计算决策权重的研究方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标之间能…

C++11 数据结构3 线性表的循环链式存储,实现,测试

上一节课,我们学了线性表 单向存储结构(也就是单链表),这个是企业常用的技术,且是后面各种的基本,一定要牢牢掌握,如果没有掌握,下面的课程会云里雾里。 一 ,循环链表 1…

cdn加速与ssl加速

cdn CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。 简单的来说,就是把原服务器上数据复制到其他服务器上,用户访…

.net框架和c#程序设计第三次测试

目录 一、测试要求 二、实现效果 三、实现代码 一、测试要求 二、实现效果 数据库中的内容&#xff1a; 使用数据库中的账号登录&#xff1a; 若不是数据库中的内容&#xff1a; 三、实现代码 login.aspx文件&#xff1a; <% Page Language"C#" AutoEventW…

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

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

python botos s3 aws

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html AWS是亚马逊的云服务&#xff0c;其提供了非常丰富的套件&#xff0c;以及支持多种语言的SDK/API。本文针对其S3云储存服务的Python SDK&#xff08;boto3&#xff09;的使用进行介绍。 …