'轻量'且'优秀'的序列推荐模型

炼丹笔记干货
作者:十方

self-attention已经广泛使用在序列化推荐中,但是存在复杂度较高且过度参数化的问题,并且由于隐式位置编码的缘故,会使模型在对items之间的关系错误建模。这篇来自微软的论文《Lighter and Better: Low-Rank Decomposed Self-Attention Networks for Next-Item Recommendation》提出了LightSans去解决这些问题。该模型把用户历史行为序列映射成潜在的兴趣,通过这种方式在线性时间和空间“限制”了用户历史行为序列的长度,缓解了过度参数化的问题。

LightSANs

LightSANs假设用户历史上有过的交互的items可以被分类为不超过k类(k是一个很小的定值),基于这个假设,用户历史行为的items都需要和k个潜在的兴趣做交互(论文里叫item-to-interest),避免了item之间的交互,使得模型参数变少。然后该模型还提出了decoupled位置编码去描述位置直接的相关性。关于LightSANs的细节见下图:

Item-to-Interest Aggregation:

有了每个items可以归类为k个兴趣中的一个的假设,我们就可以用一个可学习的function,把n*d的序列映射成k*d,如下公式所示:

通过这种方式把item集合聚成k个向量表达,有效的降低了attention矩阵的大小。因为兴趣更能表达用户的倾向,attention的weights就能更精确的描述不常见的items。

Item-to-Interest Interaction:

简单来说,就是把self-attention中的K和V替换成我们上一步聚合的k个兴趣,如下式所示:

当然,这里也用了multi-head,i表示head ID。

Decoupled Position Encoding:

传统的position embedding,就是每个位置的item embedding直接加上position embedding,然后描述两个位置item的关系如下式:

展开就是:

论文提到上式的最后两项并没有那么合理,描述item到position的关系是有问题的,限制了模型的挖掘序列关系的能力.所以该文提出了下式对序列之间位置的关系进行编码:

这样做序列位置之间的关系就被显式的指定,避免了对item-position直接关系的编码,提高了模型的表达能力.loss函数也很简单,就是用的交叉熵损失.

实验

从实验上看,该模型不仅效果好,性能还和彪悍,同时也节约内存.

参考文献

1、Lighter and Better: Low-Rank Decomposed Self-Attention Networks for Next-Item Recommendation

https://www.microsoft.com/en-us/research/uploads/prod/2021/05/LighterandBetter_Low-RankDecomposedSelf-AttentionNetworksforNext-ItemRecommendation.pdf

炼丹笔记

一本有仙气的笔记,记录了AI的不凡。记录:推荐系统、搜索、计算广告、自然语言处理、机器学习、深度学习,偶尔还有一些工作上的碎碎念…
148篇原创内容
公众号
(0)

相关推荐