GDSRec: Graph-Based Decentralized Collaborative Filtering for Social Recommendation
(TKDE 2023)
采用数据集:
源码:https://github.com/MEICRS/GDSRec
一、提出问题
现有的基于图的推荐算法没有考虑到用户或者物品的评分偏好,比如说,一个挑剔的用户给一个物品较低的评分并仅仅是因为这个用户不喜欢这个物品,而是因为这个用户喜欢给物品打低分。而且,用户之间的社交关系应该随着用户相似度的不同而有着不同的强弱属性,因此更相似的用户在图卷积中的相互影响更大。
二、解决方案
首先根据静态的数据信息计算出每个用户对每个物品的偏置评分,然后赋予这个偏置评分一个embedding向量,将其与用户或者物品embedding融合后再进行训练。对于用户之间的社交连接,给了一个简单但是有效的评判其强弱的方式,提出了模型GDSRec。
三、具体过程
1. 社交边强弱评定
对于每一条社交边,根据其连接用户评分的相似度来判定该社交边的强弱,公式如下:
T
i
j
=
1
+
∑
v
k
∈
{
R
(
u
i
)
∩
R
(
u
j
)
}
I
(
∣
r
i
k
−
r
j
k
∣
≤
δ
)
T_{ij}=1+\sum_{v_k\in\{R(u_i)\cap R(u_j)\}}I(|r_{ik}-r_{jk}|\leq \delta)
Tij=1+vk∈{R(ui)∩R(uj)}∑I(∣rik−rjk∣≤δ)
其中,
R
u
i
R_{u_i}
Rui和
R
u
j
R_{u_j}
Ruj表示用户
u
i
u_i
ui和
u
j
u_j
uj交互过的物品,
r
i
k
r_{ik}
rik和
r
j
k
r_{jk}
rjk表示用户对物品
k
k
k的评分,
δ
\delta
δ为阈值,评分差小于该阈值认定是相似的,后续试验证明当
δ
\delta
δ取1时效果最好,
I
(
x
)
=
1
I(x)=1
I(x)=1表示当x满足条件,反之为0。
2. 用户model
为了考虑到用户的评分偏好,将评分偏好表示为一个向量,首先计算出用户对物品的评分差异:
r
‾
i
j
=
⌈
∣
r
i
j
−
E
(
v
j
)
∣
⌉
\overline{r}_{ij}=\lceil|r_{ij}-E(v_j)|\rceil
rij=⌈∣rij−E(vj)∣⌉
E
(
v
j
)
E(v_j)
E(vj)表示物品
v
j
v_j
vj的平均评分,采用了一个查找表,一个评分差异对应一个embedding表示为
s
r
‾
i
j
\mathbf{s}_{\overline{r}_{ij}}
srij,采用了向上取整是因为采用小数不方便(小数是无尽的),为了得到用户最终的向量,采用了如下公式:
h
u
i
=
T
a
n
h
(
W
⋅
G
I
(
{
x
i
l
,
∀
v
l
∈
R
(
u
i
)
}
)
+
b
)
\mathbf{h}_{u_i}=\mathrm{Tanh}(\mathbf{W}\cdot G_I(\{\mathbf{x}_{il},\forall v_l\in R(u_i)\})+\mathbf{b})
hui=Tanh(W⋅GI({xil,∀vl∈R(ui)})+b)
x i l = L U ( [ q v l ⊕ s r ‾ i j ] ) \mathbf{x}_{il}=L_U([\mathbf{q}_{v_l}\oplus \mathbf{s}_{\overline{r}_{ij}}]) xil=LU([qvl⊕srij])
其中,
x
i
l
\mathbf{x}_{il}
xil表示用户交互过的物品向量与用户的偏置评分向量的融合,
L
U
L_U
LU表示多层感知机,
G
I
G_I
GI表示物品的聚合操作:
G
I
(
{
x
i
l
,
∀
v
l
∈
R
(
u
i
)
}
)
=
∑
v
l
∈
R
(
u
i
)
η
i
l
x
i
l
G_I(\{\mathbf{x}_{il},\forall v_l\in R(u_i)\})=\sum_{v_l\in R(u_i)}\eta_{il}\mathbf{x}_{il}
GI({xil,∀vl∈R(ui)})=vl∈R(ui)∑ηilxil
η
i
l
\eta_{il}
ηil为注意力网络产生的权重参数。
3. 注意力网络
注意力网络采用一个两层的神经网络:
η
⋅
i
l
=
W
2
T
⋅
R
e
L
U
(
W
1
⋅
[
x
i
l
⊕
p
u
i
]
+
b
1
)
+
b
2
\overset{\cdot}{\eta}_{il}=\mathbf{W}_2^T\cdot \mathrm{ReLU}(\mathbf{W}_1\cdot[\mathbf{x}_{il}\oplus\mathbf{p}_{u_i}]+\mathbf{b}_1)+\mathbf{b}_2
η⋅il=W2T⋅ReLU(W1⋅[xil⊕pui]+b1)+b2
归一化:
η
i
l
=
e
x
p
(
η
⋅
i
l
)
∑
v
l
∈
R
(
u
i
)
e
x
p
(
η
⋅
i
l
)
\eta_{il}=\frac{exp(\overset{\cdot}{\eta}_{il})}{\sum_{v_l\in R(u_i)}exp(\overset{\cdot}{\eta}_{il})}
ηil=∑vl∈R(ui)exp(η⋅il)exp(η⋅il)
4. 物品model
对于物品
v
j
v_j
vj的表示,根据每个对该物品交互过的用户,对应的也有一个评分偏置:
r
‾
i
j
=
⌈
∣
r
i
j
−
E
(
u
i
)
∣
⌉
\overline{r}_{ij}=\lceil|r_{ij}-E(u_i)|\rceil
rij=⌈∣rij−E(ui)∣⌉
然后将该评分偏置对应的embedding与对应的用户embedding通过一个多层感知机结合:
y
j
k
=
L
I
(
[
p
u
k
⊕
s
r
‾
k
j
]
)
\mathbf{y}_{jk}=L_I([\mathbf{p}_{u_k}\oplus \mathbf{s}_{\overline{r}_{kj}}])
yjk=LI([puk⊕srkj])
因此最终的物品向量表示为:
h
v
j
=
T
a
n
h
(
W
⋅
G
U
(
{
y
j
k
,
∀
u
k
∈
R
(
v
j
)
}
)
+
b
)
\mathbf{h}_{v_j}=\mathrm{Tanh}(\mathbf{W}\cdot G_U(\{\mathbf{y}_{jk},\forall u_k\in R(v_j)\})+\mathbf{b})
hvj=Tanh(W⋅GU({yjk,∀uk∈R(vj)})+b)
G U ( { y j k , ∀ u k ∈ R ( v j ) } ) = ∑ u k ∈ R ( v j ) ϵ j k y j k G_U(\{\mathbf{y}_{jk},\forall u_k\in R(v_j)\})=\sum_{u_k\in R(v_j)}\epsilon_{jk}\mathbf{y}_{jk} GU({yjk,∀uk∈R(vj)})=uk∈R(vj)∑ϵjkyjk
采用注意力机制:
ϵ
⋅
j
k
=
W
2
T
⋅
R
e
L
U
(
W
1
⋅
[
y
j
k
⊕
q
v
j
]
+
b
1
)
+
b
2
\overset{\cdot}{\epsilon}_{jk}=\mathbf{W}_2^T\cdot \mathrm{ReLU}(\mathbf{W}_1\cdot[\mathbf{y}_{jk}\oplus\mathbf{q}_{v_j}]+\mathbf{b}_1)+\mathbf{b}_2
ϵ⋅jk=W2T⋅ReLU(W1⋅[yjk⊕qvj]+b1)+b2
5. 社交model
这个模块与用户model的过程相似,主要作用是帮助用户做后续的评分预测用。
6. 评分预测
预测评分表示为:
r
^
i
j
=
1
2
[
E
(
u
i
)
+
E
(
v
j
)
]
+
f
(
u
i
,
v
j
)
\hat{r}_ {ij}=\frac{1}{2}[E(u_i)+E(v_j)]+f(u_i,v_j)
r^ij=21[E(ui)+E(vj)]+f(ui,vj)
E
(
u
i
)
E(u_i)
E(ui)和
E
(
v
j
)
E(v_j)
E(vj)表示用户
u
i
u_i
ui和物品
v
j
v_j
vj的平均评分,
f
(
u
i
,
v
j
)
f(u_i,v_j)
f(ui,vj)表示如下。采用了与用户相邻的用户对物品的评分做辅助:
f
(
u
i
,
v
j
)
=
1
2
(
r
i
j
p
+
∑
u
k
∈
N
(
u
i
)
λ
i
k
r
k
j
p
)
f(u_i,v_j)=\frac{1}{2}(r_{ij}^p+\sum_{u_k\in N(u_i)}\lambda_{ik}r^p_{kj})
f(ui,vj)=21(rijp+uk∈N(ui)∑λikrkjp)
其中
λ
i
k
=
T
i
k
∑
u
k
∈
N
(
u
i
)
T
i
k
\lambda_{ik}=\frac{T_{ik}}{\sum_{u_k\in N(u_i)}T_{ik}}
λik=∑uk∈N(ui)TikTik
为了计算用户与物品之间的评分,采用三层神经网络:
z
1
=
T
a
n
h
(
W
1
⋅
[
h
u
i
⊕
h
v
j
]
+
b
2
)
\mathbf{z}_1=\mathrm{Tanh}(\mathbf{W}_1\cdot[\mathbf{h}_{u_i}\oplus \mathbf{h}_{v_j}]+\mathbf{b}_2)
z1=Tanh(W1⋅[hui⊕hvj]+b2)
z 2 = T a n h ( W 2 ⋅ z 1 + b 2 ) \mathbf{z}_2=\mathrm{Tanh}(\mathbf{W}_2\cdot \mathbf{z}_1+\mathbf{b}_2) z2=Tanh(W2⋅z1+b2)
r i j p = w T ⋅ z 2 r^p_{ij}=\mathbf{w}^T\cdot\mathbf{z}_2 rijp=wT⋅z2
四、实验结果
60%指训练集、验证集和测试集比例为6:2:2,80%指训练集、验证集和测试集比例为8:1:1。