Google AI专家为你分享 YouTube 推荐系统算法

转自微信公众号:GDG

分享嘉宾

崔翱翔

谷歌上海资深工程师


现任职于谷歌机器视觉处理团队,主要参与机器视觉模型的部署和模型的量化,支持 CloudVision, Google Photos, Google Lens, Gmail 等产品的图像处理。复旦大学数学系博士,对机器视觉、人工智能有浓厚兴趣。

 

我今天要分享的是应用在 Google Play 和 YouTube 两个 Google 产品上的基于深度学习神经网络的推荐系统。近几年 Google Play 和 YouTube 开始基于深度神经网络做推荐系统,实践下来比前面的算法有显著提升。

Google AI专家为你分享 YouTube 推荐系统算法

 

 

推荐系统普遍面临几大挑战,以 YouTube 为例...

——

 

一、量级大

 

YouTube 是全球最大的视频分享平台,用户量高达 10 亿+。Google Play 也是有百万用户级别的 APP。如何让用户除了主动搜索外,快速的发现自己感兴趣的内容和应用呢? 

 

二、实时性要求高

 

每秒都有新的数据产生,如何平衡旧的内容和新的内容推荐?

像 YouTube, Google Search, Google Play 都对响应时间要求很高,从发出请求到返回结果,响应时间要控制在 10 毫秒以内。YouTube 推荐系统要根据用户的实时行为在 10ms 之内从视频库当中挑选出用户感兴趣的 Top N 视频内容。

 

冷启动:对于新注册用户,不管是 Google Play 也好,还是 YouTube 也好,如何给新用户做基于个人兴趣的内容推荐?

对于冷启动,推荐系统只能根据用户的电子设备、地理位置、年龄及其他可获取到的有限信息做最大努力推荐。随着新用户不断产生交互数据,深度神经网络有了数据输入及用户行为数据反馈,才开始慢慢发挥作用,推送个性化的视频内容。

 

需要实时追踪用户的最近一次行动并做出推荐。

 

三、噪声干扰  

 

所谓的噪声可以理解为对于推荐系统来说不一定可信的一些 UGC 元数据(脏数据)。推荐算法要过滤掉噪音数据的干扰,例如,YouTube 推荐系统用“用户观看视频时长”指标(Google Play 用了是否购买 App 指标)来衡量用户对推荐内容的满意度,而不是用点赞及收藏等维度,因为点赞高的视频并非是高质量的视频(可能水军点赞),那么这对于推荐系统就是一种噪声干扰。所以,推荐系统必须要足够鲁棒(robust),不能因为大量的噪音数据导致推荐了不相关的内容。

 

 

YouTube 推荐系统

——

 

首先来介绍 YouTube 推荐系统的离线训练模型。

YouTube 会用 10^11 级别的历史数据来训练模型,这些数据都是通过在线给用户推送一个视频,然后根据用户的反映,把这些反馈通过日志记录下来。这些日志就生成了推荐系统离线训练的数据源。每天都会有很多新的数据源更新到推荐系统的数据训练库中,推荐系统会根据新的数据反馈进行学习训练不断优化推荐方案。

Google AI专家为你分享 YouTube 推荐系统算法

 

YouTube 推荐系统整体框架 

YouTube 的推荐系统算法由两个神经网络组成: 候选集生成(candidate generation)和排序过滤(ranking)。

Google AI专家为你分享 YouTube 推荐系统算法

 

候选集生成(candidate generation)

解决从百万级别的视频库中初步筛选百级别的数据。用到的筛选思想方法如下:

1.内容过滤(Content-based filtering)

核心:基于用户历史观看行为推荐相似视频内容

举例:一个用户连续看了科技类TED视频,推荐系统会继续推荐给这个用户科技类相关的TED视频。

2.协同过滤(Collaborative Filtering)

核心:相似用户会喜欢相似的视频内容

举例:用户A的视频观看行为与用户B的视频观看行为非常相似,用户A与用户B都喜欢观看韩剧、青春偶像剧,那么B用户最近观看了一部新上架的爱情片,那么推荐系统就有理由相信用户A也喜欢这部新上架的爱情片。

 

协同过滤方法相比内容过滤提供更广泛的个性化推荐及更优的用户体验,是 YouTube 推荐系统目前应用的方法。协同过滤方法有多种实现:一种是传统的 matrix factorization 矩阵分解,一种是深度神经网络,后者可以看成是前者的非线性推广。

 

那么,深度神经网络是如何计算用户间的相似度呢?

 

深度神经网络“Embeddings”方法来快速计算用户之间的相似度

通常,需要训练的数据是不能直接作为机器学习算法的输入的,Embeddings 将数据源(例如:词语、声音、图片、视频等数据)表示成一种机器可以理解和分析的数据形式,即对高维数据进行分析计算和可视化展示。

 

“Embeddings”方法介绍:

在 YouTube 十亿级的视频库中,假设 A 看过 1,3,5,7 这 4 个视频,B 看过 2,4,6,8  这 4 个视频,C 看过 1,3,5 这三个视频。很明显 A 和 C 很相似(看过视频的重合度更高)。那么对于机器来说,是把整个观看历史记录看做一张巨大的二维表格。行是用户(10 亿级别),列是视频(10 亿级别),用户 A 对应的行可以表示成 (1, 0, 1, 0, 1, 0, 1, 0, …) ,用户 B 对应的行可以表示成 (0, 1, 0, 1, 0, 1, 0, 1, 0, …),即每一行都是一个高维的 0 1 向量。(实际的矩阵的值可以是权重,比如用户对产品的打分)要比较两行重合度是多高,需要把这两行的所有的 10 亿个元素拿出来一对一对比较,整个的计算量是非常大的,所以我们用 embedding 把高维的对象“压缩”到一个低维的表示,同时尽可能少的损失信息量。YouTube的embedding 是256维。

Google AI专家为你分享 YouTube 推荐系统算法

 

知道深度神经网络如何快速计算用户之间的相似性后,我们再来具体了解下 YouTube 推荐算法中候选集生成深度神经网络的模型架构及运行机制。

 

候选集生成深度神经网络(Candidate Generation: Deep Neural Network)

将“观看和搜索历史数据(sparse input),用户(年龄,性别,使用设备)和视频上传时间数据等(dense input)作为神经网络的输入,经过多层全连接层(fully connected layer)以及非线性**(ReLU),最终得到用户的 embedding(256维)。用户的 embedding 再经过全连接层得到“每个视频可能被用户感兴趣的”概率向量。training阶段得到了所有 video embeddings 这个“副产品”(softmax 层之前的一个全连接层类比于矩阵分解,全连接层的矩阵的所有列向量就是训练得到的video embeddings)。 接下来推荐系统会将这些 video embeddings 放到视频索引当中,方便在serving时,快速的从索引当中查询 Top N 推荐视频(nearest neighbor)。

Google AI专家为你分享 YouTube 推荐系统算法

Candidate Generation: Deep Neural Network

 

排序过滤(Ranking)

排序过滤深度神经网络(Ranking: Deep Neural Network):

输入“视频特征、用户及行为信息及其他候选源”维度数据对候选集生成的百级别数据做进一步筛选过滤。再使用设计好的目标函数为每个视频进行打分,视频按得分的多少依次按照优先级呈现给用户。(在 YouTube 推荐系统中,在推荐视频的优先级排序考量上对于“视频观看时间”的因素看重远大于“视频点击率”)

Re-ranking

确保推荐内容的新鲜度、精确度以及多样性,排序过滤深度神经网络还需要不断的“重排序”。

Google AI专家为你分享 YouTube 推荐系统算法Ranking: Deep Neural Network

 

* 延伸阅读

Wide & Deep Neural Network

Wide & Deep Neural Network 在谷歌的很多内部产品都在使用,并且效果拔群。

Wide & Deep Learning 将 Wide model 和Deep model 联合训练,结合了记忆和归纳的双能力。Wide and Deep Neural Network 适用于大规模的带有稀疏输入(sparse inputs)的回归和分类问题。比如:推荐系统、搜索、排名(ranking)的应用。 

Google AI专家为你分享 YouTube 推荐系统算法

Wide & Deep Neural Network

 

举例说明 Wide&Deep Neural Network 的优点:

假设,你想建立食品搜索引擎, 用户给定一个查询,你想要推荐用户最喜欢的项目.

使用 Wide model:

你可以使用多种类型的交叉积特征(cross-product features transformations) 记忆特定的特征组合。例如,用户给定查询“炸鸡”,你的模型可能记下炸鸡和华夫饼比鸡肉炒饭更加相关。但是它的限制是如果没有人工提供特征(manual feature engineering。)难以归纳出历史没有出现过的组合。

Google AI专家为你分享 YouTube 推荐系统算法Wide Neural Network

若使用Deep model:

你可以通过低维嵌入(lower dimension embeddings)做更好的归纳。例如,你的模型根据给定的查询“炸鸡”可能学习去推荐汉堡,因为他们是类型相似的食物。然而,有时候记录特定的组合,作为“规则和例外”是非常重要的。当人们想要无咖啡因冰拿铁时,你并不会真的想过度归纳去推荐热拿铁,无论无咖啡因冰拿铁和热拿铁在嵌入空间(embedding)中多么接近。

Google AI专家为你分享 YouTube 推荐系统算法

Deep Neural Network

所以,通过联合训练 Wide and Deep models 我们就可以实现他们各自的优点和缺点进行互补。

 

更多关于深度神经网络的学习:

1.Google AI 专家讲解大规模推荐系统基础原理PPT 获取: 

https://pan.baidu.com/s/1QtKCSODQbjCtmTMxqkSb0A

2.Deep Neural Networks for YouTube Recommendations:

https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf

3. Wide & Deep Learning for Recommender Systems: 

https://arxiv.org/abs/1606.07792