[Session] Dual Sparse Attention Network For Session-based Recommendation 阅读笔记,AAAI21

Info

本文首发于公众号:code路漫漫,欢迎关注
在这里插入图片描述
官方代码:https://github.com/SamHaoYuan/DSANForAAAI2021
思维导图地址:https://github.com/hhmy27/MyNotes

这篇文章是 AAAI21 的文章
模型图
在这里插入图片描述

实验结果
在这里插入图片描述

1 Motivation

作者提了两个问题

  1. 以往工作直接用 last click item embedding 用来表示 current preference 不妥
  2. session 中所有的 item 并不一定能反映用户偏好,有些交互可能是因为误触、浏览无关的促销广告等行为产生的

对于 1,例子如下
在这里插入图片描述
例子中使用最后一个 item 预测的物品集合里面不存在真实的 target item

两个问题都是很直观的问题,下面看看它怎么解决的

解决方法:

  1. 论文提出了一个可学习的 embedding 用来刻画用户的 current preference,称为 target embedding
  2. 论文引入了 alpha-entmax 函数,其中 alpha 也是可习得的参数,用来消除小权重 item 的影响。考虑到小权重 item 的语义正是那些不能反映用户偏好的 item。

2 Contribution

  1. 提出了 DSAN 这个新框架,它由 self-attention 和 vanilla attention 组成。通过 item-level collaborative information 学习 target embedding ,使用不同的 query, key and value 向量作为高阶信息去建模session推荐
  2. 引入基于上下文的 adaptively sparse attention mechanism 去寻找 session 中可能无关的 item,保留高权重给有关 item
  3. 实验表示达到了最优的效果

3 Solution

论文里面细节比较多,这里先简单概括一下怎么做的,写一下用到的 embedding 符号,后面再细说具体做法

首先论文引入了两个 attention 机制,第一个称为 Sparse Attention Network,第二个是 Vanilla Attention Network,两个 attention network 是串联机制,最终产生 session 的 embedding 和 current preference embedding(论文中称为 target embedding)。

这里产生的 session embedding 是考虑到 current preference embedding 的,以往工作大多都直接对 item 进行 embeedding,然后再聚合得到 session 的 embedding。而这篇文章在计算 session embedding 的过程中加入了 current preference embedding,同时训练两个 embedding

得到 session embedding 之后,我们将它和原始的 item embedding 结合起来,进行预测,即可得到结果

具体而言,生成 session embedding 的步骤如下

  1. 把 input session 转换成两个向量,一个是 item embedding,另一个是 positional embedding,存储着 item 的位置信息
    在这里插入图片描述

  2. 把 item embedding 和 positional embedding 结合起来,得到每个 item 的表示,此时属于预处理部分,没有输入到网络中
    在这里插入图片描述
    需要注意的是,这里有一个红色的 Cs,它是我们要计算的 target embedding,能够反应 current preference embedding

  3. 输入第一个 att,得到 item-level 的信息
    在这里插入图片描述

  4. 继续输入第二个 att,最终通过聚合得到 session 的表示 hs(是一个值)
    在这里插入图片描述

  5. 进一步结合 target embedding 聚合信息
    在这里插入图片描述

  6. 进行预测
    在这里插入图片描述

下图总结了流程中出现的符号以及意义
在这里插入图片描述

文章中session embedding 的构造还是挺复杂的。。

下面我们分步骤来看

3.1 初步 embedding

在这里插入图片描述
在这里插入图片描述

生成两个 embedding,xi 和 pi,然后结合起来得到 ci

c i = C o n c a t ( x i , p i ) ci = Concat(xi, pi) ci=Concat(xi,pi)

3.2 Target embedding learning

在这里插入图片描述
传入第一个 att,计算 target embedding 和初步的 session embedding
在这里插入图片描述
计算公式就不细说了,就是传统的 attention 机制运用方法
在这里插入图片描述
值得注意的是,这里出现的 alpha-entmax 替代了传统的 softmax,观察它的图像我们可以知道,alpha 越大,较小的权重将越有可能直接标记为0
在这里插入图片描述
同时 alpha 这个参数也是通过 MLP 习得的

最终结果:
在这里插入图片描述
其中 E = { e 1 , e 2 , . . . , e t , e s } E = \{e_1,e_2,...,e_t,e_s\} E={e1,e2,...,et,es}

3.3 学习进一步的 session 表示

在这里插入图片描述
符号含义
首先按公式 9 计算 β,即权重,图中没有画出来
在这里插入图片描述
alpha 同样是计算得出
在这里插入图片描述

然后按照 h s = ∑ p = 1 β p c p h_s = \sum_{p=1} \beta_pc_p hs=p=1βpcp 聚合得到 session 的表示

3.4 聚合信息并进行预测

在这里插入图片描述
在这里插入图片描述

这一步我有一个疑问,h_s 生成过程中已经使用了 e_s,为什么还要再聚合一遍?感觉挺奇怪的

在这里插入图片描述
z 表示模型的最后输出
在这里插入图片描述
这一步还要各自正则化后做点积,得到预测分数

目标函数选择交叉熵

4 Evaluation

由于官方放出了 code,这一步就不细说了,我们直接看结果
数据集划分
实验结果
消融实验部分:
消融实验结果
三个变形

  1. DSAN-NS
    没有 target embedding
  2. DSAN-NT
    没有 target attention layer
  3. DSAN-DA
    把两个 att 变成平行结构而不是顺序结构,同时没有 target embedding

超参部分:
超参影响

5 Summarization

回顾提出的两个问题:

  1. 以往工作直接用 last click item embedding 用来表示 current preference 不妥
  2. session 中所有的 item 并不一定能反映用户偏好,有些交互可能是因为误触、浏览无关的促销广告等行为产生的

解决方法:

  1. 学习 target embedding
  2. 使用 alpha-entmax

个人感觉
既然表示的是 current preference,应当用末尾的几个物品来综合考虑,论文直接使用所有 item 的 embedding 学习 target embedding,从语义上来说,不是和 global preference 撞车了吗,感觉这方面还可以再改进下
另外学习 target embedding 的过程又训练了 session embedding,得到 session embedding 之后又和原始的 item embedding 进行聚合,文中也没有解释,给人一种 “是实验显示这么处理效果好所以要这么做” 的感觉

使用 alpha-entmax 是 make sense 的

论文提出了将来的研究方向:

In the Future work, we plan to explore the way of using automated machine learning to delete the unrelated item in the session before entering into the network, so that the model can learn more useful information.

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这篇论文主要介绍了一种稀疏结构搜索的方法来有效地调整深度神经网络中的参数,以达到更好的性能和更高的效率。作者将该方法称为Pruning with Neuron Selectivity Ratio (PNSR)。该方法的主要思想是通过对神经元的选择性比率进行剪枝,来寻找最优的网络结构。 具体来说,PNSR方法首先训练一个初始的完整模型,然后通过计算每个神经元的选择性比率来确定哪些神经元可以被剪枝。选择性比率是指在训练过程中神经元被激活的次数与总共经历的迭代次数之比。这个比率越高,说明这个神经元在网络中的作用越大,越不应该被剪枝。根据选择性比率,可以将网络中的神经元分为三类:保留、可剪枝和不可剪枝。其中保留的神经元直接保留在模型中,不可剪枝的神经元则不能被剪枝,而可剪枝的神经元则可以被剪枝,并且剪枝后不会影响网络的性能。 接下来,PNSR方法使用一种叫做“剪枝重训练”的策略来进一步优化网络结构。这种策略的基本思想是先剪枝掉一些神经元,然后重新训练网络,使其在剪枝后的结构上取得最佳性能。具体来说,PNSR方法在剪枝后使用一种叫做“结构化剪枝”的方法来调整网络的结构,使得剪枝后的网络结构更加紧凑和简单。然后,PNSR方法使用该结构再次训练网络,直到网络达到最佳性能。 最后,作者在CIFAR-10和ImageNet数据集上对PNSR方法进行了实验。实验结果表明,PNSR方法可以显著减少模型的参数数量,同时保持网络性能不变或稍微下降。这表明,PNSR方法可以有效地提高深度神经网络的效率,并有望在实际应用中得到广泛应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值