一、Time-LSTM [2017]

《What to Do Next: Modeling User Behaviors by Time-LSTM》

  1. 循环神经网络(Recurrent Neural Network: RNN)解决方案已经成为序列数据建模的 SOTA 方法。越来越多的工作试图在推荐系统(recommender system: RS)领域找到 RNN solution 。RNN 在推荐任务中表现良好的insight 是:在用户的动作序列中存在一些内在模式(intrinsic pattern),例如一旦一个人购买了羽毛球拍那么该用户往往在以后倾向于购买一些羽毛球,而 RNN 在建模此类模式时已被证明表现极好。

    然而,推荐系统中的上述 RNN 解决方案都没有考虑用户相邻动作(action)之间的时间间隔(time interval),而这些时间间隔对于捕获用户动作之间的关系很重要。例如,间隔时间很短的两个动作往往是相关的,而间隔时间很长的两个动作往往是针对不同的目标。因此,在建模用户行为时,利用时间信息来提高推荐性能非常重要。我们使用下图来展示时间间隔是什么、以及它如何使得推荐系统与语言模型等传统领域不同。具体而言,在语言模型中没有相邻词之间的间隔的概念(如 w1 和 w2 之间没有间隔),而在推荐系统中相邻动作之间存在时间间隔(如 i1 和 i2 之间的时间间隔 Δt1)。传统的 RNN 架构擅长对下图 (a) 中的序列数据(sequential data)的顺序信息(order information)进行建模,但是无法很好地对下图 (b) 中的时间间隔进行建模。因此,需要提出新的模型来解决这个问题。

    人们最近提出的一种模型,即 Phased LSTM ,该模型试图通过向 LSTM 添加一个 time gate 来建模时间信息。在这个模型中,时间戳 timestamp 是 time gate 的输入,其中 time gate 控制了 cell sate, hidden state 的更新从而控制最终输出。同时,仅使用处于模型激活状态(model’s active state)的样本,导致训练期间的稀疏更新(sparse update)。因此,Phased LSTM 在训练阶段可以获得相当快的学习收敛速度。然而,有一些挑战使得 Phased LSTM 难以成为最适合推荐任务的方法。

    • 首先,Phased LSTM 对时间戳进行建模。时间戳是单个动作的特征,而不是两个动作之间的时间间隔。因此,Phased LSTM 可能无法正确建模动作之间的关系。

    • 其次,在大多数推荐系统中,用户的行为数据通常非常稀疏,而 Phased LSTM 会忽略用户在非激活状态(inactive state)下的行为,无法充分利用行为信息进行推荐。

    • 第三,之前的研究已经指出,用户的短期兴趣和长期兴趣对于推荐都非常重要,但传统的 RNN 架构(包括 Phased LSTM)并没有旨在同时区分和同时利用这两种兴趣。在这里:

      • 短期兴趣意味着,推荐的 item 应该取决于最近消费的 item。例如,如果用户刚买了一台尼康相机,那么该用户很可能在不久的将来会购买存储卡、镜头、保护套。

      • 长期兴趣是指被推荐的 item 也应该受到用户历史行为的影响,其中历史行为反映了用户的一般兴趣(general interest)。

    为了应对上述挑战,论文 《What to Do Next: Modeling User Behaviors by Time-LSTM》提出了具有三个版本的 Time-LSTM 来建模用户在推荐系统中的序列动作( sequential action )。 Time-LSTM 中的 time gate 建模动作的时间间隔,从而捕获动作之间的关系。

    • 第一个版本的 Time-LSTM 只有一个 time gate,这个 time gate 利用时间间隔来同时捕获短期兴趣和长期兴趣。

    • 第二个版本的 Time-LSTM 有两个 time gate。

      • 第一个 time gate 旨在利用时间间隔来捕获当前 item recommendation 的短期兴趣。

      • 第二个 time gate 是保存时间间隔,以便建模长期兴趣用于之后的推荐。

    • 第三个版本的 Time-LSTM 使用 coupled input and forget gates减少参数数量,这使得模型更加简洁。

    具有这些 time gate 的 Time-LSTM 可以很好地同时捕获用户的短期兴趣和长期兴趣,从而提高推荐性能。此外,Time-LSTM 没有忽略动作的非激活状态,因此与 Phased LSTM 相比,它可以更好地利用行为信息。论文的实验结果证明了 Time-LSTM 的有效性。

    本文的贡献如下:

    • 所提出的模型 Time-LSTM 为 LSTM 配备了精心设计的 time gate,因此它不仅擅长建模序列数据中的顺序信息,还可以很好地捕获对象之间的时间间隔。这是一个一般(general)的思想(不限于推荐系统),可以开发 Time-LSTM 的其它变体来建模其它任务中 event-based 的序列数据。

      请注意,与考虑时间戳并可能隐式捕获间隔信息的 Phased LSTM 不同,论文显式地建模时间间隔。此外,与 Phased LSTM 相比,Time-LSTM 利用了更多的样本。

    • 提出了三个版本的 Time-LSTM。与现有的 RNN 解决方案相比,这些 Time-LSTM 版本可以更好地同时捕获用户的短期兴趣和长期兴趣,从而提高推荐性能。

    • 所提出的模型在两个真实世界的数据集上进行了评估,实验结果表明使用 Time-LSTM 的推荐方法优于传统方法。

  2. 相关工作:

    • LSTM 及其变体:

      • LSTM:LSTM 最常用的更新方程如下:

        i→m=σi(Wx(i)x→m+Wh(i)h→m−1+w→c(i)⊙c→m−1+b→(i))f→m=σf(Wx(f)x→m+Wh(f)h→m−1+w→c(f)⊙c→m−1+b→(f))c→m=f→m⊙c→m−1+i→m⊙σc(Wx(c)x→m+Wh(c)h→m−1+b→(c))o→m=σo(Wx(o)x→m+Wh(o)h→m−1+w→c(o)⊙c→m+b→(o))h→m=o→m⊙σh(c→m)

        其中:

        • i→m 为输入门 (input gate),f→m 为遗忘门( forget gate),o→m 为输出门 (output gate),c→m 为 cell activation vector ,h→m 为 hidden state vector ,x→m 为 input feature vector 。

        • σ 为激活函数,其中 σi,σf,σo 通常为 sigmoid 非线性激活函数,而 σc,σh 通常为 tanh 非线性激活函数。

        • Wx(⋅),Wh(⋅),b→(⋅),w→c(⋅) 均为待学习的参数,其中 w→c(⋅) 是可选的(目前主流的 LSTM 的实现并未引入这一项)。

        • ⊙ 为逐元素乘积,即 Hadamard product 。

      • coupled input and forget gates :LSTM 的一种变体是使用 coupled input and forget gates,而不是单独决定要遗忘什么、以及什么新信息要被添加。这个变体丢弃了 f→m forget gate ,并调整 c→m 的更新方程为:

        c→m=(1−i→m)⊙c→m−1+i→m⊙σc(Wx(c)x→m+Wh(c)h→m−1+b→(c))
      • Phased LSTM:Phased LSTM 是一种 SOTA 的 RNN 架构,用于建模event-based 的序列数据。Phased LSTM 通过添加 time gate k→m 来扩展 LSTM。time gate k→m 由三个参数来控制:τ,ron,s ,其中:τ 代表模型的总周期( total period )时长,ron 代表 open period 和 total period 的比值,s 代表 phase shift 。τ,ron,s 都是通过训练来学到的。

        time gate k→m 正式定义为:

        ϕm=(tm−s) mod ττ,km={2ϕmron, if ϕm<12ron2−2ϕmron, if 12ron<ϕm<ronαϕm,otherwise

        其中:tm 为时间戳,ϕm 为一个辅助变量,α 为 leak rate (在训练阶段取值几乎为零,在测试阶段直接设为零)。leak rate α 类似于 Leaky ReLU ,用于传播梯度信息。

        注意,这里的 km 公式是一个标量,代表单个特征维度的 time gate。考虑到通常有多个特征维度,因此 time gate 是个向量。

        time gate km 有三个 phases:在第一个 phase km 从 0 上升到 1,在第二个 phase km 从 1 下降到 0 (前两个 phase ,模型为激活状态),在第三个 phase km 几乎为零(第三个 phase,模型为非激活状态inactive state )。仅在time gate 激活状态下才更新 c→m 和 h→m ,因此 Phased LSTM 的cell state 和 hidden state 更新方程为:

        c→~m=f→m⊙c→m−1+i→m⊙σc(Wx(c)x→m+Wh(c)h→m−1+b→(c))c→m=k→m⊙c→~m+(1−k→m)⊙c→m−1h→~m=o→m⊙σh(c→~m)h→m=k→m⊙h→~m+(1−k→m)⊙h→m−1

        由于设置了 inactive state,Phased LSTM 在应用于推荐系统时无法充分利用用户的动作。

    • 推荐系统中的 RNN 解决方案:

      • 《Session-based recommendations with recurrent neural networks》 在 old sessions 中对 item-ID 的 one-hot representation 训练了带 ranking loss 的 RNN 。然后,训练好的 RNN 用于在新的 user session 上提供推荐。

      • 《Parallel recurrent neural network architectures for feature-rich session-based recommendations》 是《Session-based recommendations with recurrent neural networks》 的扩展,它提出了两项技术(数据增强、以及一种考虑输入数据分布变化的方法)来提高模型的性能。此外,它考虑了一个稍微不同的 setting,其中存在 item 的丰富特征。它引入了 parallel RNN 架构来建模 clicks 以及 item 特征。

      • 《A dynamic recurrent model for next basket recommendation》 为 next-basket recommendation 设计了一种 RNN 方法。

      在本文中,我们探索了在推荐系统社区中具有更常见 setting 的 RNN 解决方案:我们知道 user id,但是不知道 session 信息。此外,前述方法不考虑时间间隔,而我们在 LSTM 中添加 time gate,可以利用时间间隔来推高推荐性能。

    • 短期兴趣和长期兴趣:

      • 推荐系统中的大多数现有算法,如 Bayesian Personalized Ranking: BPR、矩阵分解(matrix factorization)、张量模型(tensor models),聚焦于建模用户的长期兴趣。

      • 《Personalized news recommendation based on click behavior》 通过 content-based 方法来适配(adapt)一种协同过滤方法(collaborative filtering)从而挖掘用户的当前兴趣。

      • 一些方法应用协同过滤和关联规则(association rule)来 match 用户最近的行为。

      • 《Adaptation and evaluation of recommendations for short-term shopping goals》 提出用户的短期兴趣和长期兴趣在在线购物场景中都很重要,并量化了几种组合策略(combining strategy)。

      • 半马尔可夫过程(Semi-Markov Process: SMP)和马尔可夫更新过程(Markov Renewal Process: MRP)还旨在建模具有时间间隔的序列过程(sequential process)。然而,由于 SMP 和 MRP 的马尔科夫特性,它们无法捕获在我们任务中的长期兴趣。

1.1 模型

  1. 令 U={u1,u2,⋯} 为用户集合,I={i1,i2,⋯} 为 item 集合。对每个用户 u ,该用户的消费历史记做 Hu:=[(i1u,t1u),(i2u,t2u),⋯,(inuu,tnuu)] ,其中 (imu,tmu) 表示用户 u 在时刻 tmu 消费了该用户的第 m 个 item 。

    我们的任务是在给定用户 up 和给定时刻 tq 的条件下,提供一个推荐列表 Il⊆I 。

  2. 我们通过两种方法使得 LSTM 适配( adapt)我们的任务:

    • 第一种方法是,我们仅记录 item 的顺序,而不考虑时间信息。因此在我们的任务中,LSTM 更新方程中的 x→m 就是 imu (经过 one-hot )。

      这也是大多数现有方法的做法。

    • 第二种方法是,考虑时间信息。我们首先将 Hu 转换为:

      [(i1u,t2u−t1u),(i2u,t3u−t2u),⋯,(inuu,tq−tnuu)]

      那么在我们的任务中,LSTM 更新方程中的 x→m 就等价于 (imu,tm+1u−tmu) 。这里我们对 imu 采用 one-hot representation,对 tm+1u−tmu 使用一维的实数表示。

      也可以对 (tm+1u−tmu) 进行离散化,如按照 day/week/month 等离散化,然后转换为 embedding 。

      这里用下一个时间戳减去当前时间戳,而不是当前时间戳减去上一个时间戳,是因为我们想捕获当前消费的 item 对未来的影响。

    为了适配 LSTM 及其所有变体,模型的输出是由 h→m 计算的所有 item 的概率分布。损失函数基于模型的输出和 im+1u 。

  3. 对于 Phased LSTM 的适配,在我们的任务中,x→m 等价于 imu (使用 one-hot representation),time gate 中的 tm 等价于 tm+1u ,即 ϕm=(tm+1u−s) mod ττ 。

  4. 当将 LSTM 及其变体应用于推荐系统时:

    • x→m 包含用户消费的 last item 的信息。由于这是用户最近(most recent)的动作,我们可以利用 x→m 来了解用户当前的短期兴趣。

    • 另一方面,c→m−1 包含了用户之前行为(previous actions)的信息,因此 c→m−1 反映了用户的长期兴趣。

    然而,x→m 究竟在多大程度上反映了用户当前的短期兴趣,这在不同情况下有所不同。例如,如果 x→m 是很久以前消费的,那么就很难反映当前的消费目标( consuming goal)。在 Time-LSTM 中,我们使用 time-gate 来控制 last consumed item x→m 对当前推荐的影响。

    此外,这些 time gate 有助于将时间间隔存储在 c→m,c→m+1,⋯ 中,这反映了用户在后续推荐(later recommendation)中的长期兴趣。因此,在建模用户的长期兴趣时,不仅要考虑用户以前消费过的 item,还要考虑相应的时间间隔。我们设计了三个版本的 Time-LSTM,如下图所示。

    在 attention-based 模型(如 STAMP 中),是否可以将 x→m 和时间间隔同时作为短期兴趣网络的输入,从而捕获 last item 对当前推荐的影响?

1.1.1 Time-LSTM 1

  1. 第一个版本的 Time-LSTM 添加了一个 time gate T→m 。基于 LSTM 的更新方程,我们添加了一个 time gate 的更新,同时调整了 c→m 和 o→m 的更新:

    T→m=σt(Wx(t)x→m+σΔt(Wt(t)Δtm)+b→(t))c→m=f→m⊙c→m−1+i→m⊙T→m⊙σc(Wx(c)x→m+Wh(c)h→m−1+b→(c))o→m=σo(Wx(o)x→m+Wt(o)Δtm+Wh(o)h→m−1+w→c(o)⊙c→m+b→(o))

    其中:

    • Δtm∈R1 为时间间隔,σΔt(⋅) 为一个 sigmoid 函数,T→m 为 time gate 。

    • Wt(t),Wt(o)∈Rd×1 为时间相关的、待学习的参数。

  2. 可以看到,time gate T→m 在两个方面有帮助:

    • 一方面,σc(Wx(c)x→m+Wh(c)h→m−1+b→(c)) 不仅被 input gate i→m 所过滤,还被 time gate T→m 所过滤。所以,T→m 可以控制 x→m 对当前推荐的影响。

    • 另一方面,Δtm 首先被存入 T→m ,然后被传递到 c→m ,接着被传递到 c→m+1,c→m+2,⋯ 。因此,T→m 有助于存储 Δtm 从而为后续推荐(later recommendation)来建模用户的长期兴趣 (c→m,c→m+1,⋯) 。

    注意,我们能够以类似的方式将 T→m 推广到其它 RNN 架构,如 GRU 。

  3. T→m 完全从数据中学习。但是,作为先验知识,我们知道,给定一个 last consumed item,如果它是非常近期消费(more recently consumed)的,则这个 item 应该对当前推荐有更大的影响。我们希望将这些先验知识融入到 time gate 的设计中。

1.1.2 Time-LSTM 2

  1. 第二个版本的 Time-LSTM 添加了两个 time gate T1→m,T2→m :

    • T1→m 控制了 last consumed item 对当前 item recommendation 的影响。

    • 而 T2→m 存储了时间间隔来建模用户的长期兴趣用于后续推荐。

  2. 基于 LSTM 的更新方程,我们首先添加了两个 time gate 的更新:

    T1→m=σt1(Wx(t1)x→m+σΔt(Wt(t1)Δtm)+b→(t1))s.t.Wt(t1)≤0T2→m=σt2(Wx(t2)x→m+σΔt(Wt(t2)Δtm)+b→(t2))

    然后我们调整 c→m,o→m,h→m 的更新方程为:

    c→~m=f→m⊙c→m−1+i→m⊙T1→m⊙σc(Wx(c)x→m+Wh(c)h→m−1+b→(c))c→m=f→m⊙c→m−1+i→m⊙T2→m⊙σc(Wx(c)x→m+Wh(c)h→m−1+b→(c))o→m=σo(Wx(o)x→m+Wt(o)Δtm+Wh(o)h→m−1+w→c(o)⊙c→~m+b→(o))h→m=o→m⊙σh(c→~m)

    其中:

    • T1→m 可以被认为是类似于 input gate i→m 的、作用于 σc(Wx(c)x→m+Wh(c)h→m−1+b→(c)) 上的另一个过滤器。我们使用一个新的 cell state c→~m 来存储过滤后的结果,这个结果之后被传递给 output gate o→m 、hidden state h→m 并最终影响当前的 item recommendation 。

    • T2→m 首先存储 Δtm ,然后将 Δtm 的信息传递给 c→m ,接着传递到 c→m+1,c→m+2,⋯ ,从而建模用户的长期兴趣用于后续推荐。

  3. 通过方程中的约束条件 Wt(t1)≤0 ,T1→m 可以利用先验知识来控制 x→m 对当前的 item recommendation 的影响。具体而言:

    • 如果 Δtm 较小,那么 σΔt(Wt(t1)Δtm) 较大从而使得 T1→m 更大。根据 c→~m 的方程,x→m 将对当前的 item recommendation 产生更大的影响。即,x→m 更好地反映了短期兴趣,因此我们增加了它的影响力。

    • 另一方面,如果 Δtm 较大,在类似的分析下,x→m 的影响较小,相应地 c→m−1 会更显著地影响当前的推荐。即,我们对短期兴趣更加不确定,因此我们增加了长期兴趣的影响。

    然而,对于 T2→m ,在建模用户长期兴趣从而用于后续推荐方面,对 Wtt2 施加这种约束是没有意义的。这也解释了为什么我们在这个版本中设计了两个 time gate,即区分和定制化了用于当前推荐的角色(role for current recommendation )(time gate T1→m)、用于后续推荐的角色(role for later recommendation)(time gate T2→m)。

1.1.3 Time-LSTM 3

  1. 受 《Lstm: A search space odyssey》 的启发,第三个版本的 Time-LSTM 使用了 coupled input and forget gates 。具体而言,基于 Time-LSTM 2,我们移除了 forgate gate ,并修改 c→~m, c→m 为:

    c→~m=(1−i→m⊙T1→m)⊙c→m−1+i→m⊙T1→m⊙σc(Wx(c)x→m+Wh(c)h→m−1+b→(c))c→m=(1−i→m)⊙c→m−1+i→m⊙T2→m⊙σc(Wx(c)x→m+Wh(c)h→m−1+b→(c))

    由于 T1→m 被视为一个过滤器(类似于 i→m ),因此在 c→~m 中我们用 (1−i→m⊙T1→m) 代替 forget gate 。而 T2→m 用于存储时间间隔(类似于 σc(Wx(c)x→m+Wh(c)h→m−1+b→(c))) ,因此我们在 c→m 中使用 (1−i→m) 来代替 forget gate 。

1.1.4 训练

  1. 在我们的任务中,我们使用 Time-LSTM 的方法类似于第二种 LSTM 适配:

    • 首先将 Hu 转换为:

      [(i1u,t2u−t1u),(i2u,t3u−t2u),⋯,(inuu,tq−tnuu)]
    • 然后在 Time-LSTM 中,x→m 等价于 imu (采用 one-hot representation),而 Δtm 等价于 (tm+1u−tmu) 。

  2. 我们使用随机梯度下降( Stochastic Gradient Descent: SGD )的变体 AdaGrad 来优化 Time-LSTM 模型中的参数。由于方程中存在约束 Wt(t1)≤0,因此我们使用投影算子(projection operator)来处理它,即: 如果我们在训练迭代期间得到 Wt(t1)>0 ,那么我们重置 Wt(t1)=0 。

  3. 在现实世界的application 中,用户的新消费行为不断地被产生。因此,我们希望利用所有可用的消费历史(包括新生成的动作)进行推荐,即 online learning setting 。

    非 online learning setting 策略是:在推断期间冻结模型,使用固定的参数进行推断。

    oneline learning setting 策略会根据新的消费行为来更新模型参数,使用新的参数进行推断。

    为了实现这一点,我们将 《Recurrent neural network based language model》 中的动态更新模型应用于我们的任务,如下所示:

    • 第一步,我们的模型根据用户现有的消费历史进行训练,直到收敛。

    • 第二步,我们重复以下过程:当 n 个新的动作被生成之后,我们通过将 AdaGrad 应用于用户更新后的消费历史从而更新 previous parameters 一次。我们可以增大 n 的值从而提高 online learning 的效率。

      也可以根据时间周期性地更新(如每隔 1 小时)。

    我们可以周期性重复以上两个步骤。可以综合考虑推荐性能和计算成本来选择合适的周期。

1.2 实验

  1. 数据集:我们在 LastFM 和 CiteULike 这两个数据集上进行评估。

    • 对于 LastFM 数据集,我们抽取元组 <user id, song id, timestamp> ,其中每个元组代表用户 user id 在 时刻 timestamp 听歌曲 song id 的动作。

    • 对于 CiteULike 数据集,一个用户在某个时刻注释一篇论文时可能有几条记录从而区分不同的 tag 。我们将这些记录合并为单条记录并抽取元组 <user id, papaer id, timestamp> 。

      注意,与 《Heterogeneous hypergraph embedding for document recommendation》 不同,我们没有将 tag 用于推荐。

    我们过了掉低频的用户和 item。这些元组都按照 user id 组织并根据 timestamp 进行排序。下表展示了这些数据集的统计数据。

    对于每个数据集,我们随机选择 80% 的用户作为训练用户,并使用他们的元组进行训练。剩余的 20% 用户作为测试用户。对于每个测试用户 u ,其有序元组 Tu:=[(u,i1u,t1u),(u,i2u,t2u),⋯,(u,inu′u,tnu′u)] 将产生 nu′−1 个 test case ,其中第 k 个 test case 是在给定 u 的消费历史 [(i1u,t1u),(i2u,t2u),⋯,(iku,tku)] 的条件下在时刻 tk+1u 执行推荐,并且时刻 tk+1u 的 ground truth 为 ik+1u 。

  2. baseline 方法:

    • CoOccur+BPR:这是 《Adaptation and evaluation of recommendations for short-term shopping goals》 中提出的一种组合策略,其中 CoOccur 是为了捕获短期兴趣,而 BPR 是为了捕获长期兴趣。

      具体而言,CoOccur 根据 item 在 user session 中共现(co-occurring)的条件概率对 item 进行排序(关联规则)。如果推荐列表尚未填满,则根据 BPR 的推荐继续填充推荐列表。

      我们不使用原始论文中的 FeatureMatching 和 RecentlyViewed 。原因是:

      • FeatureMatching 需要 item 的属性信息,这在我们的任务中是不可用的。

      • RecentlyViewed 只是推荐最近查看过的 item,然而大多数情况下,我们希望推荐系统为我们提供那些我们忽略(ignore)的、但是仍然喜欢的 item 。因为即使没有推荐系统的帮助,我们仍然可以自己找到我们熟悉的 item (例如我们最近浏览过的 item 、或者最近消费过的 item )。

      该方法需要 session 信息。我们使用一种常用的方法,即 timeout,来识别用户消费历史中的 session。

      如果两个动作的间隔时间超过了指定的阈值,则认为它们属于不同的 session ;否则属于相同的 session。

    • Session-RNN:《Session-based recommendations with recurrent neural networks》 使用 RNN 在 session-based 推荐中基于 session 中的 item 来捕获短期兴趣。该方法不考虑长期兴趣。

      session 信息的抽取如 CoOccur + BPR 中所述。我们使用该方法的公开可用的 python 实现。

      Session-RNN 虽然是序列模型(类似于 LSTM),但是它仅考虑当前 session 的信息而不是历史所有 item 的信息,因此仅捕获短期兴趣。

    • LSTM:前文介绍的 LSTM 的第一种适配方式。

    • LSTM + time:前文介绍的 LSTM 的第二种适配方式。

    • Phased LSTM:前文介绍的 Phased LSTM 的适配。

    • 我们并没有对比 《A dynamic recurrent model for next basket recommendation》 ,因为该方法的 setting 不同于我们的方法,并且该方法的某些操作(如池化)无法应用于我们的方法。

    前文介绍的 online learning setting 应用于 LSTM 及其变体(包括 Phased LSTM 和 Time-LSTM),其中训练 training users 的元组用于训练 step one 的模型。类似的更新策略应用于 CoOccur + BPR 和 Session-RNN 以确保公平地比较。

    LSTM 及其变体(包括 Phased LSTM 和 Time-LSTM)的 unit 数量设置为 512。所有方法中的其它超参数都通过交叉验证进行调优,或者按照原始论文进行设置。

  3. 评估指标:每个 target item ig (ground truth)与 100 个其它随机 item 进行组合。然后推荐算法对这 101 个 item 进行排名,top 10 个 item 构成推荐列表。

    • Recall@10:Recall@10 的定义为:

      Recall@10=nhitntestcase

      其中:ntestcase 是所有 test case 的数量,nhit 是满足 ig 位于推荐列表的 test case 的数量。

    • MRR@10(Mean Reciprocal Rank):这是 ig 在推荐列表中排名倒数(reciprocal rank)的均值。如果 ig 的排名落后于 10,则排名倒数置为零。MRR@10 考虑 item 的排名。

    每个指标评估 10 次并取均值。

  4. 实验结果如下表所示:

    • Time-LSTM 模型通常优于其它 baseline 。

    • Time-LSTM 2 和 Time-LSTM 3 的性能优于 Time-LSTM 1,这证明了使用两个 time gate 而不是一个 time gate 的有效性。

    • T1m=1 和 T2m=1 分别是我们将 T1→m 固定为 1、将 T2→m 固定为 1 的结果。它们的性能比原始版本更差,这表明使用我们设计的 T1m 来过滤输入、T2m 来存储时间间隔都可以提高性能。

    • LSTM+time 在 CiteULike 中的表现略逊于 LSTM,这可能是由于 CiteULike 中的时间间隔通常很大(归一化之后,它的性能有所提高,但仍然比 Time-LSTM 模型更差)。

  5. Cold User 和 Warm User 的性能:如果用户消费的 item 很少,则我们认为用户是 cold 的;否则我们认为用户是 warm 的。由于篇幅有限,我们只在 LastFM 中展示 Recall@10 的结果。如下图所示,x 轴上的索引 k 代表第 k 个 test case 。在给定 training user 的所有动作、以及 test user 的前 k 个动作的情况下,我们预测 test user 的第 k+1 个动作。

    • 图 (a) 表明 Time-LSTM 对 warm user 表现更好(较大的索引表明用户消费了更多的 item )。原因是 c→m−1 中包含的动作越多,则 Time-LSTM 可以更好地建模长期兴趣用于推荐。

      对于 cold user,Time-LSTM 的性能与 Session-RNN 相当。这是因为尽管消费行为很少,但是 Time-LSTM 仍然可以通过捕获短期兴趣来很好地执行推荐。

    • 图 (b) 中的性能优于 (a),这证明了动态更新模型的有效性。对于 warm user 而言,从 (a) 到 (b) 的性能提升更为显著,因为 warm user 的模型更新次数要比 cold user 更多。

  6. 单元数量( unit number )和效率:我们改变单元数量 d (即,隐层维度) 从而查看模型性能和训练时间如何变化。训练时间在一个 GeForce GTX Titan Black GPU 上进行评估。限于篇幅,我们仅展示在 LastFM 数据集上的 Recall@10 、以及训练时间。

    • 如下图 (a) 所示,增加 d 可以提高 Recall@10 。但是当 d>128 时,增益会减慢甚至恶化。

    • 另一方面,如下图 (b) 所示,增加 d 会增加训练时间。因此,d 在 128 和 512 之间比较合适。

      当 d 变化时,Time-LSTM 3 的训练时间总是比 Time-LSTM 2 更少。原因是 Time-LSTM 3 中的 coupled input and forget gates 减少了参数数量,并加快了训练过程。