每天给你送来NLP技术干货!


来自:SUFE AI Lab

BERT4GCN论文阅读笔记

标题:BERT4GCN: Using BERT Intermediate Layers to Augment GCN for Aspect-based Sentiment Classification

摘要: 基于图的方面情感分类(ABSC)方法已经取得了最先进的结果,特别是配合从预训练语言模型(PLMs)得到的上下文词嵌入使用。然而,它们忽略了上下文的顺序特性,并没有充分利用PLMs。在本文中,我们提出了一个新的模型,它集成了来自BERT的PLM的语法顺序特性和来自依赖图的语法知识。BERT4GCN利用BERT中间层的输出和单词之间的位置信息来增强GCN,以更好地编码依赖图进行下游分类。实验结果表明,本文提出的BERT4GCN优于所有最先进的baselines,证明了用BERT的中间层语法特征增强GCN可以显著增强ABSC模型。

ASGCN

1. GCN层

在介绍BERT4GCN的设计之前,让我们看看以前的一些其他GCN是怎么做的。ASGCN[1](EMNLP2019)这是本文使用的一个baseline——ASGCN,这篇论文对图卷积层作了很好的定义:

其中h代表多个连续GCN层的隐状态,对于一个L-层的GCN, 就是节点 i 的最终输出,A是图的邻接矩阵,W表示一个可训练的线性变换权重,b表示一个可训练的偏置项,网络如下图所示看到这里我们可以理解文本GCN和CNN的主要区别在于对节点(token)特征的组合方式更加灵活,也就是说CNN只是按照固定的窗口大小组合位置相近的词,而GCN利用语法树(图的信息)组合在语义上关系近的词。

2. 模型设计

(1)输入层

输入层将每个单词token在低维实值向量空间中进行嵌入表示(原代码中使用了glove300维词向量,BERT4GCN一文中也用BERT词向量作为输入进行了对比)。作者对输入进行了如下的设计:首先是将给定n词句子表示为 ,其中 到 是长度为m的方面对象,其他则视为上下文;利用句子词嵌入,构造双向LSTM来产生隐藏状态向量 。

(2)针对aspect-base进行改造

给定句子的依赖树是一个有向图,虽然GCN通常不考虑方向,但也可以调整为适应方向图的版本,因此在构造邻接矩阵时有两个方案:有向(ASGCN-DT)或无向(ASGCN-DG),相比之下有向方案的邻接矩阵更加稀疏;以前的工作广泛采用一个分配位置权重的函数用于增强上下文中接近aspect的词的重要性,通过这样做,来减少依赖解析过程中可能自然产生的噪声和偏差,具体表示为

通过多层GCN,以一种既考虑句法依赖又考虑长期多词关系的方式来感知方面周围的上下文。此外,遵循Kipf和Welling(2017)中的自循环思想,每个单词与自身的邻接值手动设置为1,即A的对角线值均为1,然后通过带归一化因子(保证特征分布的稳定)的图卷积运算更新每个节点的表示,具体更新过程如下

其中, 是节点 i 的度,

(3)聚焦方面词——Aspect-specific Masking

这一层定义为 ,通过这一层屏蔽掉 non-aspect 单词的隐藏状态向量,并使aspect单词的状态保持不变。

(4)Aspect-aware Attention

注意力分数的计算方式为

也就是用GCN得到的方面词表示BiLSTM得到的完整句子表示计算注意力权重,最终的预测表示为 ,后接全连接层和softmax计算标签。

BERT+GCN

BERT4GCN原文其中一个baseline BERT+GCN的图构建参考了下面这篇文章:SAGAT[2](COLING 2020),这一模型虽然没有直接采用GCN而是使用图Attention,但在消融实验中给出了GCN模型对比。这里,我们主要想学习一下SAGAT图的构建方法。首先作者注意到,之前提出的几乎所有基于bert的模型都是在编码后通过平均池化合并子词,因为模型的后续层不能处理子词的结构,但不同子词的重要程度不同是一个显然的事实,因此作者希望把所有子词加入图中,后续用图Attention处理。构建的方法也很容易理解,首先输入的形式是:[CLS] 完整句子 [SEP] 方面词 [SEP],按照语法依赖构建边,将句子和方面词切割为子词后,用边将第一个子词和其他子词连接,如下图所示

BERT中间层 + GCN

最后我们步入正题介绍BERT4GCN的具体处理方法。

1、输入

BERT捕获了丰富的语言信息层次结构,不同的隐藏层其信息的“精度”与“侧重”有所不同,因此作者选取多个隐藏层丰富句子的表示。对于输入的句子,首先将每个单词映射到一个低维词向量,然后接BiLSTM获取隐藏状态。之后再处理为 [CLS] 完整句子 [SEP] 方面词 [SEP] 的形式输入BERT,取模型的1、5、9、12层作为增强特征,如果一个单词被分为若干子词,则只取第一个子词,得到得到GCN的增强特征G为

自注意机制能够捕捉单词之间的远距离依赖关系,Ganesh Jawahar等人的论文[3]也发现尽管BERT只使用了注意力机制,但是它的高层网络依然可以学习到文本中的组合结构。因此作者希望利用BERT中间层的注意力权重去修正、补充普通解析器得到的语法树。首先获取对应层的Attention权重 ,其中每个W的维度是h×n×n,h为head的数量,接下来作者对head维度求平均得到该层的注意力表示,最后,如果注意权值大于或小于某个阈值(超参数),会在单词之间修剪或添加有向边

我们知道GCN需要两个输入:邻接矩阵和节点特征,而这里对每个token提取的若干层特征就是节点特征,利用Attention构建的补充依赖图就是邻接矩阵

2、GCN over Supplemented Dependency Graph

在每一层的补充依赖图上应用GCN,输入R1融合了BERT隐藏状态与BiLSTM隐藏状态,Rk融合了BERT隐藏状态与前一GCN层输出的节点表示。如下所示:

GCN以平均的方式聚合相邻节点表示,忽略了原始上下文中的相对线性位置。为了解决这个问题,作者训练了一组相对位置嵌入P(大小为(2w+1)* d,w为窗口大小,超参)进行位置信息编码,相应卷积层的计算公式变为

这个式子表示,对于当前的中心词 i,如果词 j 落在左右w大小内,则使用 位置嵌入,否则使用窗口边界的位置嵌入。

3、训练和实验结果

在获得了最后一层GCN输出的单词表示后,作者将当前aspect term的表示进行平均,作为最终的隐藏特征表示,后接一个全连接层和一个softmax层得到概率表示,使用带L2正则项的交叉熵损失进行分类。实验结果如下:BERT4GCN在所有三个数据集上优于所有其他基于BERT的模型,证明了用BERT中间层的语法特征增强GCN可以增强ABSC模型。作者对结果进行了如下分析:

(1)BERT vs. RoBERTa

RoBERTaMLP在Laptop和Restaurant数据集上的性能显著优于BERT-SPC,而在Twitter数据集上的结果与BERT-SPC相似,BERT4GCN和RoBERTa4GCN的比较中也观察到相同的模式。造成这种现象的一个可能原因是,两个PLM预先训练的语料库与Twitter数据集大不相同。因此,RoBERTa的优势并不能体现在Twitter这样的领域外数据集上;

(2)BERT-SPC vs. BERT-based models

我们可以看到BERT-SPC和 基于BERT的模型效果相差不多,说明在使用BERT时模型体系结构工程只起到边际作用;

(3)BERT-SPC vs. BERT4GCN

从实验结果观察,在Twitter数据集中,BERT4GCN相对于BERT-SPC的改进高于其他数据集。而RoBERTa系列中,RoBERTaMLP和RoBERTa4GCN的效果差不多,在Restaurant数据集上甚至前者还要更好。基于这种现象,作者提出两点猜想:一是BERT4GCN框架更灵活地处理领域外数据集,二是猜测当PLM足够强大时,在现有的模型框架下,无需在领域内数据集上进行繁重的模型架构工程。这两个猜想需要在今后的工作中进一步探索。

此外,作者通过消融实验得到一些其他结论,例如单独添加相对位置模块会产生负面影响,相对位置模块的效果只有在与补充依赖图模块结合时才能显示出来;通过统计Laptop和Restaurant数据集的方面和意见term之间的相对距离,发现虽然分布非常相似,但这两个数据集的最佳窗口大小并不相同,这意味着可能需要根据数据集谨慎地选取超参数。

4、结论

本文中,作者提出了一个BERT4GCN模型,该模型集成了来自BERT的语法序列特征和来自依赖图的语法知识。该模型利用包含丰富和有用的语言知识的BERT中间层来增强GCN,并结合词的相对位置信息进行位置感知。最后,实验结果表明,该模型取得了新的SOTA表现。

参考资料

[1]

Aspect-based Sentiment Classification with Aspect-specific Graph Convolutional Networks: https://arxiv.org/abs/1909.03477

[2]

Syntax-Aware Graph Attention Network for Aspect-Level Sentiment Classification: https://aclanthology.org/2020.coling-main.69.pdf

[3]

What does BERT learn about the structure of language?: https://aclanthology.org/P19-1356.pdf


投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

整理不易,还望给个在看!

BERT4GCN:利用BERT中间层特征增强GCN进行基于方面的情感分类相关推荐

  1. BERT4GCN: Using BERT Intermediate Layers to Augment GCN for Aspect-based Sentiment Classification

    GCN For ABSA论文内容整理 BERT4GCN 标题:BERT4GCN: Using BERT Intermediate Layers to Augment GCN for Aspect-ba ...

  2. 【NLP】如何利用BERT来做基于阅读理解的信息抽取

    信息抽取 (Information Extraction: IE)是把文本里包含的信息进行结构化处理,变成计算机能够处理的结构,实体抽取.关系抽取.事件抽取等都属于信息抽取的范畴.在NLP领域,信息抽 ...

  3. 层与特征融合_【计算机系统应用】(第122期)感受野特征增强的 SSD 目标检测算法...

    点击上方"蓝字",关注我们吧! 目标检测是计算机视觉领域的一项重要任务, 是 生活中如实例分割[1] , 面部分析[2] , 汽车自动驾驶[3].视 频分析[4] 等各种视觉应用的 ...

  4. 图像处理中提取中间特征是干什么_PyTorch提取中间层特征?

    点击上方"MLNLP",选择"星标"公众号 重磅干货,第一时间送达 编辑:忆臻 https://www.zhihu.com/question/68384370 ...

  5. Pytorch输出网络中间层特征可视化

    Pytorch输出网络中间层特征可视化 本文主要介绍了如何提取特定层的特征,然后对它进行可视化.最后给出了不同网络的应用案例. 推荐一个GITHUN实现可视化的工具地址 整体步骤 加载已经预训练好的模 ...

  6. FEANet——基于 RGBT的实时语义分割特征增强注意力网络

    Overview Title:FEANet: Feature-Enhanced Attention Network for RGB-Thermal Real-time Semantic Segment ...

  7. IEEE:基于轻量级特征增强卷积神经网络的低空小目标检测

    论文下载:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9574645 Abstract 无人机(UAV)被称为" ...

  8. ML之xgboost:利用xgboost算法(特征筛选和GridSearchCV)对数据集实现回归预测

    ML之xgboost:利用xgboost算法(特征筛选和GridSearchCV)对数据集实现回归预测 目录 输出结果 实现代码 输出结果 ['EnterCOD', 'EnterBOD', 'Ente ...

  9. pytorch 输出中间层特征

    pytorch 输出中间层特征: tensorflow输出中间特征,2种方式: 1. 保存全部模型(包括结构)时,需要之前先add_to_collection 或者 用slim模块下的end_poin ...

  10. keras提取网络中间层输出、中间层特征

    最近想用自编码网络降维一下数据,用堆叠自编码器SAE降维之后提取中间层特征 model = Sequential()model.add(Dense(1024, activation='relu', i ...

最新文章

  1. linux vnc服务重启,CentOS下配置VNCServer,重启服务仍然生效
  2. python 日志不会按照日期分割_python 按照日期切分大日志文件(重点)和按照指定大小切分日志文件...
  3. Unity3D-GUI初试
  4. 深度学习笔记(48) 内容代价函数
  5. 【Flink】Flink的 processingTimeTimersQueue 是如何注册数据的
  6. Burpsuite工具使用
  7. python爬取b站评论_用python 抓取B站视频评论,制作词云
  8. Java 并发 —— volatile 关键字
  9. day21-字节流和字符流
  10. 《C#图解教程》 总览
  11. win10本机计算机策略,[本地策略组怎么打开]win10本地组策略打开方法
  12. 一文盘点中国商业航天:民营火箭的两类瓶颈和三大趋势
  13. 自学单片机怎么买开发板?
  14. Win10下取消U盘/移动硬盘“写保护”的方法
  15. sklearn代码11 1-熵
  16. POJ-2325解题报告
  17. windows安装pgsql exe后开启服务sql shell(psql)登录
  18. 【大话QT之十】实现FTP断点续传
  19. CAD电气制图:CAD软件中设备布置技巧
  20. 《蓝海战略》读书笔记

热门文章

  1. 只要听说过电脑的人都能看懂的网上pdf全书获取项目
  2. Python_遍历时删除的处理说明
  3. [BZOJ3124]直径
  4. python socket-tcp逻辑
  5. Xpath定位方法深入探讨及元素定位失败常见情况
  6. 1249 Problem Q
  7. 修改帝国cms验证码 每个都不一样
  8. CKFinder 2.0.2 破解小计
  9. 定制C# combobox的下拉框
  10. 伟大的程序员是怎样炼成的?