《基于梯度适应的跨时间推荐》
Introduction
Background
用户的偏好和他们对物品的看法经常会随着时间的推移而变化,这给推荐系统的设计提出了一个挑战:如何将动态的时间
temporal-dynamics整合到推荐结果中?
与流行的循环建模方法不同,本文提出一种LeapRec的新解决方案,通过使用基于梯度轨迹的元学习方法来建模时间依赖性的问题。LeapRec通过名为全局时间跳跃(GTL)和有序时间跳跃(OTL)的两个互补部分来描述时间动态信息。
GTL通过在无序时间数据中寻找最短学习路径(训练方向)来学习长期模式。同时,OTL通过考虑时间数据的顺序性质来学习短期模式。
Meta-learning
从能够快速适应新任务的元学习meta-learning中获得灵感,我们假设元学习方法可以用于建模动态的时间。
由于元学习具有以下优势:
- 与机器学习learn y = f ( x ) y= f(x) y=f(x)中 f θ ( ⋅ ) f_θ(·) fθ(⋅)不同的是,元学习要学的是寻找 f θ ( ⋅ ) f_θ(·) fθ(⋅)的能力,即学习F,靠F找到解决各个任务的f们;因此在推荐场景中可以把某个时间段上的用户*物品上的交互预测作为单独的任务,元学习方法便可以用于建模动态的时间。
- 适合小样本few-shot,缓解冷启动问题cold-problem。(符合人脑的先验理论)
- 元学习常用的MAML算法(Model-Agnostic Meta-Learning)比起"健忘"的基于RNN的模型更具有优势,利用优化过程的梯度路径来学习参数的初始化,从而可以快速适应未知的任务。
Controbution
在本文中,我们研究了元学习在推荐系统时间动态建模中的应用。
总体方法是将每个时间段的数据推荐问题视为单独的任务。这种方法意味着在优化过程中,每个时间步骤time step都被建模为一个梯度步骤序列a sequence of gradient steps(梯度路径a gradient path)。
我们提出LeapRec作为一种基于梯度轨迹的元学习的新适应推荐系统,图1展示了此方法的概述。
在LeapRec中,我们将时间动态分为两类:全局时间跳跃(GTL)和有序时间跳跃(OTL)。
GTL寻找所有时间段共享的通用模式——电子商务中这些模式的例子包括经典书籍、基本书籍和有史以来最畅销的书籍。另一方面,OTL从瞬间的社会趋势中捕捉到时间动态。
另外,当将LeapRec用作其他推荐系统的插件方法时,可以显著提高它们的性能。
贡献总结如下:
- 据我们所知,LeapRec是第一个将 “基于梯度轨迹的元学习方法” 引入推荐系统中的。
- 为了充分利用基于轨迹的方法来做推荐,我们提出了LeapRec的两个组件,命名为全局时间跳跃和有序时间跳跃。
- 我们的实证结果表明,与现有的方法相比,LeapRec有了明显的改进,并且实证分析解释了LeapRec的动态行为。
Preliminaries
Problem setup
U
=
{
u
1
,
u
2
,
.
.
.
,
u
U
}
U = \{u_1, u_2, . . . , u_U\}
U={u1,u2,...,uU}: 长度为
∣
U
∣
|U|
∣U∣的用户集合
I
=
{
i
1
,
i
2
,
.
.
.
,
i
I
}
I = \{i_1, i_2, . . . , i_I\}
I={i1,i2,...,iI}: 长度为
∣
I
∣
|I|
∣I∣的物品集合
T
=
(
t
1
,
t
2
,
.
.
.
,
t
T
)
T = (t_1, t_2, . . . , t_T)
T=(t1,t2,...,tT): 长度为
∣
T
∣
|T|
∣T∣的时间段timestamps的有限序列
D
=
{
D
t
1
,
D
t
2
,
.
.
.
,
D
t
T
}
D = \{D_{t1}, D_{t2}, . . . , D_{tT}\}
D={Dt1,Dt2,...,DtT}:用户和物品的交互集合,
w
h
e
r
e
t
∈
T
a
n
d
D
t
∈
2
U
×
I
where \quad t ∈ T \quad and \quad D_t ∈ 2^{U×I}
wheret∈TandDt∈2U×I
**预测任务:**建立一个学习模型,高精度地预测 t T t_T tT后新的交互。
Objective function for recommendation
定义打分函数
f
θ
(
u
,
i
)
f_θ(u, i)
fθ(u,i):一个用户
u
u
u会与物品
i
i
i产生交互的可能性。
通常来说,贝叶斯个性化排序(BPR) 是待优化目标函数的合适选择,其核心思想是通过对比学习原则,最大化交互的可能性。
模型
f
θ
(
⋅
)
f_θ(·)
fθ(⋅)被训练来区分观察到的(积极的)和未观察到的(消极的)相互作用的排名。
形式上,我们通过最小化关于参数θ的BPR损失
L
(
θ
;
D
)
L(θ;D)
L(θ;D)来学习模型
f
θ
(
⋅
)
f_θ(·)
fθ(⋅)
(
u
,
j
)
∼
D
˜
(u,j)∼D^˜
(u,j)∼D˜表示(u,j)从负样本空间
D
˜
D^˜
D˜中进行了均匀采样。
Leap: Trajectory-based Meta-Learning
基于梯度的元学习旨在获得模型参数的初始化,也称为元参数
θ
¯
θ^¯
θ¯,这样它就可以通过梯度快速适应不同的学习任务。
Flennerhag等人[2019b]最近提出了一种基于轨迹的元学习方法,可以最大限度地缩短学习过程的长度。
学习过程的长度由两个部分组成:
1.(i) 损失函数之间的差值 the distance between the loss landscape
2.(ii)更新参数空间中的差值 the distance in the parameter space of an update
即从
θ
τ
k
到
θ
τ
k
+
1
θ^k_τ到θ^{k+1}_τ
θτk到θτk+1,且
θ
τ
0
←
θ
¯
θ^0_τ←θ^¯
θτ0←θ¯。
τ
τ
τ表示从某个分布
p
(
τ
)
p(τ)
p(τ)中采样的任务,
K
K
K是更新的步数,
L
τ
L_τ
Lτ是
τ
τ
τ任务的损失函数,
∆
L
τ
k
=
L
τ
(
θ
τ
k
+
1
)
−
L
τ
(
θ
τ
k
)
,∆
θ
τ
k
=
θ
τ
k
+
1
−
θ
τ
k
∆L^k_τ = L_τ (θ^{k+1}_τ) − Lτ (θ^k_τ),∆θ^k_τ = θ^{k+1}_τ − θ^k_τ
∆Lτk=Lτ(θτk+1)−Lτ(θτk),∆θτk=θτk+1−θτk 对应上文讲的"学习过程的长度"。
随后,我们通过采用简单的基于梯度的更新来定义
θ
θ
θ的更新,遵循MAML中:
θ
τ
k
+
1
←
θ
τ
k
−
α
∇
L
τ
(
θ
τ
k
)
θ^{k+1}_τ←θ^k_τ−α∇L_τ (θ^k_τ)
θτk+1←θτk−α∇Lτ(θτk),其中
α
α
α表示学习速率。
Proposed Method
Leaping Through Time
为什么要将Leap应用到我们的推荐模型中呢,因为我们假设每个时间步骤的数据视为一个独立的任务。
而LeapRec的两个组件components,全局时间跳跃(GTL)与有序时间跳跃(OTL),是为了分别处理长期信息long-term和短期信息short-term而设计的。
我们将
γ
¯
γ^¯
γ¯和
γ
γ
γ表示为GTL的元参数和模型参数,将
ω
¯
ω^¯
ω¯和
ω
ω
ω表示为OTL的元参数和模型参数。
Global Time Leap (GTL)
GTL的目标是通过最短化从元参数 γ ¯ γ^¯ γ¯开始的梯度路径来找到所有时间步骤的共同模式。
定义一个任务:每个时间步骤下的推荐目标,并使用以下损失函数:
L
t
(
γ
)
=
L
(
γ
;
D
t
)
L_t(γ) = L(γ; D_t)
Lt(γ)=L(γ;Dt)。
这就相当于在单个时间尺度下(也许是一个月),从用户和商品此时的交互
U
∗
I
U*I
U∗I矩阵中学习用户的偏好,并给出Top-N的偏好商品排序。
梯度也更新遵守MAML的设定: γ t k + 1 ← γ t k − α ∇ L t ( γ t k ) γ^{k+1}_t ← γ^k_t − α∇L_t(γ^k_t ) γtk+1←γtk−α∇Lt(γtk) with γ t 0 ← γ ¯ . γ^0_t ← γ^¯. γt0←γ¯.
从元 γ ¯ γ^¯ γ¯发散到单个任务的参数 γ t γ_t γt,之后每次都要恢复到 γ ¯ γ^¯ γ¯(如图1所示),这是因为 γ ¯ γ^¯ γ¯存储了跨所有时间步的信息,这种机制模仿了用户在所有时间步骤中的静态或长期偏好。(贝叶斯理论中的先验知识)
Ordered Time Leap (OTL)
为了捕获短暂时间尺度下偏好的变化,我们的做法是通过在时间序列中积累的梯度轨迹来捕获时间信息。
- 将 ω t i k ω^k_{ti} ωtik表示为在梯度步长 k k k,时间步骤 t i ti ti时的参数。
- ω ¯ ω^¯ ω¯作为参数更新的起点 ω t 1 0 ω^0_{t1} ωt10,即 ω t 1 0 ← ω ¯ ω^0_{t1} ← ω^¯ ωt10←ω¯。
- 更新模型参数,并沿着轨迹累积梯度(4和5):
- 在单个时间步骤 t i t_i ti下, ω t i k ← ω t 1 0 − α ∑ k = 0 K − 1 ∇ L t i ( ω t i k ) ω^k_{ti} ← ω^0_{t1} − α \sum ^{K−1}_{k = 0} ∇L_{ti}(ω^k_{ti}) ωtik←ωt10−α∑k=0K−1∇Lti(ωtik)
- 然后将这个参数结果代入到下一个时间步骤 t i + 1 t_{i+1} ti+1的参数中: ω t i + 1 0 ← ω t i K ω^0_{ti+1} ← ω^K_{ti} ωti+10←ωtiK ,以此类推,直到最后一个时间步骤 t T t_T tT。
这样子设置的实际意义是,获得的参数 ω t T K ω^K_{tT} ωtTK与时间序列上前面的时间步骤很"接近"。由于神经网络中灾难性遗忘的影响可以通过梯度轨迹正则化来缓解[Goodfellow等人,2015;Chaudhry等人,2018],最短梯度路径有助于保留之前时间步骤中的有用信息。
Meta-optimization
LeapRec将GTL和OTL的预测分数相加起来:
为了训练{
γ
¯
,
ω
¯
γ^¯,ω^¯
γ¯,ω¯},我们使用Leap在迭代结束时同时更新{
γ
,
ω
γ, ω
γ,ω}和更新{
γ
¯
,
ω
¯
γ^¯,ω^¯
γ¯,ω¯}。在推荐场景中,我们使用最新的模型参数{
γ
t
T
K
,
ω
t
T
K
γ^K_{tT}, ω^K_{tT}
γtTK,ωtTK}进行建议。
Neural Recommender
最后,为了验证本文提出的LeapRec适用于推荐系统,我们设计了一个神经推荐器,由一个图神经网络GNN和一个自注意力机制SA组成。
神经推荐器先学习一个embedding矩阵
E
∈
R
(
U
+
I
)
×
d
E ∈ R^{(U+I)×d}
E∈R(U+I)×d,每一行代表d维度的user
(
e
u
∈
R
d
)
和
i
t
e
m
(
e
i
∈
R
d
)
(e_u ∈ R^d)和item(e_i ∈ R^d)
(eu∈Rd)和item(ei∈Rd),而GTL和OTL在该阶段体现在embedding的维度上,
d
G
T
L
和
d
O
T
L
d^{GTL}和d^{OTL}
dGTL和dOTL,也就是说在学习embedding矩阵时,已经完成了对时间动态的初步建模。紧接着将矩阵输入到GNN中,异构图的形式使得GNN能够捕获用户和物品之间超越局部交互结构的相似性,有助于学习共同模式;而SA捕获物品之间的依赖关系;由此可以说LeapRec增强了上述两种机制学习时间动态的能力。
Prediction
现在我们假设 D = { D t 1 , D t 2 , . . . , D t T } D = \{D_{t1}, D_{t2}, . . . , D_{tT}\} D={Dt1,Dt2,...,DtT}已经跑完了神经推荐器,为了查询用户u与物品i的兼容性得分:
- 获取SA机制中最后一层的输出 x ∣ S u ∣ + 1 u x^u_{|Su|+1} x∣Su∣+1u,作为 e u e_u eu
- 从GNN的输出中找到 e i e_i ei
- u和i之间的兼容性得分 = < e u , e i > R d =<e_u, e_i>_{R^d} =<eu,ei>Rd,公式3中的 f ω O T L 和 f γ G T L f^{OTL}_ω和f^{GTL}_γ fωOTL和fγGTL是通过这种点积的形式确立的。