转自本人: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. Python内置函数示例

    abs() 返回数字绝对值 >>> abs(-100) 100 >>> abs(10) 10 >>> all() 判断给定的可迭代参数 itera ...

  2. 「雕爷学编程」Arduino动手做(34)——三色LED交通灯模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  3. css 箭头三角形

    1.向下的三角形 .down{ display:inline-block; width:0px; height:0px; border-top:8px solid rgba(0, 0, 0, 0.65 ...

  4. Java子父类间静态代码块、非静态代码块、构造方法的执行顺序

    子类A继承父类B,A a=new A(); 正确的执行顺序是:父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A ...

  5. python3.x 基础八:socket网络编程

    Socket socket就是一直以来说的“套接字”,用于描述:ip:端口,是通信链的句柄,客户端通过这个句柄进行请求和响应 普通文件的操作顺序:打开-读写-关闭,针对的是文件 socket是特殊的文 ...

  6. SpringCloud(三)- OpenFeign简介及@FeignClient等注解的使用

    唯能极于情,故能极于剑 有问题或错误请及时联系小编或关注小编公众号 "CodeCow",小编一定及时回复和改正,期待和大家一起学习交流 此文由四部分组成(OpenFeign简介.@ ...

  7. JVM调优总结(七)-调优方法

    JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...

  8. [PHP学习教程 - 网络]002.获取网页内容(URL Content)

    引言:获取网页内容是我们实现网页操作的基本之基本,今天这一讲,我们和大家讲一下基本请求网页内容的几种方法. 我们似乎每天都要做这样一件事情,打开一个浏览器,输入网址,回车,一个空白的页面顿时有了东西, ...

  9. 2020本科校招-从小白到拿到30k offer的学习经历

    本文是个人的2020年年中总结 还有十几天就要毕业,面临着身份从学生到互联网社畜的转变,未来的一切捉摸不定,但凡心中万千情绪,也只能「但行好事,莫问前程」. 介绍下博主背景:计算机本科大四,刚进大三时 ...

  10. 02 . Mysql基础操作及增删改查

    SQL简介 SQL(Structured Query Language 即结构化查询语言) SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,SQL语言由IBM开发. SQL语句四大 ...