• 图卷积神经网络


    以下内容来自 https://zhuanlan.zhihu.com/p/37091549

    为什么有图卷积神经网络

    自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学到的结构信息在人机判别中不仅效果很好,也具有更好的鲁棒性。

     

    写在最后

    由于时间有限,很多问题浅尝辄止,关于GCN还有很多有趣的东西。我们将开设专栏《Graph Learning》,作者会分享给大家更加全面的图学习算法。

     

    一直以来,我们都认为自己是一家技术驱动的公司,也说自己是AI公司。AI公司并不是那么高大上,实际上有时候很难,因为很多技术还不成熟,没有现成的可以用。在做公司业务的时候,会遇上一些现实难题,会踩到很多坑,当然也会收获一些感悟和经验。我们想,这些是企业创造的另外一种价值,应当好好利用。

     

    “你有一种思想,我有一种思想,互相交换后,我们都拥有两种思想”这便是分享的意义。因此,后期我们还会整理一系列的干货分享专栏,以期把在实际应用中总结、学习、创造的知识分享给大家。当然,也非常欢迎有人可以一起探讨、交流、进步,这是我们做这件事情最期待的回馈。

     

    《Graph Learning》专栏大纲

     

    第一章 图及其应用场景

    第二章 图的传播算法

    第三章 社群检测以及高密子图

    第四章 异构信息网络

    第五章 图表示学习

    第六章 图卷积神经网络

    总共六章内容,预计25-30篇幅,感兴趣的小伙伴欢迎持续关注哦~

    论文推荐

    Semi-Supervised Classification with Graph Convolutional Networks

     

    Modeling Relational Data with Graph Convolutional Networks

     

    Inductive Representation Learning on Large Graphs

    https://zhuanlan.zhihu.com/p/37091549

  • 相关阅读:
    Memento模式
    CSS实现半透明div层的方法
    JS解析json数据(如何将json字符串转化为数组)
    并发容器Map之二:ConcurrentNavigableMap
    JSinArray检查数组中是否存在某个值
    Servlet3.0之七:@WebFilter申明该类为过滤器
    Spring源码阅览——BeanFactory体系结构
    使用 Selenium RC 测试 web 应用程序
    函数式编程
    9 个 Java 处理 Exception 的最佳实践
  • 原文地址:https://www.cnblogs.com/emanlee/p/15496556.html
Copyright © 2020-2023  润新知