paper source: DNN for Youtube Recommendations
Youtube深度学习推荐系统的十大工程问题
揭开YouTube深度推荐系统模型Serving之谜
算法架构
在百万量级的视频规模下进行个性化推荐。由于候选视频集合过大,考虑online系统延迟问题,不宜用复杂网络直接进行推荐,所以Youtube采取了两层深度网络完成整个推荐过程:
- 输入层
- 用户历史观看视频的 Embedding 向量、搜索词的 Embedding 向量:利用用户的观看序列和搜索序列,采用了类似 Item2vec 的预训练方式生成。(也可以采用 Embedding 跟模型在一起 End2End 训练的方式来训练模型,孰优孰劣?
- 用户的地理位置 Embedding、年龄、性别等特征。对于样本年龄这个特征,YouTube 不仅使用了原始特征值,还把经过平方处理的特征值也作为一个新的特征输入模型:这个操作是为了挖掘特征非线性的特性,其他诸如开方、Log、指数等操作都可以用于挖掘特征的非线性特性。
将这些特征在 concat 层中连接起来,输入到上层的 ReLU 神经网络进行训练。
- 三层 ReLU 神经网络
- 输出层:softmax 函数
候选集生成模型独特的线上服务方法
在候选集生成模型的线上服务过程中,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 个候选视频集合。