论文赏析[EMNLP19]如何在Transformer中融入句法树信息?这里给出了一种解决方案(一)

简介: 之前其实有很多工作将句法信息融入到了RNN中,例如ON-LSTM和PRPN,用来隐式建模句法结构信息,同时提升语言模型的准确率。本文尝试将句法信息融入到Transformer中,用来赋予attention更好的解释性。同时可以无监督的预测出句子的句法树,并且相比于一般的Transformer,语言模型的性能有所提高。

论文地址:

https://www.aclweb.org/anthology/D19-1098.pdf

介绍

之前其实有很多工作将句法信息融入到了RNN中,例如ON-LSTM和PRPN,用来隐式建模句法结构信息,同时提升语言模型的准确率。本文尝试将句法信息融入到Transformer中,用来赋予attention更好的解释性。同时可以无监督的预测出句子的句法树,并且相比于一般的Transformer,语言模型的性能有所提高。

模型结构


image.png

上面这张是模型结构,最主要的区别就是在multi-head attention操作基础上新增了一个成分的attention,用来表示一段span能否构成一个短语。比如上图中,“cute dog”构成一个短语,所以第0层中这两个单词的attention较大。而“the cute dog”构成了一个更大的短语,所以第1层中“the”和“dog”的attention较大。

回顾self-attention的操作,主要是计算两个单词的向量点积:

image.png

这里image.png 。但是在本文中,新增加了一个成分先验 C ,其中 image.png 表示 image.pngimage.png 在一个短语内的概率。然后与原来的self-attention做元素乘即可:

image.png

注意不同的head之间共享 C 。

那么这个成分先验 C 怎么算呢?这里把它拆成若干相邻单词在同一短语内概率的乘积。也就是定义image.png 在同一短语内的概率,那么 image.png 就可以表示为:

image.png

这样只有 image.png 中所有单词都有较大概率在同一短语中, image.png 取值才比较大。当然在实现中会取对数,来避免数值太小。

那么问题又来了, a 怎么算?首先类似self-attention,计算相邻两个单词属于同一短语的得分:

image.png

注意这里区分了方向,也就是还存在得分 image.png ,并且两者虽然意义是一样的,但是分数不一定相同。为了防止出现一种问题,也就是所有得分全部相同,然后算出来概率全是1,那就没有意义了,所以要给得分加上限制,也就是归一化。这里选择归一化一个单词和左右邻居两者的得分:

image.png

然后由于 image.png 值不一样,所以取平均:

image.png

这样的话,如果两个相邻单词互相之间连接的概率很大,就会导致 image.png 很大,也就说明了这两个单词大概率属于同一个短语。

从第一张模型图中可以看到,成分attention不只计算了一层。低层可以用来表示两两相邻单词之间属于同一短语的概率,而高层可以表示属于更大的短语的概率。注意还得满足一个性质,也就是如果两个单词在低层大概率属于同一个短语,那他们高层肯定更大概率属于一个更大的短语。所以计算方式如下:

image.png

初始化的时候 image.png 都设为0。这样对于每一层都可以得到一个成分先验 image.png

无监督句法分析


image.pngimage.png

相关文章
|
域名解析 缓存 网络协议
当使用IP地址可以访问应用系统,但通过域名无法访问时
【1月更文挑战第14天】【1月更文挑战第68篇】当使用IP地址可以访问应用系统,但通过域名无法访问时
289 6
|
Swift
Swift 设置阴影
阴影的设置是通过layer的shadow设置的,其中offset为阴影的偏移量,探索下offset是如何影响阴影显示的
912 0
Swift 设置阴影
|
负载均衡 Cloud Native Java
【秒懂·云原生】微服务篇 —— 微服务究竟是什么?
【秒懂·云原生】微服务篇 —— 微服务究竟是什么?
2418 0
【秒懂·云原生】微服务篇 —— 微服务究竟是什么?
|
9月前
|
机器学习/深度学习 人工智能 算法
具身智能与大模型融合创新技术实训研讨会成功举办
2025年1月16日-19日武汉,TsingtaoAI联合北京博创鑫鑫教育科技,举行“具身智能与大模型融合创新技术”实训研讨会,本次会议面向高校AI教师和企业AI工程师群体,通过3天的技术研修和实操教学,通过将 AI 大模型与具备3D视觉的机器人相结合,为学员实践演示,带领学员深入理解通用具身智能的原理和应用。
311 53
|
自然语言处理 开发者 Python
【Python】已解决:ModuleNotFoundError: No module named ‘nltk‘
【Python】已解决:ModuleNotFoundError: No module named ‘nltk‘
707 1
|
11月前
|
缓存 Java 数据库连接
Hibernate:Java持久层框架的高效应用
通过上述步骤,可以在Java项目中高效应用Hibernate框架,实现对关系数据库的透明持久化管理。Hibernate提供的强大功能和灵活配置,使得开发者能够专注于业务逻辑的实现,而不必过多关注底层数据库操作。
214 1
|
存储 关系型数据库 MySQL
"揭秘!MySQL为何独宠B+树?跳表再牛,也敌不过这性能王者的N重诱惑!"
【8月更文挑战第11天】MySQL作为主流关系型数据库,优选B+树而非跳表作为索引结构,基于其对范围查询的支持、低磁盘I/O开销及事务处理能力。B+树叶节点构成有序链表,利于范围查询;较矮的树形结构减少了磁盘访问次数;支持多版本并发控制,保障事务ACID特性。而跳表在线性扫描范围查询时效率低,难以高效实现事务管理,且额外指针增加空间消耗。示例代码展示了B+树节点分裂过程,突显其内部机制。综上,B+树为MySQL提供了高性能、可靠的数据存储与检索能力。
315 4
|
存储 监控 数据安全/隐私保护
灾备计划的设计与实施:构建企业数据安全的坚固防线
【8月更文挑战第16天】灾备计划的设计与实施是一个复杂而持续的过程,需要企业高层的重视和全体员工的参与。通过科学的风险评估、合理的策略制定、完善的流程与文档、以及有效的实施与持续优化,企业可以构建起一套高效、可靠的灾备体系,为业务连续性和数据安全提供坚实保障。在数字化转型的浪潮中,灾备计划已成为企业不可或缺的战略资产。
|
监控 Java 数据库连接
Java一分钟之-JDBC连接池:HikariCP, Apache DBCP, C3P0
【6月更文挑战第14天】本文介绍了Java中常用的三种JDBC连接池——HikariCP、Apache DBCP和C3P0。HikariCP以其高性能和低延迟领先,适合高并发环境;Apache DBCP稳定易配置;C3P0则提供高度可定制选项。文章讨论了各连接池的常见问题及避免策略,如配置不当、连接泄露等,并给出示例代码以供参考。选择合适的连接池并正确配置能有效提升应用性能。
495 7
|
Kubernetes Cloud Native API
云原生技术专题 | 深入浅出分析云原生微服务的技术结构和架构设计
云原生技术专题 | 深入浅出分析云原生微服务的技术结构和架构设计
759 0