Deep Neural Networks for YouTube Recommendations
其实熟悉Skip-Gram方法的同学很容易看出来,2.1把推荐问题定义为“超大规模多分类”问题的数学公式和word2vec的Skip-Gram方法的公式基本相同,所不同的是user_vec是通过DNN学习到的,而引入DNN的好处则是任意的连续特征和离散特征可以很容易添加到模型当中。同样的,推荐系统常用的矩阵分解方法虽然也能得到user_vec和item_vec,但同样是不能嵌入更多feature。
user embedding 是最后一层,item embedding 是 softmax 的 weight。通过内积限制两个embedding 在相同空间。图的左上角计算 hidden layer 与weight 空间的 top n 相似(近邻) 。
这里的最后一个 hidden 层和 softmax 层组成的结构与 word2vec 一模一样。唯一的区别是 word2vec 用输入层与 hidden 层之间的权重作为 word embedding,没用 hidden 层与输出层的权重;而这里用了 hidden 层与输出层的权重作为 video embedding,用 hidden 层作为 user embedding。
实现:一个向量(kx1)和m个向量(m*k)做点积操作,取最大的top-N,可以得到这个用户最喜欢的top-N个item。换另一个用户,仍然与相同的m个向量做点积后求top-N。提前可以通过某些方式加载好m个向量,之后求top-N。至于使用什么方法求最近邻,业界方法有很多,比如ann,faiss等。线上使用时候,user embedding实时生成,video embedding离线训练好之后推到线上,使用类LSH方法进行匹配(比如使用现成工具faiss)。
有点击的为正样本&