总结
文章认为当前的推荐算法往往是基于GCN的结构监督学习,更侧重于网络中度数高(即发生交互多)的节点而忽视了低度数节点,此外还容易受到交互噪声的影响。因此文章将自监督学习Self-supervised Learning引入到图结构数据上,提出了SGL框架,通过利用节点舍弃、边舍弃和随机游走三种方法,为同一个节点生成不同视图,从而达到了在原有数据上的增强,进一步提高了推荐算法的稳健型和效果。下图为传统监督图学习和自监督图学习的区别:
1 GCN结构和监督学习
现有推荐算法往往都基于GCN结构,即通过堆叠多层来为网络中的节点学习嵌入向量,其基本公式如下:
通过结合上一层的节点自身向量与上一层需要聚合的相关节点向量,进而生成本层的节点向量,在执行L层后,最终的节点向量可计算如下:
这种基于GCN结构的推荐算法,往往使用监督学习的模式,即根据图结构与学习得到的向量,构建损失函数促使预测的推荐结果与真实的交互结果更接近:
2 利用自监督学习对图结构进行数据增强
文章通过小部分地改变图结构,为每个节点生成多个视图,在训练过程中,促使属于同一节点视图生成的嵌入向量更加接近,而非同一节点的向量更加偏离。具体地,算法每次为每个节点额外多生成两个视图,记为Z_1和Z_2:
其中,H为与GCN相似的聚合函数,s则表示对图结构进行的不同调整。
2.1 节点舍弃(Node Dropout)
使用节点舍弃的方法时,设置概率p,则每个节点有p的可能性在图结构中被舍弃,公式如下:
其中M为掩码向量,通过将某个节点对应位置上的掩码设置为0,即在图结构中屏蔽了该节点。这种数据增强有望从不同的增强视图中识别有影响的节点,并使表征学习对结构变化不那么敏感。
2.2 边舍弃(Edge Dropout)
边的舍弃方法与节点相同,同样是按照某个概率随机舍弃现有边:
2.3 随机游走(Random Walk)
值得注意的是,上述两种方法都是在同一层中生成不同子图,而随机游走则是为不同层分配不同子图(即同层使用同一游走结果),示意图如下:
此外,随机游走与上述两种舍弃方法是可以共存的,因此节点在不同层拥有不同的图结构,在同一层再经过节点或边的舍弃得到两个不同视图:
3 对比学习
在为每个节点生成两个不同的视图之后,算法将这两个视图衍生的嵌入向量视为正样本对,将其他不同的节点视为负样本对,那么自监督学习的优化目标即令正样本对中的两个嵌入向量尽可能相似,有:
其中z’和z’'代表两个视图的嵌入向量,函数s()用于计算向量间的相似度。值得注意的是,在推荐算法中,用户和商品的节点向量要分开考虑,因此自监督学习的损失函数应为上述用户和商品损失函数的加和。
4 多任务训练
自监督学习是用于增强推荐算法稳健型和效果的通用性框架,因此除自监督的优化目标外,整体的损失函数还需要考虑推荐的优化目标,则有:
main指的即任意推荐算法的核心推荐损失函数,自监督损失和罚项则通过不同的超参数进行调节。 此外,文章还针对自监督学习的理论解释和复杂度做了分析。
|