Article
摘要
- 随着强化学习 (RL) 的最新进展,人们对将 RL 用于推荐系统产生了巨大的兴趣。然而,直接训练和评估新的基于 RL 的推荐算法需要在真实系统中收集用户的实时反馈,这既费时又费力,并且可能会对用户体验产生负面影响。因此,它需要一个可以模拟真实用户行为的用户模拟器,我们可以在其中预训练和评估新的推荐算法。在动态系统中模拟用户的行为面临着巨大的挑战:
- (i) 下划线项目分布复杂,并且
- (ii) 每个用户的历史记录是有限的。
在本文中,我们开发了一个基于生成对抗网络 (GAN) 的用户模拟器。具体来说,生成器捕捉用户历史日志的下划线分布,生成真实日志,可以认为是真实日志的扩充;而鉴别器不仅可以区分真假日志,还可以预测用户的行为。基于真实世界电子商务数据的实验结果证明了所提出的模拟器的有效性。
背景
- 随着最近强化学习 (RL) 的巨大发展,人们越来越关注将 RL 应用于推荐。基于 RL 的推荐系统将推荐过程视为用户和推荐代理(RA)之间的顺序交互。它们旨在自动学习最佳推荐策略(策略),在没有任何特定指令的情况下最大化用户的累积奖励。基于强化学习的推荐系统可以实现两个关键优势:
- (i) 推荐代理可以根据用户在用户代理交互过程中的实时反馈不断学习他们的推荐策略;和
- (ii) 最优策略的目标是最大化用户的长期回报(例如推荐会话的总收入)。
- 然而,在动态推荐环境中模拟用户的行为(反馈)是非常具有挑战性的。 实际推荐系统中有数百万个项目。 因此,在历史日志中,推荐项目序列的下划线分布广泛且极其复杂。 为了学习一个强大的模拟器,它通常需要大规模的历史日志作为来自每个用户的训练数据。 尽管通常可以使用大量历史日志,但每个用户可用的数据相当有限。
- 为了解决上述两个挑战,我们提出了一个模拟器 (RecSimu),用于基于生成对抗网络 (GAN) 的基于强化学习的推荐。
主要贡献
- 我们引入了一种原理性方法来捕获历史日志中推荐项目序列的下划线分布,并生成真实的项目序列;
- 我们提出了一个用户行为模拟器 RecSimu,可用于模拟环境以预训练和评估基于 RL 的推荐系统; 和
- 我们根据真实世界的数据进行实验,以证明提议的模拟器的有效性并验证其组件的有效性。
问题描述
- 遵循图 2 所示的一个常见设置,我们首先正式定义基于强化学习的推荐,然后基于此设置提出我们旨在解决的问题。 在这种情况下,我们将推荐任务视为推荐系统(代理)和用户(环境 E)之间的顺序交互,并使用马尔可夫决策过程(MDP)对其进行建模。 它由一系列状态、动作和奖励组成。 通常,MDP 涉及四个元素
(
S
,
A
,
P
,
R
)
(S,A,P,R)
(S,A,P,R),下面我们将介绍如何设置它们。 请注意,还有其他设置,我们将对其进行进一步调查作为未来的一项工作。
- 状态空间
S
S
S:我们将状态
s
=
{
i
1
,
.
.
.
,
i
N
}
∈
S
s= \{ i_1,...,i_N \} \in S
s={i1?,...,iN?}∈S定义为用户浏览的
N
N
N 个项目的序列以及用户对每个项目的相应反馈。
s
s
s 中的项目按时间顺序排序。
- 动作空间
A
A
A:从推荐系统的角度来看,动作
a
∈
A
a \in A
a∈A 被定义为向用户推荐一组项目。 不失一般性,我们假设每次推荐系统向用户推荐一个项目,但可以直接将此设置扩展到推荐更多项目。
- 奖励
R
R
R:当系统根据状态
s
s
s 采取动作
a
a
a 时,用户将浏览推荐的项目并提供她对该项目的反馈。 在本文中,我们假设用户可以跳过、点击和购买推荐商品。 然后推荐系统将仅根据反馈的类型获得奖励
r
(
s
,
a
)
r(s, a)
r(s,a)。
- 状态转移概率
P
P
P:状态转移概率
p
(
s
′
∣
s
,
a
)
p(s'|s,a)
p(s′∣s,a)定义为执行动作
a
a
a时状态从
s
s
s转移到
s
′
s'
s′的概率。 我们假设状态转换是确定性的:我们总是从
s
s
s 中删除第一项
i
1
i_1
i1? 并在
s
s
s 的底部添加动作
a
a
a,即
s
′
=
{
i
2
,
.
.
.
,
i
N
,
a
}
s' = \{ i_2,..., i_N , a \}
s′={i2?,...,iN?,a}。
- 使用上述定义和符号,在本文中,我们的目标是构建一个模拟器,根据从用户的浏览历史中学习到的用户偏好来模仿用户对推荐项目的反馈(行为),如图 2 所示。换句话说, 模拟器旨在模仿奖励函数 r(s, a)。 更正式地说,模拟器的目标可以正式定义如下:给定一个状态-动作对
(
s
,
a
)
(s, a)
(s,a),目标是找到一个奖励函数
r
(
s
,
a
)
r(s, a)
r(s,a),它可以准确地模仿用户的行为。
推荐模拟器
- 在本节中,我们将提出一个模拟器框架,该框架根据用户从浏览历史中学到的当前偏好来模仿用户对推荐项目的反馈(行为)。 如前所述,构建用户模拟器具有挑战性,因为
- (1) 用户历史日志中项目序列的下划线分布复杂,
- (2) 每个用户的历史数据通常是有限的。
- 生成对抗网络 (GAN) 及其变体能够生成虚假但真实的图像,这意味着它们在建模复杂分布方面的潜力。此外,生成的图像可以被视为真实世界图像的增强,以扩大数据空间。在这些优势的驱动下,我们建议构建基于 GAN 的模拟器来捕获用户浏览日志的复杂分布并生成真实的日志以丰富训练数据集。基于 GAN 的模拟器的另一个挑战是鉴别器不仅应该能够区分真实日志和生成日志,还应该能够预测用户对推荐项目的反馈。为了应对这些挑战,我们提出了一个如图 3 所示的推荐模拟器。
 - 其中带有监督组件的生成器旨在学习数据分布并生成不可区分的日志,带有监督组件的鉴别器可以同时区分真实/生成的日志和预测用户对推荐项目的反馈。下面我们将首先分别介绍生成器和判别器的架构,然后讨论优化后的目标函数。
生成器架构
- 生成器的目标是学习数据分布,然后根据用户的浏览历史(状态)生成不可区分的日志(动作),即模仿生成历史日志的推荐系统的推荐策略。 图 4 说明了具有编码器-解码器(Encoder-Decoder)架构的生成器。
 - Encoder 组件旨在根据用户浏览的项目和用户的反馈来学习用户的偏好。 输入是在历史日志中观察到的状态
s
=
{
i
1
,
.
.
.
,
i
N
}
s= \{ i_1,...,i_N \}
s={i1?,...,iN?},即用户浏览的
N
N
N 个项目的序列以及用户对每个项目的相应反馈。 输出是用户当前偏好的低维表示,称为
p
E
p^E
pE。 每个项目
i
n
∈
s
i_n \in s
in?∈s 涉及两种类型的信息:
 - 其中
e
n
e_n
en? 是推荐项目的低维密集项目嵌入(embedding),
f
n
f_n
fn? 是单热向量(one-hot vector)表示,表示用户对推荐项目的反馈。 选择这两种信息的缘由是,我们不仅要学习序列中每个项目的信息,还要捕捉用户对每个项目的兴趣(反馈)。 我们使用嵌入层(embedding layer)将
f
n
f_n
fn? 转换为低维密集向量:
F
n
=
t
a
n
h
(
W
F
f
n
+
b
F
)
∈
R
∣
f
∣
F_n = tanh(W_Ff_n+b_F) \in R^{|f|}
Fn?=tanh(WF?fn?+bF?)∈R∣f∣。 请注意,我们使用“tanh”激活函数,因为
e
n
∈
(
?
1
,
+
1
)
e_n \in (?1, +1)
en?∈(?1,+1)。 然后,我们将
e
n
e_n
en? 和
F
n
F_n
Fn? 连接起来,得到一个低维密集的向量:
 - 请注意,所有嵌入层(embedding layer)共享相同的参数
W
F
W_F
WF? 和
b
F
b_F
bF? ,这可以减少参数量并具有更好的泛化性。 我们引入了带有门控循环单元 (GRU) 的循环神经网络 (RNN) 来捕获日志中项目的序列模式。 我们选择 GRU 而不是 Long Short-Term Memory (LSTM),因为 GRU 的参数更少,架构更简单。 我们将 RNN 的最终隐藏状态视为编码器组件的输出,即用户当前偏好
p
E
p^E
pE 的低维表示。
- Decoder 组件的目标是根据用户当前的偏好预测将推荐的项目。因此,输入是用户的偏好表示
p
E
p^E
pE,而输出是预测出现在日志中下一个位置的项目的嵌入(item-embedding),称为
G
θ
(
s
)
G_{\theta}(s)
Gθ?(s)。为简化起见,我们利用几个全连接层作为解码器将
p
E
p^E
pE 直接转换为
G
θ
(
s
)
G_{\theta}(s)
Gθ?(s)。请注意,利用其他方法生成下一个项目很简单,例如使用 softmax 层计算所有项目的相关性分数,并选择得分最高的项目作为下一个项目。到目前为止,我们已经描述了 Generator 的架构,它旨在模仿现有推荐系统的推荐策略,并生成真实的日志来扩充历史数据。此外,我们添加了一个监督组件,以鼓励生成器生成接近真实值项目的项目,这将在第 3 节中讨论。接下来,我们将讨论鉴别器的架构。
鉴别器架构
- 鉴别器不仅要区分真实的历史日志和生成的日志,还要根据用户的浏览历史预测用户对推荐项目的反馈类别。 因此,我们将该问题视为具有
2
×
K
2 \times K
2×K 类的分类问题,即从历史日志中观察到的推荐项目的真实反馈为
K
K
K 类,生成器产生的推荐项目的虚假反馈为
K
K
K 类。
 - 图 5 说明了鉴别器的架构。 与生成器类似,我们引入了带有 GRU 的 RNN 来捕获用户的动态偏好。请注意,其架构与生成器中的 RNN 相同,但它们具有不同的参数。 RNN的输入是在历史日志中观察到的状态
s
=
{
i
1
,
.
.
.
,
i
N
}
s= \{ i_1,...,i_N \}
s={i1?,...,iN?},其中
i
n
=
(
e
n
,
f
n
)
i_n=(e_n,f_n)
in?=(en?,fn?),输出是用户当前偏好的密集表示(dense representation),简称
p
D
p^D
pD 。同时,我们将推荐项目(真
a
a
a 或假
G
θ
(
s
)
G_{\theta}(s)
Gθ?(s))的项目嵌入(item-embedding)馈入全连接层,将推荐项目编码为低维表示,称为
e
D
e^D
eD。然后我们连接
p
D
p^D
pD 和
e
D
e^D
eD,并将连接
(
p
D
,
e
D
)
(p^D,e^D)
(pD,eD) 馈入全连接层,其目标是
(1) 判断推荐商品的真假,以及 (2) 预测用户对这些项目的反馈。因此,最终的全连接层输出一个
2
×
K
2 \times K
2×K 维的 logits 向量,分别代表
K
K
K 类真实反馈和
K
K
K 类假反馈:  - 我们在输出层中包含
K
K
K 类假反馈,而不仅仅是一个假类,因为对假样本的细粒度区分可以增加鉴别器的能力(更多细节在以下小节中)。 这些logits可以通过一个softmax层转化为类概率,第
j
j
j个类对应的概率为:
 - 其中
r
r
r 是分类的结果。 目标函数基于这些类别概率。 此外,引入了一个监督组件来增强用户的反馈预测,有关该组件的更多细节将在第 3 节中讨论。
目标函数
- 在本小节中,我们将介绍所提出的模拟器的目标函数。 鉴别器有两个目标:
- (1) 区分真实世界的历史日志和生成的日志,以及
- (2) 根据浏览历史预测用户对推荐项目的反馈类别。
- 第一个目标对应于一个无监督问题,就像标准 GAN 区分真假图像一样,而第二个目标是一个监督问题,最小化用户的真实反馈和预测反馈之间的类别差异。 因此,鉴别器的损失函数
L
D
L_D
LD? 由两部分组成。
- 对于区分真实世界历史日志和生成日志的无监督组件,我们需要计算状态-动作对是真的还是假的概率。 从等式(4),我们知道从历史日志中观察到的状态-动作对被归类为真实的概率,称为
D
?
(
s
,
a
)
D_{\phi}(s, a)
D??(s,a),是
K
K
K 个真实反馈的概率之和:
 - 而生成器产生
G
θ
(
s
)
G_{\theta}(s)
Gθ?(s) 动作的假状态-动作对的概率,称为
D
?
(
s
,
G
θ
(
s
)
)
D_{\phi}(s, G_{\theta}(s))
D??(s,Gθ?(s)),是
K
K
K 个假反馈概率的总和:
 - 那么,损失函数
L
D
L^D
LD的无监督分量定义如下:
 - 其中
s
s
s 和
a
a
a 均从第一项的历史日志分布
p
d
a
t
a
p_{data}
pdata? 中采样; 在第二项中,只有
s
s
s 从历史日志分布
p
d
a
t
a
p_{data}
pdata? 中采样,而动作
G
θ
(
s
)
G_{\theta}(s)
Gθ?(s) 由生成器策略
G
θ
G_{\theta}
Gθ? 产生。
- 监督组件旨在预测用户反馈的类别,将其表述为监督问题,以最小化用户的真实反馈与预测反馈之间的类别差异(即交叉熵损失)。 因此它也有两个项:
- 第一项是从真实历史数据分布
p
d
a
t
a
p_{data}
pdata? 中采样的真实状态-动作对的真实状态类和预测类的交叉熵损失;
- 而第二项是假状态动作对的真实类别和预测类别的交叉熵损失,其中动作由生成器产生。
- 因此,损失函数
L
D
L_D
LD? 的监督分量定义如下:
 - 其中 λ 控制第二项的贡献。 第一项是监督问题的标准交叉熵损失。 我们引入方程(8)第二项的缘由是——为了解决第 1 节中提到的数据限制挑战,我们将假状态-动作对视为真实状态-动作对的增强,然后对假状态动作对进行细粒度区分会增加判别器的能力,这也反过来迫使生成器输出更多不可区分的动作。 鉴别器
L
D
L^D
LD的整体损失函数定义如下:
 - 其中引入参数
α
\alpha
α 来控制监督组件的贡献。
- 生成器的目标是输出可以欺骗鉴别器的现实推荐项目
G
θ
(
s
)
G_{\theta}(s)
Gθ?(s) ,它解决了第 1 节中提到的复杂数据分布问题。 为了实现这个目标,我们为生成器的损失函数
L
G
L_G
LG? 设计了两个组件。 第一个组件旨在最大化方程(7)中关于
G
θ
G_{\theta}
Gθ?的
L
D
u
n
s
u
p
{L_D}^{unsup}
LD?unsup。换句话说,第一个组件最小化假状态-动作对被分类为假的概率,因此我们有:
 - 其中
s
s
s 从真实历史日志分布
p
d
a
t
a
p_{data}
pdata? 中采样,动作
G
θ
(
s
)
G_{\theta}(s)
Gθ?(s) 由生成器策略
G
θ
G_{\theta}
Gθ? 产生。 受 GAN 监督版本(Luc et al.2016)的启发,我们引入了监督损失
L
G
s
u
p
{L_G}^{sup}
LG?sup 作为
L
G
L_G
LG? 的第二个组成部分,即地面实况项目
a
a
a 和生成项目
G
θ
(
s
)
G_{\theta}(s)
Gθ?(s) 之间的
l
2
l_2
l2? 距离:
 - 其中
s
s
s 和
a
a
a 是从历史日志分布
p
d
a
t
a
p_{data}
pdata? 中采样的。 这个受监督的组件鼓励生成器产生接近真实项目的项目。 鉴别器
L
D
L_D
LD? 的整体损失函数定义为
如下:  - 其中 β 控制第二个分量的贡献。
 - 我们详细介绍了我们的模拟器训练算法,如算法 1 所示。在训练阶段的开始,我们使用标准的监督方法来预训练生成器(第 3 行)和判别器(第 5 行)。 在预训练阶段之后,交替训练鉴别器(第 7-11 行)和生成器(第 12-15 行)。 为了训练鉴别器,状态
s
s
s 和真实动作
a
a
a 从真实历史日志中采样,而假动作
G
θ
(
s
)
G_{\theta}(s)
Gθ?(s) 是通过生成器生成的。 为了在每个
d
d
d 步中保持平衡,我们使用相同数量的真实动作
a
a
a 生成假动作
G
θ
(
s
)
G_{\theta}(s)
Gθ?(s)。
实验
- 在本节中,我们进行了大量实验,以使用来自电子商务网站的真实数据集来评估所提议模拟器的有效性。 我们主要关注两个问题:
- (1) 与用于预测用户行为的最先进基线(鉴别器)相比,所提出的模拟器的性能如何; 和
- (2) 与代表性推荐算法相比,生成器的性能如何。 我们首先介绍实验设置。 然后我们寻求以上两个问题的答案。 最后,我们研究了重要参数对所提出框架性能的影响。
实验设置
- 我们在 2018 年 7 月来自一家真实电子商务公司的数据集上评估我们的方法。我们随机收集了 272,250 个推荐会话,每个会话都是一系列项目-反馈对。过滤出出现次数少于 5 次的项目后,剩下 1,355,255 个项目。对于每个会话,我们使用前
N
N
N 个项目和相应的反馈作为初始状态,第
N
+
1
N + 1
N+1 个项目作为第一个动作,然后我们可以按照第 1 节中定义的 MDP 收集一系列(状态,动作,奖励)元组。我们从所有会话中收集最后的(状态、动作、奖励)元组作为测试集,同时使用其他元组作为训练集。
- 在本文中,我们利用用户浏览的
N
=
20
N = 20
N=20 个项目和用户对每个项目的相应反馈作为状态
s
s
s。 用户嵌入(item-embedding)
e
n
e_n
en? 的维度是
∣
E
∣
=
20
|E| = 20
∣E∣=20,动作表征
F
n
F_n
Fn?的维数为
∣
F
∣
=
10
|F| = 10
∣F∣=10(
f
n
f_n
fn? 是一个二维的 one-hot 向量:当反馈为负时
f
n
=
[
1
,
0
]
f_n = [1, 0]
fn?=[1,0],而当反馈为正时
f
n
=
[
0
,
1
]
f_n = [0, 1]
fn?=[0,1])。 discriminator 的输出是一个
4
(
K
=
2
)
4 (K = 2)
4(K=2) 维的 logits 向量,每个 logit 分别代表
r
e
a
l
?
p
o
s
i
t
i
v
e
real-positive
real?positive,
r
e
a
l
?
n
e
g
a
t
i
v
e
real-negative
real?negative,
f
a
k
e
?
p
o
s
i
t
i
v
e
fake-positive
fake?positive 和
f
a
k
e
?
n
e
g
a
t
i
v
e
fake-negative
fake?negative:
 - 其中
r
e
a
l
real
real 表示推荐项目是从历史日志中观察到的;
f
a
k
e
fake
fake 表示推荐的物品是由生成器产生的;
p
o
s
i
t
i
v
e
positive
positive表示用户点击/购买了推荐商品;
n
e
g
a
t
i
v
e
negative
negative表示用户跳过推荐的项目。 请注意,虽然我们只模拟了两种类型的用户行为(即积极和消极),但可以直接使用更多类型的行为来扩展模拟器。 AdamOptimizer应用于优化,Generator和Discriminator的学习率为0.001,batch-size为500。RNN的隐藏大小为128。对于提出的框架的参数,如
α
\alpha
α,
β
\beta
β和$\gamma$,我们选择他们通过交叉验证。 相应地,我们还对基线进行参数调整以进行公平比较。 我们将在以下小节中讨论有关建议模拟器的参数选择的更多详细信息。
- 在测试阶段,给定一个状态-动作对,模拟器将预测用户对动作的反馈类别(推荐项目),然后将预测与从历史日志中观察到的真实反馈进行比较。 对于这个分类任务,我们选择常用的
F
1
?
s
c
o
r
e
F1-score
F1?score作为度量,它是一个结合了精度和召回率的度量,即精度和召回率的调和平均值。 此外,我们利用
p
m
o
d
e
l
(
r
=
l
r
p
∣
s
,
a
)
p_{model}(r = l_{rp}|s, a)
pmodel?(r=lrp?∣s,a)(即用户对真实推荐项目提供正反馈的概率)作为分数,并使用
A
U
C
AUC
AUC(ROC 曲线下的面积)作为度量来评估表现。
整体性能对比
- 为了回答第一个问题,我们将提议的模拟器(鉴别器)与以下最先进的基线方法进行比较:
- Random:这个baseline 随机给每个推荐的item 分配一个score ∈ [0, 1],并使用0.5 作为阈值来将item 分为正负; 该分数也用于计算 AUC。
- LR:逻辑回归( Logistic Regression)使用逻辑函数通过最小化损失
E
1
2
(
h
θ
(
x
)
?
y
)
2
E_{\frac{1}{2}}{(h_{\theta}(x) ? y)}^2
E21??(hθ?(x)?y)2 来对二元因变量建模,其中
h
θ
(
x
)
=
1
1
+
e
?
w
T
x
h_{\theta}(x) =\frac{1}{{1+e^{-w^{T}x}}}
hθ?(x)=1+e?wTx1?; 我们将所有
i
n
=
(
e
n
,
f
n
)
i_n = (e_n, f_n)
in?=(en?,fn?) 为第
i
i
i 个项目的特征向量,如果反馈为正,则设置基本事实
y
=
1
y = 1
y=1,否则
y
=
0
y = 0
y=0。
- GRU:该基线使用带有 GRU 的 RNN 来预测用户对推荐项目的反馈类别。 每个单元的输入
i
n
=
(
e
n
,
f
n
)
i_n = (e_n, f_n)
in?=(en?,fn?) 中,RNN 的输出是用户偏好的表示,比如说
u
u
u,然后我们将
u
u
u 与推荐项目的嵌入连接起来,并利用一个
s
o
f
t
m
a
x
softmax
softmax 层来预测用户对此项目的反馈类别。
- GAN:这个基线基于生成对抗网络(Goodfellow et al. 2014),其中生成器采用状态-动作对(浏览历史和推荐项目)并输出用户对项目的反馈(奖励),而判别器采用 (状态,动作,奖励)元组并区分真实元组(其奖励是从历史日志中观察到的)和假元组。 请注意,我们还使用带有 GRU 的 RNN 来捕获用户的顺序偏好。
- GAN-s:此基线是 GAN 的监督版本(Luc et al. 2016),其中设置与上述 GAN 基线相似,同时在生成器的输出上添加了监督组件,从而最大限度地减少了真实反馈和预测反馈的差异。
- 结果如图 6 所示。 我们进行了以下观察:

- LR 的性能比 GRU 差,因为 LR 忽略了用户浏览历史中的时间序列,而 GRU 可以捕获项目序列中的时间模式和用户对每个项目的反馈。 该结果表明,在学习用户的动态偏好时,捕捉用户浏览历史的顺序模式很重要。
- GAN-s 的性能优于 GRU 和 GAN,因为 GAN-s 不仅受益于 GAN 框架(无监督组件)的优势,而且受益于监督组件的优势,直接最小化真实反馈和预测反馈之间的交叉熵。
- RecSimu 优于 GAN-s,因为生成器模仿了生成历史日志的推荐策略,生成的日志可以看作是真实日志的扩充,解决了数据限制的挑战; 而鉴别器可以区分真实日志和生成日志(无监督组件),同时预测用户对推荐项目的反馈(监督组件)。 换句话说,RecSimu 同时利用了无监督和监督组件。 RecSimu 模型组件的贡献将在以下小节中研究。
- 总而言之,所提出的框架优于最先进的基线,这验证了其在模拟用户在推荐任务中的行为的有效性。
生成器效率
- 我们提出的生成器旨在根据用户的浏览历史(状态)生成不可区分的日志(动作)。 换句话说,它模仿了生成历史日志的推荐系统的推荐策略。 为了回答第二个问题,我们基于本文使用的历史日志训练了几种具有代表性的推荐算法,并比较了与历史日志的性能差异。 为了评估推荐算法的性能,我们选择 MAP 和 NDCG 作为指标。 我们将提出的生成器与以下代表性推荐方法的生成器进行比较:
- FM: Factorization Machines (Rendle 2010) 结合了 SVM 和分解模型的优点。 与矩阵分解相比,可以使用维度参数对高阶交互进行建模。
- W&D:该基线是一个广泛而深入的模型,用于联合训练具有嵌入的前馈神经网络和具有通用推荐系统特征转换的线性模型。
- GRU4Rec:GRU4Rec 使用带有 GRU 单元的 RNN 根据点击/订购历史预测用户接下来将点击/订购什么。
- 结果如表 1 所示。与基线相比,可以观察到 RecSimu 的生成器可以实现与历史日志最相似的性能。 该结果验证了生成器和鉴别器之间的竞争可以增强生成器在历史日志中捕获复杂项目分布的能力,超过监督推荐算法。

成分分析
- 为了研究生成器和鉴别器中的组件如何对性能做出贡献,我们通过定义 RecSimu 的以下变体来系统地消除模拟器的相应组件:
- RecSimu-1:这个变体是模拟器的简化版本,除了判别器的输出是一个3维向量
o
u
t
p
u
t
=
[
l
r
p
,
l
r
n
,
l
f
]
output = [l_{rp}, l_{rn}, l_f ]
output=[lrp?,lrn?,lf?],其中每个 logit 分别代表
r
e
a
l
?
p
o
s
i
t
i
v
e
real-positive
real?positive,
r
e
a
l
?
n
e
g
a
t
i
v
e
real-negative
real?negative 和
f
a
k
e
fake
fake,即它不会区分生成的正负项。
- RecSimu-2:在这个变体中,我们评估监督组件
L
G
s
u
p
{L_G}^{sup}
LG?sup 的贡献,因此我们通过设置
β
=
0
\beta = 0
β=0 来消除
L
G
s
u
p
{L_G}^{sup}
LG?sup 的影响。
- RecSimu-3:这个变体是为了评估生成器和鉴别器之间竞争的有效性,因此,我们从损失函数中删除了
L
G
u
n
s
u
p
{L_G}^{unsup}
LG?unsup 和
L
D
u
n
s
u
p
{L_D}^{unsup}
LD?unsup。
- 结果如图7所示。可以观察到:

- RecSimu 的性能优于 RecSimu-1,这表明区分生成的正负项可以提高性能。 这也验证了生成器生成的数据可以被视为现实世界数据的增强,从而解决了数据限制挑战。
- RecSimu-2 的性能比 RecSimu 差,这表明监督组件有助于生成器生成更多不可区分的项目。
- RecSimu-3 首先训练一个生成器,然后使用真实数据和生成数据训练判别器; 而 RecSimu 迭代更新生成器和鉴别器。 RecSimu 优于 RecSimu-3,这表明生成器和判别器之间的竞争可以增强生成器(捕获复杂数据分布)和判别器(对真假样本进行分类)的能力。
参数灵敏度分析
- 我们的方法有两个关键参数,即
- (1)
N
N
N 控制状态的长度,和
- (2)
λ
\lambda
λ 控制公式(8) 中第二项的贡献,它将生成的项目分为正类或负类。
- 为了研究这些参数的影响,我们研究了所提出的框架 RecSimu 如何在一个参数的变化下工作,同时固定其他参数。 结果如图 8 所示。 我们有以下观察结果:

- 图 8 (a) 展示了
N
N
N 的参数敏感性。我们发现随着
N
N
N 的增加,性能有所提高。 具体来说,性能先显着提升,然后变得相对稳定。 这个结果表明引入更长的浏览历史可以提高性能。
- 图 8 (b) 显示了
λ
\lambda
λ 的灵敏度。 当
λ
=
0.3
\lambda= 0.3
λ=0.3 时,模拟器的性能达到峰值。 换句话说,方程(8)中的第二项确实提高了模拟器的性能; 然而,性能主要取决于等式(8)中的第一项,它将真实项目分为正类和负类。
相关工作
- 在本节中,我们简要回顾与我们的研究相关的工作。 一般而言,相关工作主要可分为以下几类。
- 与本文相关的第三类是基于强化学习的推荐系统,它通常将推荐任务视为马尔可夫决策过程(MDP),并将推荐过程建模为用户和推荐系统之间的顺序交互(Zhao et al. 2019b; Zhao et al. 2018a。实用的推荐系统总是有数百万个项目(离散动作)要推荐(Zhao et al. 2016;Guo et al. 2016)。因此,大多数基于 RL 的模型将变得效率低下,因为它们无法处理如此大的离散动作空间。引入了深度确定性策略梯度 (DDPG) 算法以缓解基于实际 RL 的推荐系统中的大动作空间问题(Dulac-Arnold 等人,2015 年)。为了避免 DDPG 的不一致性并提高推荐性能,在 (Chen et al. 2018a) 中提出了树结构的策略梯度。还引入了双聚类技术来将推荐系统建模为网格世界游戏,以减少状态/动作空间(Choi 等人,2018 年)。为了解决动态推荐环境中不稳定的奖励分配问题,提出了近似后悔奖励技术和双 DQN,以从单个客户样本中获取参考基线(Chen et al. 2018c)。用户的正面和负面反馈,即购买/点击和跳过行为,在一个框架中共同考虑以促进推荐,因为这两种类型的反馈都可以代表用户偏好的一部分(Zhao et al. 2018c)。引入了架构方面和公式方面的改进,以在统一的 RL 框架中捕获正反馈和负反馈。提出了一个逐页推荐框架来联合推荐一个项目页面并将它们显示在一个二维页面中(Zhao et al. 2017; Zhao et al. 2018b)。引入 CNN 技术来捕获页面中每个项目的项目显示模式和用户反馈。针对全链推荐问题(Zhao et al. 2019c)提出了一种基于多智能体模型的强化学习框架(DeepChain),该框架能够通过基于模型的优化算法针对不同场景协同训练多个推荐智能体。针对基于 RL 的推荐系统 (Zhao et al. 2019a) 提出了基于生成对抗网络 (GAN) 框架的用户模拟器 RecSimu,该系统根据用户的历史日志对真实用户的行为进行建模,并解决了两个挑战:(i)推荐的项目分布在用户的历史日志中很复杂,并且(ii)来自每个用户的标记训练数据是有限的。在新闻推送场景中,提出了基于 DQN 的框架来应对传统模型的挑战,即(1)仅对当前奖励(如点击率)进行建模,(2)不考虑点击/跳过标签,以及(3)将类似的新闻提供给用户(Zheng 等人,2018 年)。 (Wang et al. 2018)提出了一种可解释推荐的强化学习框架,可以解释任何推荐模型,并且可以根据应用场景灵活控制解释质量。 (Chen et al. 2018b) 为 YouTube 开发了一种基于策略梯度的 top-K 推荐系统,它通过结合学习的日志策略和新颖的 top-K 离策略校正来解决记录数据中的偏差。其他应用包括卖家印象分配(Cai et al. 2018a)、欺诈行为检测(Cai et al. 2018b)和用户状态表示(Liu et al. 2018)。
- 与本文相关的第二类是行为克隆。最有效的方法之一是从演示中学习(LfD),它估计从专家的行为状态到动作映射的隐式奖励函数。成功的 LfD 应用包括自主直升机机动(Ross et al. 2013)、自动驾驶汽车(Bojarski et al. 2016)、打乒乓球(Calinon et al. 2010)、物体操纵(Pastor et al. 2009)和煮咖啡(Sung、Jin 和 Saxena 2018 年)。例如,罗斯等人。 (Ross 等人,2013 年)开发了一种在天然森林环境中在低空自动驾驶小型直升机的方法。博贾斯基等人。 (Bojarski et al. 2016) 训练 CNN 将单个前置摄像头的原始像素直接映射到转向命令。 Calinon 等人。 (Calinon et al. 2010) 提出了一种概率方法,通过模仿例如打乒乓球来训练健壮的人体运动模型。牧师等。 (Pastor et al. 2009) 提出了一种从人类演示中学习机器人运动技能的通用方法。宋等人。 (Sung,Jin 和 Saxena 2018)根据许多家居用品共享相似的操作组件的假设,提出了一种操作规划方法。
结论
- 在本文中,我们提出了一种基于生成对抗网络 (GAN) 框架的新型用户模拟器 RecSimu,它根据用户的历史日志对真实用户的行为进行建模,并解决了两个挑战:
- (i) 推荐项目分布在用户的历史日志中很复杂,以及
- (ii) 来自每个用户的标记训练数据是有限的。
- 基于 GAN 的用户模拟器可以自然地解决这两个挑战,并可用于在新的推荐算法上线之前对其进行预训练和评估。具体来说,生成器捕获用户历史日志的下划线项目分布,并生成不可区分的假日志,作为真实日志的扩充;鉴别器能够根据用户的浏览日志预测用户对推荐项目的反馈,这利用了监督和非监督学习技术。为了验证所提出的用户模拟器的有效性,我们基于现实世界的电子商务数据集进行了广泛的实验。结果表明,所提出的用户模拟器可以提高推荐任务中的用户行为预测性能,并且比代表性基线具有显着的余量。
- 有几个有趣的研究方向。首先,为了泛化,在本文中,我们不考虑连续动作之间的依赖关系,换句话说,我们将一个推荐会话拆分为多个独立的状态-动作对。最近的一些模仿学习技术,例如逆强化学习和生成对抗性模仿学习,将一系列状态-动作对视为一个完整的轨迹,并且先验动作可能会影响后验动作。我们将在未来的一项工作中介绍这个想法。其次,用户历史记录中的正面(点击/购买)和负面(跳过)反馈极不平衡,这使得收集足够的正面反馈数据变得更加困难。在本文中,我们利用传统的上采样技术来生成更多的正反馈训练数据。未来,我们会考虑利用 GAN 框架自动生成更多的正反馈数据。最后,用户跳过项目的原因有很多,例如(1)用户确实不喜欢该项目,(2)用户没有仔细查看该项目并错误地跳过它,(3)存在更好的项目附近位置等。这些原因导致更难预测跳跃行为。因此,我们将引入可解释的推荐技术来确定用户跳过项目的原因。
|