Text Level Graph Neural Network for Text Classification阅读笔记

[标题]
Text Level Graph Neural Network for Text Classification

[代码地址]
https://github.com/LindgeW/TextLevelGNN
(大佬复现的pytorch代码,但效果不佳)

[知识储备]
什么是TextGCN?

一、背景与概览

1.1 相关研究

  • CNN
  • RNN
  • GNN
    • 整个语料上建图,图中包含所有单词节点
    • 滑动窗口大->内存大
    • 边的权重固定,表示能力差
    • 模型结构、参数过分依赖于语料

1.2 贡献点

  • 给每一篇文章单独建图
  • 滑动窗口小->内存小
  • 相同的节点表示,以及边的权重全局共享,并更新
  • 不依赖于语料

1.3 相关工作

差不多在相关研究中

二、模型

在这里插入图片描述

2.1 建图

在这里插入图片描述对于一个text

  • l是它的长度
  • N是图的所有单词节点
  • E是图的所有边,即节点i与以他为中心的2p+1大小的窗口内的其它邻近节点有边相连
  • N和E都来自于共享的全局矩阵
  • 出现少于k次的边是公共边

2.2 MPM消息传递机制

在这里插入图片描述
对于第n个单词

  • (3):2p+1个邻近节点(包括它自己)*与它的边权重,在每一维度上取最大
  • (4):一个可学习的参数来决定保留多少原来的向量表示(N),保留多少更新过后的向量表示(M),完成更新

2.3 training object

在这里插入图片描述
对于一个句子,将其所有单词向量求和,最后映射到输出维度,使用cross entropy loss function

三、实验与评估

  • window size/p = 2
  • lr = 1e-3
  • L2 weight decay = 1e-4
  • dropout_p = 0.5
  • bs = 32
  • early stop = 10
  • glove word embeddings
    在这里插入图片描述

四、结论与个人总结

论文结论

  • window size/p = 3左右效果最好
  • window size/p = 2(?)的情况下,像比如textgcn中的20,内存小
  • 边的权重使用固定的PMI+window size设置成20,效果不好
  • 单个句子的max pooling换成mean pooling,效果不好
  • 随机初始化所有单词节点的向量表示,效果不好

个人总结

  • 和TextING一样,也可以批处理
  • 是否和word embedding一样,需要建立edge embedding,即每一条unique的eage都有unique的idx

五、参考

六、拓展

下面的对https://github.com/LindgeW/TextLevelGNN的理解和改进的思路。

猜你喜欢

转载自blog.csdn.net/jokerxsy/article/details/113789860