machine-learning-notes
  • 封面
  • 目录
  • 前言
  • 个人前言
  • 机器学习前言
    • 什么是机器学习和模式识别
    • 机器学习的应用
    • 机器学习的流程
    • 不同的机器学习算法对相同数据预测效果不同
    • 快速入门机器学习
    • 机器学习需要参考哪些书
    • 机器学习的学习路径
    • 深度学习的学习路径
    • 互联网机器学习特定岗位所需技能
  • 机器学习面试
  • 数学基础
  • 微积分
    • 泰勒展开
    • e的直观认识
    • 傅里叶变换
    • 希尔伯特空间
  • 线性代数
    • 范数
    • 矩阵求导
    • 特征值
    • 奇异值分解
  • 概率与信息论
    • 综述概率论基本定义
    • 概率论与贝叶斯先验
    • 正态分布
    • 贝叶斯概率
    • 概率符号说明
    • 共轭先验
    • 信息论
  • 数值计算与优化
    • 最小二乘法
    • 等式约束的拉格朗日乘子法
    • 凸优化
      • 凸集和凸函数
      • 凸优化问题
  • 梯度下降算法
    • 随机梯度下降SGD
    • 动量法Momentum
    • 牛顿动量Nesterov
    • AdaGrad
    • RMSprop
    • Adadelta
    • Adam
    • Nadam
    • AMSGrad
    • AdasMax
  • 概率图模型
    • 概率图模型概论
    • 概率图简介
  • 编程基础
  • linux
    • linux常用命令
    • shell
      • 输入输出重定向
  • python
    • python简介
    • python语法
      • 基础语法
      • 数据结构
      • 过程控制
      • 函数
      • 类和对象
      • 文件操作
      • 正则表达式
    • python库
      • numpy
      • pandas
      • scipy
      • matplotlib
      • scikit-learn
    • python应用
      • 排序算法
  • 数据结构与算法
    • 数据结构
    • 算法思想
      • 排序
        • 堆排序
        • 归并排序
        • 快速排序
      • 递归
    • 剑指offer
      • 链表
      • 二叉树
      • 数组
      • 字符串
      • 栈和队列
      • 递归
      • 动态规划
      • 其他
    • leetcode
    • 编程语言
      • c++
  • Hadoop
    • Hadoop简介
    • MapReduce
  • Hive
  • Spark
  • TensorFlow
    • TensorFlow1.0
      • TensorFlow基础
      • TensorFlow基础概念解析
      • TensorFlow机器学习基础
      • Tensorflow分布式架构
    • TensorFlow2.0
  • PyTorch
  • 机器学习
  • 机器学习概论
  • 特征工程
  • 感知机
  • k近邻
  • 朴素贝叶斯
  • 线性模型
    • 最大熵模型
    • 指数族分布与广义线性模型
    • 线性回归
      • Ridge回归(岭回归)
      • Lasso回归
    • Logistic回归-对数几率回归
  • 决策树
  • 支持向量机
    • 线性可分支持向量机与硬间隔最大化
    • 线性支持向量机与软间隔最大化
    • 非线性支持向量机与核函数
    • 序列最小最优化算法SMO
    • SVM总结
  • 集成学习
    • Bagging
      • 随机森林
    • Boosting
      • AdaBoost
      • GradientBoosting
        • GBDT
        • XGBoost
          • XGBoost理论
          • XGBoost实践
    • Stacking
  • 降维
    • PCA主成分分析
    • 流形学习
  • EM算法
  • HMM隐马尔科夫模型
  • CRF条件随机场
  • 聚类
    • k均值聚类
    • 高斯混合模型
  • 主题模型
    • LDA隐狄利克雷分布
  • 知识点
    • 损失函数
    • 负采样
  • 机器学习算法总结
  • 深度学习
  • 深度学习概论
  • ANN人工神经网络
  • 知识点
    • Batch Normalization
  • CNN卷积神经网络
  • 深度学习优化算法
  • RNN循环神经网络
  • LSTM长短期记忆网络
  • GRU门控循环单元
  • GNN图神经网络
    • GNN图神经网络综述
    • GCN图卷积网络
      • GCN图卷积网络初步理解
      • GCN图卷积网络的numpy简单实现
      • GCN图卷积网络本质理解
      • GCN图卷积网络全面理解
      • SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS ICLR2017
  • 神经网络架构搜索
    • Weight-Agnostic-Neural-Networks Google2019
  • 强化学习
  • 强化学习概论
  • 马尔科夫决策过程
  • 动态规划
  • 无模型方法一:蒙特卡洛
  • 无模型方法二:时间差分
  • 无模型方法三:多步自举
  • 函数近似和深度网络
  • 策略梯度算法
  • 深度强化学习
  • 基于模型的强化学习
  • 强化学习前景
  • 自然语言处理
  • 自然语言处理概论
  • 自然语言
  • 语言模型和中文分词
  • word2vec
    • word2vec概述
    • word2vec算法原理
    • word2vec源码分析
    • word2vec实践
  • Seq2Seq模型和Attention机制
  • Self-Attention和Transformer
  • 知识图谱
  • 推荐系统
  • 推荐系统概论
  • 基础知识
  • 进阶知识
    • 机器学习
      • Factorization Machines ICDM2010
    • embedding
      • Network Embedding
        • LINE: Large-scale Information Network Embedding
    • 深度学习
      • DeepFM: A Factorization-Machine based Neural Network for CTR Prediction 2017
      • DSSM: Learning Deep Structured Semantic Models for Web Search using Clickthrough Data CIKM2013
    • 图卷积网络
      • Graph Convolutional Neural Networks for Web-Scale Recommender Systems KDD2018
    • 强化学习
      • DRN基于深度强化学习的新闻推荐模型
  • 业界应用
    • YouTube
      • Deep Neural Networks for YouTube Recommendations RecSys2016
    • Alibaba
      • Learning Tree-based Deep Model for Recommender Systems KDD2018
      • Deep Interest Network for Click-Through Rate Prediction KDD2018
      • DSIN:Deep Session Interest Network for Click-Through Rate Prediction IJCAI2019
Powered by GitBook
On this page
  • 基于图卷积网络的半监督学习
  • 概括
  • 基于图的半监督学习
  • 谱图卷积简介
  • 谱图卷积
  • 切比雪夫近似谱卷积
  • 基于切比雪夫近似的GCN
  • 本文工作
  • Layer-wise线性模型
  • 卷积层
  • 分层传播
  • 半监督GCN框架
  • 两层GCN例子
  • 效果
  • 讨论
  • 半监督模模型
  • 限制及未来工作
  • 参考资料

Was this helpful?

  1. GNN图神经网络
  2. GCN图卷积网络

SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS ICLR2017

PreviousGCN图卷积网络全面理解Next神经网络架构搜索

Last updated 5 years ago

Was this helpful?

基于图卷积网络的半监督学习

论文:Semi-Supervised Classification with Graph Convolutional Networks 作者:Thomas N. Kipf, Max Welling 来源:ICLR 2017

概括

semi-GCN是一篇经典的GCN论文,作者提出了一种简单且有效GCN框架,使用切比雪夫一阶展开近似谱卷积,使每一个卷积层仅处理一阶邻域信息,然后通过分层传播规则叠加一个个卷积层达到多阶邻域信息传播。

基于图的半监督学习

图结构反映了节点之间的相似性,大量未标记的样本(节点)加入到模型训练中有助于提升分类效果,故基于图的半监督学习是一件很自然且重要的事情。

传统方法是假设“相连节点应该相似,具有相同标签”,将基于图的正则项Lreg显示加入到损失函数中进行学习:

L=L0+λLregwithLreg=∑i,jAij∣∣f(Xi)−f(Xj)∣∣2=f(X)TΔf(X)\begin{aligned} \mathcal{L}&=\mathcal{L}_0+\lambda\mathcal{L}_{reg}\\ \text{with}\quad\mathcal{L}_{reg}&=\sum_{i,j}A_{ij}||f(X_i)-f(X_j)||^2=f(X)^T\Delta f(X) \end{aligned}LwithLreg​​=L0​+λLreg​=i,j∑​Aij​∣∣f(Xi​)−f(Xj​)∣∣2=f(X)TΔf(X)​

这个假设太严格了,极大限制模型能力,因为节点相连不一定都是相似,但会包含附加信息。

谱图卷积简介

GCN主流有两大类方法:

  1. 基于空间的方法(spatial domain):将图数据规则化,这样就可以直接用CNN来处理了

  2. 基于谱方法(spectral domain):利用谱图理论(spectral graph theory)直接处理图数据,本文是该类方法的代表作,简短介绍下相关的工作。

谱图卷积

谱方法的理论基础,直接对图结构数据及节点特征进行卷积操作

定义为信号(特征)x与卷积核gθ在傅立叶域上的乘积:

gθx=UgθUTXg_{\theta}x=Ug_{\theta}U^TXgθ​x=Ugθ​UTX

但上述卷积计算复杂度比较大: 特征向量矩阵U相乘计算复杂度为O(|N^2|) ,以及图的拉普拉斯矩阵分解开销。

切比雪夫近似谱卷积

gtheta∗x≈∑k=0Kθk′Tk(L~)xg_{theta}*x\approx \sum_{k=0}^K\theta_k'T_k(\tilde{L})xgtheta​∗x≈k=0∑K​θk′​Tk​(L~)x
  • 使用切比雪夫是因为是递归性质,计算复杂度低

  • 上述多项式取前K项,即表示对k跳内邻居及特征进行卷积计算,即谱图卷积不再依赖于整个图,而只是依赖于距离中心节点K步之内的节点(即K阶邻居)

基于切比雪夫近似的GCN

本文工作

本文对Defferrard的工作进一步简化,每一个卷积层仅处理一阶邻居特征,通过分层传播规则叠加一个个卷积层达到多阶邻居特征传播。

Layer-wise线性模型

近似的谱图卷积虽然可以建立起K阶邻居的依赖,然而,却仍然需要在$\tilde{L}$上进行K阶运算。在实际过程中,这一运算的代价也是非常大的。为了降低运算代价,本文进一步简化了该运算,即限定K=1。此时,谱图卷积可以近似为$\tilde{L}$(或L)的线性函数。

当然,这样做的代价是,只能建立起一阶邻居的依赖。对于这一问题,可以通过堆积多层图卷积网络建立K阶邻居的依赖,而且,这样做的另一个优势是,在建立K>1阶邻居的依赖时,不需要受到切比雪夫多项式的限制。

为了进一步简化运算,在GCN的线性模型中,本文定义λmax≈2。此时,我们可以得到图谱卷积的一阶线性近似:

gθ′∗x≈θ0′x+θ1′(L−IN)x=θ0′x−θ1′D—12AD—12x⇒θ(IN−D—12AD—12)x\begin{aligned} &g_{\theta'}*x\approx\theta_0'x+\theta_1'\left(L-I_N\right)x=\theta_0'x-\theta_1'D^{\text{—}\frac{1}{2}}AD^{\text{—}\frac{1}{2}}x\\ \Rightarrow&\theta\left(I_N-D^{\text{—}\frac{1}{2}}AD^{\text{—}\frac{1}{2}}\right)x \end{aligned}⇒​gθ′​∗x≈θ0′​x+θ1′​(L−IN​)x=θ0′​x−θ1′​D—21​AD—21​xθ(IN​−D—21​AD—21​)x​

可以看到,该式中仅有两个参数θ'_0与θ'_1。若需建立k阶邻居上的依赖,可以通过设置k层这样的滤波器来实现。

在实际的过程中,可以通过对参数进行约束来避免过拟合,并进一步简化运算复杂度。例如,可以令

θ=θ0′=−θ1′\theta=\theta_0'=-\theta_1'θ=θ0′​=−θ1′​

,从而得到

gθ∗x≈θ(IN+D—12AD—12)xg_{\theta}*x\approx\theta\left(I_N+D^{\text{—}\frac{1}{2}}AD^{\text{—}\frac{1}{2}}\right)xgθ​∗x≈θ(IN​+D—21​AD—21​)x

需要注意的是,

IN+D—12AD—12I_N+D^{\text{—}\frac{1}{2}}AD^{\text{—}\frac{1}{2}}IN​+D—21​AD—21​

的特征值范围为[0,2],这意味着,当不停地重复该操作时(网络非常深时),可能会引起梯度爆炸或梯度消失。为了减弱这一问题,本文提出了一种 renormalization trick:

IN+D—12AD—12⇒D~—12A~D~—12I_N+D^{\text{—}\frac{1}{2}}AD^{\text{—}\frac{1}{2}}\Rightarrow\tilde{D}^{\text{—}\frac{1}{2}}\tilde{A}\tilde{D}^{\text{—}\frac{1}{2}}IN​+D—21​AD—21​⇒D~—21​A~D~—21​

其中,

A~=A+IN,D~ii=∑jA~ij\tilde{A}=A+I_N,\quad \tilde{D}_{ii}=\sum_j\tilde{A}_{ij}A~=A+IN​,D~ii​=j∑​A~ij​

当图中每个节点的表示不是单独的标量而是一个大小为C的向量时,可以使用其变体进行处理:

Z=D~—12A~D~—12XΘZ=\tilde{D}^{\text{—}\frac{1}{2}}\tilde{A}\tilde{D}^{\text{—}\frac{1}{2}}X\ThetaZ=D~—21​A~D~—21​XΘ

其中,

Θ∈RC×F\Theta\in\mathbb{R}^{C\times F}Θ∈RC×F

表示参数矩阵,

Z∈RN×FZ\in\mathbb{R}^{N\times F}Z∈RN×F

为相应的卷积结果。此时,每个节点的节点表示被更新成了一个新的F维向量,该F维向量包含了相应的一阶邻居上的信息。

卷积层

使用切比雪夫一阶展开(K=1,线性)的卷积核,外套一个非线性单元。

H(l+1)=σ(D~—12A~D~—12H(l)W(l))H^{(l+1)}=\sigma\left(\tilde{D}^{\text{—}\frac{1}{2}}\tilde{A}\tilde{D}^{\text{—}\frac{1}{2}}H^{(l)}W^{(l)}\right)H(l+1)=σ(D~—21​A~D~—21​H(l)W(l))

$H^{(l)}$为上一个卷积层的输出,表示为节点该层的embedding,作为第l+1个卷积层的输入,

H(0)=XH^{(0)}=XH(0)=X

,X为节点自身特征。

D~—12A~D~—12H(l)\tilde{D}^{\text{—}\frac{1}{2}}\tilde{A}\tilde{D}^{\text{—}\frac{1}{2}}H^{(l)}D~—21​A~D~—21​H(l)

为一阶近似卷积核,可以简单理解成加权平均邻接特征。

  1. 增加self-loops,使在卷积计算时也会考虑当前节点自身特征:

    A~=A+I\tilde{A}=A+IA~=A+I

    ,A为邻接矩阵

  2. 对$\tilde{A}$进行对称归一化:

    A^=D~—12A~D~—12\hat{A}=\tilde{D}^{\text{—}\frac{1}{2}}\tilde{A}\tilde{D}^{\text{—}\frac{1}{2}}A^=D~—21​A~D~—21​

    。避免邻居数量越多,卷积后结果越大的情况以及考虑了邻居的度大小对卷积的影响。

σ为非线性激活单元,如RELU,$W^{(l)}$为卷积层参数,每个节点共享该参数。

分层传播

每个卷积层仅处理一阶邻居特征,堆叠起来可以达到处理K阶内邻居特征。

这种作法一方面缓解当节点度分布非常广时的过拟合情况,另外也可以以更少的代价建立更深层的模型。

半监督GCN框架

输入:节点X1, X2, X3, X4,每个节点包含C维特征。

输出:经过卷积层的处理,最终输出F个分类对应的预测概率Z1, Z2, Z3, Z4

训练:其中X1, X4为带标签节点,X2, X3不带标签,共同训练,并计算带标签的节点损失,进行后向传播。

两层GCN例子

Z=f(X,A)=softmax(A~ReLU(A~XW(0))W(1))Z=f(X,A)=\text{softmax}\left(\tilde{A}\text{ReLU}\left(\tilde{A}XW^{(0)}\right)W^{(1)}\right)Z=f(X,A)=softmax(A~ReLU(A~XW(0))W(1))
  1. 输入:节点特征矩阵

    X∈RN×CX\in R^{N\times C}X∈RN×C

    及邻接矩阵

    A∈RN×NA\in R^{N\times N}A∈RN×N
  2. 预处理邻接矩阵A:

    A^=D~—12A~D~—12\hat{A}=\tilde{D}^{\text{—}\frac{1}{2}}\tilde{A}\tilde{D}^{\text{—}\frac{1}{2}}A^=D~—21​A~D~—21​
  3. 第一层卷积+ReLU非线性转换:

    H(0)=ReLU(A^XW(0))H^{(0)}=\text{ReLU}\left(\hat{A}XW^{(0)}\right)H(0)=ReLU(A^XW(0))
  4. 第二层卷积+softmax转换后输出:

    Z=f(X,A)=softmax(A~H(0)W(1))=softmax(A~ReLU(A~XW(0))W(1))⇒Z=H(1)\begin{aligned} &Z=f(X,A)=\text{softmax}\left(\tilde{A}H^{(0)}W^{(1)}\right)=\text{softmax}\left(\tilde{A}\text{ReLU}\left(\tilde{A}XW^{(0)}\right)W^{(1)}\right)\\ \Rightarrow &Z=H^{(1)} \end{aligned}⇒​Z=f(X,A)=softmax(A~H(0)W(1))=softmax(A~ReLU(A~XW(0))W(1))Z=H(1)​

实现复杂度为O(|E|CHF) ,C为X的维度,H为中间层维度、F为输出层维度。

效果

相比其他算法,效果及计算时间有明显的改进

不同传播模型的对比

计算时间

1000W边就只能CPU计算了,一个epoch 差不多要10s

硬件:

Hardwareused:16-coreIntel Xeon CPU E5-2640 v3 @ 2.60GHz, GeForce GTX TITAN X

讨论

半监督模模型

相关算法如基于图拉普拉斯正则项假设边仅编码节点相似度,限制了模型能力,而基于skip-gram的方法需要多步(随机游走+skip-gram),很难一起优化。

限制及未来工作

内存限制:由于内存原因,大图不能在GPU中工作, 通过mini-batch的梯度下降可以有一定缓解作用,然而应该考虑GCN模型的层数,如果设置为K层,则每个节点K层内的邻居必须存在在内存中,在密度高的图中可能需要进一步的近似。

有向边和边特征处理:不支持有向边 和 边特征, 可以将原始有向图表示为无向二分图,可以处理有向边和边上特征,其中附加节点表示原始图中的边。

假设限制

A~=A+IN\tilde{A}=A+I_NA~=A+IN​

表示自连接与相邻节点的边相等重要,但是对于一些数据集,可能需要引入lambda 权衡:

A~=A+λIN\tilde{A}=A+\lambda I_NA~=A+λIN​

参考资料

本文参考了这两篇知乎专栏文章。

===

PDF:

PyTorch源码:

为了缓解计算问题,Hammond在2011年论文提出可以用切比雪夫多项式展开近似卷积核gθ(类似泰勒展开):

2016年Defferrard在将上述切比雪夫近似的卷积核应用到CNN中,端到端处理图数据。

SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS
Graph Convolutional Networks in PyTorch
Wavelets on graphs via spectral graph theory - HAL-Inria
Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering
semi-GCN:基于图的半监督学习
《Semi-Supervised Classification with Graph Convolutional Networks》阅读笔记
经典半监督图卷积神经网络Semi-GCN
返回上层目录
概括
基于图的半监督学习
谱图卷积简介
谱图卷积
切比雪夫近似谱卷积
基于切比雪夫近似的GCN
本文工作
Layer-wise线性模型
卷积层
分层传播
半监督GCN框架
两层GCN例子
效果
讨论
半监督模模型
限制及未来工作
返回顶层目录
semi-gcn-paper-title
semi-gcn-paper-gcn
semi-gcn-paper-accuracy
semi-gcn-paper-models
semi-gcn-paper-time