一、RUM [2018]

《Sequential Recommendation with User Memory Networks》

  1. 在许多现实世界的 application 中,用户当前的兴趣受到他们历史行为的影响。例如,人们在购买智能手机之后可能会购买手机壳或耳机等配件,人们可能会继续购买他们以前有过良好体验的同一品牌的衣服。

    为了建模这种现象,人们已经提出了一些方法来使用用户历史记录(user historical record)进行序列推荐。例如,《Factorizing personalized markov chains for next-basket recommendation》 采用马尔科夫链对用户行为序列进行建模,《Context-aware sequential recommendation》 和 《dynamic recurrent model for next basket recommendation》 利用 RNN 来嵌入先前购买的商品从而进行当前兴趣预测( current interest prediction)。

    现有方法取得了令人振奋的结果,但是它们倾向于将用户以前的所有记录(record)压缩为一个固定的 hidden representation。如下图所示,用户购买手机壳(item E)的关键原因可能是他之前购买了一部手机(item B),而之前其它购买的商品不一定与这个 new purchase (即,手机壳)有关。然而,RNN(和其它的 latent representation 方法)会强制将所有先前的 item (即 item A 到 item D)summarize 到一个向量(即,h→4),用于预测用户的 next interest 。

    不同历史记录(它们用于 next interest prediction )的这种区分性的缺乏导致了两个不利的后果:

    • 在序列推荐中弱化了高相关 item 的信号。

    • 忽略这样的高相关性信号使我们难以理解和解释序列推荐。

    为了缓解这些问题,论文 《Sequential Recommendation with User Memory Networks》将用户行为视为描述神经图灵机( neural turing machine: NTM)的决策程序,并提出使用 external memory 来建模用户历史记录。凭借显式地、动态地、和有效地表达、存储和操作记录的能力,external memory network: EMN 已经在许多序列预测任务中展示出良好的性能,例如知识问答(question answering: QA)、natural language transduction: NLT、knowledge tracking: KT 。EMN 架构不是合并先前的状态(state)来进行预测,而是引入了一个 memory matrix 来将状态分别存储在 memory slot 中。然后通过在这个矩阵上设计适当的操作,EMN 与传统的 RNN/LSTM 模型相比在许多任务中实现了显著的提升。

    受到 EMN 的启发,论文 《Sequential Recommendation with User Memory Networks》提出了一种将 Recommender system 和 external User Memory network 相结合的新颖框架,简称 RUM。然后论文进一步研究 RUM 在 top-N 推荐任务上的直觉和性能。下图 (b) 和 (c) 说明了论文提出的框架的基本思想:

    • 对于每个用户,引入一个 external user memory matrix 来维护该用户的历史信息。与传统的 RNN hidden vector 相比,这丰富了 representation capacity 。

    • 在进行预测时,memory matrix 被注意力地(attentively)读出(read out)从而生成一个 embedding 来作为 user representation ,其中注意力机制学习先前记录对于当前推荐的不同重要性。

    • 在处理完序列中的每个 item 后,将重写 memory 从而更新用户历史(user history)。

    为了更好地探索论文的想法,作者提供了框架的两个规范( specification),即 item-level RUM 和 feature-level RUM ,它们分别建模 item-level 的用户记录和 feature-level 的用户记录。与现有方法相比,论文的方法基于 memory network 对用户历史记录进行了更细粒度的使用,提高了推荐性能,同时基于注意力分析抽取了消费者行为的直观的因果关系(intuitive causality)。

    总之,这项工作的主要贡献包括:

    • 论文提出将协同过滤的洞察(insight)与memory-augmented neural network: MANN 相结合从而进行推荐。这种结合以更有效的方式利用了用户历史记录。据作者所知,这是将 MANN 引入推荐系统领域的首次尝试。

    • 论文研究了两个具有不同 representation 和 operation 设计的潜在 memory network(item-level 和 feature-level)。论文进一步研究并比较了它们在序列推荐和 top-N 推荐任务中的表现。

    • 论文还将所提出的模型与 SOTA 的方法进行了比较,并通过对现实世界数据集的定量分析来验证所提出模型的优越性。分析结果表明论文的方法能够更有效地利用用户历史记录。

    • 论文进一步提供实证分析(empirical analyse)来解释所提出的模型如何、以及为什么推荐一个 item 。分析结果表明通过 memory network 中的注意力机制,所提出的模型能够直观地解释用户历史记录如何影响该用户当前的和未来的决策。

  2. 相关工作:我们的工作本质上是序列推荐和 memory-augmented neural network 的集成。接下来我们回顾一下这两个研究方向的相关工作。

    • 序列推荐:在文献中,人们已经提出了许多模型以序列方式利用用户历史记录来进行 future behavior 的预测和推荐。

      • 通过集成矩阵分解和马尔科夫链,factorized personalized Markov chain: FPMC 将相邻行为之间的转移信息(transition information)嵌入到 item latent factor 从而进行推荐。

        而 hierarchical representation model: HRM 通过利用 representation learning 作为 latent factor 从而进一步扩展了这个想法。

        这些方法主要对每两个相邻记录之间的局部序列模式(local sequential pattern)进行建模。

      • 为了建模 multiple-step 序列行为,《Fusing Similarity Models with Markov Chains for Sparse Sequential Recommendation》 采用马尔科夫链来提供稀疏序列的推荐。

        《A dynamic recurrent model for next basket recommendation》 提出了 dynamic recurrent basket model: DREAM 来捕获全局序列模式(global sequential pattern)并学习基于 recurrent neural network: RNN 的 dynamic user interest representation 。在 DREAM 中,用户的所有历史记录都被嵌入到 RNN 的 final hidden state 中,从而代表该用户的当前偏好。DREAM 这种方法取得了相对于 HRM 和 FPMC 的显著改进。

        类似地,《Session-based recommendations with recurrent neural networks》、《Improved recurrent neural networks for session-based recommendations》 利用用户之前的点击和购买行为,使用 RNN 对短期偏好进行建模,从而用于 session-based 推荐。

        《Translation-based recommendation》 采用度量空间学习(metric space learning)方法来学习用于序列推荐的、加性(additive)的 user-item 关系。

        除了电商之外,序列推荐也被应用于 POI 推荐、音乐推荐、浏览(browsing)推荐等各种 application 场景。

      现有模型通常将用户先前的记录隐式编码为一个 latent factor 或 hidden state ,而不区分每条记录在预测当前兴趣时可能扮演的不同角色。然而,在这项工作中,我们利用 user memory network 来存储和操作每个用户先前的记录,这有助于增强用户历史的表达能力。

    • Memory-Augmented Neural Network:近年来出现了能够有效处理序列数据的 external memory network: EMN 。简而言之,EMN 利用一个 memory matrix 来存储历史的 hidden state 。通过正确读取和更新这个 memory matrix,EMN 可以在许多面向序列的任务上获得更好的性能。遵循这个思想,《End-to-end memory networks》 设计了一个端到端的 memory-augmented model ,它在训练期间需要的监督信息显著减少从而使其更好地适用于real-world setting。最近,研究人员已经成功地将 EMN 的概念应用于多个领域,如 question answering: QA、natural language transduction: NLT、knowledge tracking: KT 。

      通常,EMN 由两个主要组件构成:一个 memory matrix 用于维护 state 、一个 controller 用于操作(包括读取和写入)。更具体而言:

      • 对于读取过程,大多数方法采用注意力机制来读取 memory matrix 。即,对于输入 q→ ,他们首先计算输入和memory matrix 中每个 memory slot m→i 的相似度 similarity s(q→,m→i)∈R ,然后第 i 个slot 的注意力权重为:

        wi=softmax(s(q→,m→i))

        其中 softmax(xi)=exp⁡(xi)∑jexp⁡(xj) 。在注意力权重的基础上,memory 被注意力( attentively )地读出(read out)。

      • 对于写入过程,《Neural turing machines》 通过考虑内容和 slot location 来更新 user memory ,从而促进( facilitate) memory 的所有 location 。

        然而,《Meta-learning with memory-augmented neural networks》 提出了一种单纯地 content-based 的写入策略,称之为 least recently used access: LRUA ,从而将 memory 写入到最少使用的 memory location、或者最近使用的 memory location 。

      在本文中,我们旨在将 EMN 的思想应用于推荐系统,从而更有效地利用用户历史行为。这种应用方式还有待学术界探索。

1.1 模型

  1. 在本节中,我们首先介绍我们的通用框架,详细说明如何将 user memory network 与协同过滤相结合。然后,我们通过描述通用框架的两个具体实现(即,item-level user memory network 和 feature-level user memory network)来聚焦于设计 memory component ,从而从不同的角度审视我们的框架。

1.1.1 通用框架

  1. 为了更好地理解,我们首先将广泛使用的矩阵分解 (matrix factorization: MF)模型重新描述为神经网络。假设有 N 个用户(用户集合为 U)和 M 个 item (item 集合为 I)。在神经网络的上下文中,采用 one-hot 格式的 user ID/ item ID 可以作为输入并馈送到架构中,然后 look-up layer 将这些 sparse representation 投影到稠密向量中(即 user embedding/ item embedding)。

    假设用户 u 的 user embedding 为 p→u、item i 的 embedding 为 q→i ,那么MF 模型中 u 和 i 的相似分(likeness score) y^u,i 可以被计算为 p→u 和 q→i 之间的向量内积:

    y^u,i=p→u⋅q→i
  2. memory enhanced user embedding:为了在我们的框架中利用用户历史记录,我们从两部分生成一个用户的 embedding :

    • 一个部分与用户的 memory component 有关,该组件对用户以前的记录进行编码(称作 memory embedding,记做 p→um)。

    • 另一个部分是一个 free vector ,用于编码不受用户先前行为影响的内在偏好( intrinsic preference)(称作 intrinsic embedding,记做 p→u∗)。

    memory embedding 类似于传统的 RNN-based 方法中的 hidden vector 。然而,hidden vector 盲目地将用户的所有历史记录压缩成一个固定的向量,而在我们的框架中,用户记录通过更具表达能力的结构(个性化的 memory matrix Mu)来进行编码、存储、更新。

    这种方式内存消耗大(每个用户分配一个 memory matrix,内存需求为 O(NDK) ,其中 K 为 memory slot 个数,D 为 memory embedding 维度)。此外,模型的 mini-batch 训练也是一个难点。

    具体而言:

    • 对于用户 u,该用户的 memory embedding p→um 是根据当前 item embedding q→i 从 Mu 读取而来:

      p→um=read(Mu,q→i)

      其中 read(⋅) 为读取函数。

    • 然后,通过将 memory embedding p→um 与用户的 intrinsic embedding p→u∗合并,我们得到用户 u 的 final user embedding 为:

      p→u=merge(p→u∗,p→um)

      其中 merge(⋅) 是将两个向量合并为一个向量的函数。在我们的模型中,我们选择简单的加权加法,即:

      merge(x→,y→)=x→+αy→

      其中 α 为一个加权超参数。

      我们还测试了逐元素乘法合并、以及向量拼接合并,但是它们的效果都不如加权加法合并。加权加法合并的另一个优点是:我们可以调整权重超参数 α 来研究融合了 memory 机制进行推荐的效果,这将在实验部分展示。

  3. 预测函数:在进行预测时,我们将 final user embedding p→u 和 item embedding q→i 输入到一个函数中:

    y^u,i=predict(p→u,q→i)

    其中 predict(⋅) 是任意预测函数,甚至可以是 《Neural collaborative filtering》 中的 prediction neural network。在这里,我们选择 sigmoid 内积 y^u,i=σ(p→u⋅q→i)作为具体实现,因为它为我们的数据提供了更好的训练效率。然而,没必要严格限定该函数的实现,根据具体的应用领域,可以在实践中使用许多其它方式的实现。

  4. 训练:我们采用二元交叉熵作为模型优化的损失函数,要最大化的目标函数为:

    LRUM=(log⁡∏(u,i)(y^u,i)yu,i(1−y^u,i)1−yu,i)−λ||Θ||F2=(∑u∑i∈Iu+log⁡y^u,i)+(∑u∑i∈I∖Iu+log⁡(1−y^u,i))−λ||Θ||F2

    其中:

    • Θ 为模型的参数集合。

    • yu,i 为 ground truth,如果用户 u 购买了 item i 则取值为 1,否则取值为 0。

    • I 为所有 item 的集合,Iu+ 为用户 u 所有购买的 item 的集合。我们从 unobserved 的 item 集合 Iu−=I∖Iu+ 中均匀采样 negative item 。应该注意的是,非均匀采样策略可能会进一步提高性能,我们将非均匀采样策略留待未来的工作。

    在这个等式中,我们通过前两项来最大化我们预测结果的可能性,最后一项对所有模型参数正则化从而避免过拟合。在训练阶段,我们通过随机梯度下降 (stochastic gradient descent: SGD)来学习模型参数。

  5. memory updating:在每次购买行为之后,我们通过以下方式更新 user memory matrix Mu 从而维持其动态特性( dynamic nature):

    Mu←write(Mu,q→i)

    在接下来的内容中,我们将描述个性化的 memory matrix Mu 如何编码用户行为,以及如何在 item-level 和 feature-level 设计 read(⋅) 和 write(⋅) 操作。

1.1.2 Item-level RUM

  1. 在本节中,我们首先通过简单的方式扩展以前的方法来实现我们的思想(如下图 (a))。与现有模型类似,我们将每个 item 视为一个单元(unit),并建模先前购买的 item 对下一个 item 的影响。许多工作表明(《Factorizing personalized markov chains for next-basket recommendation》、《Learning hierarchical representation model for next-basket recommendation》),用户最近的行为可能对当前决策更重要。因此,对于每个用户 u ,我们让 memory matrix Mu 存储 u 最近购买的 item 的 embedding ,如下图 (a) 中的紫色虚线框所示。

  2. 假设用户 u 购买的 item 集合定义为:Iu+={v1u,v2u,⋯,v|Iu+|u} ,其中按照购买顺序(时间戳的升序)来排列,viu 为用户 u 购买的第 i 个 item 。

    令 q→viu∈RD 为 item viu 的 embedding 。假设 memory matrix 有 K 列(即 K 个 memory slot),即 Mu={m→1u,m→2u,⋯,m→Ku}∈RD×K ,其中 m→ku∈RD 为 Mu 的第 k 个列向量(column vector)。我们设计 reading 操作和 writing 操作如下:

    • reading 操作:直观上看,之前的 item 可能对当前的 item 有不同的影响,影响越大的 item 在 final memory embedding 中应该越重视。形式上,在我们的模型中,当对 user-item pair (u,viu) 进行预测时,我们首先采用与 FPMC 类似的方式来计算 user memory Mu 中的 item 与当前 item viu 的影响:

      wi,k=q→viu⋅m→ku,zi,k=exp⁡(β×wi,k)∑j=1Kexp⁡(β×wi,j),∀k=1,2,⋯,K

      其中 β 为强度(strength)超参数。

      然后我们使用 zi,k 作为注意力权重来推导出用户 u 的 memory embedding ,这为我们提供了一个能力:根据用户历史行为对当前 item 的影响来访问用户历史行为。即:

      p→um=∑k=1Kzi,k×m→ku

      与之前的模型不同,我们不会在 reading 过程中强行合并所有 item embedding 。相反,我们现将这些 item embedding 单独存储在 Mu 中,然后对其中的某些 item 给予更多的关注。这为我们提供了一种更细粒度的方法来利用用户历史记录。

    • writing 操作:如前所述,用户最近的行为通常对当前的预测起着更重要的作用。因此,我们采用简单的 first-in-first-out: FIFO 机制来维护 user memory matrix Mu 中最近交互的 item 。

      具体而言,用户 u 的 memory matrix Mu 总是存储最近的 K 个 item 。假设当前 item 是 q→viu,那么 memory matrix 为:Mu={q→vi−1u,q→vi−2u,⋯,q→vi−Ku}∈RD×K。当写入 memory 时,最早的 item 将被替换,Mu 被更新为:{q→viu,q→vi−1u,⋯,q→vi−K+1u} 。注意,当 memory 未满时,直接添加 item 而不必替换 memory 内的任何其它 item 。

    这种做法的思想类似于 DIN。由于 Mu 的更新是简单的规则,因此可以在样本生成阶段就把 Mu 拼接到样本中作为特征,这就是 DIN 。

    但是,与 DIN 相比,这里的 Mu 是固定size的,因此需要进行序列 padding 或截断,因此会一定程度上损害性能。

1.1.3 Feature-level RUM

  1. 受到经典潜在因子模型( latent factor model: LFM )推荐的启发,我们进一步探索在 feature-level 上实现 RUM 框架。在 LFM 中,我们假设用户在作出购买决策时可能会考虑一组产品特征( product feature),并且 LFM 中的每个 embedding 维度代表了产品域( product domain)中的一个潜在特征,其中所有的潜在特征张成了一个 latent representation space 。然后,LFM 将用户对这些特征的偏好估计为该空间中的向量。

    在这项工作中,我们使用 memory network 的能力来显式地建模这些潜在特征。直观而言,用户对这些特征的偏好应该动态地反映在该用户的购买行为中。例如,如果用户在新购买的 iPhone 上体验非常好,那么该用户未来可能会继续在品牌( brand)特征上选择苹果的产品。

    受这些直觉的启发,我们维持用户对 memory matrix 中不同特征的偏好。这些特征将被读取从而生成 user memory embedding , 并由该用户购买的每个 item 来写入。更具体而言,我们将我们的方法形式化为一个 key-value memory neural network,如下图 (b) 所示。

    • 我们首先设计了一个 global latent feature table: GLFT 来存储每个 feature 的 embedding ,并且在进行预测时,item 将与这个 table 交互从而识别其相关的特征。

    • 对于每个用户,我们利用 user memory matrix Mu 来编码该用户在 GLFT 上特征的偏好。基于上述识别的特征,该用户会注意力 attentively 地合并 Mu 中的列,从而获得该用户的 memory embedding 。

      与 LFM 中的全局特征空间一样,这里的 global latent feature table 在所有用户之间共享,而 memory matrix 以个性化的方式进行 per-user level 的维护。

    • 最后,我们使用 item embedding 更新 user memory matrix Mu 。

  2. 形式上,令用户 u 的 embedding 为 p→u∈RD,令 item i 的 embedding 为 q→i∈RD 。假设我们的系统中有 K 个潜在特征,global latent feature table 为 F={f→1,f→2,⋯,f→K}∈RD×K ,其中 f→k∈RD 为特征 k 的 embedding 。对于用户 u ,我们将该用户的 memory matrix 定义为 Mu={m→1u,m→2u,⋯,m→Ku}∈RD×K ,其中 m→ku∈RD 为用户 u 对特征 k 的偏好的 embedding 。

    • reading 操作:为了使得读取过程可微,我们采用 soft-attention 机制来读取 user memory matrix 。具体而言,在对 user-item pair (u,i) 进行预测时,我们首先通过以下方式计算 item i 与 global latent feature table 中每个特征的相关性:

      wi,k=q→i⋅f→k,zi,k=exp⁡(β×wi,k)∑j=1Kexp⁡(β×wi,j),∀k=1,2,⋯,K

      其中 β 也是强度(strength)超参数。

      我们也使用 zi,k 以线性加权的方式合并用户 u 的 memory matrix 中的 slot ,从而计算该用户的 memory embedding:

      p→um=∑k=1Kzi,k×m→ku

      这里的 reading 操作和 Item-level RUM 的 reading 操作的区别在于注意力权重的生成:Item-level RUM 中,zi,k 是基于 q→i 和 Mu 得到的;而 Feature-level RUM 中,zi,k 是基于 q→i 和 F 得到的。因此,Feature-level RUM 的参数更多、模型容量更高。

    • writing 操作:受神经图灵机(neural turing machine: NTM) 的启发,在写入 user memory matrix Mu 时,我们在添加新的信息之前先擦除 Mu 。

      • 擦除:我们首先从 q→i 派生出一个 D 维的擦除向量( erase vector ) e→i=σ(E⊤q→i+b→e) 。其中:σ(⋅) 为逐元素的 sigmoid 函数,E 和 b→e 为待学习的擦除参数(erase parameter)。给定注意力权重和擦除向量,feature preference memory 更新为:

        m→ku←m→ku⊙(1→−zi,k×e→i)

        其中:⊙ 为逐元素乘积,1→ 为全一的向量。

        因此:仅当该 location 的注意力权重和 erase element 均为 1 时,这个 memory location 才会被重置为零;当该 location 的注意力权重为零或者 erase element 为零,那么 memory vector 保持不变。

      • 添加:当擦除操作之后,我们使用一个 add vector a→i∈RD 来更新 feature preference memory:

        a→i=tanh⁡(A⊤q→i+b→a),m→ku←m→ku+zi,k×a→i

        其中: A 和 b→a 为待学习的 add parameter 。

      这种 erase-add 更新策略允许在学习过程中遗忘和加强 user feature preference embedding ,并且模型可以通过学习 erase parameter 和 add parameter 来自动地决定哪些信号需要减弱、哪些信号需要加强。

      这种更新方式类似于 RNN,按顺序地馈入 q→i 并更新状态 Mu 。但是,RNN 之后一个状态而 feature-level RUM 有 K 个状态。如果 feature-level RUM 每次更新的是不同的 slot ,那么一定程度上丢失序列信息。甚至feature-level RUM 不知道哪个 item 是最近购买的,而根据现有的研究表明,最近购买的 item 是相当重要的。

1.1.4 讨论和分析

  1. 为了提供对我们的方法的更多洞察,我们分析了 item-level RUM 和 feature-level RUM 之间的关系。然后通过将其与 matrix factorization: MF 和 factorized personalized Markov chain: FPMC 进行比较,我们进一步将我们的方法与以前的方法联系起来。

  2. Item-level RUM 和 Feature-level RUM:一般而言,item-level RUM 和 feature-level RUM 都是下图 (c) 所示同一框架的特定实现。但是,它们从不同的角度管理用户历史信息。

    • item-level RUM 将每个 item 视为一个单元(unit),并将 item embedding 直接存储在 memory matrix 中,其中 memory matrix 旨在捕获 item-to-item 的转移模式 (transition pattern)。

    • 然而在 feature-level RUM 中,历史信息以 feature-centered 的方式被利用。memory matrix 用于存储用户偏好在不同潜在维度上的 embedding ,并且每个 item 都被间接用于改变这些 embedding 。

    在实际应用中使用这些模型时,实际上存在 explanation-effectiveness 的 trade-off:

    • item-level RUM 可以明确地告诉我们过去哪些 item 对于当前决策更重要,这为系统提供了一定的可解释能力。

    • 然而,feature-level RUM 在 black box 中通过更细粒度的建模可以获得更好的性能。

    我们将在后的内容讨论更多细节和实验结果。

  3. RUM 和 MF 的关系:当 user memory network 设置为不可用时(即,user memory embedding 设置为全零的向量),RUM 将简化为传统的 MF 。然而,通过启用 user memory network,RUM 可以从历史行为中收集有价值的信息,这可以提高 Top-N 推荐任务的性能,如后面的实验所示。

  4. RUM 和 FPMC 的关系:RUM 和 FPMC 都利用用户的历史行为来预测当前行为。为了对每个用户建模 item-to-item 转移模式,FPMC 构建张量分解模型,并在 Bayesian personalized ranking: BPR 准则下进行优化。目标函数如下:

    LFPMC=(∑u∈U∑Ttu∑i∈Ttu∑i′∉Ttulog⁡σ(x^u,t,i−x^u,t,i′))−λ||Θ||F2

    其中:

    • Ttu 为用户 u 的第 t 个 basket,Θ 为模型的参数集合。

    • x^u,t,i 为模型预测用户 u 在第 t 个 basket 中购买 item i 的可能性(非归一化的)为:

      x^u,t,i=p→u⋅q→i+1|Tt−1u|∑l∈Tt−1uq→l⋅q→i

    当应用于序列推荐时,FPMC 中的每个 basket 仅包含一个 item,因此有:

    LFPMC=(∑u∈U∑i∈Iu+∑i′∈I∖Iu+log⁡σ(x^u,t,i−x^u,t,i′))−λ||Θ||F2x^u,t,i=p→u⋅q→i+q→l⋅q→i

    其中:q→l 为最近一次购买的 item (即时刻 t−1 购买的 item ) 的 embedding 。

    为展示我们模型与 FPMC 的区别,我们考虑 item-level RUM 并且仅使用一个 memory slot (即,K=1 ),然后设置 merge(⋅) 中的权重超参数 α=1 。然后我们有:

    y^u,i=σ(p→u⋅q→i)=σ((p→u∗+p→um)⋅q→i)=σ((p→u∗+m→1u)⋅q→i)=σ((p→u∗+q→l)⋅q→i)=σ(p→u∗⋅q→i+q→l⋅q→i)

    通过将 RUM 的 user intrinsic embedding p→u∗ 视为 FPMC 中的 user embedding p→u ,则我们有 y^u,i=σ(x^u,t,i),则 RUM 的损失函数可以重写为:

    LRUM=(∑u∈U∑i∈Iu+log⁡σ(x^u,t,i)+∑u∈U∑i∈I∖Iu+log⁡(1−σ(x^u,t,i′)))−λ||Θ||F2

    对比 LFPMC 和 LRUM ,我们可以看到: FPMC 与一阶的 item-level RUM 共享相同的预测函数(即,x^u,t,i=p→u⋅q→i+q→l⋅q→i )。但是,它们的优化准则略有不同。对于三元组 (u,i,i′) ,其中 (u,i) 是observed 的交互、(u,i′) 是 unobserved 的交互:

    • FPMC 通过最大化 u 在 i 和 i′ 上相似度的 margin 来学习模型。

    • RUM 分别尝试最大化 u 在 i 上的相似度、最小化 u 在 i′ 上的相似度来学习模型。

    实际上,我们也可以使用 Bayesian personalized ranking: BPR 来优化 RUM,此时,FPMC 相当于一个一阶的 item-level RUM 从而用于序列推荐。

  5. 基于以上分析,我们可以看出 RUM 是一个非常通用的推荐框架。一方面,RUM 是许多现有推荐模型的推广。另一方面,RUM 可以通过将 merge 函数、predict 函数、以及 reading/writing 策略修改为其它的形式,从而为我们提供机会来探索其它有前景的模型。

  6. 未来工作:

    • 通过引入用户评论、产品图像等辅助信息,我们可以将 feature-level RUM 中的 memory unit 与不同的语义对齐,因此我们可以构建一个更可解释的推荐系统。

    • 此外,我们的 RUM 模型是一个具有灵活泛化能力的框架,因此我们可以研究其它类型的 memory network 设计(而不仅限于这里的 item-level RUM 和 feature-level RUM ),从而使得我们的框架适应不同的应用场景。

13.2 实验

  1. 数据集:我们在 Amazon 数据集上进行了实验。该数据集包含 1996 年 5 月至 2014 年 7 月亚马逊的 user-product 购买行为。我们在四个产品类别上评估我们的模型,包括即时视频 (Instant Video)、乐器( Musical Instrument)、汽车( Automotive)、婴儿护理 (Baby Care)。

    为了提供序列推荐,我们选择至少有 10 条购买记录的用户进行实验,最终数据集的统计数据如下表所示:

  2. 评估指标:对于每个模型,我们定义为用户 u 生成的推荐列表为 Ru={ru1,ru2,⋯,ruN} ,其中 N 为推荐列表的长度,rui 为排名第 i 的 item 的预测分数(根据预测分数进行降序排列,分数越高排则名越靠前)。

    假设测试集中用户 u 的交互 item 集合为 Tu,用户集合为 U ,那么我们采用以下评估指标:

    • Precision (P), Recall (R), F1-score:我们采用 per-user 的均值而不是全局均值从而为了更好的可解释性:

      P@N=1|U|∑uPu@N=1|U|∑u|Ru∩Tu|NR@N=1|U|∑uRu@N=1|U|∑u|Ru∩Tu||Tu|F1@N=1|U|∑uF1u@N=1|U|∑u2×Pu@N×Ru@NPu@N+Ru@N
    • Hit-ratio(HR):命中率 HR 给出了可以收到至少一个正确推荐的用户占比:

      HR@N=1|U|∑uI(|Ru∩Tu|)

      其中:I(⋅) 为一个示性函数,当 x>0 时 I(x)=1 否则 I(x)=0 。

    • normalized discounted cumulative gain(NDCG):NDCG 通过考虑 ground truth item 的排名来评估性能:

      NDCG@N=1ZDCG@N=1Z∑j=1N2I(|{ruj}∩Tu|)−1log2⁡(j+1)

      其中:Z 为归一化常数(它等于 DCG@N 所有可能取值的最大值,此时每个 grount-truth 都排在非 ground-truth 之前)。

      DCG@N 是位于推荐列表中的 ground-truth 收益的加权和,其中收益固定为 1,权重为 1log2⁡(j+1) ,j 为 ground-truth 的排名。最大的 DCG@N 需要推荐列表满足两个条件:

      • 所有 ground-truth 都位于 DCG@N 中,即累加的项足够多。

      • 所有 ground-truth 的排名都最低,即 j 足够小。

  3. Baseline 方法:

    • MostPopular: MP:非个性化的、基于热门item 的推荐。其中 item 的热门程度根据它在数据集中出现的频次来得到。

    • BPR:bayesian personalized ranking,一种流行的 top-N 推荐方法。我们采用矩阵分解作为 BPR 的 prediction component 。

    • FPMC:factorized personalized Markov chains,它是基于马尔科夫链的、 SOTA 的序列推荐模型之一。在我们的数据集中,每个 item 都被视为一个 basket。

    • DREAM:dynamic recurrent basket model ,它是 RNN-based 的、SOTA 的序列推荐方法。

  4. 配置:

    • 在实现我们的方法时,模型参数首先根据均匀分布随机初始化,然后通过随机梯度下降 SGD 进行更新。SGD 的学习率是在 {1, 0.1, 0.01, 0.001, 0.0001} 的范围内通过网格搜索来确定的。

    • memory slot 数量 K 根据经验设置为 20。

    • merge 函数中设置权重超参数 α=0.2 ,并在实验中研究了使用不同 α 值的效果。

    • 对于每个购买的 item (即,positive instance),我们从用户未交互的 item 中均匀采样一个 negative instance 。

    • embedding 维度 D 从 {10, 20, 30, 40, 50} 范围内网格搜索来确定。

    • 正则化系数 λ 从 {0.1, 0.01, 0.001, 0.0001} 范围内网格搜索来确定。

    • 在我们的实验中,每个用户的购买记录按照购买时间排序,每个用户的前 70% 的item 用于训练、剩余的 item 用于测试。

    • 我们为每个用户推荐 5 个 item,即推荐列表长度 N=5 。

  5. 模型整体性能:我们首先研究默认设置(α=0.2 )下我们的 item-level RUM 和 feature-level RUM 的性能,如下表所示。可以看到:

    • 非个性化的 Most Popular 方法几乎在所有情况下都给出了最差的性能。由于它没有考虑用户的个性化信息,因此这一观察突出了个性化在推荐任务中的重要性。

    • 正如预期的那样,通过单独分析用户并直接优化 ranking-based 目标函数,在大多数情况下 BPR 的性能优于 Most Popular 。

    • FPMC 和 DREAM 在大多数指标上都可以达到比 BPR 更好的性能,而这两种方法之间的差异不是很明显。考虑到 BPR 和 FPMC 之间的主要区别在于后者以序列方式对用户历史记录进行建模,这一观察结果验证了序列推荐有助于提高推荐性能。

    • 有趣的是,DREAM 在 instant video 上获得了比 FPMC 更好的性能。DREAM 建模用户的 multi-step behavior 而不是 pair-wise behavior ,能够更好地捕获用户对视频偏好的长期兴趣。

      然而,在其它数据集上,pair-wise 的短期影响可能更有助于预测 next behavior ,但是 DREAM 通过 RNN 将之前的所有 item 均等(equally)地合并为单个 hidden vector ,这可能会削弱序列推荐的 pair-wise 信号。

      这突出了我们动机的重要性,即需要一个精心设计的机制来自动地确定哪些先前的 item 对当前兴趣预测很重要。

      在稠密数据集上,multi-step behavior 可能更重要;在稀疏数据集上,pair-wise behavior 可能更重要。而 instant video 数据集是这四个数据集中最稠密的。

    • 令人振奋的是,我们发现在大多数情况下,item-level RUM 或 feature-level RUM 的性能都优于最佳 baseline 。这些结果表明了我们提出的序列推荐方法的有效性。

      这实际上并不惊讶,因为我们模型中的 memory 机制和 reading/writing 设计为建模用户历史记录提供了更好的表达能力。

    • 通过在更细粒度的 level 上建模 item 关系,feature-level RUM 在大多数指标上都优于 item-level RUM。这很直观,因为两个 item 的功能可能不直接相关,但是它们可能具有一些共同的特征,这些特征可能会影响用户的决策,例如它们都属于同一个品牌。

  6. 权重超参数 α 的影响:我们很好奇 memory 是否有助于、以及如何帮助序列推荐。为此,我们分析权重超参数 α 的影响,它决定了 merge 函数中 memory embedding 相对于 intrinsic embedding 的重要性。

    具体而言,我们通过在 0 ~ 1 的范围内以 0.1 的步长调整 α 来研究我们的模型在 F1@5 上的性能。结果如下图所示。可以看到:

    • 当 memory component 不可用(即 α=0),feature-level RUM 和 item-level RUM 都简化到相同的模型并共享相同的性能。在这种情况下,它们都在所有数据集中给出了不利的结果(但不一定是最差的)。

    • 加入了 memory network 之后,模型性能大幅提升,并且在 α=0.2 时效果最佳。

    • 然而,当 memory embedding 的权重继续上升时,模型性能下降。这一观察在四个数据集上是一致的。

    这些结果表明:考虑用户历史行为记录的序列影响( sequential influence )确实有助于提供更好的推荐,但是过分关注这个最近购买信号(recent purchase signal )可能会削弱用户的内在偏好(intrinsic preference)。这些结果进一步验证了学术界经常观察到的现象:短期用户偏好和长期用户偏好对于个性化推荐都很重要。

  7. Item-level RUM 中的 AttentionWeights 的直觉:为了说明 item-to-item 转移的直觉( intuition),我们在下图展示了一些示例用户(每个用户一个子图),这些用户是从 Baby Care数据集上带 5 个memory slot 的 item-level RUM(即,K=5 ) 的结果中采样到的。

    这里只有 6 个 case,所以一些结论不具备说服力?最好给出一批 case 的统计结果。

    当用户购买第 i 个 item 时(对应于 x 轴,用蓝色小网格表示),我们在该用户的子图中绘制一个长度为 5 的列向量(如上面中间子图中,(15,14) 对应处的、高度为5 的细长条)。这个列向量对应于 y 轴的位置 j 的向量元素对应于该用户在所购买的第 j 个 item 上的注意力权重 z→ (wi,k=q→viu⋅m→ku,zi,k=exp⁡(β×wi,k)∑jexp⁡(β×wi,j) ),颜色越深则表明对第 j 个 item 的注意力越高。当用户继续购买 item 时,最近购买的 5 个 item 被保留在 memory 中,因此列向量填充的位置从左下角到右上角。基于这幅图,我们得到以下有趣的观察:

    • 通常,靠近对角线的网格的颜色较深。这意味着历史最有影响力的 item 通常是距离当前行为附近的 item 。这进一步证实了 item-level RUM 背后的假设,即:最近的行为对当前的决策更为重要。

      然而,最有影响力的 item 的具体位置并不总是最近的,这可以解释为什么 FPMC 仅通过建模 pair-wise 相邻行为并未取得良好的性能。

    • 此外,我们发现了两种有趣的用户行为模式:

      • 某些行为序列是由最近行为连续触发的(用绿色实线框来表示),这符合 FPMC 的假设。我们称之为 one-to-one 的行为模式。

        一个真实的例子是用户购买了一些婴儿配方奶粉,然后购买了奶瓶,这导致该用户接下来购买了奶嘴,而这些奶嘴导致该用户进一步购买了奶嘴清洁器。

      • 某些行为序列中,多个行为主要受到相同的历史行为的影响(用棕色虚线框来表示),而这多个行为之间的关系并不那么重要。我们称之为 one-to-multiple 的行为模式。

        一个真实的例子是用户购买了婴儿床,然后该用户为婴儿床购买了防水床垫保护套、蚊帐,然后又购买了床铃来装饰婴儿床。在这种情况下,我们的带注意力机制的 RUM 模型可以根据大规模的用户购买记录自动学习先前 item 的重要性。这优于假设相邻影响(adjacent influence)的 FPMC,也优于合并所有先前行为的 RNN 。

    基于这些发现的模式,item-level RUM 可以从序列行为的角度解释推荐系统,这与以前通常利用辅助信息(如用户文本评论)进行解释的方法不同。