AI TIME欢迎每一位AI爱好者的加入!

近年来,图神经网络(GNN)在社交网络、知识图谱、推荐系统甚至生命科学等领域得到了越来越广泛的应用。但在复杂的图数据中,我们很难高效利用实体之间的相互依赖关系。本期AI Time PhD直播间,香港中文大学计算机系的硕士二年级研究生侯逸帆,分享了自己的团队在被誉为“深度学习中的顶会”——ICLR (2020)中发表的研究成果。让我们看看这位学霸是如何巧妙利用节点的“邻里关系”,来选择图数据和改进图神经网络吧!

一、背景知识

a)

图数据与数据分类

是一种强大的数据结构,能够轻松地表示实体(即节点)之间的各种关系(即)。

实体可以是社交网络中的用户个体,或者分子结构图中的原子。

关系可以是社交网络中用户之间的朋友关系、相似性关系等,或者分子结构图中原子之间的相互关系。

一般在图数据中,节点(实体)的选择是固定的,但是边的构建方法却多种多样。例如社交网络中,既可以依据用户的相似性,也可以将其交互行为、好友关系构建成边,从而组成网络。

因此,当分布相对均匀的原始数据分类较为困难时,如果能根据一些额外的关系信息、把同类点之间的距离“拉近”,从而有效地调整数据分布,那么分类的边界选择会更加容易,从而其任务表现也会获得很好的性能提升。

b)

图神经网络

图神经网络(GNN)广泛应用于图数据的表示学习。它可以利用图中的关系信息,捕捉到节点邻居的丰富特征,从而提升下游基于图数据的任务表现。

通用的GNN框架搭建方法如下:

Step 1: 使用聚合器(Aggregate)将邻居的特征聚集起来。

不同节点的邻居数量不同,因此这一步能将任意数目的邻居点的特征向量整合为固定长度的向量。

聚合的方法:mean, sum, weighted sum…

从降噪的角度出发mean(能抑制噪声) >= weighted sum > pooling > sum(会放大噪声)。

Step 2: 使用组合器(Combine)把聚合完的特征向量和节点自身的特征向量组合为一个新的特征向量。

组合的方法:concatenate, mean, weighted sum…

从保留信息的能力出发concatenate(乘以参数矩阵来决定向量中的有用部分) > mean = weighted sum(对信息有一定失真)

实际上,并不是所有节点的邻居都包含特定任务的相关信息。因此,数据关系既可能提供正面信息也可能造成负干扰!比如图中,拉近不同类点之间的距离,反而会让分类问题更加复杂。如此利用额外信息,会起到相反效果!

问题来了:什么样的图数据(关系),是适合目前的图神经网络的?

答案:利用数据关系带来的性能提升,和原始图数据中节点从邻居获取的信息的“数量”“质量”有关!为此,可以用两种平滑度度量方法,来衡量这两个方面!

二、两个平滑度度量

a)

背景:KL散度(或信息增益)

已知S(surrounding)后对原系统C(context)信息增益:通俗来讲,C和S的欧式距离越大,其二者特征越不相似,邻居节点能带来的信息增益越大,导致对节点特征的改变越大。

b)

背景:图信号处理后的平滑度

Lambda(傅里叶变换的频率)很小时,表示信号频率和很低,平滑程度很高。

Lambda很大时,表示信号频率很高,表现为很不平滑(平滑度很低)。

c)

信息度量一:特征平滑度

对图上所有节点,算出每个节点与邻居节点的距离之和的平方,然后对所有节点进行加和,取曼哈顿距离,最后除以特征维度和边的数目,得到特征平滑度。数学证明KL散度与特征平滑度成正比,即信息增益的大小与特征平滑度成正相关。

d)

信息度量二:标签平滑度

针对图中所有的边,计算连接不同类别节点的边的比例,得到取值范围为0-1的值。直观上,标签平滑度为零时,只有同类数据会被“拉近“。

注意:现实中无法获知测试集的标签信息,因此可用训练集已知的标签平滑度来近似真实的位置的标签平滑度。

三、神奇的CS-GNN模型

于是,侯逸帆提出了一种新的模型CS-GNN,该模型利用这两个平滑度指标选择性地聚集邻居信息,以放大有用信息,减少负干扰

注意这里存在一个tradeoff:尽可能地选同类别(保证信息增益的质量)的不相似的(提高信息增益的大小)邻居。

实验结果证明了的方法对于给定任务测量图形的平滑度值的有效性,并且CS-GNN能够获得更多有用的信息,以实现优于现有方法的性能!

答疑互动

最后和大家分享直播后微信群里大家与两位嘉宾的部分互动。

刚刚result部分的OOM是指什么?该程序跑起来,需要什么样的服务器?

一般来说对于图数据,会经常有OOM(Out of memory)的情况出现。一般一个16G的卡跑带attention的GNN节点数不能超过10W。过大的话就只能通过邻居采样等方法优化,或者是持续用IO几个batch读一次。

有点好奇特征平滑度和标签平滑度有特定阈值吗?比如达到什么范围时图数据的效果最好?

因为这两个值是信息增益的一个近似,很难去用他们得到一些精确的结论。不过还是可以用这两个值帮助大家选择图数据或者理解改进图神经网络的

整理:鸽鸽

审稿:侯逸帆

AI Time欢迎AI领域学者投稿,期待大家剖析学科历史发展和前沿技术。针对热门话题,我们将邀请专家一起论道。同时,我们也长期招募优质的撰稿人,顶级的平台需要顶级的你,请将简历等信息发至yun.he@aminer.cn!

微信联系:AITIME_HY

AI Time是清华大学计算机系一群关注人工智能发展,并有思想情怀的青年学者们创办的圈子,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法、场景、应用的本质问题进行探索,加强思想碰撞,打造一个知识分享的聚集地。

更多资讯请扫码关注

(点击“阅读原文”下载本次报告ppt)

(直播回放:https://b23.tv/BV1fV411k7n1)

kl散度度量分布_论“邻里关系”的学问:度量和改进图信息在图神经网络中的使用 | AI Time PhD ICLR...相关推荐

  1. kl散度度量分布_强化学习新思潮1:值分布强化学习(04)

    经典强化学习有比较好的理论保证,尽管值分布强化学习的效果很好,但理论分析比较少.本文继续介绍值分布强化学习算法的理论分析.参考论文为"An Analysis of Categorical D ...

  2. kl散度度量分布_解读KL散度:从定义到优化方法

    Kullback-Leibler 散度是计算机科学领域内的一个重要概念.数据科学家 Will Kurt 通过一篇博客文章对这一概念进行了介绍,机器之心技术分析师在此基础上进行了解读和扩充.本文为该解读 ...

  3. kl散度度量分布_概率图简要模型笔记(二)马尔可夫随机场与KL散度、最大熵、指数族分布、高斯分布、极大似然分布...

    这一篇文章主要是想捋一捋KL散度.最大熵.指数族分布这些东西之间的关系,这是一些非常基本的知识点,刚入门机器学习的时候,傻傻分不清楚,现在回过头来看,其实很多东西都可以串起来,不得不感叹数学真是一个很 ...

  4. kl散度度量分布_浅谈KL散度

    一.第一种理解 相对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD),信息散度(information divergence) ...

  5. kl散度度量分布_数据挖掘比赛技巧——确定数据同分布

    在数据挖掘比赛中,很重要的一个技巧就是要确定训练集与测试集特征是否同分布,这也是机器学习的一个很重要的假设[1].但很多时候我们知道这个道理,却很难有方法来保证数据同分布,这篇文章就分享一下我所了解的 ...

  6. 交叉熵与KL散度和交叉熵之间的关系

    1.熵 熵的本质是香农信息量log1plog\frac{1}{p}logp1​ 现有关于样本的两个概率分布ppp和qqq,其中ppp为真实分布,qqq为非真实分布.按照真实分布ppp来衡量识别一个样本 ...

  7. kl散度的理解_以曲率的视角理解自然梯度优化

    一个故事 我要讲一个故事:一个你几乎肯定听过的故事,但它的侧重点与你习以为常关注的不同. 所有现代深度学习模型都使用梯度下降进行训练. 在梯度下降的每个步骤中,您的参数值从某个起始点开始,然后将它们移 ...

  8. 机器学习:KL散度详解

    KL 散度,是一个用来衡量两个概率分布的相似性的一个度量指标. 我们知道,现实世界里的任何观察都可以看成表示成信息和数据,一般来说,我们无法获取数据的总体,我们只能拿到数据的部分样本,根据数据的部分样 ...

  9. kl散度定义_Kullback-Leibler(KL)散度介绍

    在这篇文章中,我们将探讨一种比较两个概率分布的方法,称为Kullback-Leibler散度(通常简称为KL散度).通常在概率和统计中,我们会用更简单的近似分布来代替观察到的数据或复杂的分布.KL散度 ...

最新文章

  1. 两个矩形重叠部分面积
  2. 2019年上半年收集到的人工智能自然语言处理方向干货文章
  3. oracle启动的服务有哪些,启动/关闭oracle服务有三种方式
  4. Ajax ToolKit --- ModelPopupExtender应用经验二则
  5. Java网络编程之Socket和ServerSocket详解
  6. C语言实现单例模式,以及使用内存屏障的性能优化方案
  7. nlp-tutorial代码注释1-2,词向量、Word2Vec、Skip-gram简述
  8. JS闭包文章--(翻译)Callbacks in Loops
  9. python定义矩阵
  10. 华为防火墙ssl xxx配置
  11. 非常不错的地区三级联动,js简单易懂。封装起来了
  12. 期货什么情况下会强制平仓
  13. Web前端:木兰花令网页案例设计
  14. 【MySQL】根据数据表中日期字段查询某个月每一天的数据量?查询数据表中所有日期每天的数据量?近三天每天数据量?
  15. 电容充放电时间的计算方法(重点是对于恒流充放电的常用公式:⊿Vc=I*⊿t/C,其出自公式:Vc=Q/C=I*t/C。)电荷泵(无电感)中电容恒流放电的滤波可以参考4-20毫安的采集中RC滤波电路
  16. 解决数据库报错:Table ‘*.*‘ doesn‘t exist错误
  17. MacBook Air老本重装系统
  18. ipad发布会ipad_iPad诞生十周年
  19. 《CS:GO》玩家快看,英特尔显卡驱动更新,帧率提升超两倍!
  20. html中精灵图的使用方法,关于CSS Sprites、CSS精灵的详细解析

热门文章

  1. HarmonyOS之常用组件TabList与Tab的功能和使用
  2. iOS GPUImage之滤镜功能说明
  3. 329. Longest Increasing Path in a Matrix 矩阵中的最长递增路径
  4. 1337:【例3-2】单词查找树
  5. win10系统使用MarkdownPad2无法渲染
  6. 【嵌入式】C语言高级编程-强符号和弱符号(09)
  7. 【Linux】一步一步学Linux——file命令(37)
  8. 【计算机类】大学生计算机专业电子书汇总
  9. 用python语言实现-Python语言实现百度语音识别API的使用实例
  10. Java协作开发,Java开发学习笔记之八:servlet之间的协作