文章

Collaborative Filtering with Recurrent Neural Networks

原文请狂击这里

简介

这篇论文的方法比较直接一些。首先他提出了目前常见的协同过滤算法都没有考虑时序的问题因此不能很好的学习用户的长期、短期兴趣。因此本文提出使用RNN网络来建模用户的历史数据,以便于在推荐中可以体现出用户的长期、短期兴趣的变化。

方法

对用户推荐被建模为一个序列预测问题。给定用户历史,那么模型的输入是$Item_1, Item_2, …, Item_{i-1}$模型的输出是$item_i$,将输出作为一个多分类问题用Cross Entropy Loss作为损失函数。这个建模方式非常的常见因此也有很多针对性的优化譬如NegativeSampling等,这里就不赘述了。

多样性

论文作者尝试了一种通过改变损失函数的方法来增加推荐的多样性(实际上是降低模型的拟合程度),我个人觉得这个方法比较略有不合理:

  • 推荐多样性的建模方式太过简单,基本上就是通过降低模型的拟合度来实现的
  • 损失函数被除上了一个超参数,如下这个方法可能更好:$L(\theta) = - W * p \log q - (1 - p) \log(1- q)$,通过控制权重$W$实现对召回、准确的偏重。

富特征

对于序列中的每个行为不但可以使用物品的one-hot编码特征,同样也可以使用用户画像特征、物品画像特征以及行为本身的元数据。这个就显而易见了。

本文由作者按照 CC BY 4.0 进行授权