文章目录
我们希望将一个图映射到二维空间,那么我们要通过怎样的方式去映射?
我们希望神经网络能够学习这整个结构,节点之间的依赖。
shallow embedding 的局限性
- 参数过多,计算太大(因为用邻接矩阵表示 n n n个节点的图的时候,需要 n 2 n^2 n2个参数,例如一百万个节点的网络在一百维的空间上,需要一亿个参数)
- 五个节点的网络训练好了之后,我不能将它用于六个节点的网络,如下图因为参数的个数是固定的,所以这样的模型没有很好的泛化能力,不能推广到新图。
- 欧氏距离只学习了节点的坐标,但是节点是有特征的
我们希望一个图能够通过深层神经网络,最后输出一个很好的预测
这是一个挑战,理由如下:
- 我们现在的机器学习深度学习是用于基础数据类型的(文字,图片等)
- 图和其他的区别(如下图)。
- 图不是固定大小的网格,是负责的网络拓扑结构
- 图像是一个二维结构
那么我们希望从卷积神经网络的卷积中学到经验,对于卷积的话是从3
×
\times
× 3 这样一个范围内的数据学习到一个新的值,那么对于我们的图,我们同样从每个节点自身以及他的邻居节点去学习一个新的值
如果直接将图的邻接矩阵放入卷积神经网络中学习会怎么样呢?
- 参数太多(节点数+特征数)
- 这个训练好了之后不适用于六点的图(邻接矩阵将变成6 × \times × 6)
- 我们希望下面的两张图的预测值是一样的(因为他们实际上是同一张图)
Basics of deep learning for graphs
假设我们有个图吧,如果是社交网络(结点特征就是用户图像),如果是生物网络(结点特征就是基因)
通过某个结点的邻居,邻居的邻居(一般3-4步)去获取信息,去获取结点周围的网络结构
A结点从BCD结点获取信息,C结点从ABEF结点获取信息,一直递归下去
有两层神经网络对A进行预测
整个神经网络应该是与顺序无关的,如下图,对于C这个结点来说不管是先算A还是先算B我们希望最后的结果是一样的,那么像平均值函数,最大值函数就是与顺序无关的
为什么要用平均值函数?因为保持了同样的数量级(这部分我也没听懂)
有些英文翻译了一下,解释说明也在图上了
以下图为例,计算公式就应该是
第零层:
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=σ(W1∣N(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=σ(W1∣N(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=σ(W1∣N(d)∣ha0+B1hd0)
所以我们要学习的就是上式中的
W
W
W和
B
B
B
Supervised Training
如果我们有一个药物相互作用的网络,那么我们的任务可以有:
- 我们可以预测结点的特征:例如是否有毒,是否安全
- 预测链路之间的关系
损失函数(交叉熵损失函数):
如果预测正确,即
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θ))
总结
- 定义一个聚合函数
- 定义一个损失函数,方便优化
- 训练一系列的节点( W W W和 B B B参数共享,下图对参数共享进一步解释,意思是每一层的 W W W和 B B B是一样的???(我不太确定))
参数共享的好处
- 可以推广到新的节点
- 如果是一个很大的图,你可以只训练他的子图,然后将模型应用到这个图的其他部分
提问环节
-
如果你训练一个社交网络,然后应该很难应用到预测药物是否有毒,但是如果我建立了一个facebook上面的一个推荐者,第二天有一个新用户增加,这个模型依旧可以用在新用户身上,原因
- facebook每天的变化不会太大
-
关于模型的深度
图中所示可以是复杂的,但是整个模型的深度,从邻居结点聚合的内容不用太深,比如说一个社交网络如下图,我们想要了解一个人A,我们应该从A的朋友(1~6)等去了解,但是也不会从第n个人再去了解A了,因为太深了
Graph Convolutional Networks
这个AGG有几个选择
- Mean
- Pool
- LSTM
提问环节
如何添加边的权重
最简单的方法就是做加权平均
Graph Attention Networks (GAT)
在之前的方法中我们对每个邻居结点看成同样重要,但是我们觉得不同结点应该有不同权重。
优点
- 效率高,并行计算
- 存储效率高,结点信息和边的信息,线性大小
Practical tips and demos
一个工业级的应用,每个人拍了很多照片然后划分为不同的集合,
例如一个厨房的照片(有一个蓝色的壁炉),我们可以划分为
- 厨房相关
- 壁炉相关
- 蓝色相关
计算机视觉的缺陷:
很容易将相似的东西搞混(例如花园的栅栏和床的栅栏)