GCN for Text Classification<总结>

图神经网络是很大的一个系统知识,包图卷积网络GCN、图注意力网络GAT......,GCN的产生涉及图信号处理、图傅里叶变换、图滤波器等复杂的图像方面的内容。对图像知识小白的我,只能站在CNN的角度去理解GCN。CNN可以用于文本分类,GCN当然也可以,而且在多标签分类问题上表现如著名的BERT,非常不错,值得一试。

图 1

GCN 和CNN的区别和联系

1、从处理的数据格式看:

CNN处理的图像数据是固定2D栅格结构,非常有规则,通过共享一个卷积核,来计算相邻像素点的加权和,以此提取空间特征。

GCN中的卷积计算则是处理更普遍的非结构化的图数据的,非结构数据无法保持平移不变性,所以无法用相同尺寸的卷积核来进行卷积计算。

2、从卷积核来看:

GCN和CNN都是对局部提取特征,并且卷积核的参数处处共享。GCN中的卷积核也作用于全图所有的节点,权重参数共享,减少了单层网络的参数量,可以有效避免过拟合现象的出现。

需要明确的是,我们目的是用卷积核来卷积上一层的信息,假如上一层的信息为f,卷积核为h,那么二者的乘积就是下层节点的信息。f*h就不像CNN那样的矩阵运算这么简单了。

卷积定理指出,函数卷积傅立叶变换是函数傅立叶变换的乘积,对于函数f和h两者的卷积是函数傅里叶变换乘积的逆变换。

式 (1)

f的傅里叶变换为:\hat{f} =U^Tf ;其中U是列量为单位特征向量的矩阵,是正交矩阵。

h的傅里叶变换为:

式 (2)

                                                                \hat{h} (\lambda _{l} )=\sum_{i=1}^Nh(i)u_{l}^*(i)

再乘以U得到逆变换,f和h在图上的卷积计算为:

式 (3)

式子中间的对角矩阵写成:diag(\hat{h} (\lambda _{l} ))

3、从感受域来看:

GCN和CNN感受域都随着卷积层增大而增大,两类模型中,节点自身特征的更新是与卷积运算强耦合在一起的,每一个新卷积层的加入,都可以使节点获得更加抽象化的特征表示。

图 2

GCN特性

从何CNN的对比之中,了解了GCN具有的卷积神经网络的性质,但作为“图”神经网络的一员,具有不同于CNN的“图”的特性:

1、GCN得有一张数据构成的图,包含属性信息与结构信息。

2、有一个邻接矩阵来表达节点与节点之间的关系,也就是结构信息。

3、每个节点有自己独特的信息,也就是属性信息。

文本分类任务的图

1、构建节点--node

对于文本分类来说,节点包含字节点和文档节点。首先对语料进行分词,建立一个词典,词典大小就是字节点的个数,设为n。文档的节点为文档或者样本的个数,设为m。那么整个图的节点个数为n+m。

2、构建节点的特征--feature

字节点的特征是对应的word embedding,文档的特征是文档中字节点特征的加和,刚开始word embedding为初始化值,随着模型训练而更新。

3、构建节点之间的边--edge

由一个(n+m)*(n+m)维的矩阵A来表示每一个节点之间的邻接关系,那么A中的元素A_{ij} 就是表达第i个节点和第j个节点之间的关系权重。计算方式为:

图 3

字节点之间的关系用PMI值表示,其计算方式为:

图4

p(i,j)是i和j共现的频次,p(i)和p(i)是i和j各自出现的频次。

p(i)和p(j)的计算:首先,定义一个滑窗大小,然后将语料切分成无数个windows,如果样本不足滑窗大小当一个滑窗计算。然后,建立一个字典,并且遍历每一个滑窗,得到{'字':该字有多少滑窗出现}这样一个字典,如果一个滑窗中同一个字出现多只也算一次。

p(i,j)的计算:同样也是建立一个字典,遍历每一个滑窗,只是需要在取某个字的时候,再遍历一次该字之前的所有字,组成i,j字对,得到{'字ij':该字对有多少滑窗出现}。

TF-IDF值是词频逆文档频次,反映某个词的在该文档中的重要性,TF是该词在文档中的频率,IDF是该词在多少文档中出现过。

当i和j相同时,PMI值为1,那么A矩阵的对角线为1。其余情况为0。

进行完以上三步之后,将数据按照id(每个字和每个文档都有一个对应的id:0~m+n)写入矩阵里,得到的是上三角或下三角的矩阵,然后将非对称的邻接矩阵转化成对称的。接下来,对矩阵进行归一化处理,并且在对角线上添加元素为1,认为文档和文档、字与字本身的关系为1。最终得到对称归一化拉普拉斯算子,计算过程如下:

图 5

                                                                 L =D-A

式(4)

Training

得到拉普拉斯矩阵以后,就进行特征分解、傅里叶变换、卷积,然后整个过程又回到CNN上面一样,这个过程就交给GraphConvolution类来处理吧!从第一层到第二层的公式为:

L^1 = \rho (\tilde{L}XW_{0}  ),这里的\tilde{L} 就是上面的Lsys,拉普拉斯算子。

到这里就晕了,卷积计算不是式(3)的f*h吗,和L^1有什么关系?

式(3)是Graph通用的卷积公式,而L^1是为深度学习经几代演化调整而来的,原理是一样的。

diag(\hat{h} (\lambda _{l} ))替换成\sum_{j=0}^N\alpha _{j}\lambda _{l}^j  ,在神经网络中,x就是上一层的信息,再套一个激活函数Relu(论文中是Relu),就变成:

式(5)

将激活函数里面的部分写成矩阵形式:

式(6)

拉普拉斯矩阵的特征分解:

式(7)

将式(5)按照上述方式改写后:

式(8)

这时,其实式(8)就是L^1了。

按照上述卷积计算的过程,图的卷积计算就完成了,如果有多层,就迭代此操作。卷积完之后,分类也就完成了。这里不像CNN,要先卷积,然后池化,最后全连接层。GCN最后一层feature向量就是输出的概率分布,比如输入的feature是516维,经一层卷积hidden为258维,经二层卷积为95维,最后一层的维度需要和label的类别保持一致,节点feature就是一个概率分布,然后输出概率最大的那个作为该节点的类别。

Testing

根据《Graph Convolutional Networks for Text Classification》这篇文章给出的代码,运用于试题多标签的分类任务上,测试精度比CNN要高很多。结果如下,和bert的试验结果差不多。

Macro average Test Precision, Recall and F1-Score...

(0.5177944301111611, 0.9799458881748833, 0.643836952049565, None)

Micro average Test Precision, Recall and F1-Score...

(0.5890837859496038, 0.9972867048537836, 0.7406661069129583, None)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345