GCN入门理解
图是信息的最佳表示方式。在一个图中,有通过边(谓之“关系”)连接起来的节点(谓之“实体”)。想一想,你的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入门理解的更多相关文章
- 动态规划初级 入门理解 C#代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Micros ...
- 最全面的图卷积网络GCN的理解和详细推导,都在这里了!
目录 目录 1. 为什么会出现图卷积神经网络? 2. 图卷积网络的两种理解方式 2.1 vertex domain(spatial domain):顶点域(空间域) 2.2 spectral doma ...
- (转载)Java多线程入门理解
转载出处http://blog.csdn.net/evankaka 写在前面的话:此文只能说是java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更 ...
- 图卷积神经网络(GCN)入门
图卷积网络Graph Convolutional Nueral Network,简称GCN,最近两年大热,取得不少进展.不得不专门为GCN开一个新篇章,表示其重要程度.本文结合大量参考文献,从理论到实 ...
- GCN 入门
参考链接: https://www.zhihu.com/question/54504471/answer/611222866 1 拉普拉斯矩阵 参考链接: http://bbs.cvmart.net/ ...
- docker基础入门理解
本文简单的介绍了一下docker的一些优点,以及使用方法 1. 理解docker 1.1 docker是什么? 1.2 为什么要使用Docker? 2. docker安装 3. docker-容器,镜 ...
- 微信小程序简单入门理解
简单的小程序示例结构: (一):理解小程序结构app.js,app.json,app.wxss ①app.js,app.json是小程序结构必要的部分,app.wxss可选择 ②app.js用于创建小 ...
- SVG 入门——理解viewport,viewbox,preserveAspectRatio
工欲善其事必先利其器,没有真正搞懂SVG里的viewport,viewbox, preserveAspectRatio这三个属性,就很容易遇到坑,最近写项目用到svg这三个属性被我一眼就略过 ,后来发 ...
- MyBatis简单使用和入门理解
本文记录第一次使用Mybatis时碰到的一些错误和简单理解,采用的示例是Eclipse中的JAVA工程,采用XML文件定义数据库连接. 可以使用Java JDBC API直接操作数据库,但使用框架会更 ...
随机推荐
- python中常用的九种预处理方法
本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal ...
- WPF多值绑定及多值转换(MultiBinding和IMultiValueConverter)
WPF可以使用MultiBinding进行多值绑定,使用IMultiValueConverter进行多值转换 例: (1)转换器 public class ContentConverter : IMu ...
- python中常见的日期处理方法
今天:today = datetime.date.today() 昨天:yesterday = today - datetime.timedelta(days=1) 上个月:last_month = ...
- LeetCode刷题--有效的括号(简单)
题目描述 给定一个只包括 ' ( ' , ' ) ', ' { ' , ' } ' , ' [ ' , ' ] ' 的字符串,判断字符串是否有效.有效字符串需满足: 左括号必须用相同类型的右括号闭 ...
- 你的VCL界面开发不知所措?这款工具绝对超出预料
DevExpress VCL Controls是 Devexpress公司旗下最老牌的用户界面套包.所包含的控件有:数据录入,图表,数据分析,导航,布局,网格,日程管理,样式,打印和工作流等,让您快速 ...
- js中当call或者apply传入的第一个参数是null/undefined时,js函数内执行的上下文环境是什么?
在js中我们都知道call/apply,还有比较少用的bind;传入的第一个参数都是改变函数当前上下文对象; call/apply区别在于传的参数不同,一个是已逗号分隔字符串,一个以数组形式.而bin ...
- 使用jaxb用xsd生成java类
命令: xjc -p 包的路径 xsd的名字.xsd -d 目标的文件夹 具体详细见: http://www.iteye.com/topic/1118082
- X509
1 打开iis 找到部署的站点应用连接池,高级设置,“加载用户配置文件”项的值改为true 2 用户:certmgr.msc 本地计算机:mmc——文件——证书 --CN = QALINE001.on ...
- ajax 页面无刷新
<!-- 使用原生Ajax 和 $.ajax 实现局部刷新的过程 --><!-- 封装通用XMLHttpRequest对象 --><!DOCTYPE html>&l ...
- C#读取App.config/Web.config
读取需要添加 System.Configuration 引用, 两种方式添加: 1:.NETFramework程序可以在引用右击添加引用,然后添加System.Configuration 2:引入Nu ...