欢迎光临
我们一直在努力

(论文速读)DGI:深度图信息

论文题目:DEEP GRAPH INFOMAX(深度图信息)

会议:ICLR2019

摘要:我们提出了深度图信息(Deep Graph Infomax, DGI),这是一种以无监督方式学习图结构数据中的节点表示的通用方法。DGI依赖于最大化补丁表示和相应的图的高级摘要之间的相互信息,两者都是使用已建立的图卷积网络架构派生的。学习到的补丁表示总结了以感兴趣的节点为中心的子图,因此可以在下游节点智能学习任务中重用。与大多数先前使用GCNs进行无监督学习的方法相比,DGI不依赖于随机漫步目标,并且很容易适用于传导和归纳学习设置。我们在各种节点分类基准上展示了具有竞争力的性能,有时甚至超过了监督学习的性能。


DGI——用互信息最大化实现图的无监督表示学习

为什么需要无监督图学习?

在现实世界中,大多数图数据都是无标签的:

  • 社交网络中的用户关系
  • 生物网络中的基因调控
  • 知识图谱中的实体关系
  • 文档的词共现网络

传统的监督学习需要大量标注数据,代价高昂。那么,能否像Word2Vec学习词表示那样,从图结构本身学习有意义的节点表示呢?

现有方法的问题

随机游走方法的局限

DeepWalk和Node2Vec通过在图上进行随机游走,将图问题转化为序列问题:

  • 在图上采样随机游走路径
  • 将路径视为"句子",节点视为"单词"
  • 用Word2Vec学习节点embedding

但这种方法有三大问题:

  • 过分强调proximity:倾向于让相邻节点embedding相似,但忽视了结构角色(如两个远距离的"桥节点"可能功能相似)
  • 超参数敏感:游走长度、窗口大小等选择对结果影响很大
  • 与GCN不匹配:GCN本身已经有邻域聚合的归纳偏置,随机游走可能是多余的
  • DGI的核心思想:局部-全局互信息最大化

    DGI的灵感来自Deep InfoMax (DIM),后者在图像上取得了成功。核心思想简洁而深刻:

    好的节点表示应该包含整个图的全局信息。

    具体来说:

  • Patch representations h_i:节点i及其邻域的表示(通过GCN得到)
  • Graph summary s:整个图的全局表示(通过readout函数得到)
  • 目标:最大化h_i和s的互信息
  • 技术细节

    1. 如何计算互信息?

    直接计算互信息很难,DGI采用对比学习:训练一个discriminator D(h_i, s)来判断:

    • 正样本:(h_i, s)来自同一个图
    • 负样本:(h̃_j, s)其中h̃_j来自corrupted图

    损失函数(Binary Cross-Entropy):

    这实际上在最小化Jensen-Shannon散度,进而最大化互信息!

    2. 如何生成负样本?

    这是DGI的关键设计选择。论文探索了几种corruption策略:

    Transductive设置(如Cora):

    • 保持邻接矩阵A不变
    • 打乱特征矩阵X的行(即节点特征)
    • 这样节点出现在不同的图结构位置,获得不同的patch

    Inductive设置(如Reddit):

    • 对于大图,每个minibatch采样一个子图
    • 子图内部进行特征打乱
    • 或者直接使用不同的子图作为负样本

    Multiple graphs(如PPI):

    • 直接从训练集中采样不同的图作为负样本
    • 对采样的图的特征进行dropout增强多样性

    3. 编码器和Readout设计

    编码器E(transductive):

    h_i = σ(D̃^(-1/2) ÃD̃^(-1/2) XΘ)

    这是一层GCN,其中Ã = A + I(加自环),使用PReLU激活。

    Readout函数R:

    s = σ(1/N Σ h_i)

    简单的平均pooling + sigmoid。虽然简单,但实验表明在多数情况下效果很好。对于超大图,可考虑更复杂的readout如Set2Vec。

    Discriminator D:

    D(h_i, s) = σ(h_i^T W s)

    双线性评分函数,非常高效。

    理论分析的亮点

    论文提供了严格的理论分析(Section 3.3),核心结论:

    Lemma 1: 最优分类器的错误率上界为 Err* = 1/2 Σ p(s^(k))²

    Theorem 1: 当readout函数R是单射时,最小化分类错误等价于最大化互信息MI(X; s)

    Theorem 2: 对于局部patch,最优表示h_i同样最大化MI(X_i; h_i)

    这为DGI的有效性提供了理论支撑。

    实验结果深度分析

    Transductive节点分类

    令人惊讶的发现:

    • DGI超越监督GCN(Cora和Citeseer上)!
      • Cora: 82.3% vs 81.5%
      • Citeseer: 71.8% vs 70.3%

    这可能是因为:DGI让每个节点间接访问了整个图的信息,而监督GCN受限于2层邻域(否则会过拟合)。

    • 远超无监督基线:
      • DeepWalk + features (Cora): 70.7%
      • DGI (Cora): 82.3% ↑11.6%
    Inductive学习

    Reddit(大规模图):

    • DGI: 94.0%
    • GraphSAGE-GCN: 90.8%
    • 提升3.2%,同时注意这是无监督 vs 有监督!

    PPI(多图学习):

    • DGI: 63.8%
    • GraphSAGE-pool: 50.2%
    • 提升13.6%,差距巨大!
    可视化分析

    对比三种表示:

  • Raw features:混乱,无明显聚类
  • Random-Init GCN:有一定结构但不清晰
  • DGI learned:7个类别清晰分离,Silhouette score 0.234(vs Embedding Propagation的0.158)
  • 这直观展示了DGI学到了语义上有意义的表示。

    Discriminator分析

    有趣的观察:

    • 正样本图上,只有少数"hot"节点获得高分
    • 说明某些维度专门用于区分正负样本
    • 其他维度用于编码有用的分类信息

    论文进一步实验(Appendix B)表明:

    • 移除最可区分的维度对分类影响不大
    • 可以去掉一半维度仍保持竞争力!

    与其他方法的对比

    方法目标局限性DGI优势
    DeepWalk/Node2Vec 随机游走邻近性 忽视结构,超参数敏感 无需随机游走
    GCN (supervised) 监督分类 需要标签 无监督
    GraphSAGE 邻域聚合 需要标签 性能更优
    Spectral methods 图自编码 不可扩展 线性复杂度

    实现技巧

  • Early stopping: 在transductive任务上用训练loss做early stopping,patience=20
  • 优化器: Adam,学习率0.001
  • 维度设置: F'=512(Pubmed因内存限制用256)
  • 初始化: Glorot initialization
  • 并行化: 纯矩阵运算,GPU友好
  • 局限与展望

    当前局限
  • Corruption策略选择:不同任务的最佳corruption不同,需要实验确定
  • Readout函数:简单平均pooling可能不适合超大图
  • 理论-实践差距:理论假设有限样本,实际是连续表示
  • 计算成本:虽然线性,但仍需多次前向传播
  • 未来方向
  • 自适应corruption:学习最优的负样本生成策略
  • 层次化表示:结合不同尺度的图结构信息
  • 动态图扩展:将DGI思想应用于时序图
  • 迁移学习:预训练的DGI模型迁移到下游任务
  • 核心要点总结

    ✅ 创新点:用互信息最大化代替随机游走,捕捉全局图信息 ✅ 理论保证:严格证明与互信息的联系 ✅ 性能突破:无监督超越监督基线 ✅ 计算高效:线性复杂度,GPU友好 ✅ 通用性强:适用于transductive和inductive场景

    DGI为图的无监督学习开辟了新方向,证明了对比学习在图domain的巨大潜力。它不仅在多个benchmark上取得了优异成绩,更重要的是提供了一个优雅的理论框架,启发了后续一系列工作(如GraphCL、BGRL等)。


    赞(0)
    未经允许不得转载:171主机测评 » (论文速读)DGI:深度图信息
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址