“什么是图卷积网络?html
自2012年以来,深度学习在计算机视觉和天然语言处理等领域取得了巨大的成功,现已成为人工智能领域最广泛的方法。卷积神经网络适合处理欧几里得域(Euclidean domain)中的数据,例如图像中像素的位置关系是很是明确的,所以能够用固定大小的卷积模板(例如3x3的矩阵)逐行扫描来计算当前一层的输出结果。算法
卷积神经网络处理流程
图片来源http://xilinx.eetrend.com/d6-...网络
在图像领域中,像素间排列紧密,而且有明确的位置关系。然而在现实生活中,不少数据间没有相似像素这样的严格关联,好比社交网络中用户之间的关系、化学结构中分子间的关系。dom
唐朝诗人之间的关系
图片来源http://www.sohu.com/a/1311156...机器学习
这些数据没法经过像素矩阵直接描述,能够经过图谱(graph)的方式加以描述,例如,用户可抽象为顶点(V),用户之间用线€相连,图谱G=(E,V)就是以顶点和线为基本数据组的拓扑结构。对于图谱数据,每一个顶点的相邻顶点数目是不肯定的,直接用卷积神经网络处理图谱数据会形成很大问题,所以有学者提出图卷积网络(Graph Convolutional Network,GCN)来处理具备拓扑结构的数据。ide
为了实现图谱(graph)上的卷积计算,咱们使用图谱的邻接矩阵(adjacency matrix)来表示节点间的关系,而且引入拉普拉斯算子来做为卷积的基向量。具体推导过程能够参考[1]。函数
图卷积网络是很是有效的图谱处理模型,一般2层由随机初始化获得的图卷积网络即能有效提取图谱顶点中的特征表示。图卷积网络的每一层都按拓扑结构对图谱进行处理:首先,每个顶点将自身的特征信息通过变换后发送给邻居;其次,各顶点将相邻顶点传递的特征信息汇集;最后,对顶点信息进行非线性变换,与卷积神经网络中的激活层相似。图卷积网络的结构一般以下图所示。性能
图片来源:www.jianshu.com/p/89fbed65c…学习
“图卷积网络在文本分类上的算法测试
Yao等人在[2]中提出的算法能够简单高效地经过图卷积网络处理文本分类。首先是根据训练数据构建大型文本图谱,以词(word)和文档(document)做为顶点,创建词与词的边(word-word edges)以及文档与词的边(document-word edges)。而后根据前面定义的图谱,创建邻接矩阵A。
图片来源:参考论文[2]
A是nxn维方阵,n表示图中全部顶点数目,即文档与词总数之和。A中每一个元素(i,j)表示顶点i与顶点j之间的权重,一般顶点之间越相关,元素的数值越大,若顶点之间没有关联,则该位置元素为0。为描述顶点间的关系,边的定义采用如下4个规则:
1.链接文档和词的边,用词在文档中的词频-逆向文本频率(TF-IDF)做为权重,该指标表示一个词在某个文本中的重要性;
2.链接词与词的边,用词与词的互信息(PMI)做为权重,该指标表示词之间的相关性,具体计算方式用固定长度的滑动窗对文档进行扫描,统计同时出如今滑动窗内词的频率,并归一化;
3.顶点与自身的关联,即矩阵A对角线上的元素,记为1;
4.其余状况,例如文档与文档之间的权重,记为0。
在定义好邻接矩阵以后,根据[1]中介绍的算法,能够很容易地推导出文本图谱的拉普拉斯矩阵A'。
用nxm维矩阵X表示输入的文本信息,其中n与前文相同,表示图谱顶点的个数,m表示特征维度,即输入是表示n个m维特征。而后通过图卷积网络计算输出值,第一层图卷积的定义以下
其中W0则是经过训练获得的模型参数。ρ是ReLU激活函数。图卷积相邻层的关系为
图卷积网络逐层对输入数据进行“精炼”,再经过分类器对文本分类,
其中Z就表示输出的类别信息,softmax是机器学习中最经常使用的多类分类器。
在训练时,用训练数据集学习模型中的参数W0,W1,……,Wj,而后测试时,输入须要分类的文本数据,经过图卷积网络,就能够输出文本的分类结果。
“图卷积网络的文本分类实验
为了测试图卷积网络(GCN)在文本分类中的效果,咱们找了一些项目中的中英文FAQ的语料来作分类,并与fasttext的分类结果对比。其中,fasttext是目前一种很是成熟的快速文本分类算法,也是项目中FAQ经常使用的算法之一。
在没有预训练模型的状况下,GCN默认初始的词向量和句向量为0,训练完成后,模型会自动生成每一个字和句子的向量。
能够看出,在实际项目数据中,Fasttext模型能达到最高的准确率,大部分状况下能达到0.9以上的准确率。通过压缩后的Fasttext模型性能类似,较原始模型的差在-0.012~+0.003之间波动,text GCN的性能降低0.03左右。值得注意的是,GCN在作长文本分类的时候,表现会略优于fasttext,在对句子的处理上暂时还未超过fasttext。这多是因为GCN生成图谱时,使用的是单字,这样会损失一些词与词之间的信息。
引用出处
[1] zhuanlan.zhihu.com/p/54505069
[2] Yao L, Mao C, Luo Y. Graph convolutional networks for text classification[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2019, 33: 7370-7377.