第四周.01.GCN文本分类及RGCN模型讲解

本文探讨了图卷积网络(GCN)在文本分类任务中的应用,并提出了TextGCN模型,该模型能在不依赖预训练词向量的情况下取得优异表现。此外,文中还介绍了RGCN模型,用于处理关系型数据。


本文内容整理自深度之眼《GNN核心能力培养计划》

GCN在文本识别的应用

GCN文本分类

是一个半监督任务
主要参考的文章是:Graph Convolutional Networks for Text Classification,是2019 AAAI(Association for the Advancement of Artificial Intelligence)(CCF A类会议)发表的一篇文章
另外一篇2018 AAAI的文章是关于半监督学习的:Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning

模型over-smoothing问题
问题描述:当GCN的层数比较多的时候,会导致各个节点的embedding趋向于一致,从而失去了区分度的现象。
究其原因是,当卷积层数过深,那么就会相当把图中所有节点的信息都汇聚到每一个节点上,每个节点上丢集中了所有其他节点的信息,而所有的节点汇聚信息肯定都是一样的,因而每个节点的embedding结果就会非常类似,导致节点分类任务效果很差。

摘要

摘要套路分析:
文本分类这个任务很重要。
Text classification is an important and classical problem in natural language processing.
现在的解决方案是什么。
There have been a number of studies that applied convolutional neural networks (convolution on regular grid, e.g., sequence) to classification.
这里要有转折分析现有方法的缺点。
However, only a limited number of studies have explored the more flexible graph convolutional neural networks (convolution on
non-grid, e.g., arbitrary graph) for the task.
根据缺点,讲我们怎么做(创新点),总分法介绍开始:
总:In this work, we propose to use graph convolutional networks for text classification.
分:We build a single text graph for a corpus based on word co-occurrence and document word relations, then learn
a Text Graph Convolutional Network (Text GCN) for the corpus.


这里补充一下word co-occurrence and document word relations
word co-occurrence是用一个窗口大小的范围,分析两个词之间的共现次数,作为词与词之间的边的关系;
document word relations是指一个词在一个文章中的出现次数,作为词与整个文章边的关系。


分:Our Text GCN is initialized with one-hot representation for word and document, it then jointly learns the embeddings
for both words and documents, as supervised by the known class labels for documents.
实验结果(创新带来的结果)露一手,SOTA要亮出来(注意实验条件,一个模型不一定是全面超越前人的研究,这个模型的SOTA条件是直接用text GCN模型然后不用预训练词向量,得到效果最佳):
第一个贡献:Our experimental results on multiple benchmark datasets demonstrate that a vanilla Text GCN without any external word embeddings or knowledge outperforms state-of-the-art methods for text classification.
第二个贡献:On the other hand, Text GCN also learns predictive word and document embeddings. In addition, experimental results show that the improvement of Text GCN over state-of-the-art comparison methods become more prominent as we lower the percentage of training data, suggesting the robustness of Text GCN to less training data in text classification.

模型

文本或者说文章不是图结构的,先来看看如果把文章转化为图的形式。上面说了有两个东西要用来表示节点(词、文章)之间的关系:word co-occurrence and document word relations。
对于后者(document word relations)文章中也提到,光使用词频来表示权重是有失偏颇的(出现得多反而不怎么重要,类似【的】【地】等,但是一个词在某个文章中出现次数多,但是在其他文章中不多见,则可认为这个词对于这个文章非常重要。)
因此要引入TF-IDF,可以参考这里
PS.之前我也写过,忘记在哪里了,谁能告诉我优快云有没有搜索功能。
对于前者(word co-occurrence)文章使用了PMI(point-wise mutual information互信息)来计算。
有了边的关系,就可以根据原文公式3得到图的结构,也就是邻接矩阵 A i j A_{ij} Aij
然后再用GCN来训练,文章中也用了一段篇幅来讲解为什么虽然文本和文本没有边,但是这个模型可以获取到文本和文本之间的关系(相似?不相似)
A two-layer GCN can allow message passing among nodes that are at maximum two steps away. Thus although there is no direct document-document edges in the graph, the two-layer GCN allows the information exchange between pairs of documents.

RGCN模型讲解

模型来自论文:Modeling Relational Data with Graph Convolutional Networks
模型的特点:
1.异质图经典baseline
2.GCN应用到异质图的经典模型
3.每个类型边对应一组神经网络参数
4.针对上面参数变多的特点,使用矩阵分解降低参数

模型主要用于两个任务:two fundamental SRL tasks: link prediction (recovery of missing triples) and entity classification (assigning types or categorical properties to entities).
举个例子:张三毕业于清华大学,那么可以推断张三在北京住过。因为清华大学位于北京。
KG天然就是图结构。
他的核心公式是原文公式2:
h i ( l + 1 ) = σ ( ∑ r ∈ R ∑ j ∈ N i r 1 c i , r W r ( l ) h j ( l ) + W 0 ( l ) h i ( l ) ) h_i^{(l+1)}=\sigma\left(\sum_{r\in R}\sum_{j\in N_i^r}\cfrac{1}{c_{i,r}}W_r^{(l)}h_j^{(l)}+W_0^{(l)}h_i^{(l)}\right) hi(l+1)=σrRjNirci,r1Wr(l)hj(l)+W0(l)hi(l)
其中 W 0 ( l ) h i ( l ) W_0^{(l)}h_i^{(l)} W0(l)hi(l)表示当前节点本身self loop
R R R表示当前边类型 r r r的集合
c i , r c_{i,r} ci,r是归一化项是当前节点 i i i的邻居里面节点类型为 r r r的节点数量,针对这一个类型的邻居进行归一化
N i r N_i^r Nir是当前节点 i i i的邻居里面节点类型为 r r r的节点集合
W r W_r Wr表示不同边类型有自己的参数(特点3)
原文中还考虑边的方向:in/out
在这里插入图片描述
横着的红框代表里面的求和,竖着的红框代表外面的求和,最下面的红色那个是self loop。
可以看到由于每个类型都有一个 W r W_r Wr,如果还考虑层数 l = 2 l=2 l=2,那么参数还要翻倍,每层参数可以表示为: W r l W_r^l Wrl,数量非常大(参数多还会有过拟合的风险),原文在2.2节给出了使用矩阵分解的方式来解决这个问题的方案(公式3)。

<think>好的,我现在需要回答用户关于TextGCN文本分类中的应用及其实现方式的问题。首先,我得回忆一下TextGCN的基本概念。TextGCN是图卷积网络(GCN)在文本分类中的应用,应该涉及到将文本数据转化为图结构,然后应用GCN进行特征提取和分类。 根据用户提供的引用,引用[1]提到GCN处理非欧几里得结构的数据,比如文本分类中的图结构。这可能涉及到如何将文本转换为图,比如将单词和文档作为节点,共现或语义关系作为边。引用[2]讨论了半监督图卷积网络在文本分类中的应用,可能涉及到利用少量标注数据和大量未标注数据构建图,并通过GCN进行半监督学习。引用[3]提到传统CNN在句子分类中的应用,这可能与TextGCN形成对比,强调图结构带来的优势。 接下来,我需要整理TextGCN的工作原理。首先,构建图结构:节点包括文档和单词,边可能基于文档-单词共现(如TF-IDF)和单词-单词共现(如PMI)。然后,应用GCN层进行信息传播,聚合邻居节点的特征,最终用分类器(如softmax)进行分类。 实现步骤方面,可能需要包括数据预处理(构建图、特征矩阵、邻接矩阵),定义GCN模型,训练和评估。代码部分可能使用PyTorch或TensorFlow实现,但用户提供的示例是Python,所以可能需要展示关键代码片段,比如图构建和GCN层定义。 需要注意用户提到的系统级指令,比如数学公式用$...$,独立公式用$$...$$,正确使用LaTeX。例如,GCN的公式应该用独立公式格式。同时,生成相关问题,需要围绕TextGCN的应用、实现细节、对比传统方法、优化策略等方面提问。 需要验证引用是否正确,引用[1]确实提到了GCN文本分类中的应用,引用[2]关于半监督学习,引用[3]关于CNN模型,可以作为对比。因此,在回答中适当引用这些资料,比如在提到半监督学习时引用[2],对比传统方法时引用[3]。 现在需要确保回答结构清晰,分点解释原理和实现,代码示例正确,并且最后生成相关问题。同时,注意使用中文,避免使用Markdown格式,但代码块需要用反引号包裹,并注明语言。例如,用```python展示代码。 可能需要检查TextGCN的具体实现细节,比如邻接矩阵的计算,是否包括自环,GCN层的堆叠,激活函数的选择,损失函数(如交叉熵)等。同时,半监督学习的部分,如何利用未标注数据,可能在损失函数中只计算标注节点的损失。 最后,生成的相关问题需要与TextGCN相关,比如与传统GCN的区别、半监督的实现、参数调整、处理大规模数据的方法、对比其他图神经网络模型等。</think>### TextGCN文本分类中的工作原理及实现方法 #### 一、TextGCN的核心思想 TextGCN(Text Graph Convolutional Network)将文本数据建模为图结构,利用图卷积网络(GCN)捕捉单词与文档之间的全局语义关系,从而完成分类任务[^1]。其核心是通过构建包含文档节点和单词节点的异构图,将文本分类转化为图节点分类问题。 #### 二、工作原理 1. **图结构构建** - **节点类型**:包含文档节点(如$d_1, d_2, \dots, d_n$)和单词节点(如$w_1, w_2, \dots, w_m$)。 - **边定义**: - 文档-单词边:基于TF-IDF计算权重,反映单词在文档中的重要程度。 - 单词-单词边:基于共现统计(如点互信息PMI),计算公式为: $$ \text{PMI}(w_i, w_j) = \log \frac{p(w_i, w_j)}{p(w_i)p(w_j)} $$ 若PMI值为正,则在$w_i$和$w_j$间建立边。 2. **特征表示** 每个节点的初始特征可以是: - 文档节点:词袋模型(BoW)或TF-IDF向量。 - 单词节点:预训练词向量(如Word2Vec)或随机初始化向量。 3. **GCN层计算** 每层GCN通过聚合邻居节点信息更新节点特征,公式为: $$ H^{(l+1)} = \sigma\left( \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)} \right) $$ 其中$\tilde{A}=A+I$(添加自环的邻接矩阵),$\tilde{D}$为度矩阵,$\sigma$为激活函数(如ReLU)[^2]。 4. **半监督分类** 仅对少量标注文档节点计算交叉熵损失,未标注节点通过图结构传播标签信息[^2]。 #### 三、实现步骤 1. **数据预处理** - 构建文档-单词矩阵(TF-IDF)和单词共现矩阵(PMI)。 - 合并节点并构造邻接矩阵$A$。 2. **模型定义(Python示例)** ```python import torch import torch.nn as nn class TextGCN(nn.Module): def __init__(self, num_nodes, input_dim, hidden_dim, output_dim): super().__init__() self.gcn1 = GCNLayer(input_dim, hidden_dim) self.gcn2 = GCNLayer(hidden_dim, output_dim) def forward(self, A, X): X = self.gcn1(A, X) X = torch.relu(X) X = self.gcn2(A, X) return torch.log_softmax(X, dim=1) class GCNLayer(nn.Module): def __init__(self, in_features, out_features): super().__init__() self.linear = nn.Linear(in_features, out_features) def forward(self, A, X): return self.linear(torch.mm(A, X)) ``` 3. **训练过程** - 输入邻接矩阵$A$和节点特征矩阵$X$。 - 仅对标注节点计算损失,反向传播更新参数。 #### 四、与传统方法的对比 相比CNN/LSTM依赖局部上下文,TextGCN通过图结构捕获全局语义依赖(如远距离单词关联)[^3]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值