转自本人:https://blog.csdn.net/New2World/article/details/106626551

这一个 Lecture 前还有一个关于 Knowledge Graph 的 slide 我打算跳过,因为 KG 我现在还没有深入研究,可能以后有空会系统地写一个系列,因此现在就不要先入为主了。后面也还有一个 slide 讲 GNN 的应用的,其实就是将前面的内容投入实际场景,没有太多新的 technique,因此也就不整理了。

而这一个 Lecture 我感觉才是比较重要的,它介绍了 GNN 的一些缺陷和限制。

Capturing Graph Structure

GNN 的模式是将一个节点根据它周围的图结构展开成一个计算图,然后做 aggregation。这么看来 GNN 的目的和功能就是抽象图结构,那为什么说这反而是它的 limitation 呢?我们针对现有的 GNN 的模型来逐个分析:

首先是 GCN,它的 aggregation 使用的是 mean pooling。对于上图中情况 (a) 和 (c),节点 v 和 v' 使用 mean pooling 得到的结果是一样的,然而这两个的结构明显不同。

然后是 GraphSAGE,它的 aggregation 使用的是 max pooling。对于图中情况 (a) 和 (b) 它都不行,因为 (a) 的 max 都是蓝色点,而 (b) 的 max 要么是红色要么是绿色,反正 v 和 v' 得到的结果都一样,因而无法区分这两个不同的图结构。

那么问题到底出现在哪里?很显然是 aggregation 函数。理想情况下,我们希望 aggregation 函数是 injective 的,即内射的。这样就能形成一个一对一的关系,将任何不同的输入映射到不同的输出。max pooling 和 mean pooling 显然不满足这个条件。

这里有个 Theorem,说任何内射的 multi-set 函数都能被表示为 \(\phi(\sum\limits_{x\in S}f(x))\) 其中 \(\phi(\cdot)\) 和 \(f(\cdot)\) 都是非线性函数。但问题是如何定义这两个关键性的函数?这还不简单,MLP 呗。

Graph Isomorphism Network

由此 GIN 诞生了,它的 aggregation 采用 MLP + sum pooling。只要 MLP 设计训练得好,它就是 injective 的。如此一来就能将对图的分辨能力 discriminative power 最大化。那么这个分辨能力到底有多强呢?

回答这个问题,首先需要了解什么事 Weisfeiler-Lehman Graph Isomorphism Test,它是一种能区分现实世界中大部分图结构的方法。形象地理解, WL test 对展开后的各个节点染色,不同的展开结构对应不同颜色,然后通过对比节点颜色和对应数量来判断是否是 isomorhpism。

这和 GIN 在操作上异曲同工,因此理论上来说 WL test 是 GIN 的上界。然而 WL test 也并非打遍天下无敌手,遇到类似下面这种图 WL test 也会犯错,因为每个节点周围的局部展开图都一样。

Vulnerability to Noise

其实这个问题可以归结于数据“攻击”,即图像中通过修改部分不易被人眼察觉的像素来达到 adversarial attack 的目的。对于 graph,这种“攻击”是怎么实现的?假设要“攻击”某购物网站,使得它给特定用户瞎推荐东西。分两种情况讨论

  1. 能获得这个特定用户的账号,那么事情就简单了。可以通过

    • 修改该用户的信息,比如性别、年龄。这会导致系统推荐对应性别和年龄段可能感兴趣的东西;
    • 关注收藏一些奇奇怪怪的商品;
    • 取消关注一些已关注收藏的商品;
  2. 如果无法获得这个特定账号,那我们就“黑掉”几个 Ta 的朋友作为 attacker
    • 修改这些 attacker 的用户信息;
    • 关注奇怪的东西;
    • 取消关注和目标账号的关注相关的东西;

用数学来表示 noise 对 GCN 的影响如下

好,formulation 出来了,解!不好意思,解不了…… 原因有二:其一,图结构上的修改是离散的,不能单纯的用梯度下降来优化;其二,内循环需要重新训练 GCN,太奢侈了。因此需要用 approx. 的方法来近似,比如用贪心算法一步一步的修改图结构。这里没有介绍太多细节,只是提到了 18 年 KDD 的一片文章可以参考。不过由此我们得到的结论是 GNN 对对抗攻击不具有鲁棒性。


至此,cs224w 图机器学习系列更新完毕。之后不定时会整理更新一些之前看过的论文,也会继续新的系列。

【图机器学习】cs224w Lecture 16 - 图神经网络的局限性的更多相关文章

  1. 【图机器学习】cs224w Lecture 15 - 网络演变

    目录 Macroscopic Forest Fire Model Microscopic Temporal Network Temporal PageRank Mesoscopic 转自本人:http ...

  2. 图机器学习(GML)&图神经网络(GNN)原理和代码实现(前置学习系列二)

    项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 欢迎fork欢迎三连!文章篇幅有限, ...

  3. 【cs224w】Lecture 1 & 2 - 图的性质 及 随机图

    目录 Lecture 1: Introduction Lecture 2: Properties and Random Graph Degree Distribution Path Length Cl ...

  4. 知识图谱与机器学习 | KG入门 -- Part1-b 图深度学习

    介绍 我们正在定义一种新的机器学习方法,专注于一种新的范式 -- Data Fabric. 在上一篇文章中,我们对机器学习给出了新的定义: 机器学习是一种自动发现Data Fabric中隐藏的&quo ...

  5. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统

    Lecture 16 Recommender Systems 推荐系统 16.1 问题形式化 Problem Formulation 在机器学习领域,对于一些问题存在一些算法, 能试图自动地替你学习到 ...

  6. 【GCN】图卷积网络初探——基于图(Graph)的傅里叶变换和卷积

    [GCN]图卷积网络初探——基于图(Graph)的傅里叶变换和卷积 2018年11月29日 11:50:38 夏至夏至520 阅读数 5980更多 分类专栏: # MachineLearning   ...

  7. HighCharts之2D柱状图、折线图的组合多轴图

    HighCharts之2D柱状图.折线图的组合多轴图 1.实例源码 SomeAxis.html: <!DOCTYPE html> <html> <head> < ...

  8. HighCharts之2D柱状图、折线图的组合双轴图

    HighCharts之2D柱状图.折线图的组合双轴图 1.实例源码 DoubleAxis.html: <!DOCTYPE html> <html> <head> & ...

  9. 第三方Charts绘制图表四种形式:饼状图,雷达图,柱状图,直线图

    对于第三方框架Charts(Swift版本,在OC项目中需要添加桥接头文件),首先要解决在项目中集成的问题,集成步骤: 一.下载Charts框架 下载地址:https://github.com/dan ...

随机推荐

  1. React:Component

    web开发由web pages过渡到web app 后,开发的模式也发生了变化,由传统的主张结构.样式.行为分离到现在的组件化,把应用的各个部分看成解耦的部分,每部分自包含js.css和html,以方 ...

  2. Django之ORM配置与单表操作

    ORM数据库操作流程: 1.    配置数据库(项目同名包中settings.py和__init__.py) 2.    定义类(app包中models.py),执行建表命令(Tools---> ...

  3. Power安装linux-BIG ENDIAN mysql编译安装

    一.安装系统,不选择额外的软件 mkvdev -vadapter vhost0 -vdev hdisk2 -dev db_mysql01_sys mkvdev -vadapter vhost0 -vd ...

  4. 关于hadoop3.x MR报错:找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster

    用的apache Hadoop3.X,今天运行MR报错: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster 关键需要配置两个配置:ma ...

  5. easyui API

    http://www.jeasyuicn.com/api/docTtml/index.htm

  6. Python之Flask框架一

    flask是一个使用 Python 编写的轻量级 Web 应用框架.轻巧页就意味着他比较简洁,不过见到的MTV框架还是有的,(MVC)但是最重要的还是他的可扩展性很强,对比与Django框架呢,他的灵 ...

  7. 基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群 部署 dashboard 2.x

    1. 部署dashboard 2.x版本 Dashboard 分为 1.x版本 和 2.x版本, k8s 使用的是1.18.2 故部署2.x版本的 # dashboard 2.x版本的部署 # 上传d ...

  8. centos7 在docker下安装mongodb

    第一步:安装 1.1 查找(查看)mongo相应的版本 [root@localhost ~]# docker search mongo INDEX NAME DESCRIPTION STARS OFF ...

  9. Binlog2sql+CentOS7 离线安装

    Binlog2sql+CentOS7 离线安装 目录 Binlog2sql+CentOS7 离线安装 1. 环境 2. 下载 3.1 Pip 安装 3.2 PyMySQL/mysql-replicat ...

  10. Rocket - debug - SBA

    https://mp.weixin.qq.com/s/eFOHrEhvq2PlEJ14j2vlhg 简单介绍SBA的实现. 1. SystemBusAccessState 系统总线访问状态: 分别是: ...