今天是1024程序员节恭祝所有过去的、当下的、即将的程序员们节日快乐今天介绍的论文可以说是序列推荐的里程碑了SASRec整体的学习路线如下从入门到工业落地生成式推荐系统学习路线 论文合集目录今天是1024程序员节恭祝所有过去的、当下的、即将的程序员们节日快乐摘要I 简介II 相关工作II-A一般推荐II-B时序推荐II-C序列推荐II-D注意力机制III 方法论III-A嵌入层位置嵌入III-B自注意力块自注意力层因果关系逐点前馈网络III-C堆叠自注意力块残差连接层归一化DropoutIII-D预测层共享项目嵌入显式用户建模III-E网络训练III-F复杂性分析空间复杂度时间复杂度处理长序列III-G讨论简化现有模型基于MC的推荐基于RNN的推荐IV 实验IV-A数据集IV-B比较方法IV-C实施细节IV-D评估指标IV-E推荐性能IV-F消融研究IV-G培训效率和可扩展性培训效率可扩展性IV-H可视化注意力权重持仓注意项目之间的注意V 结论摘要序列动态是许多现代推荐系统的一个关键特征它试图根据用户最近执行的动作来捕获用户行为的“上下文”。 为了捕获此类模式出现了两种方法马尔可夫链 (MC) 和循环神经网络 (RNN)。 马尔可夫链假设用户的下一个动作可以根据他们最后或最后几个动作来预测而 RNN 原则上允许发现更长期的语义。 一般来说基于 MC 的方法在模型简约性至关重要的极其稀疏的数据集中表现最佳而 RNN 在模型复杂性较高的密集数据集中表现更好。 我们工作的目标是平衡这两个目标提出一种基于自注意力的序列模型SASRec该模型允许我们捕获长期语义如 RNN但使用注意力机制根据相对较少的动作进行预测如 MC。 在每个时间步骤SASRec 都会尝试从用户的操作历史记录中识别哪些项目“相关”并使用它们来预测下一个项目。 广泛的实证研究表明我们的方法在稀疏和密集数据集上都优于各种最先进的序列模型包括基于 MC/CNN/RNN 的方法。 此外该模型比基于 CNN/RNN 的模型效率高一个数量级。 注意力权重的可视化还展示了我们的模型如何自适应地处理具有不同密度的数据集并揭示行为序列中有意义的模式。I 简介序列推荐系统的目标是将用户行为的个性化模型基于历史活动与基于用户最近操作的“上下文”概念相结合。 从序列动态中捕获有用的模式具有挑战性主要是因为输入空间的维度随着用作上下文的过去动作/行为的数量呈指数增长。 因此序列推荐的研究主要关注如何简洁地捕捉这些高阶动态。马尔可夫链 (MC) 是一个经典示例它假设下一个操作仅以前一个操作或前几个操作为条件并且已成功用于刻画推荐 [1] 中的短距离物品转移。 另一项工作使用循环神经网络 (RNN) 通过隐藏状态总结所有先前的操作该隐藏状态用于预测下一个操作 [2]。这两种方法虽然在特定情况下都很有效但在某种程度上仅限于某些类型的数据。 基于 MC 的方法通过做出强有力的简化假设在高稀疏性设置中表现良好但可能无法捕获更复杂场景的复杂动态。 相反RNN 虽然富有表现力但需要大量数据特别是密集数据才能超越更简单的基线。最近一种新的顺序模型Transfomer在机器翻译任务[3]方面实现了最先进的性能和效率。 与使用卷积或循环模块的现有序列模型不同Transformer 纯粹基于一种称为“自注意力”的注意力机制该机制非常高效能够揭示句子中单词之间的句法和语义模式。受这种方法的启发我们寻求将自注意力机制应用于序列推荐问题。 我们希望这个想法能够解决上述两个问题一方面能够从过去的所有动作如 RNN中提取上下文但另一方面能够根据少量动作如 MC进行预测。 具体来说我们构建了一个基于自注意力的顺序推荐模型(SASRec)该模型在每个时间步自适应地为先前的项目分配权重图1)。图1显示 SASRec 训练过程的简化图。 在每个时间步骤模型都会考虑所有先前的项目并利用注意力“关注”与下一步操作相关的项目。所提出的模型在多个基准数据集上显着优于最先进的基于 MC/CNN/RNN 的顺序推荐方法。 特别是我们将性能作为数据集稀疏性的函数来检查其中模型性能与上述模式密切相关。 由于自注意力机制SASRec 倾向于考虑对密集数据集的长期依赖同时关注稀疏数据集上的近期活动。 事实证明这对于自适应处理不同密度的数据集至关重要。此外SASRec 的核心组件即自注意力模块适合并行加速从而产生的模型比基于 CNN/RNN 的替代方案快一个数量级。 此外我们分析了SASRec的复杂性和可扩展性进行了全面的消融研究以显示关键组件的效果并可视化注意力权重以定性地揭示模型的行为。II 相关工作有几项工作与我们的工作密切相关。 我们首先讨论一般性推荐然后讨论时间推荐然后再讨论序列推荐特别是 MC 和 RNN。 最后我们介绍了注意力机制特别是作为我们模型核心的自注意力模块。II-A一般推荐推荐系统专注于根据历史反馈例如点击、购买、喜欢对用户和项目之间的兼容性进行建模。 用户反馈可以是显式例如评分或隐式例如点击、购买、评论[4, 5]。 由于解释“非观察”例如非购买数据的模糊性对隐式反馈进行建模可能具有挑战性。 为了解决这个问题提出了逐点[4]和成对[5]方法来解决此类挑战。矩阵分解 (MF) 方法试图揭示潜在维度来表示用户的偏好和项目的属性并通过用户和项目嵌入之间的内积来估计交互[6, 7]。 此外另一项工作基于项目相似性模型ISM并且没有使用潜在因素显式地对每个用户进行建模例如 FISM [8])。 他们学习项目到项目的相似度矩阵并通过测量项目与用户之前交互过的项目的相似度来估计用户对项目的偏好。最近由于在相关问题上的成功各种深度学习技术被引入推荐[9]。 其中一项工作旨在使用神经网络来提取项目特征例如图像 [10, 11]、文本 [12, 13] 等以进行内容感知推荐。 另一项工作旨在取代传统的 MF。 例如NeuMF [14] 通过多层感知 (MLP) 估计用户偏好而 AutoRec [15] 使用自动编码器预测评分。II-B时序推荐追溯到Netflix奖时间推荐通过显式建模用户行为的时间戳在各种任务上表现出了强大的性能。TimeSVD [16] 通过将时间分成几个片段并在每个片段中分别对用户和项目进行建模取得了很好的结果。 此类模型对于理解表现出显着短期或长期时间“漂移”的数据集至关重要例如“过去 10 年电影偏好如何变化”或“用户下午 4 点访问什么样的企业”等[17,18,16]。 序列推荐或下一项推荐与此设置略有不同因为它仅考虑操作的顺序并对与时间无关的顺序模式进行建模。 从本质上讲序列模型试图根据用户最近的活动对用户操作的“上下文”进行建模而不是考虑时间模式本身。II-C序列推荐许多序列推荐系统试图对项目-项目转换矩阵进行建模作为捕获连续项目之间的顺序模式的手段。例如FPMC 融合了 MF 项和item-item转换项来分别捕获长期偏好和短期转换[1]。 本质上捕获的转换是一阶马尔可夫链 (MC)而高阶 MC 假设下一个动作与之前的几个动作相关。 由于最后访问的项目通常是影响用户下一步操作的关键因素本质上提供“上下文”因此基于一阶 MC 的方法表现出很强的性能特别是在稀疏数据集[19]上。 还有一些方法采用高阶 MC考虑更多先前的项 [20, 21]。特别是卷积序列嵌入Caser是一种基于 CNN 的方法将 L 先前项目的嵌入矩阵视为“图像”并应用卷积运算来提取转换 [22]。除了基于MC的方法之外另一项工作采用RNN来建模用户序列[23,2,24,25]。 例如GRU4Rec 使用门控循环单元 (GRU) 对基于会话的推荐[2]的点击序列进行建模改进版本进一步提升了其 Top-N 推荐性能[26]。 在每个时间步中RNN 将上一步的状态和当前动作作为输入。 尽管已经提出了“会话并行”等技术来提高效率[2]但这些依赖性降低了 RNN 的效率。II-D注意力机制注意力机制已被证明在各种任务中都是有效的例如图像字幕 [27] 和机器翻译 [28] 等。 从本质上讲这种机制背后的想法是顺序输出例如每个都依赖于模型应连续关注的某些输入的“相关”部分。 另一个好处是基于注意力的方法通常更容易解释。 最近注意力机制已被纳入推荐系统[29,30,31]。 例如注意力分解机 (AFM) [30] 了解每个特征交互对于内容感知推荐的重要性。然而上面使用的注意力技术本质上是原始模型的附加组件例如注意力RNN、注意力FM等。最近一种纯粹基于注意力的序列到序列方法 Transfomer [3] 在机器翻译任务上实现了最先进的性能和效率而这些任务之前是由基于 RNN/CNN 的方法主导的[32, 33]。 Transformer 模型在很大程度上依赖于所提出的“自注意力”模块来捕获句子中的复杂结构并检索相关单词源语言以生成下一个单词目标语言。 受 Transformer 的启发我们寻求基于自注意力方法构建一种新的顺序推荐模型尽管序列推荐的问题与机器翻译有很大不同并且需要专门设计的模型。III 方法论表一符号。NotationDescription,ℐuser and item setuhistorical interaction sequence for a user u: (1u,2u,…,|u|u)d∈ℕlatent vector dimensionalityn∈ℕmaximum sequence lengthb∈ℕnumber of self-attention blocks∈ℝ|ℐ|×ditem embedding matrix∈ℝn×dpositional embedding matrix^∈ℝn×dinput embedding matrix(b)∈ℝn×ditem embeddings after the b-th self-attention layer(b)∈ℝn×ditem embeddings after the b-th feed-forward network在顺序推荐的设置中我们给出用户的操作序列u(1^u,2^u,…,|u|^u)并寻求预测下一个项目。 在训练过程中在时间步 t 处模型根据之前的 t 项预测下一项。 如图1所示可以方便地将模型的输入视为(1^u,2^u,…,|u|−1^u)并将其预期输出视为同一序列的“移位”版本(2u,3u,…,|u|u)。 在本节中我们将描述如何通过嵌入层、几个自注意力块和预测层构建顺序推荐模型。 我们还分析了它的复杂性并进一步讨论了 SASRec 与相关模型的不同之处。 我们的符号总结在表I中。III-A嵌入层我们将训练序列 (1^u,2^u,…,|u|−1^u) 转换为固定长度的序列 s(s1,s2,…,sn)其中 n 表示我们的模型可以处理的最大长度。 如果序列长度大于 n我们会考虑最近的 n 操作。 如果序列长度小于n我们会在左侧重复添加“padding”项直到长度为n。我们创建一个项目嵌入矩阵 ∈ℝ|ℐ|×d其中 d 是潜在维度并检索输入嵌入矩阵 ∈ℝn×d其中 isi。 常量零向量 用作填充项的嵌入。位置嵌入正如我们将在下一节中看到的由于自注意力模型不包含任何循环或卷积模块因此它不知道先前项目的位置。 因此我们将可学习的位置嵌入 ∈ℝn×d 注入到输入嵌入中^[s11s22…snn](1)我们还尝试了 [3] 中使用的固定位置嵌入但发现这会导致我们的案例性能更差。 我们在实验中定量和定性地分析了位置嵌入的效果。III-B自注意力块缩放后的点积注意力[3]定义为Attention(,,)softmax(T/sqrt(d)),(2)其中 表示查询 表示键 表示值每行表示一个项目。 直观上注意力层计算所有值的加权和其中查询i和值j之间的权重与查询i和键j之间的交互相关。 比例因子d是为了避免内积值过大特别是当维度较高时。自注意力层在机器翻译等 NLP 任务中注意力机制通常与 一起使用例如使用 RNN 编码器-解码器进行翻译编码器的隐藏状态是键和值解码器的隐藏状态是查询[28]。 最近提出了一种自注意力方法它使用相同的对象作为查询、键和值[3]。 在我们的例子中自注意力操作将嵌入 ^ 作为输入通过线性投影将其转换为三个矩阵并将它们输入注意力层SA(^)Attention(^Q,^K,^V),(3)其中投影矩阵 Q,K,V∈ℝd×d。 投影使模型更加灵活。 例如模型可以学习非对称交互即 , query_i,key_j 和query_j , key_i 可以有不同的交互。因果关系由于序列的性质模型在预测 (t1)-st 项时应仅考虑前 t 项。 然而自注意力层 (t) 的第 t 输出包含后续项的嵌入这使得模型不适定。 因此我们通过禁止 i 和 j (ji) 之间的所有链接来修改注意力。逐点前馈网络尽管自注意力能够通过自适应权重聚合所有先前项目的嵌入但最终它仍然是一个线性模型。 为了赋予模型非线性并考虑不同潜在维度之间的相互作用我们对所有i应用相同的逐点两层前馈网络共享参数iFFN(i)ReLU(i(1)(1))(2)(2),(4)其中 (1),(2) 是 d×d 矩阵(1),(2) 是 d 维向量。 请注意i 和 j (i≠j) 之间没有交互这意味着我们仍然可以防止信息泄漏从后到前。III-C堆叠自注意力块在第一个自注意力块之后i本质上聚合了所有先前项目的嵌入即^j,j≤i)。 然而通过另一个基于 的自注意力块来学习更复杂的项目转换可能会很有用。 具体来说我们堆叠自注意力块即自注意力层和前馈网络并且第b(b1)块定义为(b)SA((b−1)),i(b)FFN(i(b)),∀i∈{1,2,…,n},(5)1-st 块定义为 (1) 和 (1)。然而当网络更深时几个问题会变得更加严重1模型容量的增加导致过拟合 2训练过程变得不稳定由于梯度消失等 3具有更多参数的模型通常需要更多的训练时间。 受[3]的启发我们执行以下操作来缓解这些问题g(x)xDropout(g(LayerNorm(x))),其中g(x)表示自注意力层或前馈网络。 也就是说对于每个块中的层 g我们在输入 g 之前对输入 x应用层归一化对 g 的输出应用 dropout并将输入 x 添加到最终输出。 下面我们介绍一下这些操作。残差连接在某些情况下多层神经网络已证明能够分层学习有意义的特征[34]。 然而简单地添加更多层并不容易对应更好的性能直到残差网络被提出[35]。 残差网络背后的核心思想是通过残差连接将低层特征传播到高层。 因此如果低层特征有用模型可以轻松地将它们传播到最终层。 同样我们假设残差连接在我们的例子中也很有用。 例如现有的顺序推荐方法表明最后访问的项目对于预测下一个项目[1,21,19]起着关键作用。 然而在几个自注意力块之后最后访问的项目的嵌入与所有先前的项目纠缠在一起添加剩余连接以将最后访问的项目的嵌入传播到最后一层将使模型更容易利用低层信息。层归一化层归一化用于跨特征即零均值和单位方差对输入进行归一化这有利于稳定和加速神经网络训练[36]。 与批量归一化[37]不同层归一化中使用的统计数据独立于同一批次中的其他样本。 具体来说假设输入是一个包含样本所有特征的向量则操作定义为其中 ⊙ 是逐元素乘积即哈达玛乘积μ 和 σ 是 的均值和方差 和 是学习的缩放因子和偏差项。Dropout为了缓解深度神经网络中的过度拟合问题“Dropout”正则化技术已被证明在各种神经网络架构中有效[38]。 Dropout的想法很简单在训练期间以p的概率随机“关闭”神经元并在测试时使用所有神经元。 进一步的分析指出dropout 可以被视为集成学习的一种形式它考虑了共享参数的大量模型神经元和输入特征数量呈指数级[39]。 我们还在嵌入 ^ 上应用了一个 dropout 层。III-D预测层在 b 自注意力块自适应且分层地提取先前消费项目的信息之后我们根据 t(b) 预测下一个项目给定第一个 t 项目。 具体来说我们采用 MF 层来预测项目 i 的相关性ri,tt(b)iT,其中 ri,t 是项目 i 的相关性它是给定第一个 t 项目即 s1,s2,…,st)的下一个项目而 ∈ℝ|ℐ|×d 是项目嵌入矩阵。 因此高交互分数ri,t意味着高相关性我们可以通过对分数进行排名来生成推荐。共享项目嵌入为了减小模型大小并减轻过度拟合我们考虑另一种仅使用单个项目嵌入 的方案(6)请注意t(b) 可以表示为函数具体取决于嵌入 的项目t(b)f(s1,s2,…,st)。 使用同质项目嵌入的一个潜在问题是它们的内积无法表示不对称项目转换例如项目i经常在j之后购买但反之则不亦然因此像FPMC这样的现有方法倾向于使用异构项目嵌入。 然而我们的模型不存在这个问题因为它学习了非线性变换。 例如前馈网络可以轻松实现具有相同项目嵌入的不对称性FFN(i)jT≠FFN(j)iT。 根据经验使用共享项目嵌入可以显着提高我们模型的性能。显式用户建模为了提供个性化推荐现有方法通常采用以下两种方法之一1学习表示用户偏好的显式用户嵌入例如MF [40]、FPMC [1]和Caser [22]) 2考虑用户之前的操作并从访问项目的嵌入中引入隐式用户嵌入例如FSIM [8]、Fossil [21]、GRU4Rec [2])。 我们的方法属于后一类因为我们通过考虑用户的所有操作来生成嵌入 n(b)。 但是我们也可以在最后一层插入显式用户嵌入例如通过加法 ru,i,t(ut(b))iT 其中 是用户嵌入矩阵。 然而我们凭经验发现添加显式用户嵌入并不能提高性能大概是因为模型已经考虑了所有用户的操作。III-E网络训练回想一下我们通过截断或填充项将每个用户序列不包括最后一个操作(1u,2u,…,|u|−1u)转换为固定长度序列s{s1,s2,…,sn}。 我们将 ot 定义为时间步 t 的预期输出pad 是padding项. 我们的模型以序列s作为输入对应的序列o作为期望输出并采用二元交叉熵损失作为目标函数请注意我们忽略了 otpad 项。该网络由Adam优化器 [41] 优化它是具有自适应矩估计的随机梯度下降 (SGD) 的变体。 在每个时期我们为每个序列中的每个时间步随机生成一个负项j。 更多实现细节稍后描述。III-F复杂性分析空间复杂度我们模型中学习到的参数来自自注意力层、前馈网络和层归一化中的嵌入和参数。 参数总数为 O(|ℐ|dndd2)与其他方法相比例如 FPMC 的 O(||d|ℐ|d))是适中的因为它不会随着用户数量的增加而增长并且 d 在推荐问题中通常很小。时间复杂度我们模型的计算复杂度主要归因于自注意力层和前馈网络即O(n2dnd2)。 主要术语通常是来自自注意力层的O(n2d)。 然而我们模型中的一个便利特性是每个自注意力层中的计算是完全可并行的这适合 GPU 加速。 相比之下基于 RNN 的方法例如 GRU4Rec [2])对时间步长有依赖性即时间步长 t 上的计算必须等待时间步长 t-1 的结果这导致顺序操作需要 O(n) 时间。 根据经验我们发现我们的方法比使用 GPU 的基于 RNN 和 CNN 的方法快十倍以上结果类似于机器翻译任务的 [3]中的结果并且最大长度 n 可以轻松扩展到几百这对于现有基准数据集来说通常足够了。测试过程中对于每个用户计算嵌入 n(b) 后过程与标准 MF 方法相同。 (O(d) 用于评估对某个项目的偏好。处理长序列尽管我们的实验凭经验验证了我们方法的效率但最终它无法扩展到非常长的序列。 未来有希望研究一些选项1使用受限的自注意力[42]它仅关注最近的动作而不是所有动作并且可以在更高层中考虑远处的动作 2将长序列分割成短段如[22]。III-G讨论我们发现 SASRec 可以被视为一些经典 CF 模型的泛化。 我们还从概念上讨论了我们的方法和现有方法如何处理序列建模。简化现有模型•分解马尔可夫链FMC分解一阶项转移矩阵并根据最后一项i预测下一项jP(j|i)∝iTj.如果我们将 self-attention 块设置为零使用非共享项嵌入并删除位置嵌入SASRec 就会减少为 FMC。 此外SASRec 还与分解个性化马尔可夫链FPMC[1]密切相关它将 MF 与 FMC 融合起来分别捕获用户偏好和短期动态P(j|u,i)∝[u,i]jT.遵循上述 FMC 的归约操作并添加显式用户嵌入通过串联SASRec 相当于 FPMC。•分解项目相似度模型[8]FISM通过考虑i与用户之前消费的项目之间的相似性来估计对项目i的偏好分数如果我们使用一个自注意力层不包括前馈网络对项目设置统一的注意力权重即 1|u|)使用非共享的项目嵌入并删除位置嵌入SASRec 就会简化为 FISM。 因此我们的模型可以被视为用于下一个项目推荐的自适应、分层、顺序项目相似性模型。基于MC的推荐马尔可夫链 (MC) 可以有效地捕获局部顺序模式假设下一项仅依赖于前一项 L 项。 现有的基于 MC 的顺序推荐方法依赖于一阶 MC例如 FPMC [1]、HRM [43]、TransRec [19])或高阶 MC例如 Fossil [21]、Vista [20]、Caser [22])。 第一组方法往往在稀疏数据集上表现最佳。 相比之下基于高阶MC的方法有两个局限性1MC阶数L需要在训练前指定而不是自适应选择 (2) 性能和效率不能很好地随顺序 L 扩展因此 L 通常很小例如小于 5。 我们的方法解决了第一个问题因为它可以自适应地关注相关的先前项目例如仅关注稀疏数据集上的最后一项以及密集数据集上的更多项目。 此外我们的模型本质上以 n 先前的项目为条件并且可以凭经验扩展到数百个先前的项目随着训练时间的适度增加而表现出性能提升。基于RNN的推荐另一项工作试图使用 RNN 来建模用户操作序列 [2, 26, 17]。 RNN 通常适合对序列进行建模但最近的研究表明 CNN 和自注意力在某些序列设置中可能更强[3, 44]。 我们基于自注意力的模型可以从项目相似性模型中派生出来这是推荐序列建模的合理替代方案。 对于RNN除了并行计算效率低外第III-F节它们的最大路径长度从输入节点到相关输出节点为O(n)。 相比之下我们的模型具有 O(1) 最大路径长度这有利于学习远程依赖关系[45]。IV 实验在本节中我们介绍我们的实验设置和实证结果。 我们的实验旨在回答以下研究问题问题一SASRec 是否优于最先进的模型包括基于 CNN/RNN 的方法问题2SASRec架构中各个组件的影响是什么问题3SASRec 的训练效率和可扩展性关于n)如何问题四注意力权重是否能够学习与位置或项目属性相关的有意义的模式IV-A数据集我们在来自三个现实世界应用程序的四个数据集上评估我们的方法。 数据集在领域、平台和稀疏性方面存在显着差异•Amazon [46] 中引入的一系列数据集包含从Amazon.com爬取的大量产品评论语料库。Amazon上的顶级产品类别被视为单独的数据集。 我们考虑两个类别“美容”和“游戏”。该数据集以其高度稀疏性和可变性而著称。•Steam我们引入了从大型在线视频游戏分发平台Steam抓取的新数据集。 该数据集包含 2010 年 10 月至 2018 年 1 月期间的 2,567,538 个用户、15,474 个游戏和 7,793,069 条英文评论。 该数据集还包含可能在未来工作中有用的丰富信息例如用户的游戏时间、定价信息、媒体评分、类别、开发者等。•MovieLens广泛使用的用于评估协同过滤算法的基准数据集。 我们使用包含 100 万用户评分的版本 (MovieLens-1M)。我们遵循与 [19, 21, 1] 相同的预处理过程。 对于所有数据集我们将评论或评级的存在视为隐式反馈即用户与项目交互并使用时间戳来确定操作的顺序。 我们会丢弃相关操作少于 5 个的用户和项目。 对于分区我们将每个用户 u 的历史序列 u 分为三部分(1) 用于测试的最新操作 |u|u(2) 用于验证的第二个最新操作 |u|−1u以及 (3) 用于训练的所有剩余操作。 请注意在测试期间输入序列包含训练操作和验证操作。数据统计如表II所示。 我们看到两个Amazon数据集的每个用户和每个项目的操作数最少平均而言Steam每个项目的平均操作数很高而MovieLens-1m是最密集的数据集。表二数据集统计预处理后Dataset#users#itemsavg. actions /useravg. actions /item#actionsAmazon Beauty52,02457,2897.66.90.4MAmazon Games31,01323,7159.312.10.3MSteam334,73013,04711.0282.53.7MMovieLens-1M6,0403,416163.5289.11.0M表三推荐表现。 每行中表现最好的方法用粗体显示每行中第二好的方法用下划线显示。 最后两列分别显示了对非神经和神经方法的改进。DatasetMetric(a)PopRec(b)BPR(c)FMC(d)FPMC(e)TransRec(f)GRU4Rec(g)GRU4Rec(h)Caser(i)SASRecImprovement vs.(a)-(e)(f)-(h)BeautyHit100.40030.37750.37710.43100.46070.21250.39490.42640.48545.4%13.8%NDCG100.22770.21830.24770.28910.30200.12030.25560.25470.32196.6%25.9%GamesHit100.47240.48530.63580.68020.68380.29380.65990.52820.74108.5%12.3%NDCG100.27790.28750.44560.46800.45570.18370.47590.32140.536014.5%12.6%SteamHit100.71720.70610.77310.77100.76240.41900.80180.78740.872913.2%8.9%NDCG100.45350.44360.51930.50110.48520.26910.55950.53810.630621.4%12.7%ML-1MHit100.43290.57810.69860.75990.64130.55810.75010.78860.82458.5%4.6%NDCG100.23770.32870.46760.51760.39690.33810.55130.55380.590514.1%6.6%IV-B比较方法为了显示我们方法的有效性我们包括三组推荐基线。 第一组包括一般推荐方法仅考虑用户反馈而不考虑操作的顺序•PopRec这是一个简单的基线根据项目的受欢迎程度即相关操作的数量对项目进行排名。•贝叶斯个性化排名BPR[5]BPR 是从隐式反馈中学习个性化排名的经典方法。 有偏矩阵分解用作基础推荐器。第二组包含基于一阶马尔可夫链的顺序推荐方法它考虑最后访问的项目•因式分解马尔可夫链 (FMC) 一阶马尔可夫链方法。 FMC 使用两个项目嵌入分解项目转换矩阵并仅根据最后访问的项目生成推荐。•分解个性化马尔可夫链FPMC[1]FPMC使用矩阵分解和分解一阶马尔可夫链的组合作为推荐器它捕获用户的长期偏好以及项目到项目的转换。•基于翻译的推荐 (TransRec) [19]一种最先进的一阶顺序推荐方法它将每个用户建模为翻译向量以捕获从当前项目到下一个项目的转换。最后一组包含基于深度学习的顺序推荐系统该系统考虑多个或全部先前访问过的项目•GRU4Rec [2]一种使用 RNN 对用户操作序列进行建模以进行基于会话的推荐的开创性方法。 我们将每个用户的反馈序列视为一个会话。•GRU4Rec [26]GRU4Rec的改进版本采用不同的损失函数和采样策略在Top-N推荐上表现出显着的性能提升。•卷积序列嵌入Caser[22]最近提出的一种基于CNN的方法通过对L最近项目的嵌入矩阵应用卷积运算来捕获高阶马尔可夫链并实现最先进的序列推荐性能。由于其他顺序推荐方法例如 PRME [47]、HRM [43]、Fossil [21])在类似数据集上的表现优于上述基线因此我们省略了与它们的比较。 我们也不包括像 TimeSVD [16] 和 RRN [17] 这样的时间推荐方法它们的设置与我们在这里考虑的不同。为了公平比较我们使用TemsorFlow和 Adam [41] 优化器来实现 BPR、FMC、FPMC 和 TransRec。对于 GRU4Rec、GRU4Rec 和 Caser我们使用相应作者提供的代码。对于除 PopRec 之外的所有方法我们考虑 {10,20,30,40,50} 的潜在维度 d。对于 BPR、FMC、FPMC 和 TransRecℓ2 正则化器选自 {0.0001,0.001,0.01,0.1,1}。所有其他超参数和初始化策略都是方法作者建议的。我们使用验证集调整超参数如果验证性能在 20 个周期内没有改善则终止训练。IV-C实施细节对于SASRec默认版本中的架构我们使用两个自注意力块(b2)并使用学习到的位置嵌入。 嵌入层和预测层中的项目嵌入是共享的。 我们使用TensorFlow实现 SASRec。 优化器是Adam优化器[41]学习率设置为0.001批量大小为128。 由于稀疏性MovieLens-1m的神经元关闭丢失率为 0.2其他三个数据集的丢失率为 0.5。 对于MovieLens-1m最大序列长度 n 设置为 200对于其他三个数据集设置为 50即大致与每个用户的平均操作数成正比。 下面检查了变体和不同超参数的性能。所有代码和数据均应在发布时发布。IV-D评估指标我们采用两个常见的 Top-N 指标Hit Rate10 和 NDCG10 来评估推荐性能[14, 19]。 Hit10 计算真实的下一个项目属于前 10 个项目的次数而 NDCG10 是一种位置感知指标它为较高的位置分配较大的权重。 请注意由于我们每个用户只有一个测试项因此 Hit10 相当于 Recall10并且与 Precision10 成正比。为了避免对所有用户-项目对进行大量计算我们遵循[48, 14]中的策略。 对于每个用户 u我们随机抽取 100 个负面项目并将这些项目与真实项目进行排名。 根据这101个项目的排名可以评估Hit10和NDCG10。IV-E推荐性能表III展示了所有方法在四个数据集(RQ1)上的推荐性能。 通过考虑所有数据集的次佳方法出现了一种普遍模式即非神经方法即a-e在稀疏数据集上表现更好而神经方法即f-h在更密集的数据集上表现更好。 据推测这归因于神经方法具有更多参数来捕获高阶转换即它们具有表达能力但很容易过度拟合而精心设计但更简单的模型在高稀疏设置中更有效。我们的方法 SASRec 在稀疏和密集数据集上都优于所有基线与最强基线相比命中率提高了 6.9%NDCG 提高了 9.6%平均。 一个可能的原因是我们的模型可以自适应地关注不同数据集上不同范围内的项目例如稀疏数据集上仅前一项而密集数据集上更多。 我们在IV-H节中进一步分析了这种行为。在图 2 中我们还通过显示 d 从 10 到 50 变化的所有方法的 NDCG10 来分析关键超参数潜在维度 d)的影响。 我们发现我们的模型通常受益于大量的潜在维度。 对于所有数据集我们的模型都在 d≥40 方面取得了令人满意的性能。(a)美丽(b)游戏(c)蒸汽(d)ML-1M图2潜在维度d对排名性能的影响NDCG10。IV-F消融研究由于我们的架构中有许多组件因此我们通过消融研究 (RQ2) 来分析它们的影响。 表 IV 显示了我们的默认方法及其 8 变体在所有四个数据集带有 d50)上的性能。 我们介绍一下各个变体并分别分析它们的效果表四对四个数据集的消融分析 (NDCG10)。 比默认版本更好的性能以粗体显示。 “↓”表示性能严重下降超过 10%。ArchitectureBeautyGamesSteamML-1M(0) Default0.31420.53600.63060.5905(1) Remove PE0.31830.53010.60360.5772(2) Unshared IE0.2437↓0.4266↓0.4472↓0.4557↓(3) Remove RC0.2591↓0.4303↓0.56930.5535(4) Remove Dropout0.2436↓0.4375↓0.59590.5801(5) 0 Block (b0)0.2620↓0.4745↓0.5588↓0.4830↓(6) 1 Block (b1)0.30660.54080.62020.5653(7) 3 Blocks (b3)0.30780.53120.62750.5931(8) Multi-Head0.30800.53110.62720.5885•1删除PE位置嵌入没有位置嵌入每个项目的注意力权重仅取决于项目嵌入。 也就是说该模型根据用户过去的操作进行推荐但它们的顺序并不重要。 此变体可能适用于稀疏数据集其中用户序列通常很短。 此变体在最稀疏数据集 (Beauty) 上的表现优于默认模型但在其他较密集的数据集上表现较差。•(2)Unshared IE (Item Embedding)我们发现使用两个项目嵌入会持续损害性能可能是由于过度拟合。•(3)Remove RC (Residual Connections)没有剩余连接我们发现性能明显变差。 据推测这是因为较低层中的信息例如最后一项的嵌入和第一个块的输出无法轻松传播到最终层并且该信息对于提出建议非常有用尤其是在稀疏数据集上。•(4)Remove Dropout我们的结果表明dropout 可以有效地正则化模型以获得更好的测试性能特别是在稀疏数据集上。 结果还表明在密集数据集上过度拟合问题不太严重。•(5)-(7)块数毫不奇怪零块的结果较差因为模型仅依赖于最后一项。 具有一个块的变体表现得相当好尽管使用两个块默认模型仍然可以提高性能尤其是在密集数据集上这意味着分层自注意力结构有助于学习更复杂的项目转换。 使用三个模块可实现与默认模型类似的性能。•(8)多头Transformer [3]的作者发现使用“多头”注意力非常有用它将注意力应用于h子空间每个子空间是一个d/h维空间。 然而在我们的例子中两个头的性能始终比单头注意力稍差。 这可能是由于我们的问题中的 d 小Transformer 中的 d512)它不适合分解为更小的子空间。IV-G培训效率和可扩展性我们评估模型的训练效率(RQ3)的两个方面训练速度训练一轮所需的时间和收敛时间达到满意性能所需的时间。 我们还根据最大长度 n 检查模型的可扩展性。所有实验均使用单个 GTX-1080 Ti GPU 进行。培训效率图3展示了基于深度学习的GPU加速方法的效率。 GRU4Rec 由于性能较差而被省略。 为了公平比较Caser 和 GRU4Rec 有两种训练选项使用完整的训练数据或仅使用最近的 200 个操作如在 SASRec 中。 在计算速度上SASRec 一个 epoch 的模型更新时间仅为 1.7 秒比 Caser19.1s/epoch快 11 倍以上比 GRU4Rec30.7s/epoch快 18 倍。 我们还看到SASRec 在ML-1M上大约 350 秒内收敛到最佳性能而其他模型需要更长的时间。 我们还发现使用完整数据可以使 Caser 和 GRU4Rec 获得更好的性能。图3ML-1M上的训练效率。 就每轮训练时间和总训练时间而言SASRec 比基于 CNN/RNN 的推荐方法快一个数量级。(a)美感第 1 层(b)ML-1M第 1 层无 PE(c)ML-1M第 1 层(d)ML-1M第 2 层 图4不同时间步长位置上的平均注意力权重的可视化。 为了进行比较基于一阶马尔可夫链的模型的热图将是对角矩阵。可扩展性与标准 MF 方法一样SASRec 随用户、项目和操作的总数线性扩展。 潜在的可扩展性问题是最大长度 n但是计算可以通过 GPU 有效地并行化。 这里我们用不同的n来衡量SASRec的训练时间和性能实证研究它的可扩展性并分析它在大多数情况下是否可以处理顺序推荐。 表V显示了SASRec在不同序列长度下的性能和效率。 n 越大性能越好直到 n500 左右此时性能饱和可能是因为 99.8% 的操作已被覆盖。 然而即使使用n600模型也可以在2000秒内训练完成这仍然比Caser和GRU4Rec快。 因此我们的模型可以轻松扩展到最多数百个操作的用户序列这适用于典型的评论和购买数据集。 我们计划在未来研究处理很长序列的方法在第 III-F 节中讨论。表五可扩展性ML-1M上不同最大长度 n 的性能和训练时间。n1050100200300400500600Time(s)7510115734161396514061895NDCG100.4800.5570.5710.5870.5930.5940.5960.595IV-H可视化注意力权重回想一下在时间步t我们模型中的自注意力机制根据其位置嵌入和项目嵌入自适应地为第一个t项目分配权重。 为了回答RQ4我们检查所有训练序列并通过显示位置和项目的平均注意力权重来寻求揭示有意义的模式。持仓注意图4显示了最后15个时间步的最后15个位置的平均注意力权重的四个热图。 注意当我们计算平均权重时分母是有效权重的数量以避免短序列中填充项的影响。我们考虑热图之间的一些比较•(a) 与 (c)此比较表明模型倾向于关注稀疏数据集Beauty上较新的项目以及密集数据集ML-1M上较新的项目。 这是使我们的模型能够自适应地处理稀疏和密集数据集的关键因素而现有方法往往只关注这一范围的一端。•(b) 与 (c)此比较显示了使用位置嵌入 (PE) 的效果。 如果没有它们注意力权重基本上均匀分布在先前的项目上而默认模型 (c) 的位置更加敏感因为它倾向于关注最近的项目。•(c) 与 (d)由于我们的模型是分层的这显示了注意力在不同块之间的变化。 显然高层的注意力往往集中在最近的职位上。 大概这是因为第一个自注意力块已经考虑了之前的所有项目而第二个块不需要考虑远处的位置。总体而言可视化显示我们的自注意力机制的行为是自适应、位置感知和分层。项目之间的注意显示一些精心挑选的项目之间的注意力权重可能没有统计意义。 为了进行更广泛的比较使用MovieLens-1M其中每部电影都有多个类别我们随机选择两个不相交的集合其中每个集合包含来自 4 个类别的 200 部电影科幻小说科幻、浪漫、动画和恐怖。 第一组用于查询第二组作为键。 图5显示了两组之间平均注意力权重的热图。 我们可以看到热图大约是一个块对角矩阵这意味着注意力机制可以识别相似的项目例如共享共同类别的项目并倾向于在它们之间分配更大的权重无需提前意识到类别。图5四个类别电影之间平均注意力的可视化。 这表明我们的模型可以揭示项目的属性并在相似的项目之间分配更大的权重。V 结论在这项工作中我们提出了一种新颖的基于自注意力的顺序模型SASRec用于下一个项目推荐。 SASRec 对整个用户序列进行建模没有任何循环或卷积操作并自适应地考虑消耗的项目进行预测。对稀疏和密集数据集的广泛实证结果表明我们的模型优于最先进的基线并且比基于 CNN/RNN 的方法快一个数量级。未来我们计划通过合并丰富的上下文信息例如停留时间、动作类型、位置、设备等来扩展模型并研究处理很长序列例如点击的方法。
阅读完成 · 觉得有帮助?