图是信息的最佳表示方式。在一个图中,有通过边(谓之“关系”)连接起来的节点(谓之“实体”)。想一想,你的Facebook社交网络是个什么样子的:以你为中心连接上你的朋友们,他们又以不同的方式相互联系。在表格中表示这些信息的方式是有些随意(或者不好的),社交关系并不是像一排排规矩的摆在桌子上的东西,而是像下图这样的:

Facebook 社交网络;金色的边你的社交关系;灰色的边是你的朋友之间的关系

预测节点属性

现在我们得到了Facebook社交网络的最佳表示,那么如何去更好的预测你朋友们的喜好呢?我们这里使用图卷积神经网络(Graph convolutional networks),GCN是一种新的深度学习架构,能够利用包含在数据以及数据之间关系中的信息。

来看一个例子,假设我们想要了解你的朋友们谁倾向于共和党派谁倾向于民主党派,我们将在Facebook 社交网络图上应用GCN,并将预测的“政治立场”这个节点属性分配给图中缺少标签的节点。

GCN网络有两个输入:首先需要列出你每个朋友的特征,包括母校、邮政编码、所属团体等等信息,很显然,这些信息是学习一个人政治倾向的特征;第二,GCN采用图结构的精简形式,这帮助GCN学习朋友的友谊是如何影响他们的政治立场的。

按理说,仅这两条信息就足以预测一个人的政治倾向了。传统的深度学习模型甚至不需要应用实体之间的关系来进行预测,它们只利用个人属性。但是通过在GCN中结合数据的属性以及结构,可以使预测更加强大。

GCN的输入:Jane和很多共和党人有联系,但是她也有自己的一些属性,比如教育、地理位置,很多Facebook团体成员,那她到底是共和党派还是民主党派呢?

GCN的应用十分简单。它们是分层操作的,可以将它们堆叠在一起,达到想要的深度。在每一层的内部,有三个特点:

第一 标准化的图结构;

第二 标准化的图结构乘以节点属性;

第三 我们将非线性函数应用于节点属性和权重;

一个图卷积层,敏锐的读者会注意到,由于核函数的平稳性,这是一个近似卷积算子

在应用中,额外添加dropout层,激活函数采用Leaky ReLU,损失函数采用softmax loss,如下图所示:

一个使用中间dropout层的双层图卷积神经网络,我发现leaky ReLU函数能够有助于缓解梯度消失。

我们来看一部分使用Tensorflow实现GCN层的代码,了解一下该网络设计的简单性。

一个基于TensorFlow实现的图卷积神经网络,使用ADAM优化器,softmax交叉熵损失函数。绿色部分是图卷积层的实现,注意它的简洁。

应用

上面的例子太简单,无法证明该问题的复杂性。下面,我们看一个真正的Facebook网络,不同政治倾向的颜色不同。

一个基于Facebook数据的网络,不同的颜色代表每个人不同的政治倾向,图卷积预测了10%的这些人的政治立场,其余的作为训练序列的一部分输入。

记住,GCN不在乎每个节点的输入数据,或者节点之间的关系是什么样的。我们可以任意使用数据,比如企业之间的金融交易数据和企业自身的财务状况信息,便可以使用GCN来告诉我们哪些交易具有欺诈性。建立一个企业的超级节点图,我们可以利用GCN找出洗钱团伙。

一个交易的超级节点图。这些组织中有没有洗钱圈?利用GCN找出违法分子。

我们可以将GCN应用到银行客户信用风险评估,根据客户的特征以及风险阈值找出哪些客户是不能审批贷款的。还可以利用历史银行数据。

10万节点银行客户数据集的子图。利用客户之间的关系以及每个客户的财务数据,我们可以评估哪些客户可以获得什么贷款的批准,并对照一些风险阈值进行验证。

利用数据的自然结构提高了机器学习的预测能力,因此认识到图的普遍性是非常重要的。每个企业每天都在处理很多数据,而这些数据非常适合用图结构来表示。在任何信息连接的情况下都会出现图相关的问题,任何有图的地方,背后都有惊人的价值等待被挖掘。

参考链接:

https://www.experoinc.com/post/node-classification-by-graph-convolutional-network

GCN入门理解的更多相关文章

  1. 动态规划初级 入门理解 C#代码

      using System; using System.Collections.Generic; using System.Linq; using System.Text; using Micros ...

  2. 最全面的图卷积网络GCN的理解和详细推导,都在这里了!

    目录 目录 1. 为什么会出现图卷积神经网络? 2. 图卷积网络的两种理解方式 2.1 vertex domain(spatial domain):顶点域(空间域) 2.2 spectral doma ...

  3. (转载)Java多线程入门理解

    转载出处http://blog.csdn.net/evankaka 写在前面的话:此文只能说是java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更 ...

  4. 图卷积神经网络(GCN)入门

    图卷积网络Graph Convolutional Nueral Network,简称GCN,最近两年大热,取得不少进展.不得不专门为GCN开一个新篇章,表示其重要程度.本文结合大量参考文献,从理论到实 ...

  5. GCN 入门

    参考链接: https://www.zhihu.com/question/54504471/answer/611222866 1 拉普拉斯矩阵 参考链接: http://bbs.cvmart.net/ ...

  6. docker基础入门理解

    本文简单的介绍了一下docker的一些优点,以及使用方法 1. 理解docker 1.1 docker是什么? 1.2 为什么要使用Docker? 2. docker安装 3. docker-容器,镜 ...

  7. 微信小程序简单入门理解

    简单的小程序示例结构: (一):理解小程序结构app.js,app.json,app.wxss ①app.js,app.json是小程序结构必要的部分,app.wxss可选择 ②app.js用于创建小 ...

  8. SVG 入门——理解viewport,viewbox,preserveAspectRatio

    工欲善其事必先利其器,没有真正搞懂SVG里的viewport,viewbox, preserveAspectRatio这三个属性,就很容易遇到坑,最近写项目用到svg这三个属性被我一眼就略过 ,后来发 ...

  9. MyBatis简单使用和入门理解

    本文记录第一次使用Mybatis时碰到的一些错误和简单理解,采用的示例是Eclipse中的JAVA工程,采用XML文件定义数据库连接. 可以使用Java JDBC API直接操作数据库,但使用框架会更 ...

随机推荐

  1. 【好好补题,因为没准题目还会再出第三遍!!】ACM字符串-组合数学(官方题解是数位DP来写)

    ACM字符串 .长度不能超过n .字符串中仅包含大写字母 .生成的字符串必须包含字符串“ACM”,ACM字符串要求连在一块! ok,是不是很简单?现在告诉你n的值,你来告诉我这样的字符串有多少个 输入 ...

  2. 8种主流NoSQL数据库对比

    摘要:虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举. 简介 NoSQL,是一项全新的数据库革命 ...

  3. ubuntu 18.04 enp8s0更改网口名称为eth0

    尝试各种方法均不成功,后参考如下方法终于成功: 方法一:单纯改网卡名,重启后显示原网卡名. 如我的网卡名是enp8s0 >> ip link set enp8s0 down //关闭网卡 ...

  4. 从项目开始的Java开发学习

    积累了一些项目中见到的代码,希望见一次之后自己也能写出来. 一.通过cxf JaxWsDynamicClientFactory进行WebService 客户端调用 代码:在项目中从非项目内的接口获取数 ...

  5. linux实操_shell系统函数

    basename函数: 功能:返回完整路径最后/的后面部分,常用于获取文件名. 基本语法: basename 路径 后缀 不加后缀:运行后 加后缀:运行后 dirname函数: 功能:返回完整路径最后 ...

  6. ansible的安装和简单使用

    ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真 ...

  7. [2019HDU多校第一场][HDU 6584][G. Meteor]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6584 题目大意:求所有满足\(0<\frac{p}{q}\leq1, gcd(p,q)=1,p\ ...

  8. date对象设置set

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. [Luogu P4145] 上帝造题的七分钟2 / 花神游历各国

    题目链接 题目简要:我们需要一个能支持区间内每一个数开方以及区间求和的数据结构. 解题思路:说道区间修改区间查询,第一个想到的当然就是分块线段树.数据范围要用long long.本来我是看到区间这两个 ...

  10. 003_linux驱动之_file_operations函数

    (一)解析file_operations函数 解析002_linux驱动之_register_chrdev注册字符设备中的问题 (二) 1. file_operations结构原型 2. 使用举例   ...