【图机器学习】cs224w Lecture 16 - 图神经网络的局限性
转自本人: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,这种“攻击”是怎么实现的?假设要“攻击”某购物网站,使得它给特定用户瞎推荐东西。分两种情况讨论
- 能获得这个特定用户的账号,那么事情就简单了。可以通过
- 修改该用户的信息,比如性别、年龄。这会导致系统推荐对应性别和年龄段可能感兴趣的东西;
- 关注收藏一些奇奇怪怪的商品;
- 取消关注一些已关注收藏的商品;
- 如果无法获得这个特定账号,那我们就“黑掉”几个 Ta 的朋友作为 attacker
- 修改这些 attacker 的用户信息;
- 关注奇怪的东西;
- 取消关注和目标账号的关注相关的东西;
用数学来表示 noise 对 GCN 的影响如下
好,formulation 出来了,解!不好意思,解不了…… 原因有二:其一,图结构上的修改是离散的,不能单纯的用梯度下降来优化;其二,内循环需要重新训练 GCN,太奢侈了。因此需要用 approx. 的方法来近似,比如用贪心算法一步一步的修改图结构。这里没有介绍太多细节,只是提到了 18 年 KDD 的一片文章可以参考。不过由此我们得到的结论是 GNN 对对抗攻击不具有鲁棒性。
至此,cs224w 图机器学习系列更新完毕。之后不定时会整理更新一些之前看过的论文,也会继续新的系列。
【图机器学习】cs224w Lecture 16 - 图神经网络的局限性的更多相关文章
- 【图机器学习】cs224w Lecture 15 - 网络演变
目录 Macroscopic Forest Fire Model Microscopic Temporal Network Temporal PageRank Mesoscopic 转自本人:http ...
- 图机器学习(GML)&图神经网络(GNN)原理和代码实现(前置学习系列二)
项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 欢迎fork欢迎三连!文章篇幅有限, ...
- 【cs224w】Lecture 1 & 2 - 图的性质 及 随机图
目录 Lecture 1: Introduction Lecture 2: Properties and Random Graph Degree Distribution Path Length Cl ...
- 知识图谱与机器学习 | KG入门 -- Part1-b 图深度学习
介绍 我们正在定义一种新的机器学习方法,专注于一种新的范式 -- Data Fabric. 在上一篇文章中,我们对机器学习给出了新的定义: 机器学习是一种自动发现Data Fabric中隐藏的&quo ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统
Lecture 16 Recommender Systems 推荐系统 16.1 问题形式化 Problem Formulation 在机器学习领域,对于一些问题存在一些算法, 能试图自动地替你学习到 ...
- 【GCN】图卷积网络初探——基于图(Graph)的傅里叶变换和卷积
[GCN]图卷积网络初探——基于图(Graph)的傅里叶变换和卷积 2018年11月29日 11:50:38 夏至夏至520 阅读数 5980更多 分类专栏: # MachineLearning ...
- HighCharts之2D柱状图、折线图的组合多轴图
HighCharts之2D柱状图.折线图的组合多轴图 1.实例源码 SomeAxis.html: <!DOCTYPE html> <html> <head> < ...
- HighCharts之2D柱状图、折线图的组合双轴图
HighCharts之2D柱状图.折线图的组合双轴图 1.实例源码 DoubleAxis.html: <!DOCTYPE html> <html> <head> & ...
- 第三方Charts绘制图表四种形式:饼状图,雷达图,柱状图,直线图
对于第三方框架Charts(Swift版本,在OC项目中需要添加桥接头文件),首先要解决在项目中集成的问题,集成步骤: 一.下载Charts框架 下载地址:https://github.com/dan ...
随机推荐
- 关于字符串函数size()的问题
首先如果你是一段语句 for(int i=0;i<a.size();i++)这个时候会报错 comparison between signed and unsigned integer expr ...
- sound of the genuine
“There is something in every one of you that waits and listens for the sound of the genuine in yours ...
- Java—CountDownLatch使用详解
CountDownLatch介绍 CountDownLatch概述 CountDownLatch一般用作多线程倒计时计数器,强制它们等待其他一组(CountDownLatch的初始化决定)任务执行完成 ...
- bzoj 1072状压DP
1072: [SCOI2007]排列perm Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2293 Solved: 1448[Submit][St ...
- mysql单记录也能造成的死锁
最近在开发的时候,在mysql Innodb 引擎下,一条记录记录也能引起锁的事件. 场景描述 在项目压测的是,突然发现有类似以下的异常发生: com.mysql.jdbc.exceptions.jd ...
- Kubernetes学习笔记(五):卷
简介 卷是Pod的一部分,与Pod共享生命周期.它不是独立的Kubernetes对象,因此不能单独创建. 卷提供的存储功能不但可以解决容器重启后数据丢失的问题,还可以使数据在容器间共享. 一些卷的类型 ...
- sobel( ) 算子
只是简单的使用方面的记录 sobel()算子是图像处理中用于边缘检测的 opencv-python 中的函数形式为 def Sobel(src, ddepth, dx, dy, dst=None, k ...
- C#中操作JSON
引入支持JSON操作的库,比如LitJSON: 引入之后就可以解析JSON了. 写一个JSON文本 读取这个JSON文本: 解析JSON数据最佳实践--使用泛型,将泛型类型指定成自己定义的类型,直接获 ...
- 使用fileupload组件
1. 进行文件上传时, 表单需要做的准备: 1). 请求方式为 POST: <form action="uploadServlet" method="post&qu ...
- 【JVM】堆体系结构及其内存调优
堆体系结构 一个JVM实例只存在一个堆内存,堆内存的大小是可调节的.类加载器读取类文件后,需要把类.方法.常量.变量放在堆内存中,保存所有引用类型的真实信息,以方便执行器指向,堆内存分为三个部分:年轻 ...