Advertisement

Dynamic Memory Based Attention Network for Sequential Recommendation【论文解读】

阅读量:

Dynamic Memory Based Attention Network for Sequential Recommendation

从题目中可以看出这篇论文的三个关键点是动态记忆,注意力机制和序列模型。论文提出模型的关键点就在于改进了传统序列模型存储记忆的缺点(使用模型隐层变量进行存储),提出的模型使用外部内存存储用户长期兴趣,使用多层注意力网络得到最终的用户长期兴趣,同时结合用户长短期兴趣得到用户的最终兴趣,使用用户的最终兴趣去进行TopK推荐。
在这里插入图片描述

论文模型整体结构可以表述为上图。

背景

论文背景可以总结为一下几点:

  • 用户的兴趣是长期有效的,早期的用户行为对兴趣也会有明显的影响。
  • 目前的矩阵分解、因子分解机、图神经网络忽略了时间变化对于用户兴趣的影响。
  • RNN系列模型将用户过去的兴趣表示为隐藏状态的形式,随着状态的更新,长期依赖效果差。

问题形式化表示

首先为了方便模型对序列进行高效处理,将长序列截断成窗口大小为T的短序列。
在这里插入图片描述

对于文中出现的一些符号:
在这里插入图片描述

用户短期兴趣

在这里插入图片描述

用户短期兴趣是由上图红框的形式叠加而成的,题目中的序列模型的意思就在这里,可以看到模型还是之前的序列模型+注意力机制的思想,但是不同的是将以单个行为为单位的序列转化为了以一组行为为单位的序列,首先在第一层时输出序列同时当做QKV,通过第一层注意力网络进行计算,输出H_n1作为结果。在第二层注意力网络这里,将第一层的输出H_n1直接作为Q,将H_n1与本层上一序列H_{n-1}1进行拼接作为KV,QKV分别成一个矩阵W作为注意力网络的输入。SG表示停止梯度计算。这里拼接的过程就是文中作者提到的序列之间依赖关系的传递。在依次向上传递L层,最后一层的输出作为用户的短期兴趣。在实际中的话,可以将最后一个隐藏状态保存,每次不需要从头开始计算,原问题提出也引入了位置嵌入和masking策略,这两个功能是在真实行为序列转化为行为嵌入向量x的过程中实现的。

用户长期兴趣

在这里插入图片描述

用户长期兴趣和短期兴趣总体上是很类似的,区别在于后面注意力层的输入Q还是上一层的输出,但是KV却变成了记忆矩阵M的加权。这个记忆矩阵M就是本文的一个关键,由于RNN等序列模型将过去的记忆保存为网络的隐层变量,这样少量的参数是很容易被最近行为的更新所刷新掉的,也就造成了文章开头说的长期记忆不稳定的现象。所以本文将这种记忆扩大,对于每个用户都维护一个多个记忆矩阵,这个矩阵使用一种比较保守的策略进行更新,使得用户的长期记忆能够得到保存,这个矩阵的形式在后面会详细介绍。那么,这样的话注意力层输出的就相当于是长期记忆的加权和。同样也是最后一层注意力网络的输出作为用户的最终长期兴趣。

长短期兴趣融合 — 神经门控网络

在这里插入图片描述

对于长短期兴趣融合,就是首先根据长短期兴趣,通过一个线性层+sigmoid激活函数得到一个门控矩阵G,使用门控矩阵对长短期兴趣进行组合,得到最终的兴趣V,使用最终兴趣去进行TopK推荐。

用户兴趣更新 — 动态记忆网络

在这里插入图片描述

对于如何将用户的长期兴趣进行更新,问题的形式化定义就是右上角的公式,使用一个抽象函数f,使用短期兴趣对长期记忆进行更新。这部分是整篇文章我花了最多时间的部分。首先,作者将抽象函数f进行参数化,使用一个网络来实现,而传入每个神经元的不是一个标量是一个向量,这在15年胶囊网络提出的论文中进行了解释,意思是使用向量的形式作为神经元的输入,向量在对应的特征空间里的方向代表特征的类型,向量的长度代表概率。在19年阿里的论文中将这种向量的思想用在了推荐系统里面,在那篇论文提出,使用多个向量代表用户不同类型的兴趣,向量的长短代表这类兴趣的权重,并且通过对用户产生行为的商品数量,为兴趣广泛的用户创建更多的兴趣胶囊。那么,我认为这篇文章也可以在阿里那篇论文的思路上进行考虑,每个向量表示用户的一类兴趣,然后通过整体记忆M与短期兴趣H进行连接,使用一个变换对向量进行加权求和,最终通过squash激活函数得到对应的最新记忆(这个激活函数就是将输出S映射到一个0-1的范围内)。

在加权的这部分可以看出是由两个参数组成,α和W。这个部分在文章中也是没讲清楚,只是说通过迭代的方式进行更新。但是论文中提到了17年的一篇论文使用动态路由策略来更新胶囊网络,在那篇文章中提出,通过反向传播的方式使两个参数α和W同时更新困难,所以只有W使用反向传播的方式进行更新,α使用动态路由进行迭代更新。反向传播更新的目标就是最小化负似然,意思就是将训练时的推荐问题转化为用户下一项行为的预测问题,使得用户下一项行为物品的概率最大。这个动态路由更新方式,就是针对下层的向量xi和上层向量xj,每两个向量之间都有一个连接权重α,通过计算两个向量之间的相似性,就是通过图中的bij的公式进行计算,二者之间的相似性越大b值越大,通过下面的softmax求得的连接权重也就越大。迭代过程就是首先通过反向传播更新W,然后利用W计算所有的b,再来更新α,文中推荐迭代三次就可以了。

网络总体结构

在这里插入图片描述

最后的网络总体结构就是这样了,Recurrent Attention Net(循环注意力网络)使用连续的行为序列产生短期兴趣,就是对短期兴趣的批量RNN+注意力机制的实现,对于得到的短期兴趣与长期兴趣(Long-term Attention Net)通过门控网络(上面一堆圆圈的部分)进行组合,得到最终兴趣Vk,通过将M和短期兴趣传入动态记忆网络对长期记忆M(图片中间那片粉色的区域)进行更新。图片右侧是动态记忆网络的具体实现。

实验分析

在这里插入图片描述

最终实验部分,作者分别与传统序列模型以及几个考虑了长时间序列的模型进行比较,最后使用命中率(HR)和NDCG这两个指标进行度量。
在这里插入图片描述

后面使用了XLong这个长行为序列的数据集进行实验,使用Recall作为指标。这里我不理解的是为什么前面使用命中率和NDCG作为指标,对于长序列使用Recall。
在这里插入图片描述

最后是Ablation Study部分,证明了模型每个部分的有效性。

全部评论 (0)

还没有任何评论哟~