YoutubeDNN背景
Youtube2016年发表的深度推荐系统论文《Deep Neural Networks for YouTube Recommendations》,这篇文章是工程向导的。
算法的整体架构也是召回➕精排
召回部分
从图中看出在网络结构方面YoutubeDNN并没有做什么创新,他的创新点在于:
- 架构图的左上角,为了加快召回的速度,根据User embedding和item imbedding使用nearest neighbor search 的方法召回
- 在softmax采用负采样
下面仔细讲解是怎么得到User embedding和item imbedding向量:
YoutubeDNN规定每个用户的embedding向量为每个用户对应的样本的softmax层前一层的Relu激活后的向量,即图中绿色部分。而item对应的向量为最后一层与softmax的权重矩阵中,该item对应的位置所在的列,图中灰色部分。
user embedding 与 item embedding的乘积越大,证明该用户对该item的兴趣越大。
优势有两点:
- 所以可以提前将User Embedding和video Embedding存储到线上内存数据库,通过内积运算再排序的方法得到video的排名,以此来提高召回速度和效率。
- 通过计算用户和物品的Embedding相似度,Embedding可以直接作为推荐系统的召回层或者召回方法之一。
排序
ranking model似乎与candidate generation模型没有什么区别,模型架构还是深度学习的“基本操作”,唯一的区别就是特征工程。
具体一点,从左至右的特征依次是
- impression video ID embedding: 当前要计算的video的embedding
- watched video IDs average embedding: 用户观看过的最后N个视频embedding的average pooling
- language embedding: 用户语言的embedding和当前视频语言的embedding
- time since last watch: 自上次观看同channel视频的时间
- previous impressions: 该视频已经被曝光给该用户的次数
上面五个特征中,我想重点谈谈第4个和第5个。因为这两个很好的引入了对用户行为的观察。
-
第4个特征背后的思想是:
We observe that the most important signals are those that describe a user’s previous interaction with the item itself and other similar items.
有一些引入attention的意思,这里是用了time since last watch这个特征来反应用户看同类视频的间隔时间。从用户的角度想一想,假如我们刚看过“DOTA经典回顾”这个channel的视频,我们很大概率是会继续看这个channel的视频的,那么该特征就很好的捕捉到了这一用户行为。 -
第5个特征previous impressions则一定程度上引入了exploration的思想,避免同一个视频持续对同一用户进行无效曝光。尽量增加用户没看过的新视频的曝光可能性。