Abstract
推荐系统对可伸缩性的需求,因为在推荐系统中,数百万的条目要在数毫秒内匹配数十亿计的用户。
两阶段系统具有良好的可伸缩性,第一阶段是有效的候选项生成模型,第二阶段是更强大的排名模型。
论文提出背景
用于构建候选项生成模型和排名模型的数据是来自用户对之前系统推荐的条目的反馈,这带来了偏差。近年来,越来越多的人开始关注这一问题。然而,大部分的工作要么是假设推荐系统是一个单阶段的系统,要么是只研究如何将off-policy修正应用到系统的候选生成阶段,而没有明确考虑这两个阶段之间的交互作用。
该论文的贡献
提出了一个两阶段的off-policy策略梯度法,并证明忽略两阶段间的相互作用会导致次优的全系统策略。
Introduction
数据偏差
off-policy学习降低了由于只观察交互式系统中的部分反馈而引起的偏差,纠正了目标策略和行为策略之间的偏差。
IPS(Inverse Propensity Scoring): 将每个条目的重要性权重 (目标策略和行为策略的概率比)分配给经验训练目标,以证明修正后的目标是无偏差的。
精确计算每一个样本的重要性权重的时间复杂度为 O ( m k ) O(m^k) O(mk)(m为所有条目数量,k为候选条目数量)。为了使问题易于处理,我们通过对候选生成模型进行适当地假设提出了一种有效的蒙特卡洛逼近算法。
Related work
强化学习
无模型强化学习的方法
- 基于价值的方法。通常使用函数逼近器来表示状态动作值函数,然后通过选择使值函数最大的动作来推导最优策略。
- 基于策略的方法。直接将策略参数化,并学习策略来最大化预期的长期回报。
与基于策略的方法相比,基于价值的方法在函数逼近时存在不稳定性,因此本文使用基于策略的方法来解决推荐问题。
将推荐看成一个强化学习问题
假设用户状态分布不会随着时间变化,这样问题转化成了一种特殊的情况——T=1的一步强化学习问题。
为了简单起见,将 E s ∼ p ( s ) , a ∼ π ( a ∣ s ) E_{s\thicksim p(s), a\thicksim \pi(a|s)} Es∼p(s),a∼π(a∣s)简化为 E π E_\pi Eπ。
假设策略采用
π
θ
\pi_\theta
πθ的函数形式(
θ
∈
R
d
\theta \in R^d
θ∈Rd),其值函数的梯度可以用加强梯度表示。
使用IPS方法对数据偏差进行修正。
π
θ
(
a
∣
s
)
β
(
a
∣
s
)
\frac{\pi_\theta(a|s)}{\beta(a|s)}
β(a∣s)πθ(a∣s)是重要性权重。
所以梯度公式可以改写为
假设
β
\beta
β产生的数据集为
D
=
{
(
s
i
,
a
i
,
r
i
)
}
i
=
1
n
D = \{(s_i, a_i, r_i)\}^n_{i =1}
D={(si,ai,ri)}i=1n,我们可以估计off-policy策略梯度为
所有参数的解释
两阶段推荐系统中的off-policy learning
两阶段推荐系统
两阶段推荐系统通常由一个或多个候选项生成模型和一个排序模型组成。为了简化分析,我们只考虑Top-1推荐,即只使用一个候选项生成模型,且排序模型仅向用户提供一个最终推荐。
假设
A
k
∈
A
A^k \in A
Ak∈A(
A
k
A^k
Ak是一个大小为k的集合),假设用户状态
s
∈
S
s \in S
s∈S,则候选项生成模型可以表示为在用户状态为s的条件下,所有可能候选集
A
k
A^k
Ak的概率,即
p
(
A
k
∣
s
)
p(A^k|s)
p(Ak∣s);排序模型可以表示为在用户状态为s,候选集为
A
k
A^k
Ak的条件下,所有项目a的概率,即
q
(
a
∣
s
,
A
k
)
q(a|s, A^k)
q(a∣s,Ak)。且有
两阶段模型的目标策略
π
\pi
π可被分解为
我们主要关注候选项生成模型的off-policy的修正,因此我们假设排名模型已经经过了良好的训练,并且在候选项生成模型训练和服务过程中保持不变。
当p和q推荐偏好不同时,使用off-policy修正( p / β p / \beta p/β是重要性权重)会导致一个次优的结果。
候选项生成模型的两阶段off-policy策略梯度
假设候选项生成模型使用 θ \theta θ参数化的形式 p θ ( A k ∣ s ) p_\theta(A^k|s) pθ(Ak∣s),则目标策略可以写成
将(5)带入(3)得
精确计算这个策略梯度需要遍历所有大小为k的可能候选集,导致时间复杂度为
O
(
∣
A
∣
k
)
O(|A|^k)
O(∣A∣k)。因为
∣
A
∣
|A|
∣A∣是数百万或者数十亿的水平,即使k很小,计算也不可行。
候选项集合抽样的无偏估计
目标策略在第i个数据点的梯度为
通过对
A
k
A^k
Ak的抽样,我们可以直接获得对梯度的无偏估计,而不需要对所有可能的
A
k
A^k
Ak进行迭代。
假设候选集是通过带替换的抽样产生的,我们有
重写目标策略在第i个数据点的梯度为
由于在
q
(
a
i
∣
s
i
)
,
{
a
i
}
∪
A
k
−
1
q(a_i|s_i),\{a_i\} \cup A^{k -1}
q(ai∣si),{ai}∪Ak−1中,
a
i
∈
{
a
i
}
∪
A
k
−
1
a_i \in \{a_i\} \cup A^{k -1}
ai∈{ai}∪Ak−1恒成立,所有q恒不等于0。通过这种方法,对于任意候选集
A
k
−
1
A^{k-1}
Ak−1,我们都能得到非零梯度。
方差减少技巧
由于off-policy策略梯度权重大,导致方差大。
权重限制
归一化
为了克服采样带来的额外方差,引入了一个超参数
α
∈
[
0
,
1
)
\alpha \in [0,1)
α∈[0,1)。即
伪代码
在softmax推荐器上的应用
cross-entropy loss
假设候选项生成模型的输出为
p
θ
(
a
i
∣
s
i
)
p_\theta(a_i|s_i)
pθ(ai∣si),则交叉熵函数为
one-stage IPS loss
假设候选项生成模型本身就是一个单阶段的推荐系统并且输出单个推荐,即将off-policy修正直接应用于候选项生成模型,则损失函数为
sg为stop-gradient操作。
two-stage IPS loss
根据候选项生成模型
p
θ
p_\theta
pθ和排名模型
q
q
q,得损失函数为
τ \tau τ是抽取的样本大小。
为什么two-stage IPS loss比one-stage IPS loss更好?
假设 ( s i , a i ) (s_i,a_i) (si,ai)是来自用户的正反馈。
-
如果排名模型对 a i a_i ai的排名很低,则对于大部分 A k − 1 A^{k-1} Ak−1有
导致候选项生成模型对于这个条目的梯度会很小,这有助于候选项生成模型关注那些排名模型偏爱的条目。 -
如果排名模型对 a i a_i ai的排名很高,但是出现了一个假阳性条目 a j ( i ≠ j ) a_j(i \ne j) aj(i=j),比 a i a_i ai的排名更高,则对于包含 a j a_j aj的 A k − 1 A^{k-1} Ak−1有
导致含有 a j a_j aj的集合比不含有 a j a_j aj的集合权重更低,这会使候选项生成模型避免提名 a j a_j aj,从而弥补排名模型的错误。
实验
评估off-policy learning的方法
理想情况下,我们应该在真实的推荐环境中运行修正后的目标策略进行在线测试,然而这样的环境很少公开使用。
文献中的两种替代方法:
- Supervised-to-Bandit Conversion
假设有监督学习的多分类数据集
x i x_i xi表示数据点 i i i的特征向量, y i ∈ { 0 , 1 } m y_i \in \{0,1\}^m yi∈{0,1}m是一个二进制向量,每一个元素 y a i y^i_a yaia表示数据点 i i i是否属于a类( a ∈ { 1 , 2 , ⋯ , m } a \in \{1,2,\cdots,m\} a∈{1,2,⋯,m})。
通过从数据点
i
i
i中采样和类
a
∼
β
(
a
∣
x
i
)
a \thicksim \beta(a|x^i)
a∼β(a∣xi)(
β
(
a
∣
x
i
)
\beta(a|x^i)
β(a∣xi)是数据点
i
i
i的特征向量
x
i
x^i
xi为输入,一个选择的a类为输出的行为策略),我们可以得到bandit数据集
l
l
l是样本的大小,
p
j
p^j
pj是usr-item对行为策略的概率,
r
j
=
y
a
j
j
r^j = y^j_{a^j}
rj=yajj是奖励。
- Online Simulation
Supervised-to-Bandit Conversion是一个很方便的方法,但是它需要一个全标记的数据集。而大部分的公开的推荐系统数据集都是不满足这个条件的。
在在线仿真方法中,我们将一个m条反馈记录的推荐系统数据集表示为
u i ∈ U u^i \in U ui∈U表示一个用户, a i ∈ A a^i \in A ai∈A表示一个条目。 m < n = ∣ A ∣ ∗ ∣ U ∣ m < n = |A| * |U| m<n=∣A∣∗∣U∣表示我们只拥有部分标签信息。
使用数据集 D D D我们训练了一个以user-item对 ( u i , a i ) (u^i,a^i) (ui,ai)为输入,即时反馈 r i r^i ri为输出的仿真模型 h 0 h_0 h0,通过这个 h 0 h_0 h0,我们可以获得仿真所有user-item对得反馈,即得到数据集 D f u l l D_{full} Dfull。最后我们使用Supervised-to-Bandit Conversion方法,得到 D b a n d i t D_{bandit} Dbandit。
实验过程
- 在 D b a n d i t D_{bandit} Dbandit上训练一个排名模型。
- 给定一种学习方法,用该方法训练候选项生成模型。
- 将上述两个步骤得到的排名模型和候选项生成模型进行组合形成两阶段系统,然后进行评估。
- 使用不同的学习方法(cross-entropy, 1-IPS, 2-IPS),重复第2步和第三步。
详细设置
数据集
使用了两个公开的数据集:
M
o
v
i
e
L
e
n
s
−
1
M
和
W
i
k
i
10
−
31
K
MovieLens-1M和Wiki10-31K
MovieLens−1M和Wiki10−31K。
在MovieLens-1M中,将低于4分的评价定义为负面反馈,4分及更高定义为正面反馈。
模型结构
对实验中的所有模型都是用神经网络,并且对于不同的学习方法,我们使用相同的模型结构,以方便比较。
对于数据集Wiki10-31K,我们需要确定三个模型的结构:行为策略模型,候选项生成模型和排名模型;而对于数据集MovieLens-1M,需要额外确定一个仿真模型。
对于所有的行为策略模型和候选项生成模型使用双塔模型结构。如图
排名模型和仿真模型的结构。如图
在数据集Wiki10-31K上,我们将用户塔设置为一个词嵌入层后接一个全连接层的神经网络,设置所有隐藏层的大小为20。由于没有项目特性,因此条目塔被设置为一个条目嵌入层。
在数据集MovieLens-1M上,我们将用户塔设置为一个多个分类特征嵌入层后接一个全连接层的网络,嵌入层大小设置为10,全连接层大小为20。条目塔设置为条目嵌入和条目特征嵌入的拼接,总的大小为20。
对于数据集MovieLens-1M的排名模型和仿真模型,以user-item对作为输入。
对于数据集Wiki10-31K,我们将用户塔和条目塔连接起来,并将另一个全连接层堆叠在其上。所有的隐藏层大小都设置为20。
由于在数据集MovieLens-1M中,每个电影评级还有一个相关的时间,因此我们还额外连接了一个评级特征。相较于排名模型,仿真模型堆叠了两个全连接层(大小分别为100,50)。
评价指标
不是度量候选项生成模型的最优推荐的质量,而是整个两阶段模型的最优推荐的质量。即首先有候选项生成模型得到Top-k候选集,再使用排名模型对候选集进行排名,最后由候选集衡量推荐质量。对于数据集MovieLens-1M,k = 30;对于数据集Wiki10-31K,k = 50。
one-stage evaluation
直接对候选项生成模型推荐质量的评价
two-stage evaluation
对整个两阶段模型推荐质量的评价
训练模型
MovieLens-1M
-
仿真模型
将MovieLens-1M按3:1:1划分训练集、验证集和测试集。 -
行为策略模型和排名模型
使用仿真模型随机生成的10000个user-item对来训练行为策略模型,然后通过对行为策略模型预测每个用户的top-5条目进行抽样得到一个bandit数据集。基于该数据集训练排名模型,分割2000用户作为验证集,4000用户作为测试集。 -
候选项生成模型
设置优化器为AdaGrad,初始学习率为0.05,设置1-IPS和2-IPS的权重限制参数 c 1 = 10 , c 2 = 0.01 c_1 = 10,c_2=0.01 c1=10,c2=0.01,设置2-IPS的超参数 α = 1 0 − 2 \alpha = 10^{-2} α=10−2,设置候选集样本大小 τ = 100 \tau = 100 τ=100。
对每一种训练方法,我们训练了20个用不同随机种子初始化的候选项生成模型。在one-stage evaluation和two-stage evaluation中都应用了early stopping方法。
Wiki10-31K
-
行为策略和排名模型
划分训练集大小10K,验证集大小4K,测试集大小6K。从训练集中删除频率最高的30个条目来增加任务难度。从训练集中随机抽取500个样本来训练行为策略模型,用整个训练集来训练排名模型。 -
候选项生成模型
设置1-IPS和2-IPS的权重限制参数 c 1 = 10 , c 2 = 0.01 c_1 = 10,c_2=0.01 c1=10,c2=0.01,设置2-IPS的超参数 α = 1 0 − 5 \alpha = 10^{-5} α=10−5,设置候选集样本大小 τ = 100 \tau = 100 τ=100。优化器、重复运行和early stopping策略和之前相同。由于直接对模型使用1-IPS和2-IPS方法进行训练,可能导致消耗空间过大而崩溃,所以要使用cross-entropy对模型进行一百步的预训练。
实验结果
对于数据集MovieLens-1M有
-
2-IPS方法在两种评估中的结果都是优于1-IPS和cross-entropy的。
-
1-IPS在one-stage evaluation中表现比cross-entropy方法好,在two-stage evaluation表现比cross-entropy方法差,说明仅仅提升一部分系统的性能不一定能提升整个系统的性能。
对于数据集Wiki10-31K有
- 2-IPS方法在两种评估中的结果都是优于1-IPS和cross-entropy的。
结论和展望
off-policy policy gradient方法对于提升两阶段推荐系统的性能确实是有效的。
是否能将该方法从两阶段模型推广到多阶段模型?
是否能将从候选项生成模型中得到的经验应用到排名模型的off-policy learning中?