推荐系统读书笔记(三):MCCLK——知识感知推荐系统的多层次视图交叉对比学习
收录会议:SIGIR 2022
原文:https://arxiv.org/pdf/2204.08807
ABSTRACT
背景及问题:在知识图谱在推荐系统中扮演越来越重要角色的同时, GNN也逐渐成为知识感知推荐(KGR)的主题,但是传统的基于GNN的KGR模型有个缺点——监督信号稀疏。
Idea:于是,受到对比学习在从数据本身挖掘有监督信号方面的成功的启发,本文作者专注于探索对比学习与KGR的结合,并提出了MCCLK。
模型(结构)概述:与传统对比学习方法通过统一的数据增强方案(如腐败或下降)生成两个图视图不同,作者综合考虑了三种不同的图视图,包括全局级结构视图、局部级协同视图和语义视图。具体而言,我们将UI二部图视为协同视图,将物品-实体图视为语义视图(用k-近邻来捕捉以往工作中经常忽略的物品与物品的语义关系),将用户-物品-实体图视为全局结构视图(具体为啥要这样建模,先按下不表)。在局部和全局层面上跨三个视图进行对比学习,以自监督的方式挖掘综合图特征和结构信息。
KEYWORDS
图神经网络,对比学习,知识图,推荐系统,多视图图学习
1 INTRODUCTION
传统方法面临的问题:
-
原始的CF:把每一个UI交互视为一个独立的实例,存在严重的冷启动问题——用KG来整合侧信息
-
改进1-KGR:所用的预训练实体嵌入以进行item表示学习的方法,也只会单独地处理每个item-entity关系,无法为item表示提取足够的协同信号——用基于连接(connection-based)的方法来对U-I-E的连接进行建模,其又分为基于路径(path-based)和基于GNN
-
改进2.1-基于路径:捕获KG的长程结构来丰富用户与物品之间的交互,严重依赖于手工设计的元路径,因此在现实中很难优化(直接寄)。
改进2.2-基于GNN:作为一种信息聚合范式,将多跳邻居集成到节点的嵌入表示中,但由于相互作用的极端稀疏性,存在很大的稀疏监督信号问题和随着嵌入分布不合理导致的退化问题——用自监督学习来缓解监督信号稀疏问题
引入的创新点:自监督学习可以弥补训练标签的不足,因为其强大的从无标签样本数据中学习判别嵌入的能力,通过最大化负样本之间的距离,最小化正样本之间的距离。
难点:
-
图是异构的,如何设计一个合适的对比机制?
需要同时处理多种类型的节点(用户、物品和实体)和关系(用户-物品、物品-实体等)——需要考虑全局、协同、语义这三个方面
-
对比学习应当在什么视图上进行对比?
只考虑KGR的全局视图的话,很难充分利用丰富的协同和语义信息进行推荐——在同一层次上进行简单的对比是不可行的,因此需要一种多层次的跨视图对比机制。
模型设计思路:
本文强调所设计的模型应该以更细粒度的方式探索更多的图视图。
为此,本文提出了一种基于自监督学习范式的知识感知推荐系统的多层次视图交叉对比学习模型(简称MCCLK),以充分利用KG上丰富的协同和语义信息以及KGR上的UI交互信息。
具体如下图所示,全面考虑三个互补的图视图:UI二部图——(局部)协同视图,物品-实体图——(局部)语义视图,用户-物品-实体图——(全局)结构视图。
在此基础上,提出了一种新型的多层级跨视图对比学习机制,实现了协同视图与语义视图之间的局部级对比学习,全局视图与局部视图之间的全局级对比学习。
特别地,在前人工作鲜有涉足的语义视图中,还提出了一个有效的k-近邻的物品-物品语义图构建模块,配备了一个关系感知GNN,用于显式地考虑来自知识信息的物品-物品语义相似性。此外,每个图视图采用基于GNN的自适应图编码器,根据视图的特点强调图信息的不同部分。
2 RELATED WORK
2.1 知识感知推荐
基于嵌入的方法——使用知识图嵌入(KGE)对KG进行预处理,然后将学习到的实体、关系嵌入纳入推荐中——更侧重于建模严格的语义相关性,更适合链路预测而不是推荐(CKE、KTUP、RippleNet)
基于路径的方法——捕获KG的长程结构来丰富用户与物品之间的交互——严重依赖于手动设计的元路径(PER、KPRN)
基于GNN的方法——是基于图神经网络(GNNs)的信息聚合机制——都在稀疏图上采用监督学习(KGAT、KGIN)
2.2 对比学习
DGI首先在图表示学习中采用了Infomax,并着重对比了局部节点嵌入和全局图嵌入。
GMI从节点特征和拓扑结构两方面对中心节点和局部节点进行对比。
MVGRL从两个结构图视图学习节点级和图级节点表示,并在两个图视图之间对比编码嵌入。
HeCo提出从网络模式视图和元路径视图学习节点表示,并在两者之间进行对比学习。
SGL对原始图和损坏图进行UI交互的对比学习。
共性:都没把对比学习和知识感知推荐结合起来
3 PROBLEM FORMULATION
此部分给出UI二部图和知识图谱的定义,以及交代知识感知推荐的具体任务
UI二部图(User-Item Bipartite Graph)
用于描述user与item之间有无交互
Y
=
{
(
u
,
y
u
i
,
i
)
∣
u
∈
U
,
i
∈
I
)
}
y
u
i
=
{
1
u
、
i
有
交
互
0
u
、
i
无
交
互
Y = \{(u,y_{ui}, i)|u ∈ U, i ∈ I)\}\\ y_{ui}=\left\{ \begin{array}{rcl} 1 & & {u、i有交互}\\ 0 & & {u、i无交互} \end{array} \right.
Y={(u,yui,i)∣u∈U,i∈I)}yui={10u、i有交互u、i无交互
知识图谱(Knowledge Graph)
用于给item添加属性和外部知识,为有向图,
G
=
{
(
h
,
r
,
t
)
∣
h
,
t
∈
E
,
r
∈
R
}
G=\{(h, r, t)|h, t∈\Epsilon , r∈R\}
G={(h,r,t)∣h,t∈E,r∈R}
此外,还建立了一组UI对齐
A
=
{
(
i
,
e
)
∣
i
∈
I
,
e
∈
E
}
A = \{(i, e)|i∈I, e∈E\}
A={(i,e)∣i∈I,e∈E}
其中
(
i
,
e
)
(i, e)
(i,e)表示物品
i
i
i可以与KG中的实体
e
e
e对齐
任务陈述
已知UI二部图 Y Y Y和知识图谱 G G G,学习一个函数,该函数可以预测用户会和物品产生交互的可能性。
4 METHODOLOGY
下图为MCCLK的流程图,主要包括三个部分:
-
多视图生成——生成全局级结构视图、局部级协同视图和语义视图。为了探索语义视图,还提出了一个关系感知GNN构造了一个物品-物品语义图。
-
局部对比学习——使用LightGCN对协同视图和语义视图进行编码,然后在两个视图之间进行跨视图对比学习,学习局部层次的综合节点嵌入。
-
全局对比学习——使用路径感知GNN对结构视图进行编码,然后在全局视图和局部视图之间进行交叉视图对比学习,以学习全局级别的判别节点嵌入。
4.1 多视图生成
将用户-物品-实体(U-I-E)图分解成UI二部图(看做协同视图,挖掘物品之间协同关系)和IE二部图(看做语义视图,探索物品之间的语义相似性)。
并且还建立了一个k-近邻物品-物品语义图(用知识感知聚合机制来保存邻居实体和关系信息)
对于这个物品-物品语义图的生成,具体来讲,是在KG上递归
K
′
K'
K′次,进行关系感知聚合如下:
e
i
(
k
+
1
)
=
1
∣
N
i
∣
∑
(
r
,
v
)
∈
N
i
e
r
⊙
e
v
(
k
)
,
e
v
(
k
+
1
)
=
1
∣
N
v
∣
(
∑
(
r
,
v
)
∈
N
i
e
r
⊙
e
v
(
k
)
+
∑
(
r
,
i
)
∈
N
v
e
r
⊙
e
i
(
k
)
)
e^{(k+1)} _i = \frac{1}{|N_i|}\sum_{(r,v)∈N_i} e_r ⊙ e^{(k)}_v,\\ e_v^{(k+1)} = \frac{1}{|N_v|}(\sum_{(r,v)∈N_i} e_r ⊙ e^{(k)}_v + \sum_{(r,i)∈N_v} e_r ⊙ e^{(k)}_i)
ei(k+1)=∣Ni∣1(r,v)∈Ni∑er⊙ev(k),ev(k+1)=∣Nv∣1((r,v)∈Ni∑er⊙ev(k)+(r,i)∈Nv∑er⊙ei(k))
其中,
e
i
(
k
)
e^{(k)}_i
ei(k)和
e
v
(
k
)
e^{(k)}_v
ev(k)是物品和实体
(
k
−
1
)
(k-1)
(k−1)跳邻居的嵌入表示;
e
r
⊙
e
v
(
k
)
e_r ⊙ e^{(k)}_v
er⊙ev(k)表示三元组
(
i
,
r
,
v
)
(i,r,v)
(i,r,v)的关系信息(relational message)
紧接着,在全连接物-物图上进行k近邻稀疏化以简化计算、减少噪声:
S
^
i
j
=
{
S
i
j
,
S
i
j
∈
t
o
p
−
k
(
S
i
)
0
,
o
t
h
e
r
w
i
s
e
\hat{S}_{ij} = \left\{\begin{aligned} S_{ij},\ \ \ \ \ \ S_{ij}∈top-k(S_i)\\ 0, \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ otherwise \end{aligned}\right.
S^ij={Sij, Sij∈top−k(Si)0, otherwise
再把稀疏化后的邻接矩阵归一化以防止梯度爆炸:
S
~
=
(
D
)
−
1
2
S
^
(
D
)
−
1
2
\tilde{S} = (D)^{-\frac{1}{2}}\hat{S}(D)^{-\frac{1}{2}}
S~=(D)−21S^(D)−21
其中
D
∈
R
N
×
N
D∈\mathbb{R}^{N×N}
D∈RN×N是对角度(diagonal degree)矩阵
4.2 局部对比学习
一句话,基于协作视图和语义视图进行编码表示(LightGCN)并在它们之间执行对比学习以自监督方式迭代表示。
4.2.1 协作视图编码
对协作信号用LightGCN来编码,包含简单的消息传递和聚合机制,轻便又不失全面。
公式:
e
u
(
k
+
1
)
=
∑
i
∈
N
u
1
∣
N
u
∣
∣
N
i
∣
e
i
(
k
)
e
i
(
k
+
1
)
=
∑
i
∈
N
i
1
∣
N
u
∣
∣
N
i
∣
e
u
(
k
)
e^{(k+1)}_u = \sum_{i ∈N_u} \frac{1}{\sqrt{|N_u | |N_i |} }e^{(k)} _i\\ e^{(k+1)}_i = \sum_{i ∈N_i} \frac{1}{\sqrt{|N_u | |N_i |} }e^{(k)} _u
eu(k+1)=i∈Nu∑∣Nu∣∣Ni∣1ei(k)ei(k+1)=i∈Ni∑∣Nu∣∣Ni∣1eu(k)
把不同层的表示进行相加(丰富嵌入信息的同时还可以控制K)得U、I最后的表示:
z
u
c
=
e
u
(
0
)
+
⋅
⋅
⋅
+
e
u
(
K
)
z
i
c
=
e
i
(
0
)
+
⋅
⋅
⋅
+
e
i
(
K
)
z_u^c = e^{(0)}_u + · · · + e_u^{(K)}\\ z_i^c = e^{(0)}_i + · · · + e_i^{(K)}
zuc=eu(0)+⋅⋅⋅+eu(K)zic=ei(0)+⋅⋅⋅+ei(K)
求解:这里它求
∑
\sum
∑时咋不像LightGCN那样再用个
α
k
α_k
αk加权?欢迎大佬们留盐指教
4.2.2 语义视图编码
在构建了物品-物品语义图之后,在其上采用了LightGCN进行 L L L次聚合操作,通过向嵌入中注入物-物相关性来学习更好的物品表示。
公式:
e
i
(
l
+
1
)
=
∑
j
∈
N
(
i
)
S
~
e
j
(
l
)
e_i^{(l+1)} = \sum_{j∈N(i)}\tilde{S}e_j^{(l)}
ei(l+1)=j∈N(i)∑S~ej(l)
其中
S
~
\tilde{S}
S~就是在4.1里面提到的稀疏且归一后的邻接矩阵;初始嵌入
e
j
(
0
)
e_j^{(0)}
ej(0)就是物品对应id的嵌入表示。
同样,也对每一层的进行相加得到每个物品在语义视图下的表示:
z
i
s
=
e
i
(
0
)
+
⋅
⋅
⋅
+
e
i
(
L
)
z_i^s = e^{(0)}_i + · · · + e_i^{(L)}
zis=ei(0)+⋅⋅⋅+ei(L)
4.2.3 局部横向对比优化
此部分将 z i s z_i^s zis和 z i c z_i^c zic进行横向对比学习。
为了将它们映射到计算对比损失的空间,嵌入首先被馈送到具有一个隐藏层的MLP中:
z
i
c
_
p
=
W
(
2
)
σ
(
W
(
1
)
z
i
c
+
b
(
1
)
)
+
b
(
2
)
,
z
i
s
_
p
=
W
(
2
)
σ
(
W
(
1
)
z
i
s
+
b
(
1
)
)
+
b
(
2
)
z_i^c\_p = W^{(2)}σ(W^{(1)}z_i^c+b^{(1)}) + b^{(2)},\\ z_i^s\_p = W^{(2)}σ(W^{(1)}z_i^s+b^{(1)}) + b^{(2)}
zic_p=W(2)σ(W(1)zic+b(1))+b(2),zis_p=W(2)σ(W(1)zis+b(1))+b(2)
其中
W
(
⋅
)
∈
R
d
×
d
W^{(·)}∈\mathbb{R}^{d×d}
W(⋅)∈Rd×d和
b
(
⋅
)
∈
R
d
×
1
b^{(·)}∈\mathbb{R}^{d×1}
b(⋅)∈Rd×1都是可训练参数,
σ
σ
σ是非线性激活函数ELU。
然后定义了正负样本:对于一个视图中的任何节点,由另一个视图学习的相同节点嵌入形成正样本;除了它之外的节点嵌入自然被视为负样本。
对比损失函数如下(地狱绘图#1):
可以发现,负样本有两个来源:视图内(intra-view)和视图间(inter-view),前者即只比较语义视图内的节点
4.3 全局对比学习
局部对比学习充分探索了UI信息,但但尚未探索完整的图形结构(U-I-E)信息
因此引入了全局对比学习,使用路径感知编码器(基于GNN)探索结构视图,然后在全局级和局部级视图之间执行对比学习。
4.3.1 结构视图编码
本文设计了基于路径感知的GNN,在对邻居信息聚合 L ′ L' L′次的同时,还保留了路径信息。
公式:
e
u
(
l
+
1
)
=
1
∣
N
u
∣
∑
i
∈
N
u
e
i
(
l
)
,
e
i
(
l
+
1
)
=
1
∣
N
i
∣
∑
(
r
,
v
)
∈
N
i
β
(
i
,
r
,
v
)
e
r
⊙
e
v
(
l
)
e^{(l+1)}_u = \frac{1}{|N_u | }\sum_{i ∈N_u} e^{(l)} _i,\\ e_i^{(l+1)} = \frac{1}{|N_i|}\sum_{(r,v)∈N_i}β(i,r,v)e_r⊙e_v^{(l)}
eu(l+1)=∣Nu∣1i∈Nu∑ei(l),ei(l+1)=∣Ni∣1(r,v)∈Ni∑β(i,r,v)er⊙ev(l)
为了给实体及关系加权,注意力权值β公式如下:
β
(
i
,
r
,
v
)
=
s
o
f
t
m
a
x
(
e
i
∣
∣
e
r
)
⊤
⋅
(
e
v
∣
∣
e
r
)
=
e
x
p
(
(
e
i
∣
∣
e
r
)
⊤
⋅
(
e
v
∣
∣
e
r
)
)
∑
(
v
′
,
r
)
∈
N
^
(
i
)
e
x
p
(
(
e
i
∣
∣
e
r
)
⊤
⋅
(
e
v
′
∣
∣
e
r
)
)
β(i,r,v) = softmax(e_i||e_r)^⊤·(e_v||e_r)\\ = \frac{exp((e_i||e_r)^⊤·(e_v||e_r))}{\sum_{(v',r)∈\hat{N}(i)}exp((e_i||e_r)^⊤·(e_{v'}||e_r))}
β(i,r,v)=softmax(ei∣∣er)⊤⋅(ev∣∣er)=∑(v′,r)∈N^(i)exp((ei∣∣er)⊤⋅(ev′∣∣er))exp((ei∣∣er)⊤⋅(ev∣∣er))
其中,
∣
∣
||
∣∣是连接运算,
N
^
(
i
)
\hat{N}(i)
N^(i)是物品
i
i
i及其邻居的集合
最后把所有层的嵌入加起来得到用户和物品的全局嵌入:
z
u
g
=
e
u
(
0
)
+
⋅
⋅
⋅
+
e
u
(
L
′
)
z
i
g
=
e
i
(
0
)
+
⋅
⋅
⋅
+
e
i
(
L
′
)
z_u^g = e^{(0)}_u + · · · + e_u^{(L')}\\ z_i^g = e^{(0)}_i + · · · + e_i^{(L')}
zug=eu(0)+⋅⋅⋅+eu(L′)zig=ei(0)+⋅⋅⋅+ei(L′)
4.3.2全局横向对比优化
同理,把
z
u
g
z_u^g
zug和
z
i
g
z_i^g
zig映射到能计算对比损失的空间里面:
z
i
g
_
p
=
W
(
2
)
σ
(
W
(
1
)
z
i
g
+
b
(
1
)
)
+
b
(
2
)
,
z
i
l
_
p
=
W
(
2
)
σ
(
W
(
1
)
(
z
i
s
+
z
i
c
)
+
b
(
1
)
)
+
b
(
2
)
z_i^g\_p = W^{(2)}σ(W^{(1)}z_i^g+b^{(1)}) + b^{(2)},\\ z_i^l\_p = W^{(2)}σ(W^{(1)}(z_i^s+z_i^c)+b^{(1)}) + b^{(2)}
zig_p=W(2)σ(W(1)zig+b(1))+b(2),zil_p=W(2)σ(W(1)(zis+zic)+b(1))+b(2)
局部和全局物品(用户)对比损失函数
L
i
l
L_i^l
Lil和
L
i
g
L_i^g
Lig(
L
u
l
L_u^l
Lul和
L
u
g
L_u^g
Lug同理)公式(地狱绘图#2):
总的全局损失函数如下:
L
g
l
o
b
a
l
=
1
2
N
∑
i
=
1
N
(
L
i
g
+
L
i
l
)
+
1
2
M
∑
i
=
1
M
(
L
u
g
+
L
u
l
)
L^{global} = \frac{1}{2N}\sum^N_{i=1}(L_i^g + L_i^l) + \frac{1}{2M}\sum^M_{i=1}(L_u^g + L_u^l)
Lglobal=2N1i=1∑N(Lig+Lil)+2M1i=1∑M(Lug+Lul)
4.4 模型预测
把之前学习到的用户、物品嵌入做整合,再融合计算得到打分预测。
对于用户
u
u
u,我们现在有
z
u
c
z^c_u
zuc和
z
u
g
z_u^g
zug;
对于物品 i i i,我们现在有 z i c z^c_i zic, z i s z_i^s zis和 z i g z_i^g zig,
则定义预测
y
^
(
u
,
i
)
\hat{y}(u,i)
y^(u,i)如下:
z
u
∗
=
z
u
g
∣
∣
z
u
c
,
z
i
∗
=
z
i
g
∣
∣
(
z
i
c
+
z
i
s
)
,
y
^
(
u
,
i
)
=
z
u
∗
⊤
z
i
∗
z^*_u = z^g_u||z^c_u,\\ z^*_i = z^g_i||(z^c_i + z^s_i),\\ \hat{y}(u,i) = {z^*_u}^⊤ z^*_i
zu∗=zug∣∣zuc,zi∗=zig∣∣(zic+zis),y^(u,i)=zu∗⊤zi∗
4.5 多任务训练
多任务训练目的:为了将推荐任务与自我监督任务相结合
对于KG感知推荐——用BPR损失 L B P R = ∑ ︁ ( u , i , j ) ∈ O − l n σ ( y ^ ( u , i ) − y ^ ( u , j ) ) L_{BPR} = ∑︁_{(u,i,j) ∈O} {- ln σ (\hat{y}(u,i) − \hat{y}(u,j) }) LBPR=∑︁(u,i,j)∈O−lnσ(y^(u,i)−y^(u,j))来提高正样本权值
最终损失函数如下:
L
M
C
C
L
K
=
L
B
P
R
+
β
(
α
L
l
o
c
a
l
+
(
1
−
α
)
L
g
l
o
b
a
l
)
+
λ
∣
∣
Θ
∣
∣
2
2
L_{MCCLK} = L_{BPR} + β(αL^{local}+ (1 − α)L^{global} ) + λ||\Theta||^2_2
LMCCLK=LBPR+β(αLlocal+(1−α)Lglobal)+λ∣∣Θ∣∣22
其中
Θ
Θ
Θ是模型参数集,
α
α
α是跷跷板数,即确定局部-全局对比损失比率的超参数,
β
β
β和
λ
λ
λ是分别控制对比损失和
L
2
L_2
L2正则化项的两个超参数。
5 EXPERIMENT
数据集及超参数一览:
传统艺能灵魂四问(有人怀疑之前不是我写的?那用方言证明一哈):
RQ1:MCCLK给比其他模型拽?
RQ2:局部对比学习和全局对比学习给有必要都整?
RQ3:不同的超参数对MCCLK性能影响咋个样?
RQ4:自我监督任务能改善表征学习,真呢该?
5.1 性能比较(RQ1)
Baseline | 所用方法 |
---|---|
BPRMF | 经典CF+BPR损失 |
CKE | 多知识图嵌入 |
RippleNet | 涟漪式传播KG图嵌入 |
PER | 元路径 |
KGCN | GNN |
KGNN-LS | GNN+标签平滑 |
KGAT | GNN+知识感知注意 |
KGIN | GNN+用户意图分解 |
下图(表)展示性能比较结果:
显而易见:
-
MCCLK在所有度量方面始终优于三个数据集的所有Baseline,得益于——
① 对语义和协作信号的捕捉更到位
② 全局对比机制保留了来自两级自识别的结构和特征信息,捕获了更全面的信息。
-
KG 让推荐系统如虎添翼——CKE比MF强
-
捕捉路径信息也很重要——PER竟然比MF还菜
-
GNN 牛逼——有GNN的都比之前的强,完美阐释建模远程连通性和聚合机制对于图表示学习的重要性
5.2 消融实验(RQ2)
M C C L K w / o G MCCLK_{w/o \ G} MCCLKw/o G阉割了全局对比学习, M C C L K w / o L MCCLK_{w/o \ L} MCCLKw/o L阉割了局部对比学习。
从上图可知,没了二者之一,模型性能直接断崖式下跌:
- 移除全局对比,对全局图结构的记录没了;
- 移除局部对比,无法捕捉协作、语义信号。
5.3 调参(RQ3)
本文调优的超参数有:
-
语义视图聚合层数 L L L
-
全局结构视图聚合层数 L ′ L' L′
-
局部-全局对比损失加权跷跷板数 α α α
-
对比损失加权参数 β β β
5.4 可视化(RQ4)
为了评估对比机制是否影响表征学习性能,本文采用SVD分解来预测学习的物品嵌入到二维图中,并给出正则化的奇异值。
从中我们可以得到以下观察结果:
- MCCLK的数据分布更广,因此能够表示不同的节点特征信息,体现出更好的表示学习和缓解表示退化问题方面的优势。
- 把MCCLK及其阉割版作比较可以发现,去除局部或全局的对比损失会使所学习的嵌入更加难以区分,这表明多层次的交叉视图对比学习机制雀食能增强表示学习的有效性和鲁棒性。
6 CONCLUSION
本文专注于探索基于知识图谱知识感知和对比学习融合在推荐系统的运用,以自我监督的方式提高用户-物品表示学习的质量。
MCCLK从两个维度实现了更好的用户/物品表示学习:
(1)MCCLK从全局结构视图、局部协作视图和语义视图三个角度考虑,并显式地构建了一个k近邻物品-物品语义图用于挖掘其语义相似性。
(2) MCCLK在三个视图之间执行多层次的交叉视图对比学习,探索特征和结构信息,并进一步学习表示。
参考:自己码的,除原文献外无任何参考!