您的位置:首页 > 运维架构

GCN论文笔记——HopGAT: Hop-aware Supervision Graph Attention Networks for Sparsely Labeled Graphs

2020-07-13 04:39 344 查看

【论文笔记】HopGAT: Hop-aware Supervision Graph Attention Networks for Sparsely Labeled Graphs
作者:纪超杰,王如心等 (中国科学院深圳先进技术研究院)

摘要

由于标记节点代价大,在对稀疏标记图中的节点进行分类的同时又保持预测精度是值得研究的。关键是算法如何从不同跳距(hops)的邻居中学习足够的信息。本研究首先针对节点分类任务提出一种hop-aware注意力监督机制。然后采用模拟退火学习策略,在训练时间线上平衡节点分类和hop-aware注意力系数两个学习任务。与最新模型相比,实验结果证明了hop-aware监督图注意力网络(HopGAT)模型的优越性。

工作概述

概述

此工作大致可以分为三个部分:

  1. 将跳值(在这里跳值指示着节点间的相关性,类似于相似度)编码成向量,并嵌入到每个节点特征中;
  2. 利用注意力机制,基于嵌入跳值的节点特征计算节点间的注意力系数,并与预定义的真实注意力系数之间的均方根误差作为损失函数,得到注意力损失;
  3. 在最后一层进行节点分类,会带来节点分类损失。基于模拟退火的方法,找到两种损失(注意力损失和节点分类损失)之间的平衡,结合二者作为总的损失函数。

本文贡献

  • 本文首次提出了一种节点分类任务的hop-aware注意力监督方法。
  • 对跳值进行编码,并将其嵌入到图形节点中。随后,利用语义和图结构信息对图节点进行同步编码。此处的图结构就是指跳值了。
  • 提出了一种模拟退火策略,在训练时间线上同时平衡两个学习任务,节点分类和注意力系数。

两个观察

观察1

观察1:在齐次图网络中,跳值越小的相邻节点的类标签越有可能与其中心节点的类标签一致。
观察1比较好理解,大概意思就是离中心节点越近的节点,它们具有相同标签的可能性就越大。作者还研究了科学出版物分类任务中常用的数据集Cora,并记录了标签一致性率:与中心节点具有相同类标签的相邻节点的比例。x轴是给定的跳值,y轴是标签一致性率。

观察2

观察2:一般注意力模型无法自动从具有不同跳值的邻居那里学习足够的语义信息。
作者检查了不同跳值的节点之间的注意力系数。在Cora引文数据集上训练了GAT。最大跳值设置为2。GATs在不同训练阶段产生的所有注意力系数如图所示。在图中,水平轴表示注意力系数的值,垂直轴记录系数的出现次数,z轴表示训练时段。此图显示只有一个峰值的高斯分布。然而,我们期望分布具有多个峰值或对应于不同跳值的清晰边界。这意味着无监督的注意力机制通常无法自动学习图网络中具有不同跳值的节点的相关性或语义信息。因此应在不同的条件下对注意力进行监督。

Preliminary(初步措施)

这是论文的第3节。在这一节中,作者主要简略介绍了与图注意力网络(GAT)相同的多头注意力机制。下面做简要介绍,详细的可以去看 Graph Attention Network这篇论文。

介绍

两节点之间的注意力系数:
其中exp是指数函数,Ni是图中i的相邻节点,a是用来估计一个节点对另一个节点重要性的函数(注意力函数)。

聚合邻居j特征以更新中心节点i的特征:

其中W是权重矩阵,是需要学习的重要参数。

多个注意力头,将生成的特征连接。并在最后一层,对特定任务采用平均和非线性:
||表示串联操作,k对应于第k个头。

模型

体系结构

三个组件:

  • 跳编码和注意力机制。将跳值编码为向量,嵌入到每个节点特征,利用跳信息计算注意力系数(多头),并将其传递给组件2;
  • 注意力监督。从每个注意力头收集所有的注意力系数。将计算出的系数和真实系数(预定义的系数)之间的差距相加,形成注意力损失;
  • 学习策略。(在最后一层计算节点分类损失)一旦得到了注意力损失和节点分类损失,组件3即基于模拟退火的学习策略执行,平衡训练过程中这两种损失。

具体方法

跳编码

使用跳值来表示节点与其中心节点的接近性或相似性,将跳值编码为d维向量he:

其中max_hv是预定义的最大跳值,max⁡(⋅)是最大值函数,d是跳嵌入的维数,i是维数的索引,hv是相应的跳值,sin和cos分别是正弦和余弦函数,he_hv表示跳值hv的跳编码。

注意力机制

提出两种注意力机制:基于乘法的注意力和基于加法的注意力。

  • 基于乘法(点积)

    e_ij指示节点j对节点i的重要性,a_c、a_n和a_he是三个独立的单层前馈神经网络,⨀表示点积运算,lookup是查找he^t中的跳值hv_ij的跳嵌入的函数。
  • 基于加法

    使用softmax进行归一化:

注意力监督

  • 基本事实注意力(预定义的注意力系数)
    图中两个直接连接的节点之间的相关性应该被赋予一个较大的值,而两个间接连接或断开连接的节点之间的系数应该具有较小的值。因此,设置一个边界,当跳值达到最大值max_hv时,中心节点与其相邻节点之间的系数被统一分组为默认值,意味着两节点之间的连接较弱。
    注意力系数定义为:
  • 注意力损失
    使用e_ij^kl来表示第l层的第k个头的节点i和j之间的注意力系数(即通过注意力机制计算出的注意力系数),使用均方根误差来控制预定义的注意力和通过注意力机制计算出的注意力之间的距离:
  • 采样策略
    由公式(11)可以看出,总共有LKN*N个注意力系数。为了降低计算量,提出了一种随机抽样策略sample®。
    一个例子:在Citeeser数据集中,大约有12000个节点对的跳数小于2,而大约有11000000个节点对的跳数大于2。
    所以跳数大于max_hv的节点对的个数远大于跳数小于等于max_hv的节点对的个数(max_hv就是给定的最大跳数)。因此仅从跳值大于max_hv的节点对中采样。而小于max_hv的节点对则全部考虑在内(个人理解)。采样后:

学习策略

总的损失函数为:

γ用于在节点分类损失(L_cls)和注意力监督损失之间找到平衡。如何寻找γ呢?
从两个角度考虑:①注意力系数在训练开始时可能不精确;②L_cls占主导地位,与最终的任务目标即节点分类密切相关,而L_att是辅助的。
采用模拟退火的方法:

  • 首先定义温度随训练时间的变化:

    其中temp_ini和temp_fin分别是初始温度和最终温度;〖temp〗^t表示第t时间步的温度;ϵ是衰减率;〖temp〗_ini、〖temp〗_fin和ϵ都是预定义的超参数。
  • 计算γ

    min是最小函数。γ_str是一个超参数,用于防止训练过程尾部L_att急剧增加。

实验

  • inductive
    未标记的测试节点不参与训练过程,我们称此任务为inductive learning。
    数据集:引文网络数据集 Cora、Citeeser、PubMed
    评价指标:准确性(accuracy)
    对比算法:GATs、GCNs、ConfGCN
  • transductive
    如果未标记的测试数据在训练阶段都被观察和利用,则此任务称之为transductive learning。
    数据集:蛋白质-蛋白质相互作用 PPI
    评价指标:micro-F1
    对比算法:GraphSAGEs及其变体、GATs

实验设置

重新组织所有数据集,改变了训练集中标记节点的比例。表1列出了每个数据集中节点、类、图和特征的数量的详细信息。

GATs和HOPGAT的通用参数详见表2。应用了dropout[37]、skip connections[38]和L2正则化技术来缓解过度拟合,丢失率分别表示为〖dp〗_1、〖dp〗_2和〖dp〗_3。
调整了GCN和ConfGCN的丢失率和L2正则化,如表3所示。

实验结果

  • inductive
  • transductive

其他

作者在最后还研究了①监督注意力系数的有效性和②学习策略的有效性,并进行了可视化。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐