腾讯AI Lab联合清华、港中文,万字解读图深度学习历史、最新进展与应用(7)
基于信息的方法
介绍了预测方法,我们再来看基于信息的方法。
优良的表征应该能将输入中的大量信息保存下来。受此启发,Vincent et al. 在 2010 年提出使用自动编码器来进行表征学习,这意味着隐藏表征应该可以解码到与其输入一样。
但自动编码器资源消耗高,既需要编码,也需要解码,而在图领域,如何解码图仍还是一个有待解决的问题。那么还有其它可以直接衡量表征与输入之间的信息的方法吗?有的,那就是互信息(mutual information)。
给定两个随机变量,互信息的定义是它们的边界属性和关节属性的积之间的 KL 散度,这又可以进一步推导为熵减去条件熵。
互信息为什么可以计算信息关系?我们可以这样看,如果 X 和 Y 互相独立,且 p(X)p(Y)=p(X,Y),则互信息等于 0,这表明 X 和 Y 不相关。这是合理的,因为 X 和 Y 互相独立。如果条件熵为 0,则 X 和 Y 确定是相关的,则互信息输出为最大值。
Hjelm et al. 2019 证明执行自动编码是计算互信息的重建误差的一个下限。
计算互信息是很困难的,近些年方才出现一些可行的方法。这里有三种典型的方法(MINE、JSD MI 和 infoNCE MI),其基本思想是学习一个神经网络来最大化互信息的一个替代函数。详情请参阅各论文。
回到图,我们能否使用互信息来实现图的自监督学习?DGI 是这方面首个研究成果,其目标设定为最大化输入的节点特征 X 和邻接矩阵 A 与输出表征 h_i 之间的互信息。DGI 使用了 JSD 估计器,其中包含正例项和负例项。
但直接计算互信息的难度不小,我们可能需要另一个 GNN 作为互信息的替代。DGI 使用了表征的读出 s 来替代输入。如下图所示,原图有两个输入,其中错误的图是负例,然后我们用同样的 GNN 得到它们的输出,之后再执行读出函数得到 s。s 可以替代原目标中的 X,A,得到替代目标函数。
DGI 证明这种操作不会导致信息损失,其还证明这种替换方式实际上就等同于真正的互信息。
不过 DGI 仍还有一些问题。第一是它需要读出函数来计算互信息,而且这个读出函数需要是单射式的,这并不容易保证。另外它还需要构建错误的图来得到负例,因此效率不高。而在实验中,DGI 需要为不同的任务使用不同的编码器,这并不实用。
针对这些问题,清华大学、西安交通大学与腾讯 AI Lab合作提出了 GMI,其基本思想是不使用读出函数和错误样本,而是直接计算互信息。
在 GMI 中,首先分两部分定义互信息。一是特征互信息,仅度量节点特征和表征之间的信息关系。二是拓扑互信息,这是预测的边和原始邻接矩阵之间的互信息。
很显然,这一方法能同时考虑到边和特征,而无需读出函数或错误样本。更重要的是,特征互信息还能进一步分解。
我们证明:特征互信息可以分解为局部互信息的加权和。而每个局部互信息计算的是每个节点及其表征之间的互信息。权重取决于不同的情况,将它们设置为与预测的边一样也不错。然后我们可以使用 JSD 互信息估计器来计算特征互信息和边互信息。
在节点分类任务上的实验结果证明 GMI 有更优的表现,相关的代码也已经发布:https://github.com/zpeng27/GMI
至于用于图分类的基于信息的方法,可参看 ICLR 2020 论文《InfoGraph: Unsupervised and Semi-supervised Graph-Level Representation Learning via Mutual Information Maximization》,这里不再过多赘述。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。