专栏首页进击的Coder浅析图卷积神经网络

浅析图卷积神经网络

今天想和大家分享的是图卷积神经网络。随着人工智能发展,很多人都听说过机器学习、深度学习、卷积神经网络这些概念。但图卷积神经网络,却不多人提起。那什么是图卷积神经网络呢?简单的来说就是其研究的对象是图数据(Graph),研究的模型是卷积神经网络。

为什么有图卷积神经网络

自2012年以来,深度学习在计算机视觉以及自然语言处理两个领域取得了巨大的成功。和传统方法相比,它好在哪里呢?

假设有一张图,要做分类,传统方法需要手动提取一些特征,比如纹理啊,颜色啊,或者一些更高级的特征。然后再把这些特征放到像随机森林等分类器,给到一个输出标签,告诉它是哪个类别。而深度学习是输入一张图,经过神经网络,直接输出一个标签。特征提取和分类一步到位,避免了手工提取特征或者人工规则,从原始数据中自动化地去提取特征,是一种端到端(end-to-end)的学习。相较于传统的方法,深度学习能够学习到更高效的特征与模式。

卷积神经网络很好,但是它研究的对象还是限制在Euclidean domains的数据。什么是Euclidean data? Euclidean data最显著的特征就是有规则的空间结构,比如图片是规则的正方形栅格,比如语音是规则的一维序列。而这些数据结构能够用一维、二维的矩阵表示,卷积神经网络处理起来很高效。

但是,我们的现实生活中有很多数据并不具备规则的空间结构,称为Non Euclidean data。比如推荐系统、电子交易、计算几何、脑信号、分子结构等抽象出的图谱。这些图谱结构每个节点连接都不尽相同,有的节点有三个连接,有的节点有两个连接,是不规则的数据结构。

下面结合两个典型的业务场景来说明什么是图:

社交网络非常适合用图数据来表达

上面的图谱刻画社交网络中各个节点以及它们之间的关系,用户A、用户B、帖子都是节点,用户与用户之间的关系是关注,用户与帖子之间的关系可能是发布或者转发。通过这样一个图谱,可以分析用户对什么人、什么事感兴趣,进一步实现推荐机制。

电商场景中的图谱

在电商中,我们首先可以想到的关键节点就是,用户、交易和商品。用户关联的节点比如会有注册地址、收获地址等;交易会关联到商品、收货地址、交易IP等、商品会关联类目等。这些节点之间的关系,比如用户除了可以通过交易购买商品,还可以对商品进行评分。这样的图数据我们可以用来做两件事情,一是推荐、二是反欺诈。

通过上面两个例子,可以很明显的感受到,图有两个基本的特性:

一是每个节点都有自己的特征信息。比如针对上图,我们建立一个风控规则,要看这个用户的注册地址、IP地址、交易的收货地址是否一样,如果这些特征信息不匹配,那么系统就会判定这个用户就存在一定的欺诈风险。这是对图节点特征信息的应用。

二是图谱中的每个节点还具有结构信息。如果某段时间某个IP节点连接的交易节点非常多,也就是说从某个IP节点延伸出来的边非常多,那么风控系统会判定这个IP地址存在风险。这是对图节点结构信息的应用。

总的来说,在图数据里面,我们要同时考虑到节点的特征信息以及结构信息,如果靠手工规则来提取,必将失去很多隐蔽和复杂的模式,那么有没有一种方法能自动化地同时学到图的特征信息与结构信息呢?——图卷积神经网络

什么是图卷积神经网络

图卷积神经网络(Graph Convolutional Network)是一种能对图数据进行深度学习的方法。

图卷积算子:

上面给出的是图卷积算子的计算公式,设中心节点为i;

如何理解图卷积算法?我们看动图分三步去理解(注意不同颜色代表不同的权重):

第一步:发射(send)每一个节点将自身的特征信息经过变换后发送给邻居节点。这一步是在对节点的特征信息进行抽取变换。

第二步:接收(receive)每个节点将邻居节点的特征信息聚集起来。这一步是在对节点的局部结构信息进行融合。

第三步:变换(transform)把前面的信息聚集之后做非线性变换,增加模型的表达能力。

图卷积神经网络具有卷积神经网络的以下性质:

  1. 局部参数共享,算子是适用于每个节点(圆圈代表算子),处处共享。
  2. 感受域正比于层数,最开始的时候,每个节点包含了直接邻居的信息,再计算第二层时就能把邻居的邻居的信息包含进来,这样参与运算的信息就更多更充分。层数越多,感受域就更广,参与运算的信息就更多。

我们来看GCN这个模型框架,输入是一张图,经过一层一层计算变换,最后输出一张图。

GCN模型同样具备深度学习的三种性质:

  1. 层级结构(特征一层一层抽取,一层比一层更抽象,更高级);
  2. 非线性变换 (增加模型的表达能力);
  3. 端对端训练(不需要再去定义任何规则,只需要给图的节点一个标记,让模型自己学习,融合特征信息和结构信息。)

GCN四个特征:

  1. GCN 是对卷积神经网络在 graph domain 上的自然推广。
  2. 它能同时对节点特征信息与结构信息进行端对端学习,是目前对图数据学习任务的最佳选择。
  3. 图卷积适用性极广,适用于任意拓扑结构的节点与图。
  4. 在节点分类与边预测等任务上,在公开数据集上效果要远远优于其他方法。

我们怎么用图卷积神经网络

下面分享一个我们在实际应用场景中的实验:

实验输入是一个验证数据构成的图数据,节点是验证事件以及事件相关的属性节点。如IP,DeviceID,UA等节点。(我们总计用了30天的验证数据,每两个小时的数据构成一张图,共360张图。)

实验输出是对事件节点进行人机分类,正常或者异常。

实验细节 网络结构: GCN(128)->GCN(64)->GCN(64)->Linear(2) 训练: Adam优化器, lr=0.001 参照基准: 以只能学习特征信息的GBDT做为基准, grid_search 搜索超参数,GBDT是目前最流行的浅层分类器。

我们用第一天的数据做训练,持续30天预测结果如下:

GCN模型的准确率衰减比较小,而GBDT的衰减很严重。可见,GCN模型的人机判别效果要好,鲁棒性好。

7d评估效果可视化,(用第一天的数据训练模型,第七天观察其预测效果及最后一层输出的tsne可视化结果)。上图可以看出,GCN在第七天时对样本判别的分界面仍很明显,但是GBDT对样本判别的分界面已经很模糊类了。综上,GCN学到的结构信息在人机判别中不仅效果很好,也具有更好的鲁棒性。

本文转载自:极验(geetest_jy) 作者:刘忠雨

本文分享自微信公众号 - 进击的Coder(FightingCoder)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 影响堪比登月!谷歌等探索深度学习新理论蓝图,让神经网络更深更窄

    现在,谷歌大脑、FAIR、德州农工大学等的数学家们试图深究神经网络的理论基础,开始揭示神经网络的形式如何影响其功能。

    崔庆才
  • 【一】从0开始,用flask+mongo打造分布式服务器监控平台

    在前面一篇文章《 Python 系统资源信息获取工具,你用过没?》中,我们学习了如何使用 Python 中的第三方库 psutil 来获取系统的资源信息,比如 ...

    崔庆才
  • 别再乱用 try except 了...

    有不少人在写 Python 代码时,喜欢用 try...except Exception,更有甚者一层套一层,不管有没有用,先套了再说:

    崔庆才
  • AI 下一拐点,图卷积神经网络有多强大?

    2012年至今,随着深度神经网络理论与计算设备的发展,卷积神经网络(CNN)得到了快速发展,并被大量应用于计算机视觉、自然语言处理等领域。尤其是在图像分类、目标...

    Amusi
  • EMR入门学习之HDFS的运维操作(十三)

    HDFS是分布式文件系统。HDFS支持fsck命令来检查系统中的各种不一致状况。我们可以使用fsck 来查看当前文件系统的状态。该命令提供了若干选项,不同选项完...

    披荆斩棘
  • Deep learning with Python 学习笔记(7)

    卷积神经网络能够进行卷积运算,从局部输入图块中提取特征,并能够将表示模块化,同时可以高效地利用数据。这些性质让卷积神经网络在计算机视觉领域表现优异,同样也让它对...

    范中豪
  • Raft算法和Gossip协议

    raft 集群中的每个节点都可以根据集群运行的情况在三种状态间切换:follower, candidate 与 leader。leader 向 follower...

    后端云
  • Cocos Creator 做数字游戏 | 二维矩阵节点的链式选择和取消!

    点击选中开始节点,按住拖动到相邻的节点,相邻节点添加至选择链中,沿着链往回拖,将会取消之前选择的节点,如上面效果图所示。

    一枚小工
  • Nature子刊:语言、心智和脑

    请点击上面“思影科技”四个字,选择关注作者,思影科技专注于脑影像数据处理,涵盖(fMRI,结构像,DTI,ASL,EEG/ERP,FNIRS,眼动)等,希望专业...

    用户1279583
  • 10个用于人工智能的开源工具/框架

    TensorFlow™是一个开源软件库,最初由研究Google Brain Team的研究人员和工程师开发。TensorFlow用于使用数据流图进行数值计算。图...

    February

扫码关注云+社区

领取腾讯云代金券