1. GNN = message + aggregation
  2. MSG可以是一个线性变换,注意hvl{h_v}^lhvl利用了v结点本身的信息。

    经典的GCN Layers:

    这里的hvlh_v^lhvl没有利用hvl−1h_v^{l-1}hvl1的信息,下一种方法GraphSAGE进行了改进,把hN(v)lh_{N(v)}^lhN(v)l的信息与hvl−1h_v^{l-1}hvl1的信息连接起来,这里的concat操作就是把向量连接的意思


    GraphSAGE neighbor Aggregation的一些方法:求和,求平均值,还有非常有意思的是用LSTM,其中求和的message是除以N(v)N(v)N(v),然后aggregation是求和;求平均值(池化)massage是用MLP,然后求平均值;LSTM就是把结点v的所有邻接结点的信息连接起来做一个LSTM

    这里所谓l2l_2l2标准化就是除以这个数据本身的平方和的平方根,但是这是可选的,因为有些情况下使用这种方法有效,有些情况下无效

    这里所谓的GAT就是加权求和,给v不同的邻接结点分配不同的权重,因为不同的邻接结点重要性是不同的,重要的权重就更大,而在GCN和GraphSAGE中,认为v的每个邻接结点的重要性是一样的,权重相同,相当于说αvu=1\alpha_{vu} = 1αvu=1对于任意的v,u均成立 。这里αvu\alpha_{vu}αvu是一个可学习的参数,一开始是随意分配的

αvu\alpha_vuαvu的计算方法,先计算evue_{vu}evu,它是通过对Wlhul−1W^l h_u^{l-1}Wlhul1Wlhvl−1W^l h_v^{l-1}Wlhvl1做attention来计算的,然后对evue_{vu}evu做一个softmax得到αvu\alpha_{vu}αvu
这里提出一个问题,什么叫attention机制?它的形式是什么?
这里给出的一个例子是先把Wlhul−1W^l h_u^{l-1}Wlhul1Wlhvl−1W^l h_v^{l-1}Wlhvl1连接起来,然后做一个线性变换。

跟transformer一样,GAT也使用了一个多头注意力的机制,其目的是为了稳定attention的过程,那么是怎么使用多头的呢?这里采用了计算多个hvl[i]h_v^l[i]hvl[i],通过不同的αvui\alpha_{vu}^iαvui来计算,其实就是多用了几个αvu\alpha_{vu}αvu的意思,有多个hvl[i]h_v^l[i]hvl[i],最后把他们连接起来或者求和得到最后的hvlh_v^lhvl
attention机制的优点:

  • 最关键的就是可以给不同的邻接结点分配不同的权重
  • 有利于并行计算,即GPU计算,因为attention的系数的计算可以使用并行计算,aggregation也可以使用并行计算
  • 存储空间少
  • 只需要考虑局部的网络邻接结点
  • 共享的参数,不依赖于图的整体结构

通过的GNN层

其中:

  • BatchNorm: 为了让训练更加稳定,单个输入变化太大,会导致训练不稳定
  • Dropout:避免过拟合
  • Attention/Gating:控制一个message的重要程度

这里batch normalization,使均值为0,方差为1,它的方法在除以标准差还加了个偏移,偏移符合高斯分布


这里dropout是为了避免过拟合,思想是在训练的时候以一个概率p,随机把一些神经元设置为0,但是在测试的时候,使用所有神经元用于计算

如何搭建GNN网络:之前我们讲了单个的GNN层,堆叠多个GNN层就变成了一个GNN网络
多层的GNN会导致一个over-smoothing问题:所有结点的embedding收敛于相同的值。这是为什么呢?

  • 定义一个概念 接收域:一些决定这个结点embedding的结点组成的一个范围叫接收域
  • 在K层的GNN网络中,每个结点有K跳邻接结点接收域
  • 共享结点的增长非常快,3跳结点的接收域就几乎是所有结点了,因为一个结点的embedding由它的接收域的结点决定,所以如果每个结点接受域为所有结点的话就会导致每个结点的embedding都是一样的。

产生了一个问题,GNN的层数越多,结点的接收域就越大,结点的embedding的会更相似,就会导致over-smoothing问题
那么,怎么解决over-smoothing问题呢?

  • 分析必要的接收域
  • 把GNN的层数设置为稍微比我们想要的接收域大一点,不要让层数不必要的多

既然层数要有限制,甚至会很少,那么又有问题了:如果GNN的层数很少的话,怎么增强GNN的表达能力呢?

  • 可以增强每一个GNN层的表达能力,可以让aggregation/transformation变成一个深度神经网络
  • 可以添加一些不进行信息传递的GNN层,一个GNN网络可以不用只有GNN层,可以添加一些MLP层,比如pre-process 层和 post-process 层,进行数据的预处理和输出数据的处理

现在考虑一个新的问题,如果我现在就是需要很多层GNN层呢?那怎么办?

  • 可以添加skip connections, 意思就是跳过一些层

思考一个问题,既然可以跳过这一层,那为什么就不直接把这一层给删了呢?这不更直接吗?
是因为这不是简单的跳过,每一层之间都有一个skip connection,它不是一定会跳过这一GNN层,而是可以跳过,也可以不跳过,那就会产生有2的N次方的路径组合,N是skip connection的个数,它会给模型带来一系列的混合模型

说实话,看到这个GNN layer with skip connection的公式,让我想起了GraphSAGE,也是应用了前一层v结点的信息,只不过GraphSAGE是concat hvl−1h_v^{l - 1}hvl1, 而skip connection是直接进行相加

这里还有skip connections的一些其他的方法

cs223w课程笔记7-GNN2相关推荐

  1. 斯坦福大学李飞飞团队图像分类课程笔记

    斯坦福大学李飞飞团队图像分类课程笔记 Stanford image classification course notes 这是斯坦福CS231n课程图像分类基础知识. 目标:这一节先介绍图像分类基本 ...

  2. Udacity机器人软件工程师课程笔记(五)-样本搜索和找回-基于漫游者号模拟器-自主驾驶

    9.自主驾驶 在接下来的环节中,我们要实现漫游者号的自动驾驶功能. 完成这个功能我们需要四个程序,第一个为感知程序,其对摄像头输入的图片进行变换处理和坐标变换使用.第二个程序为决策程序,功能是帮助漫游 ...

  3. 这份深度学习课程笔记获吴恩达点赞

    来源:机器之心 本文共7470字,建议阅读8分钟. 通过本文用优美的信息图为大家解读深度学习课程的知识与亮点~ 吴恩达在推特上展示了一份由 TessFerrandez 完成的深度学习专项课程信息图,这 ...

  4. Yann Lecun纽约大学《深度学习》2020课程笔记中文版,干货满满!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]Yann Lecun在纽约大学开设的2020春季<深度学习>课 ...

  5. 超级干货丨优美的课程笔记,吴恩达点赞的深度学习课程信息图

    吴恩达在推特上展示了一份由 TessFerrandez 完成的深度学习专项课程信息图,这套信息图优美地记录了深度学习课程的知识与亮点.因此它不仅仅适合初学者了解深度学习,还适合机器学习从业者和研究者复 ...

  6. python 慕课课程笔记(一)

    python 慕课课程笔记 1.python 是动态语言,而 java 是静态语言.动态语言变量本身的类型时不固定的,而静态语言在变量定义时就必须指定变量的类别. 2. 在python 代码中书写 a ...

  7. NTU 课程笔记: CV6422 regression

    0 回顾 在NTU 课程笔记:Nonparametric statistics_UQI-LIUWJ的博客-CSDN博客中,介绍了 Spearman Rank Correlation,来判断一对有样本之 ...

  8. CS231n课程笔记翻译

    贺完结!CS231n官方笔记授权翻译总集篇发布 - 智能单元 - 知乎专栏 https://zhuanlan.zhihu.com/p/21930884 CS231n课程笔记翻译:图像分类笔记(上) - ...

  9. CS231n课程笔记翻译:图像分类笔记(下)

    译者注:本文翻译自斯坦福CS231n课程笔记image classification notes,课程教师Andrej Karpathy授权翻译.本篇教程由杜客进行翻译,ShiqingFan和巩子嘉进 ...

最新文章

  1. 在linux上MySQL的三种安装方式
  2. js实现txt/excel文件下载
  3. Python 中的属性访问与描述符
  4. 模仿写一个小型网站框架
  5. java选填_java基础填空选择题
  6. 计算机视觉笔记本推荐_视觉灵感:Mishti笔记本
  7. 20条.net编码习惯
  8. 编译器错误~写JS还是谨慎点好
  9. 现代语音信号处理之短时傅里叶分析
  10. 软件测试考证:ISTQB、软件评测师
  11. 董明珠的“三个谜团”
  12. 接口测试平台代码实现134: 全局变量-13
  13. 硬盘的读写原理(图文详解)
  14. Unity 实现图标的拖拽功能
  15. 全栈工程师如何逆袭?
  16. jQuery事件总结(二)
  17. 苹果xr如何关机_iPhone XR 的实际体验如何?
  18. 时间机器 Time Machine 三星T7 移动硬盘SSD解决方案
  19. ONES 通过 CMMI 3 级评估认证
  20. 基于linux的贪吃蛇游戏设计_贪吃蛇还能这么玩?绝对是你从未体验过的全新版本(上)...

热门文章

  1. 2018国赛数学建模笔记
  2. 【自用】simetrix/simplis使用体验及问题分析(3)
  3. 华为机试—姓名的夫妻相
  4. 计算机网络-实验三:使用网络协议分析器捕捉和分析协议数据包
  5. PS磨皮滤镜降噪套装:Imagenomic Professional Plugin Suite
  6. chm格式文件的打开
  7. 魅蓝note2真机调试遇到的一个小问题
  8. mysql tcl 安装教程_TCL电视安装第三方应用软件的方法_简便教程
  9. python中的object是什么意思_在Python中使用’@ patch.object’和’with patch.object’有什么区别?...
  10. C8051F340芯片64位驱动移植