Advertisement

《论文阅读》SESSION-BASED RECOMMENDATIONS WITH RECURRENT NEURAL NETWORKS

阅读量:

文章目录

  • SESSION-BASED RECOMMENDATIONS WITH RECURRENT NEURAL NETWORKS
    • 论文概况

    • GRU-based RNN

      • GRU
      • 改进
        • Seesion-Parallel Mini-Batches
    • Sampling On The Output

    • Ranking Loss

    • Experiments

      • Dataset
      • evaluation metric
      • Baseline
    • 总结

SESSION-BASED RECOMMENDATIONS WITH RECURRENT NEURAL NETWORKS

论文概况

论文发布在ICLR 2016上,首次将递归神经网络RNN应用于推荐系统,在传统RNN的基础上进行了GRU单元的优化,并且为了使实际效果更佳的好,进行了Seesion-Parallel、 Mini-BatchesSampling On The Output、Ranking Loss等改进。

GRU-based RNN

Alt

RNN的输入时会话的实际状态,输出是会话中下一个事件的item。

会话的状态可以是实际事件的item,也可以是会话中迄今为止的事件

前者中,使用1-of-N编码,即输入向量的长度等于item的长度,对应的item为1,其余为0。

后者中,使用representations的加权和来表示,如果事件发生的较早,则会对其进行折扣。

文章还尝试了添加额外的embedding层,但是i-of-N 编码的表现更好。

在最后的GRU层和输出之间再添加一个额外的Feedforward layers(前馈层)。

GRU

一般的RNN是使用公式(1)来更新隐藏状态h

\mathbf{h}_{\mathbf{t}}=g\left(W \mathbf{x}_{\mathbf{t}}+U \mathbf{h}_{\mathbf{t}-\mathbf{1}}\right)\tag{1}

其中g是一个光滑且有界的函数,并入logistic sig moid函数,x_t是t时刻的unit输入,h_t的作用就是,给定当前状态h_t,RNN会输出序列中下一个元素的概率分布。

本文采用了由Cho等人在论文《 On the proper-ties of neural machine translation: Encoder-decoder approaches》提出的GRU(Gated Recurrent Unit),用来解决梯度消失的问题。
Alt

\mathbf{h}_{\mathbf{t}}=\left(1-\mathbf{z}_{\mathbf{t}}\right) \mathbf{h}_{\mathbf{t}-\mathbf{1}}+\mathbf{z}_{\mathbf{t}} \hat{\mathbf{h}_{\mathbf{t}}}\tag{2}

\mathbf{z}_{\mathbf{t}}=\sigma\left(W_{z} \mathbf{x}_{\mathbf{t}}+U_{z} \mathbf{h}_{\mathbf{t}-\mathbf{1}}\right)\tag{3}

\hat{\mathbf{h}_{\mathbf{t}}}=\tanh \left(W \mathbf{x}_{\mathbf{t}}+U\left(\mathbf{r}_{\mathbf{t}} \odot \mathbf{h}_{\mathbf{t}-\mathbf{1}}\right)\right)\tag{4}

\mathbf{r}_{\mathbf{t}}=\sigma\left(W_{r} \mathbf{x}_{\mathbf{t}}+U_{r} \mathbf{h}_{\mathbf{t}-\mathbf{1}}\right)\tag{5}

  • z_t是更新门,决定h_t的更新情况
  • r_t是重置门,决定是否要放弃h_{t-1}
  • \hat{h_t}是候选输出,接收[x_t,h_{t-1}]
  • h_t是当前输出,接收[h_{t-1},\hat{h_t}]

改进

  • Seesion-Parallel Mini-Batches
  • Sampling On The Output
  • Ranking Loss
Seesion-Parallel Mini-Batches

用户序列数据与NLP序列数据做的任务不同,NLP中的mini-batch会用一个滑动窗口来选择句子中的单词,预测其他单词,mini-batch中的每一个元素对应一个滑动窗口;但是对于用户序列数据我们更想要建模用户的长期行为,因此不能用NLP中的这种方式来做mini-batch。文中提出了一种用于用户序列行为数据建模的mini-batch组织方式:

  1. 首先对会话进行排序,session1,i_{1,1}
  2. 前X个会话的第一个事件作为第一个mini-batch的输入,期望的输出是active 会话的第二个事件,第二个mini-batch由第二个事件组成
  3. 如果任何会话结束,则放置下一个可用会话。我们认为每个会话都是独立的,因此当发生切换的时候,会重置相应的隐藏状态
    Alt
Sampling On The Output

当拥有数十万个甚至上百万个item的时候,计算每个步骤中的每个item的分数将使得算法与item数量和事件数量的乘积成比例,这在实践中是不可行的,本文对输出进行了采样,计算了一小部分item的分数,这就意味着只更新了一些权重。除了期望的输出外,本文还计算了一些negative examples的分数,并修改权重,来使得期望的输出的排名变高。

本文根据item流行的程度来进行抽样而不是为每个训练。没有为每个training example生成单独的样例,而是mini-batch其他training examples来作为negative examples。优点:可以通过跳过采样来进一步减少计算时间,并且在代码实现方面,代码会更加的简单,矩阵的运算会更加的快。同时,这种方法也是基于流行度的抽样,因为一个item出现在mini-batch的其他training example的概率与其流行程度成正比

Ranking Loss

推荐系统的核心是基于相关性的item排序,为了在序列化推荐中实现这一点,需要选择合适的ranking loss函数。排序的学习方式通常有以下三种:

  1. Pointwise ranking可以独立地估计item的得分或排名,并且loss的定义方式应使相关item的排名较低。
  2. Pairwise ranking比较一个正item和一个负item的得分或成对的排名,loss强制要求正item的排名应低于负item的排名。
  3. Listwise ranking使用所有item的分数和排名,并将它们与完美排序进行比较。由于它包括排序,通常计算成本更高,因此不经常使用。此外,如果只有一个相关的item(如我们的案例),listwise排序可以通过pairwise排序解决。

作者采用了多种排序损失函数,发现pointwise的损失函数表现不稳定,pairwise的表现更好,文章列出了两种pairwise损失函数:

  • BRP: Bayesian Personalized Ranking,一种使用成对排名损失的矩阵分解方法。它比较了一个正item和一个抽样负item的得分。本文将正item的得分与几个抽样负item项目进行比较,并使用他们的平均值作为损失。

L_s=-\frac{1}{N_{S}} \cdot \sum_{j=1}^{{N}_{S}} \log \left(\sigma\left(\hat{r}_{s, i}-\hat{r}_{s_{s}, d_{j}}\right)\right)\tag{6}

​ 其中N_s是样本量,\hat{r}_{s, i}是会话给定点上的item i的得分,i是期望的item(会话中的下一个item),j是负item sample

  • TOP1:它是本文设计的。是相关item相对等级的正则化近似值。相关item的相对等级由\frac{1}{N_{S}} \cdot \sum_{j=1}^{N_{S}} I\left\{\hat{r}_{s, j}>\hat{r}_{s, i}\right\}确定,其中I\{\cdot\}是sigmod的近似,再添加正则化项,最终损失表达式为:

L_{s}=\frac{1}{N_{S}} \cdot \sum_{j=1}^{N_{S}} \sigma\left(\hat{r}_{s, j}-\hat{r}_{s, i}\right)+\sigma\left(\hat{r}_{s, j}^{2}\right)\tag{7}

Experiments

Dataset

  • RCS15:包含电子商务网站的点击流,有时候会以购买时间结束
  • VIDEO:从类似于Youtube的OTT视频服务平台收集的,收集了观看视频至少一定时间的事件。

evaluation metric

recall@20(所有测试用例前20个item中最具有期望item的用例比例),MRR@20(平均倒数排名),值越大越好
\mathbf{M R R}=\frac{1}{|S|} \sum_{i=1}^{|S|} \frac{1}{\operatorname{rank}_{i}}=\frac{1}{|S|}\left(\frac{1}{\operatorname{rank}_{1}}+\frac{1}{\operatorname{rank}_{2}}+\ldots+\frac{1}{\operatorname{rank}_{|S|}}\right)
一个item如果被排到了20名开外,记为0分

Baseline

  • POP:
  • S-POP
  • Item-KNN
  • BPR-MF
    在这里插入图片描述

总结

作为首次将RNN引入到SR中,创新性十足,并且后面的讨论也十分的清晰,适合入门观看,但是文章的结构排版并不是特别的优秀,在输出采样的时候描述的不是特别清楚。

全部评论 (0)

还没有任何评论哟~