图卷积神经网络(GCN)的理论与实践

前言

深度学习中大家熟知的几种框架DNN、CNN、RNN(LSTM和GRU)等等是为了处理欧式空间中的数据,如图片、语音、文本。而图神经网络可以应用于更为丰富的拓扑结构数据,如社交网络、推荐系统、交通网络等,这些数据的特点是具有无序的连接关系。
图神经网络是受CNN的启发,并假设距离越近的两个节点,它们的关系也更为亲密,试图通过将节点的特征信息和节点之间的拓扑信息相结合的方式来进行节点预测、图预测等任务。

信号处理和傅里叶变换(基础)

以波的形式传递的信号常常会通过傅里叶变换将其从时域空间转到频域空间进行处理,下面以一个简单的例子进行说明:对声音进行变声处理,可以分为以下几步,

1.用傅里叶变换将声波从时域转换到频域,
F(w)=\int_{- \infty}^{+\infty} f(t)e^{-itw}dt

左图为声波的时域图,右图为频域图

2.对频域图进行滤波处理:即用某个函数h(w)F(w)相乘,

滤波后的频域图.png

3.将频域进行逆傅里叶变换,重新变为声波,
F(t) = \int_{-\infty}^{+\infty}f(w)e^{itw}dw
变换后的时域图

图片转自python基于傅里叶变换的频率滤波-音频降噪

注:傅里叶变换就是以e^{-iwt}为基底,f(t)为系数的线性组合。

图基本定义

设G(V,E),V代表节点集合,共有N个节点;E代表边集合,共有M条边。可以用连接矩阵A来表示一个图的拓扑结构信息,
A = \left\{ \begin{aligned} &1 \ \ A_{ij} \in E\\ &0 \ \ A_{i,j} \notin E \end{aligned} \right.
用D表示度矩阵,它是一个对角阵,对角线上的元素是节点的度数,
D_{ii} = \sum_j A_{ij}\
拉普拉斯矩阵L的定义如下:
L = D - A

拉普拉斯矩阵

为了使大家能对GCN有更加直观的理解,这里对拉普拉斯矩阵做几点说明。

  • (L x)_{i}=\sum_{j \in N(v_i)} (x_i - x_j),其中x \in R^NN(v_i)代表节点v_i的一阶邻居节点集合。可以看到L矩阵是对图中一阶节点信息的简单聚合操作。
  • x^T L x = \sum_{e_{ij}\in E} (x_i - x_j)^2,可以衡量一个图中节点信息的差异性,该值越大,则信息差异也越大。且可以看出L是对称的半正定矩阵。
  • 常用的拉普拉斯矩阵是其规范化的形式:L_{s} = D^{(- \frac{1}{2})} L D^{(- \frac{1}{2})},该矩阵通过特征分解得到的特征值,其范围是[0,2)。证明如下,
    Lemma
    \lambda_{min} = min \frac{x^T B x}{x^T x},\\ \lambda_{max}=max \frac{x^T B x}{x^T x}
    其中\lambda_{min}是矩阵B的最小特征值,\lambda_{max}是矩阵B的最大特征值。
    Proof
    最小特征值为0可以从L_{s}为半正定矩阵推出,且其特征向量较易得出D^{\frac{1}{2}} I,下证其最大特征值<2,
    \begin{aligned} & \frac{x^TL_{s} x}{x^T x} \\ =& \frac{x^TD^{(- \frac{1}{2})} L D^{(- \frac{1}{2})}x}{x^T x} \\ =& \frac{y^TL y}{y^T D y} (令y=D^{- \frac{1}{2}}x) \\ =& \frac{\sum_{e_{ij} \in E} (y_i - y_j)^2}{\sum_{e_{ij} \in E}(y_i ^2 + y_j ^2)} \\ \leq & \frac{\sum_{e_{ij} \in E} 2(y_i ^2 + y_j ^2)}{\sum_{e_{ij} \in E}(y_i ^2 + y_j ^2)} = 2,得证 \end{aligned}
  • 特征分解:因为L是一个对称阵,一定有一个正交阵V,使得其对角化,对应的对角矩阵为\Lambda,
    VLV^T = \Lambda
    x \in R^N,对其进行傅里叶变换,
    \tilde{x} = V^T x
    对其进行逆傅里叶变换:
    \begin{aligned} x =& V \tilde{x} \\ =& [v_1,...,v_N] \tilde{x} \\ =& \sum_{i=1}^{N} v_i \tilde{x}_i \end{aligned}
    其中特征向量v_i为基底,傅里叶系数为其线性组合的系数。

GCN

理论

GCN的计算过程与信号处理过程相同,先将卷积核和图数据通过傅里叶变换转换到频域空间,再对频域空间的系数进行数值运算,最后进行逆傅里叶变换得到卷积后的结果。设x \in R^N是图中节点的特征向量,\theta是待学习的参数,则一次图卷积可以定义为,
\begin{aligned} y=&F^{-1}(g(\theta) \circ F(x)) \\ =&F^{-1}(g(\theta)\circ V^Tx)\\ =&F^{-1}(diag(\theta)V^Tx) \\ =&Vdiag(\theta)V^Tx \end{aligned}
其中F代表傅里叶变换,F^{-1}代表逆傅里叶变换,g(\theta)=diag(\theta)\circ代表元素之间的点乘。
从式子中可以看出待学习的参数是diag(\theta),N个,即和图中节点的数目相关,该方法难以适应节点数量较多的图(而这种情况在现实世界中更为常见)。那么可以使用多项式进行逼近,下面简单介绍下切比雪夫多项式。
切比雪夫多项式递推形式\left\{\begin{aligned} &T_0(x) = 1\\ &T_1(x) = x\\ &T_n(x) = 2x*T_{n-1}(x) - T_{n-2}(x) \end{aligned} \right. x\in[-1,1]
则对应的g(\theta)=\sum_{k=0}^{K}\theta_{k}'T_k(\tilde\Lambda),其递推形式为,
切比雪夫多项式递推形式 \left\{\begin{aligned} &T_0(\tilde\Lambda) = 1\\ &T_1(\tilde\Lambda) = \tilde\Lambda\\ &T_n(\tilde\Lambda) = 2\tilde\Lambda*T_{n-1}(\tilde\Lambda) - T_{n-2}(\tilde\Lambda) \end{aligned} \right. \tilde\Lambda=\frac{2}{\lambda_{max}}\Lambda_s-I \in [-1, 1]
对应的y=\sum_{k=0}^{K}\theta_{k}'T_k(\tilde L)x,其递推形式为,
切比雪夫多项式递推形式 \left\{\begin{aligned} &T_0(\tilde L) = 1\\ &T_1(\tilde L) = \tilde L\\ &T_n(\tilde L) = 2 \tilde L*T_{n-1}(\tilde L) - T_{n-2}(\tilde L) \end{aligned} \right. \tilde L=\frac{2}{\lambda_{max}}L_s-I \in [-1, 1]
用一阶切比雪夫多项式进行逼近,\lambda_{max} \approx2,令\theta=\theta_0'=-\theta_1'
\begin{aligned} y=&(\theta_0I+\theta_1\tilde L)x \\ =&(\theta_0I+\theta_1(L_s-I))x\\ =&(\theta_0I-\theta_1D^{-\frac{1}{2}}AD^{-\frac{1}{2}})x\\ =&\theta(I+D^{-\frac{1}{2}}AD^{-\frac{1}{2}})x\\ \approx & \theta\tilde D^{-\frac{1}{2}}\tilde A \tilde D^{-\frac{1}{2}} x \end{aligned}
其中\tilde D=D+I,\tilde A=A+I
进一步推广,得到图卷积的形式,设X \in R^{n*m}m是特征向量的维度,W\in R^{m*d}d是输出向量的维度,
Z=\tilde D^{-\frac{1}{2}}\tilde A \tilde D^{-\frac{1}{2}}XW
paper:semi-supervised classification with graph convolutional networks

实践(代码)

使用cora数据进行实践,cora数据是一个论文引用关系网络,节点代表一篇论文,边代表两篇论文之间的引用关系;节点有7种分类,分属于不同的学科。通过GCN对该数据进行节点分类任务。


训练误差与测试误差.png

最后对隐藏层的输出进行t-sne可视化,得到


隐藏层的可视化.png

代码:7nic7 GitHub

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,271评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,725评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,252评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,634评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,549评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,985评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,471评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,128评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,257评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,233评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,235评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,940评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,528评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,623评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,858评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,245评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,790评论 2 339