文稿整理者:张琳
审稿&修改:赵通

本人总结来自圣母大学的博士生赵通在深蓝学院分享的“图机器学习中的数据增强技术”公开课。通过介绍图机器学习的概念,发展历程等,以及分享两篇文献和最后回答提问完成本次公开课。

01

图机器学习的概念及发展历程

图是一种比较特殊的数据格式,由节点和节点之间的边构成,在图数据上可以训练图机器学习模型。图机器学习在实际工业的应用非常广泛,比如节点的分类,节点的属性预测,链路预测,图异常检测。

图机器学习的手段具体通过图表征学习实现,图数据属于非欧式结构,具有高维和数据稀疏的特点。图数据的邻接矩阵通常是稀疏矩阵,因此很难直接用这样的高维数据在模型中学习。所以,通常用图表征学习学习节点的表征,节点表征是低维的。经过图表征学习模型,可以得到低维的节点/图表征。有节点表征后,就可以用来完成下游任务。比如可以将其放入分类器中完成节点分类、异常检测。如果把它放到回归模型中,可以进行属性预测,如果把两个节点的表征一起放入一个分类器中就能链路预测。

图机器学习近几年是比较火的话题,以下是一个简单的发展历程。最开始,图机器学习主要用的手段是矩阵分解,通过分解邻接矩阵来得到节点的低维表征,一直到2012年都还有相关研究的论文。2014年从DeepWalk[1]开始,图嵌入方法是图机器学习的主流。直到2017年,图神经网络的提出进一步促进了图深度学习的发展,图神经网络在各种图任务上都表现出了非常优秀的效果。

图神经网络的输入是图数据以及可选的节点属性,输出的是每个节点的低维表征。图神经网络的核心是邻域聚合,生成的节点表征基于邻域节点。

在下图中的左图[2],对于A节点,如果用两层的神经节点计算的流程图如右图,每一层都卷积周围邻域信息。

图神经网络近几年发展很好,2018年以后很多论文从不同角度切入尝试提出更好的图神经网络。在这里我们主要讨论从数据的角度去提升图神经网络,也就是去尝试解决图数据的稀疏性问题:大多图数据呈现Power-law分布,有非常少的节点有非常多的邻域,有非常多的节点有非常少的邻域。这种分布导致对大量的稀疏节点不能充分学习。因此会导致过拟合的问题,模型的结果和泛化性会比较差。

下图是一个简单的电影打分预测的效果,纵轴是MAE,越低代表效果越好。可以看出,数据越多,模型的效果越好。

要得到更多的数据,就需要进行数据增强。维基百科对于数据增强的定义:通过添加已存在数据的略微修改的副本或从现有数据中新创建的合成数据来增加数据量的技术。它充当正则化器和有助于在训练机器学习模型时减轻数据的过拟合问题。

数据增强在CV,NLP等成熟领域已经得到非常广泛的运用。下图是CV的例子[3],数据集中只有一只猫的图片,可以将这张图片裁切或旋转得到很多张猫的图片,就可以减轻训练中的过拟合问题。

同样,在NLP中以同义词替换为例[4],在训练过程中以It is awesome句子为例,在同义词此表中发现awesome和amazing,awe-inspring,awing是可以替换的,将awesome换为amazing以后得到了新的句子It is amazing。如果在情感和表达的意思上差别不大,丰富了数据集。

02

针对节点分类的图数据增强

第一篇文献:Data augmentation for graph neural networks [5],这篇文章关注的是节点分类的图数据增强,目的是提升节点分类的效果。

在图上做数据增强,和CV,NLP不同的点是无法直接把传统CV数据增强技术直接应用到图上。比如CV中的图片可以通过旋转获得新图片,但图数据的旋转并没有改变图。另一个主要的问题是对于节点分类的任务,数据是通过节点和节点连接的。图片分类中的图片之间是没有关系的,改变其中一个不会影响其他的,只会影响改变的图片。但对于图数据,节点的改变会影响该节点以及它的邻域,甚至它邻域的邻域。因此对于这种互相依赖的数据,不能直接应用CV或NLP数据增强。在这个工作中,我们提出通过加减边来进行图数据增强,也就是加一些图里没有的边,并从现有的边里面删除一些的操作。

以扎克的跆拳道俱乐部这个社交网络为例。这个数据中节点的不同颜色代表了二分类的标签。图中有30多个节点,对每个节点随机生成二维属性,将其可视化如右图。

属性是随机初始化的,将上述两幅图过一个随机GCN层,可得到:

这里的GCN层没有经过训练,GCN层中的参数是随机初始化的。将随机初始化的特征过一个随机初始化的GCN,可以看出,在上图中的节点在二维平面上的分布已经有一些分离,左上角大部分是红色点,右下角大部分是绿色点。这因为图本身有非常强的同秩性(homophily):原图中红色节点的大部分邻域是红色节点,绿色节点的大部分邻域是绿色节点。同秩性导致不需训练GCN就能对节点有一定的分离程度。

如果随机挑6个类内的边加上去,再随机挑6个类间的边拿掉:

上图中较粗的蓝线是新加的边,蓝色虚线表示去掉的边。将改动过的图还是用一样的随机属性过随机初始化的GCN:

可以发现它已经可以很不错地分离了,所有的红色点都在一边,所有的绿色点都在另一边。这是因为改动后的图有了更强的的同秩性导致的。如果极端一点把所有相同类的节点都连在一起,将所有类间的边全部删掉:

所有的红色点都会聚到一个点,所有的绿色点也会聚到另一个点。这个在论文中有证明。

但是这种加减边要知道节点的标签,它们是否属于同一类,才能知道增加或删除哪条边。但在真正的学习过程中模型是不知道应该加哪条边,删哪条边的。但好在图机器学习可以帮助我们做的比随机加减边更好。

因此,我们提出了GAug-M模型:先改动图,然后在此基础上学习。在原图上先训练一个链路预测的模型,链路预测模型对所有的点对都可以得到两个点之间存在边的概率。对概率特别高但是现在图中没有边的点对,加边将它们连接起来;对概率特别低但现在图中有边的点对,删掉这个边。然后加边的数量和删边的数量我们利用两个超参控制改动程度的大小。这种简单的操作就可以得到很好的节点分类效果,如下图:

蓝色的线代表类内的边的数量,橙色的线代表类间的边的数量,绿色的线代表它的节点分类的效果。可以看到,我们通过链路预测模型在加边的情况下,主要加的是类内的边。因为这个模型不是完美的,可能会有失误加一些类间的边,但蓝色的线走的更快说明加了更多类内的边,绿色的线随着图的同秩性越来越强也在不断地增长。与之对比的是,如果随机的加边会怎样?我们发现随机加边的话,更多的边会是类间的边,会损害图的同秩性,将得到一个更差的节点分类结果。

通过GAug-M模型改图得到一个更好或更容易训练的图,但它存在一个问题就是图神经网络很注重的inductive learning。当数据发生改变后,GAug-M需要重新训练一个链路预测模型,然后利用这个模型修改图数据,改完后重新训练图神经网络。如果数据一直在变动,这个操作会非常昂贵,我们不希望这样。所以虽然GAug-M在静态数据中效果很好,针对这个问题,我们提出了GAug-O模型。

GAug-O是端到端的模型,当它训练好以后,只要输入一个图,就能得到这个图的节点分类预测结果。因此,它对于新加入的数据不需要去重新做一个完成的训练。GAug-O的设计思路和之前模型的设计思路是一样的,但它会稍微复杂一些。输入的图会先过一个链路预测模型,得到一个密集的边存在概率矩阵,把它和原来的邻接矩阵加在一起采样,得到一个改过的邻接矩阵,然后把改动过的邻接矩阵输入到图神经网络中得到节点分类。这个过程如下图:

在GAug-M中,改动图的方法是把概率最高的边加上,概率最低的边去掉,但是这个操作离散且不可导。在端到端的模型中这种操作会使得链路预测模型无法得到训练。所以只能把确定性的加减边变成取样操作,然后把概率和原来的邻接矩阵加起来,保证采样结果不会太偏。得到加权重的概率后,在每一个点对的概率上进行伯努利取样。由于伯努利取样也是离散的,在实际设计方法时用的是Gumbel-softmax加straight-through的设计。通过这样的技术手段实现整个模型端到端的训练。

由于训练中有两个模型,即链路预测模型和节点分类模型,都是有参数需要训练的。所以文章中使用两个损失函数,包括节点分类的损失函数和链路预测的损失函数,通过同时训练可以得到相互增强。

GAug-O和GAug-M一样,训练过程以及取样的图会有更多的类内的边和更少的类间的边。下图的蓝线是类内的边在所有图中所占的比例,可以发现随着GAug-O训练的进行,类内的边数有一个非常快速的上涨,最终稳定在一个比较大的值,这意味着我们确实做到了增强图的同秩性。

分析实验结果时使用6个常见的公开数据集,数据增强的模型对使用哪种图神经网络没有严格要求。使用4个常见的图神经网络,包括GCN,GSAGE,GAT和JK-NET,在6个数据集上都能得到很好的效果。

在数据稀疏时经常会面临训练数据或训练用的标注数据减少的问题。所以,我们测试了在训练数据更少的情况下模型的性能。可以看出训练数据非常少的时候,模型有更明显的提升。

03

针对链路预测的图数据增强

第二篇文献:Counterfactual graph learning for link prediction [7].

和节点分类不同,链路预测中数据增强的目的是得到新的边。这样就可以像其他的数据增强一样,可以在更多的数据上训练模型以避免过拟合问题。这篇文章提出生成反事实链路来尝试学习对于边的形成来说最重要的信息。反事实链路是在这篇文章中新定义的一个概念。

上图是一个简单的小社交网络,假设图中每个节点代表一个人,每条边代表连接的两个人是朋友,三个颜色代表相同颜色的人在一个小区居住。在图中可以看出Alice和Adam两个人是住在一个小区的朋友。

疑问:假如这两个人不在同一个小区,还会不会是朋友?这个问题就是反事实问题,在因果推断中经常使用。通过回答这个问题可以得知这两个人是否因为居住在同一个小区才成为的朋友。在因果推断中通常有定义干扰(treatment),一般是0和1,在这里定义为两人是否居住在一个小区。这两个人住在一个小区,结果是她们是朋友。

那么为了知道干扰(住在一个小区)对结果(他俩是朋友)是否有影响,我们需要知道这两人如果不在一个小区里,还会不会是朋友?如果是,说明她们住不住一个小区对她们是不是朋友没有影响,没有因果关系;反之,住不住一个小区对她们是朋友有因果关系。但问题在于他们不住在一个小区还是不是朋友是不可观测数据。

这也是因果推断中的常见问题,可观测到的结果只有一个,无法观测当干预不同的时候结果是怎样。因为这个世界上没有第二个Alice和第二个Adam,除非有平行宇宙中存在同样的二人而且不居住在一个小区,才能观测二人是不是朋友。

在现实中无法这样观测,但我们又想知道这个结果,因为知道这个结果以后才能知道住在一个小区这个信息是不是有用信息。当我们知道住在一个小区是不是有用信息后,就能进行更好的链路预测。

在文章中提出反事实的边近似问题的答案。对于Alice和Adam,确实无法知道她们不在一个小区的话还是不是朋友。但可以在社交网络里找和Alice还有Adam分别最接近的人Helen和Bob,在社交网络中可知Helen和Bob不住一个小区是怎么样的。

在这个例子中,可以观测到Helen和Bob不住在一个小区但他们是朋友(有边相连)。我们把Helen和Bob之间边的存在定义为Alice和Adam的反事实链路,这样我们就相当于知道了Alice和Adam不住在一个小区的时候还会不会是朋友。我们无从验证这种推理是否正确,但这种近似是能做到的最好结果。

有反事实链路后,可以让机器学习的模型从可观测的图和生成的反事实链路一起学习。也就是说,把图数据经过图神经网络编码器,之后得到节点表征,将Alice和Adam的节点表征放在一起,然后把它和两种烦扰(也就是二者在不在小区)的信息一起输入解码器。在本例子中事实链路和反事实链路都是1,那么解码器会学到不管Alice和Adam在不在一个小区,她俩都是朋友。这样,图机器学习模型就能抓到更关键的信息。

从下表的结果可以看出链路预测的效果不错,相较于目前SOTA的链路预测方法也可以达到非常多的提升。实验中用5个公开数据集,除了图学习中常见的Cora,CiteSeer,PubMed外,还有Facebook和OGB-DDI数据。

在OGB-DDI的官方的榜单中,本文提出的方法(CFLP)是第三名。CFLP和前两名在参数量上相差很多,可以看出CFLP是一个比较轻量级的模型,所以能够达到这样的结果已经非常不错。

04

Takeaways

(1) 图数据增强从数据角度尝试提升图机器学习。虽然不是一个非常火热的话题但也还是一个很有效的手段;

(2) 图数据增强可以被用于各种图机器学习的任务中,比如节点分类和链路预测;

由于它并没有被过多的研究,图数据增强还有非常多可以做的工作,未来的研究方向有:异构图上的数据增强,图数据增强的理论基础,自动化数据增强手段等。

05

Q&A

(1) Q:请问随机增加边为什么出现了很多类间的边?

A:这由图本身标签分布决定。在那个数据中如果把图加满变成一个任意两点都有边的全连接图(clique),会发现在那个图中大多数都是类间的边。既然这个分布是这样的,在随机的时候就有更高的可能性去随机到这个类间边。

(2) Q:在异构图和带权图中有用该技术做增强吗?

A:在异构图中做图数据增强是很有意思的方向,但目前并没有看到很多这方面的工作,这个方向是很值得学习和研究的。

(3) Q:图数据增强和图类比学习有何异同?

A:这里讨论的数据增强针对的是有监督学习的工作,在有监督或者半监督的情况下更好的提升数据。而图对比学习是自监督学习,通过对图数据做一些改动,对比学习改动前和改动后的图,使模型在无需监督的情况下学到节点的低维表征。在对比学习中也需要用到图数据增强的手段,但自监督学习中的数据增强通常是一些扰动和噪音用来避免模型坍塌和简单解,和监督学习中的数据增强是不一样的。在监督学习中的数据增强一般会适当更复杂一些。

(4) Q:在图分类任务里有没有什么数据增强的思路呢?

A:很多节点分类数据增强可以用于图分类任务中的数据增强,比如在第一个工作中用的大部分baseline都可以用在图分类任务中。而且在图分类任务中做数据增强的话其实会和在图片中做数据增强更相似,因为在图分类任务中的数据就是很多小图,图和图之间是相互独立的,没有之前提到的数据之间相互依赖的问题。在这个情况下,很多CV和NLP中的数据增强技术手段都是可以拿来在图分类中用的。

(5) Q:请问在链接预测任务中做数据增强,有思路吗?

A:第二个工作就是连接预测中的数据增强。

(6) Q: Alice和Adam可以不在一个小区,然后改变Adam的属性去数据增强吗?Adam和其他邻居的关系怎么处理?

A:不是通过改变Adam的属性实现数据增强,而是找到它的反事实边做数据增强。

(7) Q:第一个工作在异配网络上效果应该更好吧?

A:第一个工作实验中的Flickr和BlogC两个数据应该属于异配图。在异配图种GAug-M能得到更好的结果,GAug-O效果不如GAug-M。因为在异配图中需要删除非常多的边才能得到高同质性,这种情况下由于GAug-M的删减操作很方便,导致GAug-M在异配图中效果更好。

(8) Q:有介绍模型库如何的使用吗?就是Gaug-M和Gaug-O模型库代码介绍哪里有呢?

A:代码在github上。

Reference:

[1]Perozzi, Bryan, et al. "Deepwalk: Online learning of social representations." KDD. 2014.

[2]Ying, Rex, et al. "Graph convolutional neural networks for web-scale recommender systems." KDD. 2018.

[3]https://www.kdnuggets.com/2018/05/data-augmentation-deep-learning-limited-data.html

[4]https://amitness.com/2020/05/data-augmentation-for-nlp/

[5]Zhao, Tong, et al. "Data Augmentation for Graph Neural Networks" AAAI. 2021.

[6]Zhao, Tong, et al. "Counterfactual Graph Learning for Link Prediction" Arxiv. 2021.

*感谢张琳同学的整理,非常感谢赵通博士对本文的审核。

点击“阅读原文”,直通公开课。

往期精彩回顾适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载中国大学慕课《机器学习》(黄海广主讲)机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑
AI基础下载机器学习交流qq群955171419,加入微信群请扫码:

图机器学习中的数据增强技术相关推荐

  1. NLP中的数据增强技术综述

    NLP数据增强技术 1. 词汇替换 Lexical Substitution 基于词典的替换 Thesaurus-based substitution 基于词向量的替换 Word-Embeddings ...

  2. 对于机器学习中,数据增强

    众所周知,数据对机器学习来说是那么的重要,但是我们通常因为各种原因得不到 理想的数据量,这时候我们就想到进行数据增强.比如添加噪声,左右镜像,随机crop 一部分等,但是有一点要注意的,就是要记住我们 ...

  3. 数据增强系列(1)top10数据增强技术:综合指南

    数据增强技术就是人为地生成真实数据集的不同版本以增加其数据大小.计算机视觉(CV)和自然语言处理 (NLP) 模型使用数据增强策略来处理数据稀缺和数据多样性不足的问题. 数据增强算法可以提高机器学习模 ...

  4. 目标检测中的数据增强

    目标检测中的数据增强 技术标签: 深度学习 人工智能 一.图像遮挡 ①random erase 用随机值或训练集的平均像素替换图像区域. URL: https://arxiv.org/pdf/1708 ...

  5. azure机器学习_Azure机器学习中的数据清理

    azure机器学习 介绍 (Introduction) After discussing the basic features of Azure Machine Learning in my prev ...

  6. 【技术综述】深度学习中的数据增强(下)

    文章首发于微信公众号<有三AI> [技术综述]深度学习中的数据增强(下) 今天带来深度学习中的数据增强方法的下篇.我们将从以下几个方向入手.1,介绍一下什么是无监督的数据增强方法.2,简单 ...

  7. AutoAugment: Learning Augmentation Policies from Data(一种自动数据增强技术)

    谷歌大脑提出自动数据增强方法AutoAugment:可迁移至不同数据集 近日,来自谷歌大脑的研究者在 arXiv 上发表论文,提出一种自动搜索合适数据增强策略的方法 AutoAugment,该方法创建 ...

  8. 集合啦,NLP数据增强技术!超全资源汇总

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 白交 发自 凹非寺  量子位 报道 | 公众号 QbitAI 数据增强技术已经是CV领 ...

  9. [综述类] 一文道尽深度学习中的数据增强方法(上)

    今天带来一次有关于深度学习中的数据增强方法的分享. 00 什么是数据增强 在深度学习项目中,寻找数据花费了相当多的时间.但在很多实际的项目中,我们难以找到充足的数据来完成任务. 为了要保证完美地完成项 ...

最新文章

  1. 手写select,解决浏览器兼容性
  2. WPF 3D 基础学习 - 相机、裁剪、光线入门(2)
  3. python优先队列_python实现最大优先队列
  4. 图像分割中mask的保存
  5. C#是面向对象编程语言
  6. 【队列】Team Queue(luogu-UVA540/poj 2259)
  7. 2012.2.9日晚亚马逊的一个错误链接截图
  8. Python压缩新文件到已有ZIP文件
  9. 使用构造方法注入和setter注入的配置文件
  10. MySQL · 特性分析 · 执行计划缓存设计与实现
  11. 臀部肌群:肌肉图示和英文名称
  12. Ant Design - Authorized
  13. 用纯CSS3的animation制作雪花飘落、星星闪烁、按钮缩放、图片倾斜
  14. qq音乐网页版下载歌曲
  15. android 圆形背景文字,android圆形图片,圆形背景文字的CircleTextImageView开源组件
  16. 叽歪网创始人李卓桓:叽歪的微信息模式
  17. 深入理解YII2.0
  18. 关于hover改变其他元素
  19. 2021年度南山区科技奖励支持计划申报奖励及条件,补贴300万
  20. 从零开始学数据分析之——《笨办法学Python》(习题27-36)

热门文章

  1. javascript 中的各种width,height属性整理
  2. Angular搭建框架比较好用的插件
  3. 安装rabbitMQ delayed-messaged
  4. JavaScript学习笔记-JSON对象
  5. Linux 进程管理器 supervixor
  6. 基于visual Studio2013解决面试题之0402合并升序链表并去重
  7. Samba nsswitch/pam_winbind.c文件输入验证漏洞
  8. 字符串多模式精确匹配(脏字/敏感词汇搜索算法)——TTMP算法 之理论(转)...
  9. springboot 集成 swagger 自动生成API文档
  10. iOS App版本号compare