GNN CS224W笔记

文章目录

    • Basics of deep learning for graphs
      • Supervised Training
      • 总结
      • 提问环节
    • Graph Convolutional Networks
      • 提问环节
    • Graph Attention Networks (GAT)
    • Practical tips and demos

GNN CS224W笔记_第1张图片我们希望将一个图映射到二维空间,那么我们要通过怎样的方式去映射?
我们希望神经网络能够学习这整个结构,节点之间的依赖。

GNN CS224W笔记_第2张图片shallow embedding 的局限性

  • 参数过多,计算太大(因为用邻接矩阵表示 n n n个节点的图的时候,需要 n 2 n^2 n2个参数,例如一百万个节点的网络在一百维的空间上,需要一亿个参数)
  • 五个节点的网络训练好了之后,我不能将它用于六个节点的网络,如下图因为参数的个数是固定的,所以这样的模型没有很好的泛化能力,不能推广到新图。
  • 欧氏距离只学习了节点的坐标,但是节点是有特征的

GNN CS224W笔记_第3张图片GNN CS224W笔记_第4张图片我们希望一个图能够通过深层神经网络,最后输出一个很好的预测

这是一个挑战,理由如下:

  1. 我们现在的机器学习深度学习是用于基础数据类型的(文字,图片等)
  2. 图和其他的区别(如下图)。
    - 图不是固定大小的网格,是负责的网络拓扑结构
    - 图像是一个二维结构

GNN CS224W笔记_第5张图片
GNN CS224W笔记_第6张图片那么我们希望从卷积神经网络的卷积中学到经验,对于卷积的话是从3 × \times × 3 这样一个范围内的数据学习到一个新的值,那么对于我们的图,我们同样从每个节点自身以及他的邻居节点去学习一个新的值

GNN CS224W笔记_第7张图片

如果直接将图的邻接矩阵放入卷积神经网络中学习会怎么样呢?

  1. 参数太多(节点数+特征数)
  2. 这个训练好了之后不适用于六点的图(邻接矩阵将变成6 × \times × 6)
  3. 我们希望下面的两张图的预测值是一样的(因为他们实际上是同一张图)

GNN CS224W笔记_第8张图片

Basics of deep learning for graphs

GNN CS224W笔记_第9张图片假设我们有个图吧,如果是社交网络(结点特征就是用户图像),如果是生物网络(结点特征就是基因)

GNN CS224W笔记_第10张图片通过某个结点的邻居,邻居的邻居(一般3-4步)去获取信息,去获取结点周围的网络结构
GNN CS224W笔记_第11张图片

A结点从BCD结点获取信息,C结点从ABEF结点获取信息,一直递归下去

有两层神经网络对A进行预测

GNN CS224W笔记_第12张图片整个神经网络应该是与顺序无关的,如下图,对于C这个结点来说不管是先算A还是先算B我们希望最后的结果是一样的,那么像平均值函数,最大值函数就是与顺序无关的

GNN CS224W笔记_第13张图片
GNN CS224W笔记_第14张图片
GNN CS224W笔记_第15张图片
为什么要用平均值函数?因为保持了同样的数量级(这部分我也没听懂)

GNN CS224W笔记_第16张图片
有些英文翻译了一下,解释说明也在图上了
以下图为例,计算公式就应该是
第零层:
h A 0 = x A h B 0 = x B h C 0 = x C h D 0 = x D h E 0 = x E h_A^0=x_A \quad h_B^0=x_B \quad h_C^0=x_C \quad h_D^0=x_D \quad h_E^0=x_E hA0=xAhB0=xBhC0=xChD0=xDhE0=xE
h F 0 = x F h_F^0=x_F hF0=xF
第一层
h b 1 = σ ( W 1 h a 0 + h c 0 ∣ N ( b ) ∣ + B 1 h b 0 ) h_b^1=\sigma(W_1 \frac{h_a^0+h_c^0}{\lvert N(b) \rvert}+B_1h_b^0) hb1=σ(W1N(b)ha0+hc0+B1hb0)
h c 1 = σ ( W 1 h a 0 + h b 0 + h e 0 + h f 0 ∣ N ( c ) ∣ + B 1 h c 0 ) h_c^1=\sigma(W_1 \frac{h_a^0+h_b^0+h_e^0+h_f^0}{\lvert N(c) \rvert}+B_1h_c^0) hc1=σ(W1N(c)ha0+hb0+he0+hf0+B1hc0)
h d 1 = σ ( W 1 h a 0 ∣ N ( d ) ∣ + B 1 h d 0 ) h_d^1=\sigma(W_1 \frac{h_a^0}{\lvert N(d) \rvert}+B_1h_d^0) hd1=σ(W1N(d)ha0+B1hd0)
GNN CS224W笔记_第17张图片
所以我们要学习的就是上式中的 W W W B B B

Supervised Training

如果我们有一个药物相互作用的网络,那么我们的任务可以有:

  1. 我们可以预测结点的特征:例如是否有毒,是否安全
  2. 预测链路之间的关系

GNN CS224W笔记_第18张图片GNN CS224W笔记_第19张图片
损失函数(交叉熵损失函数):
如果预测正确,即 y v = 1 y_v=1 yv=1
ζ = ∑ l o g ( σ ( z v T θ ) ) \zeta=\sum log(\sigma(z_v^T\theta)) ζ=log(σ(zvTθ))

如果预测错误,即 y v = 0 y_v=0 yv=0,则损失函数变成
ζ = ∑ l o g ( 1 − σ ( z v T θ ) ) \zeta=\sum log(1-\sigma(z_v^T\theta)) ζ=log(1σ(zvTθ))

总结

GNN CS224W笔记_第20张图片GNN CS224W笔记_第21张图片GNN CS224W笔记_第22张图片

  1. 定义一个聚合函数
  2. 定义一个损失函数,方便优化
  3. 训练一系列的节点( W W W B B B参数共享,下图对参数共享进一步解释,意思是每一层的 W W W B B B是一样的???(我不太确定))

GNN CS224W笔记_第23张图片参数共享的好处

  • 可以推广到新的节点
  • 如果是一个很大的图,你可以只训练他的子图,然后将模型应用到这个图的其他部分

提问环节

  • 如果你训练一个社交网络,然后应该很难应用到预测药物是否有毒,但是如果我建立了一个facebook上面的一个推荐者,第二天有一个新用户增加,这个模型依旧可以用在新用户身上,原因

    1. facebook每天的变化不会太大
  • 关于模型的深度
    GNN CS224W笔记_第24张图片图中所示可以是复杂的,但是整个模型的深度,从邻居结点聚合的内容不用太深,比如说一个社交网络如下图,我们想要了解一个人A,我们应该从A的朋友(1~6)等去了解,但是也不会从第n个人再去了解A了,因为太深了
    GNN CS224W笔记_第25张图片

Graph Convolutional Networks

GNN CS224W笔记_第26张图片GNN CS224W笔记_第27张图片

这个AGG有几个选择

  • Mean
  • Pool
  • LSTM
    GNN CS224W笔记_第28张图片

提问环节

如何添加边的权重
最简单的方法就是做加权平均

Graph Attention Networks (GAT)

在之前的方法中我们对每个邻居结点看成同样重要,但是我们觉得不同结点应该有不同权重。

GNN CS224W笔记_第29张图片优点

  1. 效率高,并行计算
  2. 存储效率高,结点信息和边的信息,线性大小

Practical tips and demos

一个工业级的应用,每个人拍了很多照片然后划分为不同的集合,
例如一个厨房的照片(有一个蓝色的壁炉),我们可以划分为

  • 厨房相关
  • 壁炉相关
  • 蓝色相关

GNN CS224W笔记_第30张图片

计算机视觉的缺陷:
很容易将相似的东西搞混(例如花园的栅栏和床的栅栏)

你可能感兴趣的:(深度学习)