图卷积网络原理(一)【引入图神经网络的动机】

前言

接下来,本人将编写系列教程介绍图卷积网络的动机和基本原理。在我看来,图神经网络只是一个建模工具,因此我更多是从使用这个工具的角度来阐述个人的理解!欢迎交流。

引入图神经网络的动机

对于图数据(分子结构图、交通图等)领域本身去研究图神经网络的是没啥可说的,但是非图数据领域为何又要引入图神经网络呢?

动机一:引入样本与样本之间的关联关系

我们知道,传统的神经网络的工作方式基本上是逐样本的,也就说:

给定一个batch的输入样本 X m × n X_{m\times n } Xm×n ,其中 m m m 表示batch的大小, n n n 表示输入样本的维度。输入的第 i i i X i ∗ X_{i*} Xi 表示第i个待处理的样本。记神经网络为函数 f f f ,那么对于里面的每条样本,计算处理一个结果 y i = f ( X i ∗ ) y_{i}=f(X_{i*}) yi=f(Xi) f f f 内部涉及到矩阵乘法运算、非线性映射等过程。

模型逐样本处理数据的例子很多,比如人脸识别里面逐图片识别、机器翻译里面一句话一句话的翻译、恶意域名检测中一条条域名的识别等等。

然而,随着我们在各领域开展深入研究,我们发现在有些场景下样本与样本之间其实是存在着某种潜在的关联关系的。逐样本的处理方式其实是隐式地假设样本与样本之间是独立的,这种方式会丢弃掉样本之间潜在的关联关系。

因此,我们想把样本与样本之间的关联关系给量化,同时显式的把关联关系引入到模型里面。

动机二:非线性地表达序列样本中内部元素之间的潜在关系

另外一种动机则是想更加充分地对序列数据内部元素之间的关系进行建模。

举个例子,近几年有很多学者使用LSTM网络去做机器翻译,常用的模型有传统注意力模型,或者Transformer模型。每个句子是一个词的序列,这些模型的输入是一个源语句子(比如中-> 英翻译里面,源语指中文)。当加上注意力机制后,模型本身当然也可以学习到句子不同词之间潜在的某些关联。比如多头的自注意力机制,当句子自身计算自注意力的时候,就会产生词与词之间的关联打分。

这种方式的问题在于,我们太寄希望于神经网络了,以为它有能力自己学习到词与词之间的关系。虽然神经网络有这个潜力,但是它的发散能力实在是太强了,它需要花特别长的时间才能步入正轨去寻找词与词之间潜在的关系。

如果我们凭借专家知识,显式知道句子中词与词之间存在着某些关系,而且这些关系对提升模型性能很有帮助。那么我们就想如果直接告诉神经网络:【我给你的输入里面,词与词之间存在了某某关系,这个关系对你的分类有帮助】,那么神经网络就可以直接在这个基础上继续前行。
例如:
下面这篇论文:

@article{
    
    marcheggiani2018exploiting,
  title={
    
    Exploiting semantics in neural machine translation with graph convolutional networks},
  author={
    
    Marcheggiani, Diego and Bastings, Joost and Titov, Ivan},
  journal={
    
    arXiv preprint arXiv:1804.08313},
  year={
    
    2018}
}

就把动词的依存关系加入到机器翻译模型里面去。
在这里插入图片描述

如果不是对图神经网络本身的改进,那么主要的研究点就是考虑上面两个动机在具体场景的体现了。

有了这些动机以后,接下来我们就介绍图神经网络的基本原理以便于更好的使用这个工具。

猜你喜欢

转载自blog.csdn.net/jmh1996/article/details/109350393