《Neural Atentive Session-based Recommendation》论文阅读

山大在2017年发表的短序列化推荐论文,因为之前的工作只考虑了用户的序列表现,但是对用户的主要目的并没有明显地强调(即用户的行为存在偶然性的噪声),所以提出Neural Attentive Recommendation Machine(NARM)

我只研究它模型相关的东西,介绍和相关工作就不细看了

Model

在这里插入图片描述

在要预测第t+1时刻的点击行为:

1、

首先是两个解码器,全局解码器(global encoder)和局部解码器(local encoder):
全局编码器用GRU扫描序列后用最后一次行为的隐状态(最相关),表示用户的序列行为:
在这里插入图片描述
局部编码器用另一个GRU扫描序列并以所有隐状态的加权和,表示用户长期兴趣:
在这里插入图片描述

其中 αtj 表示第t个商品(题目)和第j个商品的注意力分值(相关性权重)
在这里插入图片描述

最终的序列表示:
在这里插入图片描述

2、

再把ct和候选物品的embedding size大小一样,都被送入decoder中点积计算彼此的相似度
在这里插入图片描述

最后再通过一个softmax生成每个候选物品被点击的概率,并使用交叉熵损失优化:

在这里插入图片描述

以上就是整体的模型概述,接下来是代码实现

Code

1.全局

hidden = self.init_hidden(seq.size(1))  # 初始化隐藏层
ht = hidden[-1]  # 找到最后一个的隐藏层
c_global = ht # 全局编码器,最后一次行为的隐状态(最相关),表示用户的序列行为

2.local

c_local = torch.sum(alpha.unsqueeze(2).expand_as(gru_out) * gru_out, 1)  # 局部解码器以所有隐状态的加权和,表示用户长期兴趣:

3.embing

c_t = torch.cat([c_local, c_global], 1)
c_t = self.ct_dropout(c_t)

4.内积

item_embs = self.emb(torch.arange(self.n_items).to(self.device))
scores = torch.matmul(c_t, self.b(item_embs).permute(1, 0))

5.softmax

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值