《经典论文阅读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 将观看时长融入到逻辑回归模型中

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

架构师系列-搜索引擎ElasticSearch(二)

索引类型 正排索引 一个简单版的B树索引大概是:叶子节点存放完整的数据,非叶子节点存放建立对应聚簇索引对应的字段(主键),一条可以使用聚簇索引的SQL,会依次从上往下进行B树的查找。 create table user…

读所罗门的密码笔记20_更好的自己

1. 民营部门 1.1. 障碍最大的一步,与履行协议所需要的人才和技能有关 1.2. 多样性很好,不要过分依赖任何一种资源,因为政府会出于政治原因淡化问题,不尊重科学,甚至退出协议 1.2.1. 民营部门和非政府组织的强大联盟…

康耐视visionpro-CogFindCircleTool操作工具详细说明

◆CogFindCircleTool]功能说明: 通过用多个卡尺找到多个点来拟合所要找的圆 ◆CogFindCircleTool操作说明: ①.打开工具栏,双击或点击鼠标拖拽添加CogFindCircleTool工具 ②.添加输入图像,右键“链接到”或以连线拖拽的方式选择相应输入源 ③预期的圆弧:设置预期圆弧的…

第6章:6.4.2 案例二:爬取成语网站数据 (MATLAB入门课程)

讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 本案例用到的网址为:成语大全列表成语大全列表https…

NUC11更新 ESXi 8.0U2B 安装过程

1、下载 镜像名称:VMware-VMvisor-Installer-8.0U2b-23305546.x86_64.iso下载地址:https://docs.vmware.com/tw/VMware-vSphere/8.0/rn/vmware-vsphere-80-release-notes/index.html 2、制作镜像启动盘 2、查看镜像版本信息 3、启动设备安装系统 1、启…

web3项目自动连接小狐狸以及小狐狸中的各种“地址”详解

刚做web3的时候,比较迷糊的就是人们口中说的各种地址,小狐狸钱包地址,私钥地址,跳转地址,接口地址,交易地址,等等XX地址,常常感觉跟做链的同事们说话不在一个频道。 这一小节&#x…

【C Hash Map from Redis】

将Redis源码中的哈希表底层逻辑提取,并进行最小demo级测试将对应文件抽出,通过宏替换等方式保证源码编译通过main.c编写测试demo ,注册哈希函数和值比较函数(必选项) /* Hash Tables Implementation.** This file imp…

二、Flask会话技术和模板语言

Cookie Session # views.py: 路由 视图函数 import datetimefrom flask import Blueprint, render_template, request, redirect, session from .models import *# 蓝图 blue Blueprint(user, __name__)# 首页 可以写两个路由,都是访问同一个函数 blue.route(/) b…

java数据结构与算法刷题-----LeetCode371. 两整数之和

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 位运算 位运算 解题思路:时间复杂度O( l o g 2 m a …

自顶向下的语法分析器

一、问题及解决: 什么是Dictionary File? 这种类型的文件为Windows虚拟PC 2007,虚拟机,它允许一些版本的Windows在一台计算机上运行生成。它包括像发音和单词的定义以及各种语言,如德国和法国的辞典数据。 如何实现语…

2024/4/15 AD/DA

AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号 DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号 AD/DA转换打开了计算…

代码学习记录42---动态规划

随想录日记part42 t i m e : time: time: 2024.04.14 主要内容:今天开始要学习动态规划的相关知识了,今天的内容主要涉及:最长递增子序列 ;最长连续递增序列 ;最长重复子数组 ;最长公…

5G网络开通与调测ipv4

要求如下: 1. 勘站规划 1. 【重】首先观察NR频点,完成设备选型 2645--选择N41 3455--选择N78 4725--选择N79 设备选型如下:观察AAU的通道数,最大发射功率;选择N41的选型频段也要选41 2. …

算法:位运算

算法&#xff1a;位运算 常见位运算操作基本题型模拟加法数字查找总结 常见位运算操作 在C/C中&#xff0c;有比较丰富的位运算操作符&#xff0c;常见的有&#xff1a; &&#xff1a;按位与 |&#xff1a;按位或 ~&#xff1a;按位取反 ^&#xff1a;按位异或 <<&a…

stm32开发之threadx+modulex组合开发使用记录

前言 参考博客 论坛官方资料: 微软开发板核心芯片使用的是stm32f407zgtx&#xff0c;烧录工具使用的是jlink模块的构建使用的是脚本进行构建网上针对modulex的资料较少&#xff0c;这里做个记录 项目结构 逻辑框架 主程序代码 主函数 /** Copyright (c) 2024-2024&#xff0…

ansible创建用户账户和更新ansible库的密钥

1.创建⽤户帐户 从 http://materials/user_list.yml 下载要创建的⽤户的列表&#xff0c;并将它保存到 /home/greg/ansible 在本次考试中使⽤在其他位置创建的密码库 /home/greg/ansible/locker.yml 。创建名为 /home/greg/ansible/users.yml 的 playbook &#xff0c;从⽽…

空指针与野指针的辨析

空指针 空指针不指向任何实际的对象或者函数&#xff0c;反过来&#xff0c;任何的对象或者函数也不可能是空指针。 在程序中得到空指针的办法就是使用预定义的NULL&#xff0c; int *ip NULL; 校验一个指针是否为空指针可以用 if (ip NULL) NULL是标准规定的宏定义&am…

使用spring-ai快速对接ChatGpt

什么是spring-ai Spring AI 是一个与 Spring 生态系统紧密集成的项目&#xff0c;旨在简化在基于 Spring 的应用程序中使用人工智能&#xff08;AI&#xff09;技术的过程。 简化集成&#xff1a;Spring AI 为开发者提供了方便的工具和接口&#xff0c;使得在 Spring 应用中集…

Unity类银河恶魔城学习记录12-13 p135 Merge Skill Tree with Dogge skill源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili​​​​​​​ Inventory.cs using System.Collections.Generic; using Un…

链表-双指针-虚拟节点-力扣

链表--双指针--虚拟节点 力扣 142 环形链表求循环起点 重点力扣 21 合并两个有序链表力扣 86 分割链表力扣23 合并K个有序链表 -- 优先队列&#xff08;二叉堆 小顶堆&#xff09;重点力扣19 找倒数第N个元素 快慢指针 一次遍历 重点力扣876 快慢指针找中间节点力扣 160 相交链…