本文发表在KDD 2021上
在LR-GCCF和LightGCN的基础上,同时结合了 left normalization (给不同的邻居分配相等的归一化,PinSAGE)和 symmetric normalization (degree大的邻居分配小权重,LightCGN)
基于GCN的模型在浅层就达到了最佳性能,这就没有使用到高阶信号
加入残差连接和整体连接(holistic connection)。
提出的模型能将图卷积加深至8层。
基于GCN的模型,对于聚合邻域信息使用的是一样的归一化规则,使得邻居的重要性变得同等重要
包括三个主要组成:
每层的线性聚合可以表示为残差连接,公式如下:
h u ( l + 1 ) = ∑ v ∈ N u A ~ u v h v ( l ) + h u ( l ) , h u ( 0 ) = e u h_{u}^{(l+1)}=\sum_{v \in N_{u}} \tilde{A}_{u v} h_{v}^{(l)}+h_{u}^{(l)}, \quad h_{u}^{(0)}=e_{u} hu(l+1)=v∈Nu∑A~uvhv(l)+hu(l),hu(0)=eu
h v ( l + 1 ) = ∑ u ∈ N v A ~ v u h u ( l ) + h v l , h v ( 0 ) = e v h_{v}^{(l+1)}=\sum_{u \in N_{v}} \tilde{A}_{v u} h_{u}^{(l)}+h_{v}^{l}, \quad h_{v}^{(0)}=e_{v} hv(l+1)=u∈Nv∑A~vuhu(l)+hvl,hv(0)=ev
在经过L层的聚合后,使用整体连接把所有层的表示进行整合,模型使用基于元素的平均聚合作为最后一层的融合策略。公式如下:
e u ∗ = 1 L + 1 ∑ i = 0 L h u ( i ) e_{u}^{*}=\frac{1}{L+1} \sum_{i=0}^{L} h_{u}^{(i)} eu∗=L+11i=0∑Lhu(i)
e v ∗ = 1 L + 1 ∑ j = 0 L h v ( j ) e_{v}^{*}=\frac{1}{L+1} \sum_{j=0}^{L} h_{v}^{(j)} ev∗=L+11j=0∑Lhv(j)
(这一部分的作用有待商讨,见最后实验)
以user节点为例,对称归一化的公式如下:
h u ( l + 1 ) = ∑ v ∈ N u 1 ∣ N u ∣ ∣ N v ∣ h v ( l ) + h u ( l ) \mathbf{h}_{u}^{(l+1)}=\sum_{v \in N_{u}} \frac{1}{\sqrt{\left|N_{u}\right|} \sqrt{\left|N_{v}\right|}} \mathbf{h}_{v}^{(l)}+\mathbf{h}_{u}^{(l)} hu(l+1)=v∈Nu∑∣Nu∣∣Nv∣1hv(l)+hu(l)
左归一化的公式如下:
h u ( l + 1 ) = ∑ v ∈ N u 1 ∣ N u ∣ h v ( l ) + h u ( l ) h_{u}^{(l+1)}=\sum_{v \in N_{u}} \frac{1}{\left|N_{u}\right|} h_{v}^{(l)}+h_{u}^{(l)} hu(l+1)=v∈Nu∑∣Nu∣1hv(l)+hu(l)
为结合两种归一化的优点,最简单就是平均加和,复杂一点,加权平均,加上Attention
h N u , L N ( l ) \mathbf{h}_{N_{u}, L N}^{(l)} hNu,LN(l)和 h N u , S N ( l ) \mathbf{h}_{N_{u}, S N}^{(l)} hNu,SN(l),表示左归一化和对称归一化,以用户节点为例,节点更新公式如下:
h N u , L N ( l + 1 ) = ∑ v ∈ N u 1 ∣ N u ∣ h v ( l ) h_{N_{u}, L N}^{(l+1)}=\sum_{v \in N_{u}} \frac{1}{\left|N_{u}\right|} h_{v}^{(l)} hNu,LN(l+1)=v∈Nu∑∣Nu∣1hv(l)
h N u , S N ( l + 1 ) = ∑ v ∈ N u 1 ∣ N u ∣ ∣ N v ∣ h v ( l ) \mathbf{h}_{N_{u}, S N}^{(l+1)}=\sum_{v \in N_{u}} \frac{1}{\sqrt{\left|N_{u}\right|} \sqrt{\left|N_{v}\right|}} \mathbf{h}_{v}^{(l)} hNu,SN(l+1)=v∈Nu∑∣Nu∣∣Nv∣1hv(l)
h u ( l + 1 ) = h u ( l ) + α u , L N ( l + 1 ) h N u , L N ( l + 1 ) + α u , S N ( l + 1 ) h N u , S N ( l + 1 ) \mathbf{h}_{u}^{(l+1)}=\mathbf{h}_{u}^{(l)}+\alpha_{u, L N}^{(l+1)} \mathbf{h}_{N_{u}, L N}^{(l+1)}+\alpha_{u, S N}^{(l+1)} \mathbf{h}_{N_{u}, S N}^{(l+1)} hu(l+1)=hu(l)+αu,LN(l+1)hNu,LN(l+1)+αu,SN(l+1)hNu,SN(l+1)
其中, α u , ∗ l \alpha_{u, *}^{l} αu,∗l表示不同层的归一化注意力分数。
计算注意分数时,考虑了两个方面:
注意力网络的公式如下:
z u , ∗ ( l + 1 ) = W 1 ( l ) σ ( W 2 ( l ) ( h N u , ∗ ( l + 1 ) + h N u , ∗ ( l + 1 ) ⊙ h u ( l ) ) ) z_{u, *}^{(l+1)}=\mathbf{W}_{1}^{(l)} \sigma\left(\mathbf{W}_{2}^{(l)}\left(\mathbf{h}_{N_{u, *}}^{(l+1)}+\mathbf{h}_{N_{u}, *}^{(l+1)} \odot \mathbf{h}_{u}^{(l)}\right)\right) zu,∗(l+1)=W1(l)σ(W2(l)(hNu,∗(l+1)+hNu,∗(l+1)⊙hu(l)))
其中, z u , ∗ ( l + 1 ) z_{u,*}^{(l+1)} zu,∗(l+1)是归一化之前的注意力评分, W 1 ( l ) ∈ R 1 × d t , W 2 ( l ) ∈ R d t × d l W_1^{(l)}\in \mathbb{R}^{1\times d^t},W_2^{(l)}\in \mathbb{R}^{d^t\times d^l} W1(l)∈R1×dt,W2(l)∈Rdt×dl是特征变换矩阵, σ \sigma σ是激活函数, d t d^t dt是注意力网络的隐藏层的维数。 ⊙ \odot ⊙表示哈达玛积,对应位置的元素相乘。
结果实验上训不起来无法收敛,换了一个简单的,去除了特征变换矩阵和激活函数,使用平均聚合,得到简化的注意力网络如下:
z u , ∗ ( l + 1 ) = ave ( h N u , ∗ ( l + 1 ) + h N u , ∗ ( l + 1 ) ⊙ h u ( l ) ) z_{u, *}^{(l+1)}=\operatorname{ave}\left(\mathbf{h}_{N_{u}, *}^{(l+1)}+\mathbf{h}_{N_{u}, *}^{(l+1)} \odot \mathbf{h}_{u}^{(l)}\right) zu,∗(l+1)=ave(hNu,∗(l+1)+hNu,∗(l+1)⊙hu(l))
之后使用Softmax函数得到 α \alpha α,公式如下:
α u , ∗ ( l ) = e x p ( z u , ∗ ( l ) ) ∑ k ∈ L N , S N e x p ( z u , k ( l ) ) \alpha_{u,*}^{(l)}=\frac{exp(z_{u,*}^{(l)})}{\sum_{k\in {LN,SN}}exp(z_{u,k}^{(l)})} αu,∗(l)=∑k∈LN,SNexp(zu,k(l))exp(zu,∗(l))
损失函数为BPR loss
文章还考虑到了推荐结果的多样性,结果如下图:
不同归一化方案在GCN上的效果:
可以看出
消融实验:
总结:
文章从准确度和多样性的角度探索了左归一化和对称归一化的效果。作者能提出这种想法,是跳出了GCN模型本身,考虑了推荐与其他任务的差异,与实际相联系。
按照作者的实验,即使只加入残差,效果也有较大的提升,但这与我们之前自己的实验是相反的。