GraphMAE 简介

GraphMAE: Self-Supervised Masked Graph Autoencoders

前言

当前的自监督学习领域主要分为对比式自监督学习以及生成式自监督学习,这篇文章主要聚焦于生成式对比学习。事实上后者在图领域的进展是远远不如前者的,但是在cv,nlp领域却是以生成式自监督学习为主,所以作者想要重振生成式学习的荣光。

生成式自监督学习又主要分为:自回归以及自动编码,目前是后者用的比较多。自动编码技术的主要目的就是在给定上下文的基础上重建输入的特征,图领域的自动编码器就叫做GAE。之前的一些操作:

  • 利用均方误差来作为损失函数
  • 大部分还是会对图的结构/特征做扰动,或者结合两者
  • 预测节点的度数以及邻居特征分布

作者认为之前的GAE都存在如下问题:

  • 结构信息被过分强调,而不是特征信息
  • 缺少对特征信息的干扰,这一点在cv,nlp领域已经得到了应用
  • 用均方误差来作为损失函数可能并不是很好,因为当节点维度比较高但是大部分维度差距基本没有的时候,其余维度的差距会被拉小,导致整体的loss是偏小的(这可能也是之前以特征重建为目标的模型效果不好的原因之一)
  • 之前的GAE的decoder大部分采用mlp,但是作者认为这种模型的表现力不强,不如gnn

以上几点可以在图中看出来

不难看出加了Link reconstruction之后,性能反而还有了一定的下降,而重建特征之后反而会有一定的上升,所以作者决定采用特征重建。

模型结构

以下是GraphMAE的结构

首先是encoding结构,在autoencoder的基础上,主要的改动有:

是基于特征而非结构的重建,然后引入了mask操作。mask之后用gnn来进行特征聚合,得到节点的embedding。作者认为对输入进行破坏是必要的,否则有可能会学习到一个恒等映射,相当于什么都没有学习。所以需要对特征进行mask操作,具体表现为将某些节点的特征用一个无意义的向量进行替代。

然后是decoding结构:

加入了remask操作,对之前的mask集合内的点再做一次mask操作。因为这个模型是建立在局部同质性前提上的,所以信息其实冗余度会比较大。冗余度大的话,其实对特征重建来说难度会低一点,那么所能学习到的参数就会少一点,这里rmask,其实就是提高了重建的难度,进而提高学习质量。这样做可以进一步压缩信息,提高表现力。

decoder模型没有采用之前所说的mlp,而是采用了gnn

最后是特征重建过程

这里的改进主要是采用了新的误差函数。原本的MSE的缺点已经讲过了,那么采用cos来衡量向量的夹角的话会是一个比较合理的方法。这里作者在余弦函数的基础上又加了一点改进。相比于那些本身夹角就已经比较小的向量来说,其实我们跟应该去关注那些夹角比较大的向量的修正,所以这里加了一个参数 γ \gamma γ用来进行缩放。其实不难发现,当夹角大于90度的时候,1-cos>1,此时随着 γ \gamma γ变大,整体的值会变大,权重也会变大,那么这种hard样本就会受到更多的关注。

实验

节点分类

图分类

迁移学习

消融实验

其实可以看出来,缩放余弦误差的改进是比较大的,然后是mask,再是remask

作者说gnn的表现力比mlp要好,但其实gnn里面只有gat是明显优于mlp的,所以说gnn好,不如直接说gat好,这里说mlp表现力较差其实也是立不住脚的,也缺乏足够的理论依据。

相关推荐
Purple Coder33 分钟前
面试-上海电力大学研一的学习经验
学习
饮浊酒2 小时前
Python学习-----小游戏之人生重开模拟器(普通版)
python·学习·游戏程序
QT 小鲜肉2 小时前
【个人成长笔记】在Ubuntu中的Linux系统安装 anaconda 及其相关终端命令行
linux·笔记·深度学习·学习·ubuntu·学习方法
QT 小鲜肉2 小时前
【个人成长笔记】在Ubuntu中的Linux系统安装实验室WIFI驱动安装(Driver for Linux RTL8188GU)
linux·笔记·学习·ubuntu·学习方法
急急黄豆2 小时前
MADDPG学习笔记
笔记·学习
BullSmall2 小时前
《道德经》第十七章
学习
知识分享小能手3 小时前
微信小程序入门学习教程,从入门到精通,项目实战:美妆商城小程序 —— 知识点详解与案例代码 (18)
前端·学习·react.js·微信小程序·小程序·vue·前端技术
做科研的周师兄3 小时前
【机器学习入门】7.4 随机森林:一文吃透随机森林——从原理到核心特点
人工智能·学习·算法·随机森林·机器学习·支持向量机·数据挖掘
QZ_orz_freedom4 小时前
学习笔记--文件上传
java·笔记·学习
deng-c-f4 小时前
Linux C/C++ 学习日记(24):UDP协议的介绍:广播、多播的实现
linux·网络·学习·udp