【斯坦福大学公开课CS224W——图机器学习】六、图神经网络1:GNN模型

文章目录

  • 【斯坦福大学公开课CS224W——图机器学习】六、图神经网络1:GNN模型
    • 1. Deep Learning for Graphs
      • 1.1 Graph Convolutional Networks
      • 1.2 如何训练GNN
    • 在这里插入图片描述](https://img-blog.csdnimg.cn/20210608213029130.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1BvbGFyaXNSaXNpbmdXYXI=,size_16,color_FFFFFF,t_70)![在这里插入图片描述](https://img-blog.csdnimg.cn/20210608215043562.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1BvbGFyaXNSaXNpbmdXYXI=,size_16,color_FFFFFF,t_70)![在这里插入图片描述](https://img-blog.csdnimg.cn/20210608215056284.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1BvbGFyaXNSaXNpbmdXYXI=,size_16,color_FFFFFF,t_70)![在这里插入图片描述
    • 2. 模型设计
      • 2.1 inductive capability
    • 3. Graph Convolutional Networks and GraphSAGE

回忆一下节点嵌入任务。其目的在于将节点映射到d维向量,使得在图中相似的节点在向量域中也相似。
我们已经学习了 “Shallow” Encoding 的方法来进行映射过程,也就是使用一个大矩阵直接储存每个节点的表示向量,通过矩阵与向量乘法来实现嵌入过程。
这种方法的缺陷在于:

  1. 需要 O(∣V∣) 复杂度(矩阵的元素数,即表示向量维度d×节点数|V| )的参数,太多了。节点间参数不共享,每个节点的表示向量都是完全独特的
  2. transductive:无法获取在训练时没出现过的节点的表示向量
  3. 无法应用节点特征信息

本节课将介绍deep graph encoders,也就是用图神经网络GNN来进行节点嵌入。
映射函数,即之前1讲过的node embedding中的encoder:ENC(v) = 基于图结构的多层非线性转换
(对节点相似性的定义仍然可以使用之前Lecture 31中的DeepWalk、node2vec等方法)

通过网络可以解决的任务有:

  1. 节点分类:预测节点的标签
  2. 链接预测:预测两点是否相连
  3. 社区发现:识别密集链接的节点簇
  4. 网络相似性:度量图/子图间的相似性

1. Deep Learning for Graphs

我们可能很直接地想到,将邻接矩阵和特征合并在一起应用在深度神经网络上(如图,直接一个节点的邻接矩阵+特征合起来作为一个观测)。这种方法的问题在于:
需要 O(|V|)的参数
不适用于不同大小的图
对节点顺序敏感(我们需要一个即使改变了节点顺序,结果也不会变的模型)

Idea: 将网格上的卷积神经网络泛化到图上,并应用到节点特征数据

1.1 Graph Convolutional Networks

通过节点邻居定义其计算图,传播并转换信息,计算出节点表示(可以说是用邻居信息来表示一个节点)

核心思想:通过聚合邻居来生成节点嵌入

直觉:通过神经网络聚合邻居信息

直觉:通过节点邻居定义计算图(它的邻居是子节点,子节点的邻居又是子节点们的子节点……)

****

深度模型就是有很多层。
节点在每一层都有不同的表示向量,每一层节点嵌入是邻居上一层节点嵌入再加上它自己(相当于添加了自环)的聚合。
第0层是节点特征,第k层是节点通过聚合k hop邻居所形成的表示向量。
在这里就没有收敛的概念了,直接选择跑有限步(k)层

邻居信息聚合neighborhood aggregation

neighborhood aggregation方法必须要order invariant或者说permutation invariant。

基础方法:从邻居获取信息求平均,再应用神经网络

这种deep encoder的数学公式:

矩阵形式
很多种聚合方式都可以表示为(稀疏)矩阵操作的形式,如这个基础方法可以表示成图中这种形式:

1.2 如何训练GNN

2. 模型设计

  1. 定义邻居聚合函数
  2. 定义节点嵌入上的损失函数
  3. 在节点集合(如计算图的batch)上做训练
  4. 训练后的模型可以应用在训练过与没有训练过的节点上

2.1 inductive capability

因为聚合邻居的参数在所有节点之间共享,所以训练好的模型可以应用在没见过的节点/图上。比如动态图就有新增节点的情况。
模型参数数量是亚线性sublinear于 |V|的(仅取决于嵌入维度和特征维度)(矩阵尺寸就是下一层嵌入维度×上一层嵌入维度,第0层嵌入维度就是特征维度嘛)

3. Graph Convolutional Networks and GraphSAGE

GCN vs. GraphSAGE
核心思想:基于local neighborhoods产生节点嵌入,用神经网络聚合邻居信息
GCN:邻居信息求平均,叠网络层
GraphSAGE:泛化neighborhood aggregation所采用的函数

【斯坦福大学公开课CS224W——图机器学习】六、图神经网络1:GNN模型相关推荐

  1. 【斯坦福大学公开课CS224W——图机器学习】三、节点和图嵌入

    [斯坦福大学公开课CS224W--图机器学习]三.节点和图嵌入 文章目录 [斯坦福大学公开课CS224W--图机器学习]三.节点和图嵌入 1. 节点嵌入 1.1 编码器与解码器 1.2 节点嵌入的游走 ...

  2. 【斯坦福大学公开课CS224W——图机器学习】五、消息传递和节点分类

    [斯坦福大学公开课CS224W--图机器学习]五.消息传递和节点分类 文章目录 [斯坦福大学公开课CS224W--图机器学习]五.消息传递和节点分类 1. Message Passing and No ...

  3. 斯坦福大学公开课 :机器学习课程

    共20讲 在网易公开课上有视频全集,难能可贵的是配带中英文字幕 斯坦福大学公开课 :机器学习课程 在JerryLead的blog中可以下到他的学习笔记以及讲义原稿. 感谢Andrew Ng, 感谢Je ...

  4. 斯坦福大学公开课:iPhone开发教程2010年冬

    2019独角兽企业重金招聘Python工程师标准>>> 斯坦福大学公开课:iPhone开发教程2010年冬 http://v.163.com/special/opencourse/i ...

  5. 斯坦福大学公开课:iOS 8开发

    斯坦福大学公开课:iOS 8开发: http://open.163.com/special/opencourse/ios8.html

  6. SCI论文如何写--斯坦福大学公开课-Writing in the Sciences

    SCI论文如何写--斯坦福大学公开课-Writing in the Sciences 链接:https://pan.baidu.com/s/1McDHMLqhs-KbpKRDNRNQTQ 提取码:12 ...

  7. iPhone应用开发视频教程-斯坦福大学公开课

    以下是一套由美国斯坦福大学(Stanford University)在2013年初推出的一套iPhone应用程序开发视频教程,详细讲解了iPhone4/iPhone4s/iPhone5/iPad等iO ...

  8. 斯坦福大学公开课机器学习:Neural Networks,representation: non-linear hypotheses(为什么需要做非线性分类器)...

    如上图所示,如果用逻辑回归来解决这个问题,首先需要构造一个包含很多非线性项的逻辑回归函数g(x).这里g仍是s型函数(即 ).我们能让函数包含很多像这的多项式,当多项式足够多时,那么你也许能够得到可以 ...

  9. 斯坦福大学公开课 :机器学习课程(Andrew Ng)——1、整体看一看

    ============================================================================[课程综述]================== ...

  10. 斯坦福大学公开课机器学习:advice for applying machine learning | learning curves (改进学习算法:高偏差和高方差与学习曲线的关系)...

    绘制学习曲线非常有用,比如你想检查你的学习算法,运行是否正常.或者你希望改进算法的表现或效果.那么学习曲线就是一种很好的工具.学习曲线可以判断某一个学习算法,是偏差.方差问题,或是二者皆有. 为了绘制 ...

最新文章

  1. tomcat和nginx的使用
  2. node(ActiveMq)
  3. c语言课程设计坦克大战,funcodec++课程设计_坦克大战
  4. 层次聚类分析代码_你知道如何聚类吗?层次聚类与聚类树
  5. Teradata应用迁移到AnalyticDB for PostgreSQL指导
  6. rx ajax,ajax_RxJS 中文文档_w3cschool
  7. java编程线程怎么处理_java编程多线程并发处理的教程
  8. 浅析HTTP代理原理--转
  9. ubuntu启动时的初始化信息二
  10. 运算放大器-偏置电流是怎样影响运放电路的
  11. python图书管理实训报告总结_结对项目 —— 图书管理系统实验报告
  12. 计算机二级成绩划分标准,计算机二级成绩划分标准
  13. JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,respon 区别
  14. rust进水器怎么用_净水器的正确使用方法?
  15. 流量变现的好方法都在这里了!
  16. 分享2022武体考研一战上岸学习心得
  17. 应届毕业生注意了,这些典型的学生思维正在阻碍你的职业发展
  18. 蓝牙协议中的SBC编码
  19. android webview 关闭缓存,Android WebView删除缓存
  20. Linux的Scp命令简单描述

热门文章

  1. Java多线程系列--【JUC集合04】- ConcurrentHashMap
  2. 我的世界java版幻翼_见到幻翼的方式是熬夜?这几个被忽略了
  3. simm计算机专业英语翻译,计算机专业英语翻译
  4. 技术人员的等级划分和资质要求
  5. 外贸软件出口管理亮点有哪些,出口贸易过程全解析
  6. 全国哀悼日网站变灰代码
  7. 已知圆柱半径求周长c语言,求圆柱体积和周长的c语言编写程序
  8. java算法:复合数据结构
  9. Python暴力破解受密码保护的zip/rar文件
  10. JAVA后台随机生成一个中文名字