【论文阅读】Deep Graph Infomax

论文名称:DEEP GRAPH INFOMAX
论文地址:https://arxiv.org/abs/1809.10341
论文来源:ICLR 2019
代码地址:https://github.com/PetarV-/DGI


1、问题引入

1.无监督学习的需求:现实世界中的图数据往往是未标记的,这限制了使用监督学习方法的可能性。
2.现有方法的局限性:现有的基于随机游走的无监督图表示学习方法可能过分强调邻域信息,而忽略了图的全局结构信息。
3.图结构数据的直推式和归纳学习:需要一种方法能够同时适用于直推式学习(在给定的图上进行学习)和归纳学习(在未见过的节点上进行泛化)。

2、方法详解

2.1 图的无监督学习

假设一个通用的基于图的无监督学习框架:

  • 数据表示
    节点特征 X = { x ⃗ 1 , x ⃗ 2 , … , x ⃗ N } \mathbf{X}=\{{\vec{x}}_{1},\vec{x}_{2},\ldots,\vec{x}_{N}\} X={x 1,x 2,,x N},其中N是节点数, x ⃗ i ∈ R F \vec{x}_i\in\mathbb{R}^F x iRF为第 i 个节点的特征
    邻接矩阵 A ∈ R N × N \mathbf{A}\in\mathbb{R}^{N\times N} ARN×N
  • 目标
    学习一个图编码器 E : R N × F × R N × N → R N × F ′ \mathcal{E}:\mathbb{R}^{N\times F}\times\mathbb{R}^{N\times N}\to\mathbb{R}^{N\times F^{\prime}} E:RN×F×RN×NRN×F,使 E ( X , A ) = H = { h ⃗ 1 , h ⃗ 2 , … , h ⃗ N } \mathcal{E}(\mathbf{X},\mathbf{A})=\mathbf{H}=\{\vec{h}_1,\vec{h}_2,\ldots,\vec{h}_N\} E(X,A)=H={h 1,h 2,,h N},其中, h ⃗ i ∈ R F ′ \vec{h}_i\in\mathbb{R}^{F^{\prime}} h iRF为第 i 个节点的高阶表示

由于GCN编码器不断邻域节点信息聚合生成节点表示,那么生成的节点嵌入 h i ⃗ \vec{h_{i}} hi ,总结了以节点 i 为中心的一个子图区域(patch)信息,而不仅仅是节点本身。因此,将 h i ⃗ \vec{h_{i}} hi 视为一个局部图表示(patch表示)。

2.2 局部–全局互信息最大化

  • 定义局部、全局表示
    局部图表示(即patch表示):由GCN编码器生成的节点表示,每个节点表示都包含了局部信息,而不只节点本身。那么,节点 i 的局部图表示为 h i ⃗ \vec{h_{i}} hi
    全局图表示(即summary vector):通过汇总局部图表示获得全局图表示 s ⃗ \vec{s} s 。该过程通过一个读出函数(Readout函数)实现 R : R N × F → R F \mathcal{R}:\mathbb{R}^{N\times F}\to\mathbb{R}^{F} R:RN×FRF ,那么 s ⃗ = R ( E ( X , A ) ) \vec{s}=\mathcal{R}(\mathcal{E}(\mathbf X,\mathbf A)) s =R(E(X,A))
  • 构建正负样本对
    正样本对:原图中的patch表示和原图的summary vector
    负样本对:扰动图中的patch表示和原图的summary vector
    通过一个判别器 D : R F × R F → R \mathcal{D}:\mathbb{R}^F\times\mathbb{R}^{F}\to\mathbb{R} D:RF×RFR 来表示局部–全局对 ( h ⃗ i , s ⃗ ) (\vec{h}_i,\vec{s}) (h i,s )的概率分数:
    D ( h ⃗ i , s ⃗ ) = σ ( h ⃗ i T W s ⃗ ) \mathcal{D}(\vec{h}_i,\vec{s})=\sigma\left(\vec{h}_i^T\mathbf{W}\vec{s}\right) D(h i,s )=σ(h iTWs )
    其中, W \mathbf{W} W是一个可学习的权重矩阵, σ \sigma σ是一个Sigmoid函数。
  • 对比损失 L \mathcal{L} L
    遵循Deep InfoMax的方法,DGI模型使用一种具有标准二元交叉熵( BCE )损失的噪声对比目标:
    L = 1 N + M ( ∑ i = 1 N E ( X , A ) [ log ⁡ D ( h ⃗ i , s ⃗ ) ] + ∑ j = 1 M E ( X ~ , A ~ ) [ log ⁡ ( 1 − D ( h ~ ⃗ j , s ⃗ ) ) ] ) \mathcal{L}=\frac1{N+M}\left(\sum_{i=1}^N\mathbb{E}_{(\mathbf{X},\mathbf{A})}\left[\log\mathcal{D}\left(\vec{h}_i,\vec{s}\right)\right]+\sum_{j=1}^M\mathbb{E}_{(\widetilde{\mathbf{X}},\widetilde{\mathbf{A}})}\left[\log\left(1-\mathcal{D}\left(\vec{\widetilde{h}}_j,\vec{s}\right)\right)\right]\right) L=N+M1(i=1NE(X,A)[logD(h i,s )]+j=1ME(X ,A )[log(1D(h j,s ))])
    其中,N 是正样本的数量,即图中节点的数量;M 是负样本的数量; ( X , A ) (\mathbf{X},\mathbf{A}) (X,A)是原始图, ( X ~ , A ~ ) (\widetilde{\mathbf{X}},\widetilde{\mathbf{A}}) (X ,A )为扰动图。
    该方法能够有效的最大化 h ⃗ i \vec{h}_i h i s ⃗ \vec{s} s 之间的互信息。

2.3 DGI模型结构

在这里插入图片描述

对于单图 ( X , A ) (\mathbf{X},\mathbf{A}) (X,A) 输入,DGI模型的计算过程如下:
1.生成负样本:通过损坏函数(corruption function) C \mathcal{C} C 对输入图 ( X , A ) (\mathbf{X},\mathbf{A}) (X,A) 进行扰动,生成负样本 ( X ~ , A ~ ) (\widetilde{\mathbf{X}},\widetilde{\mathbf{A}}) (X ,A )
2.获取输入图的patch表示: H = E ( X , A ) = { h ⃗ 1 , h ⃗ 2 , … , h ⃗ N } \begin{aligned}\mathbf{H}=\mathcal{E}(\mathbf{X},\mathbf{A})=\{\vec{h}_{1},\vec{h}_{2},\ldots,\vec{h}_{N}\}\end{aligned} H=E(X,A)={h 1,h 2,,h N}
3.获取负样本的patch表示: H ~ = E ( X ~ , A ~ ) = { h ~ ⃗ 1 , h ~ ⃗ 2 , … , h ~ ⃗ M } \widetilde{\mathbf{H}}=\mathcal{E}(\widetilde{\mathbf{X}},\widetilde{\mathbf{A}})=\{\vec{\widetilde{h}}_1,\vec{\widetilde{h}}_2,\ldots,\vec{\widetilde{h}}_M\} H =E(X ,A )={h 1,h 2,,h M}
4.获取summary vector表示:通过Readout函数获取全局表示summary vector s ⃗ = R ( H ) = σ ( 1 N ∑ i = 1 N h ⃗ i ) \vec{s}=\mathcal{R}(\mathbf{H})=\sigma\left(\frac1N\sum_{i=1}^N\vec{h}_i\right) s =R(H)=σ(N1i=1Nh i)
5.采用梯度下降法更新 E , R , D \mathcal{E},\mathcal{R},\mathcal{D} E,R,D 的参数,最小化对比损失函数 L \mathcal{L} L

3、实验

3.1 数据集

在这里插入图片描述

本文进行了以下基准任务:
1.在Cora、Citeseer和Pubmed引文网络上对研究论文进行主题分类(直推式学习)
2.预测以Reddit帖子建模的社交网络的社区结构(大图上的归纳式学习)
3.对蛋白质-蛋白质相互作用( PPI )网络中的蛋白质角色进行分类(多图数据集的归纳式学习),需要对未见到的网络进行泛化。

结果

在这里插入图片描述

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Deep Graph Infomax是一篇由Petar Veličković等人于2019年在ICLR上发表的论文。该论文提出了一种基于图对比学习的方法,旨在学习图数据的表示。方法中使用了一个GNN Encoder来将图的节点编码为向量表示,通过一个Read-out函数将节点表示汇总为整个图的表示向量。同时,该方法对原始图进行扰动,并使用相同的GNN Encoder对扰动后的图进行编码,然后通过一个Decoder来使图的表示与原始图的节点表示更接近,并使扰动后的图的节点表示与原始图的节点表示更加疏远。这篇论文的贡献是提出了一种基于互信息最大化的自监督图学习通用框架。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [图对比学习三篇顶会论文](https://blog.csdn.net/qq_51072801/article/details/130251996)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [论文阅读Deep Graph Infomax(DGI)》](https://blog.csdn.net/m0_71014828/article/details/125199457)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值