CS224W摘要06.07.GNN

Posted oldmao_2000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CS224W摘要06.07.GNN相关的知识,希望对你有一定的参考价值。


CS224W: Machine Learning with Graphs
公式输入请参考: 在线Latex公式

复习

之前的知识点就不说了,这里把之前的Shallow Encoder的缺点列一下:

  1. 𝑶 ( ∣ 𝑽 ∣ ) 𝑶(|𝑽|) O(V) parameters are needed:
    No sharing of parameters between nodes参数个数与节点个数成正比,无法共享参数
    Every node has its own unique embedding
  2. Inherently “transductive”:
    Cannot generate embeddings for nodes that are not seen during training
  3. Do not incorporate node features:
    Many graphs have features that we can and should leverage

以上是之前学习的Shallow Encoder缺点,因此要克服这些缺点,就要引入深度学习:GNN
这里还复习了一把DL的基础知识,不写了

Basic of Deep Learning(略)

Deep Learning for Graphs

Setup

Assume we have a graph 𝑮 𝑮 G:
§ 𝑉 𝑉 V is the vertex set
§ 𝑨 𝑨 A is the adjacency matrix (assume binary)
§ 𝑿 ∈ R m × ∣ V ∣ 𝑿 ∈ ℝ^{m\\times |V|} XRm×V is a matrix of node features
§ 𝑣 𝑣 v: a node in 𝑉 𝑉 V; 𝑁 ( 𝑣 ) 𝑁(𝑣) N(v) : the set of neighbors of 𝑣 𝑣 v.

Node features:
§ Social networks: User profile, User image
§ Biological networks: Gene expression profiles, gene functional information
§ When there is no node feature in the graph dataset:
Indicator vectors (one-hot encoding of a node)
Vector of constant 1: [1, 1, …, 1]

在进入正题之前,先看下直接用邻居矩阵拼接节点特征,然后直接丢DNN里面是什么情况:

缺点:
1.参数量大,和节点数量+特征维度成正比
2.DNN结构训练好后如果图结构变化,邻接矩阵大小也会变化,此时无法适配原DNN
3.DNN对输入顺序是敏感的,而图是无序的,相同图不同的顺序图的邻接矩阵不一样,DNN无法处理无序的结构
因此,借用CNN的思想,将邻居节点信息汇聚到当前节点,但是在CNN中,卷积核大小是固定的,而图的邻居无法用固定大小的卷积核来处理,因此用的是aggregation 思想。

Describe aggregation strategies

Key idea: Generate node embeddings based on local network neighborhoods

分解后每个节点都有自己计算图:

当然可以有深度的形式:
节点在每一层都有不同embedding
第0层的embedding就是节点的输入feature
第k层的embedding可以汇聚第k跳的邻居信息

Aggregation的基本方式:

上面的Aggregation是用的平均的方式(我感觉是求和后归一化,因为分母可以放到求和号前面),其中 B l , W l B_l,W_l Bl,Wl是用于线性变换的参数,每层参数不一样,但是每层是share的,也是模型需要训练的参数
可以写成矩阵的形式。
Let H ( l ) = [ h 1 ( l ) ⋯ h ∣ V ∣ ( l ) ] T H^{(l)}=[h_1^{(l)}\\cdots h_{|V|}^{(l)}]^T H(l)=[h1(l)hV(l)]T,节点embedding的矩阵形式
邻居消息汇聚: ∑ u ∈ N v h u ( l ) = A v H ( l ) \\sum_{u\\in N_v}h_u^{(l)}=A_vH^{(l)} uNvhu(l)=AvH(l)邻接矩阵里面v节点这行
D是度矩阵,是一个对角矩阵: D v , v = D e g ( v ) = ∣ N ( v ) ∣ D_{v,v}=Deg(v)=|N(v)| Dv,v=Deg(v)=N(v)
则归一化可以表示为: D v , v − 1 = 1 ∣ N ( v ) ∣ D_{v,v}^{-1}=\\cfrac{1}{|N(v)|} Dv,v1=N(v)1
因此上图中的邻居节点的汇聚的矩阵形式可以写为:
∑ u ∈ N ( v ) h u l ∣ N ( v ) ∣ → H ( l + 1 ) = D − 1 A H ( l ) \\sum_{u\\in N(v)}\\cfrac{h_u^l}{|N(v)|}\\rightarrow H^{(l+1)}=D^{-1}AH^{(l)} uN(v)N(v)hulH(l+1)=D1AH(l)
整个式子可以写成:
H ( l + 1 ) = σ ( A ~ H ( l ) W l T + H ( l ) B l T ) , A ~ = D − 1 A H^{(l+1)}=\\sigma({\\color{Red}\\tilde AH^{(l)}W_l^T}+{\\color{Blue}H^{(l)}B_l^T}),\\tilde A=D^{-1}A H(l+1)=σ(A~H(l)WlT+H(l)BlT),A~=D1A
Red: neighborhood aggregation
Blue: self transformation

如何训练

有监督直接硬train,用交叉熵:

无监督学习直接使用图的结构信息(参考随机游走的损失函数)作为的损失函数的目标:
L = ∑ z u , z v C E ( y u , v , D E C ( z u , z v ) ) \\mathcal{L}=\\sum_{z_u,z_v}CE(y_{u,v},DEC(z_u,z_v)) L=zu,zvCE(yu,v,DEC(zu,zv))
Where y u , v = 1 y_{u,v}= 1 yu,v=1 when node 𝑢 and 𝑣 are similar
CE is the cross entropy
DEC is the decoder such as inner product

单层GNN

GNN Layer = Message + Aggregation


注意事项:
通常是用 h v l − 1 h_v^{l-1} hvl1来计算 h v l h_v^{l} hvl
生成消息要生成节点本身的消息,而且本身的消息和邻居的消息使用不同的参数,例如:

邻居的消息计算完毕后进行aggregation,然后再把邻居汇聚的结果(黄色虚线框)和节点本身的消息(红色虚线框)进行concat或者sum,例如:

感觉这里写的和后面有点不一样。。。

几种经典的图网模型的 Message + Aggregation的模式:
GCN
h v ( l ) = σ ( ∑ u ∈ N ( v ) W ( l ) h u ( l − 1 ) ∣ N ( v ) ∣ ) h_v^{(l)}=\\sigma\\left(\\sum_{u\\in N(v)}W^{(l)}\\cfrac{h_u^{(l-1)}}{|N(v)|}\\right) hv(l)=σuN(v)W(l)N(v)hu(l1)
CS224W摘要总纲(已完结)

CS224W摘要10.Knowledge Graph Embeddings

CS224W摘要03.Node Embedding

CS224W摘要05.Message passin and Node classification

CS224W摘要11.Reasoning over Knowledge Graphs

CS224W摘要09.Theory of Graph Neural Networks