2021年的第一盆冷水:有人说别太把图神经网络当回事儿

来源:数学中国

图神经网络(GNN)是机器学习中最热门的领域之一,在过去短短数月内就有多篇优秀的综述论文。但数据科学家 Matt Ranger 对 GNN 却并不感冒。他认为这方面的研究会取得进展,但其他研究方向或许更重要。

博客链接:https://www.singlelunch.com/2020/12/28/why-im-lukewarm-on-graph-neural-networks/

机器之心对这篇博客进行了编译整理,以下是博客内容。

模型的关键是压缩

图经常被认为是一种「非欧几里得」数据类型,但实际上并不是。正则图(regular graph)只是研究邻接矩阵的另一种方式:

如上图所示,充满实数的矩阵却被称为「非欧几里得」,这很奇怪。

其实这是出于实际原因。大多数图都相当稀疏,因此矩阵中会包含很多 0。从这个角度看,非零数值非常重要,这让问题接近于(计算上很难的)离散数学,而不是(容易的)连续、梯度友好的数学。

有了全矩阵,情况会变得容易

如果不考虑物理领域的内容,并假设存在全邻接矩阵,那么很多问题就会迎刃而解。

首先,网络节点嵌入不再是问题。一个节点就是矩阵中的一行,因此它本身已经是数字向量。

其次,所有网络预测问题也都被解决。一个足够强大且经过良好调整的模型将只提取网络与附加到节点上的目标变量之间的全部信息。

NLP 也只是一种花哨的矩阵压缩

让我们把目光从图转移到自然语言处理(NLP)领域。大多数 NLP 问题都可以看成图问题,所以这并不是题外话。

首先,像 Word2Vec、GloVe 这类经典词嵌入模型只进行了矩阵分解。

GloVe 算法基于词袋(bag of words)矩阵的一种变体运行。它会遍历句子,并创建一个(隐式)共现图,图的节点是词,边的权重取决于这些单词在句子中一同出现的频率。之后,Glove 对共现图的矩阵表示进行矩阵分解,Word2Vec 在数学方面是等效的。

语言模型也只是矩阵压缩

NLP 中许多 SOTA 方法都离不开语言模型。以 BERT 为例,BERT 基于语境来预测单词:

这就使我们正在分解的矩阵从词对共现发展为基于句子语境的共现:

我们正在培养待分解的「理想矩阵」。正如 Hanh & Futrell 所说:

人类语言和语言建模具有无限的统计复杂度,但可以在较低层次上得到很好地近似。这一观察结果有两层含义:

我们可以使用相对较小的模型获得不错的结果;

扩大模型具备很大潜力。

语言模型解决了很大的问题空间,以至于从柯氏复杂性(Kolmogorov Complexity)角度来看,它们可能近似压缩了整个语言。庞大的语言模型可能记住了很多信息,而不是压缩信息。

我们能像语言模型一样对任意图执行上采样吗?

实际上,我们已经在做了。

我们将图的「一阶」嵌入称为通过直接分解图的邻接矩阵或拉普拉斯矩阵(Laplacian matrix)来运行的方法。只要使用拉普拉斯特征映射(Laplacian Eigenmap)或采用拉普拉斯的主要组成部分进行图嵌入,那它就是一阶方法。类似地,GloVe 是词共现图上的一阶方法。我最喜欢的图一阶方法之一是 ProNE,它和大多数方法一样有效,但速度快了一个数量级。

高阶方法嵌入了原始矩阵和邻居的邻居连接(第二阶)以及更深的 k 步连接。GraRep 表明,通过扩展图矩阵可以基于一阶方法生成高阶表示。

高阶方法是在图上执行的上采样。基于大型邻域采样的 GNN 和 node2vec 等随机游走方法执行的是高阶嵌入。

性能增益在哪儿?

过去 5 年中,大多数 GNN 论文的实验数据对从业者选择要使用的模型都是无用的。

正如论文《Open Graph Benchmark: Datasets for Machine Learning on Graphs》中所写的那样,许多 GNN 论文基于一些节点数为 2000-20,000 的小型图数据集进行实验(如 Cora、CiteSeer、PubMed)。这些数据集无法真正地区分不同 GNN 方法之间的区别。

近期的一些研究开始直接解决这一问题,但是为什么研究者这么长时间一直在小型、无用的数据集上做实验呢?这个问题值得讨论。

性能和任务有关

一个令人震惊的事实是,尽管语言模型在大量 NLP 任务中达到最优性能,但如果你只是把句子嵌入用于下游模型,那么从语言模型嵌入中获得的性能增益并不比累加 Word2Vec 词嵌入这类简单方法要多。

类似地,我发现对于很多图而言,简单的一阶方法在图聚类和节点标签预测任务中的性能和高阶嵌入方法差不多。事实上,高阶方法还消耗了大量算力,造成了浪费。

此类一阶方法包括 ProNE 和 GGVec(一阶)。

高阶方法通常在链接预测任务上有更好的表现。

有趣的是,链接预测任务中的性能差距对于人工创建的图而言是不存在的。这表明,高阶方法的确能够学习到现实图的某种内在结构。

就可视化而言,一阶方法表现更好。高阶方法的可视化图可能会出现伪影,例如 Node2Vec 可视化会有长丝状的结构,它们来自较长单链随机游走的嵌入。高阶方法和一阶方法的可视化对比情况参见下图:

最后,有时候简单的方法能够打败高阶方法。问题在于我们不知道什么时候一类方法优于另一类方法,当然也不知道其原因。

不同类型的图在被不同方法表示时反应有好有坏,这背后当然是有原因的。但这目前仍是个开放性问题。

这其中的一大因素是研究空间充斥了无用的新算法。原因如下:

学术动机阻碍进步

愤世嫉俗者认为机器学习论文是通过以下方式炮制的:

  1. 使用已有的算法;

  2. 添加新的层 / 超参数,用数学形式描述其重要性;

  3. 对超参数执行网格搜索,直到该新方法打败被模仿的那个基线方法;

  4. 绝不对在「实验结果」部分中进行对比的方法执行网格搜索;

  5. 给新方法起个不错的缩写名称,不公布 Python 2 代码。

我不是唯一一个对当前可复现研究持此观点的人。至少近两年情况好了一点。

所有进展都关乎实际问题

早在四十多年前,我们就已经知道如何训练神经网络了,但直到 2012 年 AlexNet 出现,神经网络才出现爆炸式发展。原因在于实现和硬件都发展到了一个节点,足以使深度学习应用于实际问题。

类似地,至少 20 年前,我们就已经知道如何将词共现矩阵转换为词嵌入。但词嵌入技术直到 2013 年 Word2Vec 问世才出现爆发式发展。其突破点在于基于 minibatch 的方法允许在商用硬件上训练 Wikipedia 规模的嵌入模型。

如果只花费数天或数周时间在小规模数据上训练模型,那么这个领域的方法很难取得进步。研究者会失去探索新方法的动力。如果你想取得进展,你必须尝试在商用硬件上以合理时间运行模型。谷歌的初始搜索算法最开始也是在商用硬件上运行的。

效率更重要

深度学习研究的爆发式发展离不开效率的提升,以及更好的软件库和硬件支持。

模型架构没那么重要

今年更加重要的一篇论文是 OpenAI 的《Scaling Laws for Neural Language Models》。这篇文章指出,模型中的原始参数数量是对整体性能最具预测性的特征。最初的 BERT 论文也指出了这一点,并推动了 2020 年大规模语言模型的迅速增加。

这一现实呼应了 Rich Sutton 在《苦涩的教训 (https://mp.weixin.qq.com/s/B6rnFLxYe2xe5C5f2fDnmw)》一文中提出的观点:

利用算力的一般方法最终是最有效的方法。

Transformer 可能也在替代卷积,正如知名 YouTube 博主 Yannic Kilcher 所说,Transformer 正在毁掉一切。它们可以和图网络结合,这也是最近几年出现的方法之一,而且在基准测试中表现出色。

研究者似乎在架构方面投入了太多精力,但架构并没有那么重要,因为你可以通过堆叠更多层来近似任何东西。

效率的胜利是伟大的,而神经网络架构只是实现这一目标的方式之一。在架构方面投入过多的精力,只会使我们错过其他方面的巨大收益。

当前的图数据结构实现太差劲了

NetworkX 是一个糟糕的库。我是说,如果你正在处理一些微小的图,该库表现还 OK。但如果处理大规模的图任务,这个库会令你抓狂且迫使你重写所有的东西。

这时,多数处理大规模图任务的用户不得不手动滚动一些数据结构。这很难,因为你的计算机内存是由 1 和 0 组成的一维数组,并且图没有明显的一维映射。

这种情况在我们更新图(如添加 / 移除节点 / 边缘)时会变得更加困难。以下提供了几个替代选择:

分离的指针网络

NetworkX 就是最好的示例。每个节点对象都包含指向其他节点的指针列表(节点边缘),其布局就像链表一样。

链表完全违背了现代计算机的设计方式。它从内存中读取数据非常慢,但在内存中的运行速度却很快(快了两个数量级)。在这种布局中,无论何时做任何事情,你都需要往返 RAM。这在设计上就很慢,你可以使用 Ruby、C 或者汇编语言编写,但还是很慢,这是因为硬件上的内存读取速度就很慢。

这种布局的主要优势在于其添加了新节点 O(1)。所以如果你在维护一个庞大的图,并且添加和移除节点的频率与从图中读取数据的频率相同,则这种布局挺适合的。

另外一个优势是这种布局可以「扩展」。这是因为所有数据彼此之间可解耦,所以你可以将这种数据结构放置在集群上。但实际上,你正在为自身问题创造一个复杂的解决方案。

稀疏邻接矩阵

稀疏邻接矩阵非常适合只读(read-only)图。我在自己的 nodevectors 库中将它作为后端使用,很多其他的库编写者使用 Scipy CSR Matrix。

最流行的布局是 CSR 格式,你可以使用 3 个数组来保存图,分别用于边缘终点、边缘权重和「索引指针」,该指针说明边缘来自哪个节点。

此外,得益于 CSR 的 3 数组布局,它可以在单个计算机上进行扩展:CSR 矩阵可以放置在磁盘上,而不用放在内存中。你只需要对 3 个数组执行内存映射,并在磁盘上使用它们。

随着现代 NVMe 驱动器的出现,随机搜索速度不再那么慢了,要比扩展基于链表的图时进行分布式网络调用快得多。但这种表征存在的问题是:添加一个节点或边缘意味着重建整个数据结构。

Edgelist 表征

这种表征具有 3 个数组:分别用于边缘源、边缘终点和边缘权重。DGL 包在其内部使用的正是这种表征。其简单、紧凑的布局非常适合分析使用。

与 CSR 图相比,该表征的问题在于某些寻轨操作(seek operation)速度较慢。假设你要找出节点#4243 的所有边缘,则如果不维护索引指针数组,就无法跳转到那里。

因此,你可以保持 sorted order 和二分搜索 (O(log2n)) 或 unsorted order 和线性搜索 (O(n))。

这种数据结构也可以在内存映射的磁盘阵列上使用,并且在 unsorted 版本上节点添加速度很快(在 sorted 版本上运行缓慢)。

全局方法是条死胡同

一次性处理整个图的方法无法利用算力,因为它们达到一定规模就会把 RAM 耗尽。

因此,任何想要成为新标准的方法都要能对图的各个部分进行逐个更新。

基于采样的方法

未来,采样效率将变得更加重要。

  • Edgewise 局部方法。我所知道的能做到这一点的算法只有 GloVe 和 GGVec,它们通过一个边列表,并在每一步上更新嵌入权重。这种方法的问题在于,它们很难应用于更加高阶的方法。但其优点也很明显:很容易进行扩展,即使是在一台计算机上也不例外。此外,逐渐增加新的节点也很简单,只需要获取现有的嵌入,添加一个新节点,然后在数据上执行一个新的 epoch。

  • 随机游走采样。采用这一方法的包括 deepwalk 及相关的后续工作,通常用于嵌入而不是 GNN 方法。这在计算上可能非常昂贵,添加新节点也很困难。但它是可以扩展的,Instagram 就用它来为自己的推荐系统提供信息。

  • 邻接采样。这是目前 GNN 中最普遍的一种采样方法,低阶、高阶都适用(取决于 neighborhood 的大小)。它的可扩展性也很好,尽管很难高效执行。Pinterest 的推荐算法用的就是这种方法。

结论

这里有几个有趣的问题:

  1. 图类型和图方法之间是什么关系?

  2. 统一的基准测试,如 OGB。

  3. 我们把随机的模型扔给随机的基准,却不知道为什么或者什么时候它们表现得更好。

  4. 更基础的研究。我很好奇:其他表示类型(如 Poincarre 嵌入)能否有效地编码定向关系?

另一方面,我们不应该再专注于添加新的层,并在相同的小型数据集上进行测试。没人在乎这个。

这篇博客在 Reddit 上引发了一些讨论,详情参阅:https://www.reddit.com/r/MachineLearning/comments/kqazpd/d_why_im_lukewarm_on_graph_neural_networks/

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSP页面元素,内置对象及request详解

JSP的页面元素&#xff1a; a. 脚本Scriptlet 1.<% 局部变量&#xff0c;Java语句 %> 2.<%! 全局变量&#xff0c;定义方法 %> 3.<% 输出表达式 %> 一般而言&#xff0c;修改web.xml&#xff0c;配置文件&#xff0c;Java&#xff0c;需要重启tomcat服务&am…

美国科学院报告《无止境的前沿:科学的未来75年》

来源&#xff1a;科技咨询频道作者&#xff1a;刘昊 张志强 曹玲静编译&#xff1a;刘昊 张志强 曹玲静 &#xff08;中国科学院成都文献情报中心&#xff09;2020年12月17日&#xff0c;美国国家科学院出版报告《无止境的前沿——科学的未来75年》&#xff08;The Endless Fro…

jsp内置对象--response

response&#xff1a;响应对象 提供的方法&#xff1a;void addcookie(Cookie cookie);服务端向客户端增加一个cookie对象 void sendRedirect(String location) throws IOException:页面跳转的一种方式&#xff08;重定向&#xff09; void setContetType(String type) :设置…

AR增强现实技术解读

来源&#xff1a;网络 AR增强现实&#xff0c;是用户对现实世界感知的新技术。一般认为&#xff0c;AR技术的出现源于虚拟现实技术&#xff08;Virtual Reality&#xff0c;简称VR&#xff09;的发展&#xff0c;但二者存在明显的差别。传统VR技术给予用户一种在虚拟世界中完全…

人工智能十年回顾:CNN、AlphaGo、GAN……它们曾这样改变世界

来源&#xff1a;机器学习研究组订阅号过去十年间&#xff0c;人工智能技术突飞猛进&#xff0c;最疯狂的科幻小说场景现在已经成为我们生活中不可或缺的一部分。十年前&#xff0c;人们在谈论 AI 的理论化和实验&#xff0c;但这些年来&#xff0c;AI 变得更加切实了&#xff…

jsp--cookie

cookie&#xff08;客户端&#xff0c;不是内置对象&#xff09;:Cookies是服务端生成的&#xff0c;再发送给客户端保存 相当于本地缓存的作用&#xff1a; 客户端->服务端 eg&#xff1a;看一个电影&#xff0c;服务端产生发给客户端&#xff0c;第二次看就快了 作用&a…

Python学习笔记——GIF倒放处理

自动读取指定路径下所有gif格式的文件&#xff0c;利用Python图像处理库PIL下的Image、ImageSequence模块&#xff0c;批量实现gif倒放处理并保存。代码如下&#xff1a;# encoding: utf-8 import os import sys from PIL import Image, ImageSequencepath sys.path[0] …

OpenAI发布新人工智能系统:根据文字生成图像

来源&#xff1a;新浪科技据报道&#xff0c;旧金山人工智能研究公司OpenAI已经开发了一种新系统&#xff0c;能根据短文本来生成图像。OpenAI在官方博客中表示&#xff0c;这个新系统名为DALL-E&#xff0c;名称来源于艺术家萨尔瓦多达利&#xff08;Salvador Dali&#xff09…

jsp内置对象--session

session&#xff08;服务端&#xff09; session&#xff1a;会话 1. 浏览网站&#xff1a;开始->关闭 2. 购物&#xff1a;浏览&#xff0c;结算&#xff0c;付款&#xff0c;退出 3. 电子邮件&#xff1a; 浏览&#xff0c;写邮件&#xff0c;退出 以上都是session的…

python深拷贝实现原理,js递归实现深拷贝

经过小编之前关于JavaScript深拷贝实现方式的介绍&#xff0c;大家已经知道深拷贝能够实现真正意义上的数组和对象的拷贝。其实使用内置对象JSON虽然简答&#xff0c;但不能将对对象的方法深拷贝&#xff0c;因此使用递归的方式就是最实用的&#xff0c;本文介绍使用递归的方式…

梅宏院士:操作系统变迁有20年周期律,泛在计算是一片新蓝海

梅宏来源&#xff1a;观察者网作者&#xff1a;梅宏院士中国科学院院士、发展中国家科学院院士、欧洲科学院外籍院士、IEEE FELLOW&#xff0c;中国计算机学会理事长&#xff0c;北京大学信息技术高等研究院智能软件技术与应用研究中心首席科学家。信息技术发展正在进入人机物融…

IEEE CS:2021年的12大技术趋势

来源&#xff1a;笑看国际风云LOS ALAMITOS, Calif., 16 December 2020 – IEEE计算机协会&#xff08;IEEE CS&#xff09;公布了其2021技术预测报告&#xff08;2021 Technology Predictions&#xff09;&#xff0c;重点关注大流行对人类生活&#xff0c;供应链&#xff0c;…

jsp内置对象--application

appliation 全局对象 String getContextPath()&#xff1a;虚拟路径 String getRealPath(虚拟路径)&#xff1a;绝对路径&#xff08;虚拟路径 相对的绝对路径&#xff09;

D1 模拟赛

T1 note 数组开小 菜的真实 60分 题目大意&#xff1a; 一个字符串 分成若干段 使每段内都没有重复的字符 求最少的段数 思路&#xff1a; 可以贪心 1 #include<iostream>2 #include<cstdio>3 #include<cmath>4 #include<cstdlib>5 #include<cstrin…

模仿人脑视觉处理,助力神经网络应对对抗性样本

来源&#xff1a;混沌巡洋舰自从深度学习只能识别支票和信封上的手写字母以来&#xff0c;它已经取得了长足的进步。今天&#xff0c;深度神经网络已经成为许多计算机视觉应用的关键组成部分&#xff0c;从照片和视频编辑器到医疗软件和自动驾驶汽车。神经网络大致模仿了大脑的…

电子很可能具有意识

© Olhar Digital来源&#xff1a;利维坦文&#xff1a;Tam Hunt译&#xff1a;猫大郎校对&#xff1a;兔子的凌波微步2020年5月&#xff0c;“宇宙有意识吗&#xff1f;”作为标题出现在《新科学人》&#xff08;New Scientist&#xff09;周刊的一期封面上。德国慕尼黑数…

JDBC--Java Database Connectivity

1.JDBC:Java DataBase Connectivity 可以为多种关系型数据库DBMS 提供统一的访问方式&#xff0c;用Java来操作数据库 2.JDBC API 主要功能&#xff1a; 三件事&#xff0c;具体是通过以下类/接口实现&#xff1a; DriverManager &#xff1a; 管理jdbc驱动 Connection&#x…

数字孪生:连结现实与数字世界

作者&#xff1a;德勤洞察来源&#xff1a;《软件与集成电路》2020年第5期试想一下&#xff0c;你拥有一个现实世界的完美数字副本&#xff1a;数字孪生。它可以帮助你开展虚拟协作&#xff0c;快速获取传感器数据并模拟条件&#xff0c;清楚地了解假设情景&#xff0c;更能精准…

微软和谷歌的人工智能,在SuperGLUE基准测试中超越了人类

大数据文摘出品来源&#xff1a;venturebeat编译&#xff1a;千雪2019年底&#xff0c;Facebook、纽约大学、华盛顿大学和DeepMind的研究人员联合提出了SuperGLUE&#xff0c;这是人工智能的一个新基准&#xff0c;旨在总结多种语言任务的研究进展。基于一年前推出的GLUE基准&a…

2020年度中国生命科学十大进展公布 | 中国科协生命科学学会联合体

来源&#xff1a;中国科协生命科学学会联合体本年度的评选&#xff0c;联合体成员学会推荐的项目较往年数量明显增加&#xff0c;体现了“中国生命科学十大进展”评选日臻完善&#xff0c;社会影响力与关注度不断扩大&#xff1b;获奖项目中非院士主导项目所占比例较往年大&…