C2Rec: An Effective Consistency Constraint for SequentialRecommendation
这篇文章提出了序列推荐建模中一种有效的一致性约束防范,不用修改模型结构,仅仅添加2个额外的损失函数,就能达到非常好的效果。不像基于对比学习的方法,需要较好的负采样方法、数据增强方法、较重的超参数调优方法,论文提出的方法简单有效。新的损失函数不挑模型,可以在广泛使用的sota模型上面增加,具有通用性。
基础模型
首先序列推荐模型的任务表示为:
P
(
v
∣
s
u
∣
+
1
(
u
)
=
v
∣
s
u
)
P( v_{\vert s_u \vert + 1}^{(u)} = v | s_u)
P(v∣su∣+1(u)=v∣su)
即预测用户是时刻
∣
s
u
∣
+
1
\vert s_u \vert + 1
∣su∣+1时和候选素材
v
v
v交互的概率,
∣
s
u
∣
\vert s_u \vert
∣su∣表示用户时刻
t
t
t及之前交互的序列的长度。
设 s u = f ( s u ) \mathbf s_u = f(s_u) su=f(su)表示编码后的用户向量
基线模型的损失函数计算如下, v t + 1 + v_{t+1}^+ vt+1+表示时刻 t + 1 t+1 t+1时刻正向行为素材, v t + 1 − v_{t+1}^- vt+1−表示 t + 1 t+1 t+1时刻负采样的素材, w w w表示模型参数
P ( s u , t ; w ) = e x p ( s u , t T v t + 1 + ) e x p ( s u , t T v t + 1 + ) + ∑ v − ∈ V − e x p ( s u , t T v t + 1 − ) P(\mathbf s_{u,t};w ) = \frac {exp(\mathbf s_{u,t}^T v_{t+1}^+ ) } { exp(\mathbf s_{u,t}^T v_{t+1}^+ ) + \sum_{v^- \in V^-} exp(\mathbf s_{u,t}^T v_{t+1}^- ) } P(su,t;w)=exp(su,tTvt+1+)+∑v−∈V−exp(su,tTvt+1−)exp(su,tTvt+1+)
L b a s i c = − log P ( s u , t ; w ) L_{basic} = - \log P(\mathbf s_{u,t;w}) Lbasic=−logP(su,t;w)
一致性约束
根据用户交互序列
s
u
s_u
su用2个不同的Dropout参数产生2个用户向量
s
u
,
t
d
1
\mathbf s_{u,t}^{d_1}
su,td1和
s
u
,
t
d
2
\mathbf s_{u,t}^{d_2}
su,td2,基于新产生的两个向量来计算约束性loss,主要目的是希望不同Dropout产生的用户向量在向量空间中尽可能的相近。这里衡量相近的方法论文提到用的是KL距离,KL原本是衡量两个分布的差异性,用在这里衡量新产生的用户向量的差异。
Regularized Dropout Loss(RD)
基于新的用户向量
s
u
,
t
d
1
\mathbf s_{u,t}^{d_1}
su,td1和
s
u
,
t
d
2
\mathbf s_{u,t}^{d_2}
su,td2产生的概率分布
P
(
s
u
,
t
d
1
;
w
)
P(\mathbf s_{u,t}^{d_1};w)
P(su,td1;w)和
P
(
s
u
,
t
d
2
;
w
)
P(\mathbf s_{u,t}^{d_2};w)
P(su,td2;w),loss计算如下:
L
R
D
=
1
2
(
D
K
L
(
P
(
s
u
,
t
d
1
;
w
)
∣
∣
P
(
s
u
,
t
d
2
;
w
)
)
+
D
K
L
(
P
(
s
u
,
t
d
2
;
w
)
∣
∣
P
(
s
u
,
t
d
1
;
w
)
)
)
L_{RD} = \frac {1} {2} (D_{KL}( P(\mathbf s_{u,t}^{d_1};w) || P(\mathbf s_{u,t}^{d_2};w) ) + D_{KL}(P(\mathbf s_{u,t}^{d_2};w) || P(\mathbf s_{u,t}^{d_1};w)))
LRD=21(DKL(P(su,td1;w)∣∣P(su,td2;w))+DKL(P(su,td2;w)∣∣P(su,td1;w)))
示意图如下:
Distributed Regularization Loss(DR)
上面是衡量同一个用户的2个不同用户向量的分布差异,这里进一步衡量不同用户的向量之间的差异,在mind-batch内,设有
n
n
n个用户
(
u
1
,
u
2
,
.
.
.
,
u
n
)
(u_1, u_2, ..., u_n)
(u1,u2,...,un),每个用户都有2个用户向量表示
(
s
u
1
d
1
,
s
u
2
d
1
,
.
.
.
,
s
u
n
d
1
)
(\mathbf s_{u_1}^{d_1}, \mathbf s_{u_2}^{d_1}, ..., \mathbf s_{u_n}^{d_1})
(su1d1,su2d1,...,sund1)和
(
s
u
1
d
2
,
s
u
2
d
2
,
.
.
.
,
s
u
n
d
2
)
(\mathbf s_{u_1}^{d_2}, \mathbf s_{u_2}^{d_2}, ..., \mathbf s_{u_n}^{d_2})
(su1d2,su2d2,...,sund2).对于每个用户,例如
u
1
u_1
u1,计算
s
u
1
d
1
\mathbf s_{u_1}^{d_1}
su1d1和所有其他用户表示
s
u
j
d
1
\mathbf s_{u_j}^{d_1}
sujd1的相似性,定义为
s
i
m
(
s
u
1
d
1
,
s
u
j
d
1
)
sim(\mathbf s_{u_1}^{d_1} , \mathbf s_{u_j}^{d_1})
sim(su1d1,sujd1),那么会得到一个相似性的分布
P
(
s
u
1
d
j
;
w
)
=
s
o
f
t
m
a
x
(
s
i
m
(
s
u
1
d
1
,
s
u
2
d
1
)
,
.
.
.
,
s
i
m
(
s
u
1
d
1
,
s
u
n
d
1
)
)
j
=
1
,
2
P(s_{u_1}^{d_j};w) = softmax(sim(\mathbf s_{u_1}^{d_1} , \mathbf s_{u_2}^{d_1}), ..., sim(\mathbf s_{u_1}^{d_1} , \mathbf s_{u_n}^{d_1})) \ \ \ \ \ \ \ j = 1,2
P(su1dj;w)=softmax(sim(su1d1,su2d1),...,sim(su1d1,sund1)) j=1,2
那么也希望同一个用户的两个向量和其他用户对应的向量的相似性分布在向量空间的距离越近越好,也是用KL距离衡量这个距离。
L
D
R
=
1
2
(
D
K
L
(
P
(
s
u
d
1
;
w
)
∣
∣
P
(
s
u
d
2
;
w
)
)
+
D
K
L
(
P
(
s
u
d
2
;
w
)
∣
∣
P
(
s
u
d
1
;
w
)
)
)
L_{DR} = \frac {1} {2} ( D_{KL}( P(\mathbf s_u^{d_1};w) || P(\mathbf s_u^{d_2};w) ) + D_{KL}( P(\mathbf s_u^{d_2};w) || P(\mathbf s_u^{d_1};w) ) )
LDR=21(DKL(P(sud1;w)∣∣P(sud2;w))+DKL(P(sud2;w)∣∣P(sud1;w)))
Final loss
L
b
a
s
i
c
(
s
u
,
t
;
w
)
=
−
1
2
(
log
(
P
(
s
u
,
t
d
1
;
w
)
)
+
log
(
P
(
s
u
,
t
d
2
;
w
)
)
)
L_{basic}(\mathbf s_{u,t};w) = - \frac {1} {2} (\log (P(\mathbf s_{u,t}^{d_1};w)) + \log (P(\mathbf s_{u,t}^{d_2};w)) )
Lbasic(su,t;w)=−21(log(P(su,td1;w))+log(P(su,td2;w)))
L f i n a l = L b a s i c + α L R D + β L D R L_{final} = L_{basic} + \alpha L_{RD} + \beta L_{DR} Lfinal=Lbasic+αLRD+βLDR
这2个一致性约束从本质上讲其实是一种数据增强方式,和对比学习不同,对比学习一般是数据级增强,这个可以成为模型级增强,通过不同的Dropout参数生成不同的用户向量。那么也可以通过其他方式,比如说两个完全不同的encoder编码出2个不同的用户向量,然后也用一致性约束。还可以按不同的mask比例抽取用户序列生成不同的用户向量。不过可能要复杂些,Dropout是一种比较简单的方式。
实验部分
效果比较,论文提出的CTRec效果最好
消融实验
RD Objective 可以看到,不同的
α
\alpha
α下,增加RD loss效果都比基线好很多,论文说可能是因为RD Objective直接影响到了用户向量输出的概率分布。对于超参数
α
\alpha
α,数值越大,收益越大,到达2.0后再增大,收益反而变小,数值过大会影响大目标函数的主loss。
DR Objective可以看到在大部分
β
\beta
β值下,DR loss也是有增益的,说明对用户和其他用户的向量一起约束还是有效果的。同时对于超参数
b
e
t
a
beta
beta,大于0.3后开始随值的增大收益增大,数值到2.0后开始下降,也是过大的权重导致模型会在DR目标上面加强学习,反而会降低主目标的优化空间。
同时下图使用cosine和L2距离来衡量,相较于基线没有取得更好的收益,更加说明的使用论文提出的KL距离衡量是有益的。
Dropout Rates. Dropout的比例也做了分析,在0.6-0.7一般达到最佳,再增大就剧烈下降,数值过大信息损失过大,反而学不到啥。
论文比较了不同的数据一致性约束方法,包括对比学习的方式,验证CTRec的方式有效性。
更多个的一致性约束
论文还提到一个一致性约束,随机抽取用户序列中2个行为,让两个行为的Embedding距离在空间中尽可能相近,cosine距离约束,加到CTRec中,效果更好。