《Neural Atentive Session-based Recommendation》论文阅读
发布时间
阅读量:
阅读量
山大学者于2017年发表了一篇短文,在之前的文献中仅探讨了用户的行为序列特征(即未能充分重视用户的主属性需求),这可能引入了行为随机性的影响;因此提出了神经注意力推荐机(NARM)模型。
我只研究它模型相关的东西,介绍和相关工作就不细看了
Model

在要预测第t+1时刻的点击行为:
1、
主要包含两个解码器:整体解码器(global encoder)和详细解码器(local encoder)。其中整体编码器通过GRU模型对整个序列进行扫描,并提取最终的状态信息来用于捕捉用户的整个行为轨迹:全局编码器 通过GRU模型对整个序列进行扫描,并提取最终的状态信息来用于捕捉用户的整个行为轨迹:

局部编码器(如) 通过另一个GRU模型对序列进行扫描,并将其长期兴趣与其所有隐状态的加权和相关联。

其中 αtj 表示第t个商品(题目)和第j个商品的注意力分值(相关性权重)

最终的序列表示:

2、
将CT及其候选项目的嵌入维度设置为一致,并将其输入到解码器中进行点乘运算以计算它们之间的相似性

最后通过一个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)
还没有任何评论哟~
