paper source: DNN for Youtube Recommendations
Youtube深度学习推荐系统的十大工程问题
揭开YouTube深度推荐系统模型Serving之谜

算法架构

image.png
在百万量级的视频规模下进行个性化推荐。由于候选视频集合过大,考虑online系统延迟问题,不宜用复杂网络直接进行推荐,所以Youtube采取了两层深度网络完成整个推荐过程:

  1. Candidate Generation Model完成候选视频的快速筛选,这一步候选视频集合由百万降低到了百的量级。
  2. Ranking Model完成几百个候选视频的精排

    候选集生成模型

    image.png
  • 输入层
    • 用户历史观看视频的 Embedding 向量、搜索词的 Embedding 向量:利用用户的观看序列和搜索序列,采用了类似 Item2vec 的预训练方式生成。(也可以采用 Embedding 跟模型在一起 End2End 训练的方式来训练模型,孰优孰劣?
    • 用户的地理位置 Embedding、年龄、性别等特征。对于样本年龄这个特征,YouTube 不仅使用了原始特征值,还把经过平方处理的特征值也作为一个新的特征输入模型:这个操作是为了挖掘特征非线性的特性,其他诸如开方、Log、指数等操作都可以用于挖掘特征的非线性特性。

将这些特征在 concat 层中连接起来,输入到上层的 ReLU 神经网络进行训练。

  • 三层 ReLU 神经网络
  • 输出层:softmax 函数

生成一个概率分布,即用户点击每个视频的概率。

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

image.png
在候选集生成模型的线上服务过程中,YouTube 并没有直接采用训练时的模型进行预测,而是采用了一种最近邻搜索的方法。

  • 视频Embedding向量的生成

架构图中从 softmax 向模型服务模块画了个箭头,用于代表视频 Embedding 向量的生成。由于最后的输出层是 softmax,而这个 softmax 层的参数本质上就是一个 m x n 维的矩阵,其中 m 指的是最后一层红色的 ReLU 层的维度 m,n 指的是分类的总数,也就是 YouTube 所有视频的总数 n。因此,视频 Embedding 就是这个 m x n 维矩阵的各列向量。

  • 用户Embedding向量的生成

因为输入的特征向量全部都是用户相关的特征,一个物品和场景特征都没有,所以在使用某用户 u 的特征向量作为模型输入时,最后一层 ReLU 层的输出向量就可以当作该用户 u 的 Embedding 向量。

在预测某用户的视频候选集时,YouTube 要先从特征数据库中拿到该用户的 Embedding 向量,再在视频 Embedding 向量空间中,利用局部敏感哈希等方法搜索该用户 Embedding 向量的 K 近邻,这样就可以快速得到 k 个候选视频集合。

排序模型

image.png

  • 输入层
    • impression video ID embedding:当前候选视频的 Embedding;
    • watched video IDs average embedding:用户观看过的最后 N 个视频 Embedding 的平均值;
    • language embedding:用户语言的 Embedding 和当前候选视频语言的 Embedding;
    • time since last watch:表示用户上次观看同频道视频距今的时间;
    • previous impressions:该视频已经被曝光给该用户的次数;

  • 三层ReLU
  • 输出层:Weighted LR, 预测的是用户“要不要点击当前视频”。