【AdaSeq论文解读系列】ACL 21-自动组合各种BERT模型,在实体抽取、观点抽取、句法分析等六大结构预测任务20+个数据集获SOTA,比ensemble更强!

本文主要是介绍【AdaSeq论文解读系列】ACL 21-自动组合各种BERT模型,在实体抽取、观点抽取、句法分析等六大结构预测任务20+个数据集获SOTA,比ensemble更强!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:落叶

链接:https://zhuanlan.zhihu.com/p/593364152

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文介绍了一项研究工作,提出了在结构预测问题上自动拼接word embedding(word embedding)以提高模型准确度的方法。该论文已被ACL2021接收为长文。

论文标题:

Automated Concatenation of Embeddings for Structured Prediction

论文地址:

https://aclanthology.org/2021.acl-long.206.pdf

代码链接:

https://github.com/Alibaba-NLP/ACE

1. 简介

基于上下文信息的预训练模型显着提高了自然语言处理中结构预测任务的性能。非常多的工作利用了如ELMo,BERT,Flair,XLM-R等预训练模型不断地刷新了各种结构预测任务的SOTA。最近的许多工作发现通过拼接不同类型的word embedding可以获得更好的词特征表示 ,从而进一步提高自然语言处理中结构预测问题的效果。然而,找到最佳的word embedding拼接组合往往与具体的任务和可候选的word embedding种类有关。同时,随着基于上下文信息的预训练语言模型的种类增加,让这个问题变得更加困难。受神经网络架构搜索(Neural Architecture Search, NAS)的最新进展所启发,本研究提出了Automated Concatenation of Embeddings (ACE)的方法,为结构预测任务寻找更好的embedding拼接。在这个方法中,控制器基于其信念模型(belief model)迭代地进行搜索过程,并对每个候选的word embedding对目标任务的有效性进行建模。在每一步,控制器基于信念模型对word embedding的拼接进行采样,然后将拼接的词特征表示作为输入提供给任务模型。该模型在任务数据集上进行训练,并将模型准确度作为奖励信号(reward signal)返回以进行更新控制器的信念模型。我们使用强化学习中的策略梯度(policy gradient)算法来解决优化问题。为了提高搜索过程的效率,我们还设计了一个特殊的奖励函数,通过基于当前拼接方式和所有先前采样的拼接方式之间的变换情况来累积所有奖励。我们在 6 个结构预测任务,包括命名实体识别(NER)、词性标注(PoS Tagging)、分块(Chunking),观点抽取(Aspect Extraction),句法依存分析(syntactic dependency parsing)和语义依存分析(semantic dependency parsing)上进行实验,在21个数据集刷新了SOTA。

2. 方法

任务模型

对于任务模型,我们在序列结构和图结构的结构预测问题上进行实验。给定输入句子x 和结构输出的结构预测y任务,我们可以计算概率分布:

其中表示给定输入所有可能的输出结构。根据不同的结构预测任务,输出结构可以是标签序列、树、图或其他结构。在本文中,我们使用序列结构和图结构输出作为两个示例的结构预测任务。我们使用 BiLSTM-CRF模型在序列结构任务进行预测,使用 BiLSTM-Biaffine模型在图结构的任务上进行预测:

其中 V是输入句子的词表示矩阵,包含n个词。第i个词的词表示 是 L种word embedding的拼接:

其中表示第个word embedding模型。

搜索空间设计

在NAS中,神经网络可以表示为具有一组节点和有向边的有向无环图。每个节点代表一个操作,而每条边代表这些节点之间的输入和输出。在 ACE 中,我们将每个候选embedding表示为一个节点。节点的输入是输入句子x,输出是对应的embedding v。由于我们将embedding拼接为任务模型的词表示,因此我们的搜索空间中的节点之间没有连接,从而可以显著减少搜索空间,最终搜索空间包含指数个可能的节点组合。为让模型每次搜索能够共享模型的参数,我们使用一个二元向量 a作为embedding mask来使未选择的embedding置0,从而让词特征的长度在每次搜索时保持不变。

在搜索空间内进行搜索

在搜索过程中,控制器迭代地为任务模型生成embedding mask。我们引入一个新的控制器参数。选择拼接的概率分布为下图所示。其中每个元素是从伯努利分布中独立采样,定义为:

其中是sigmoid函数。给定embedding mask,训练任务模型直到收敛并在验证集上返回模型准确度。由于准确度不能反向传播到控制器,我们使用强化算法进行优化,准确度用作训练控制器的奖励信号。控制器的目标是通过policy gradient最大化期望的reward 。我们的reward函数定义为:

在我们的方法中,由于计算精确的期望是非常困难的,我们采用每次采样单个拼接的方式来更新控制器的参数:

模型训练

为了训练控制器,我们使用字典来存储拼接和相应的验证集准确度。训练过程中,我们迭代训练控制器和下游任务模型,直到最大迭代次数。

3. 实验

实验数据集

为了展示 ACE 的有效性,我们对从句法任务到语义任务的各种结构预测任务进行了广泛的实验。这些任务是命名实体识别 (NER)、词性标注 (POS Tagging)、分块 (Chunking)、评价对象抽取 (Aspect Extraction, AE)、句法依存分析 (Syntactic Dependency Parsing, DP)和语义依存分析 (Semantic Dependency Parsing, SDP)。

我们实验中的6个结构预测任务的详细信息如下所示:

NER: CoNLL 2002和2003 shared task的4种语言数据集。

POS Tagging: 我们使用三个推特领域数据集,Ritter11-T-POS,ARK-Twitter和 Tweebank-v2数据集。

Chunking: CoNLL 2000 数据集。

AE: SemEval 14、SemEval 15和 SemEval 16 shared task中的多个数据集。

DP: Penn Tree Bank (PTB) 3.0

SDP: SemEval 15 shared task中的三个数据集。

在这些任务中,NER、PoS Tagging、Chunking和AE是序列结构的输出,而DP和SDP是图结构的输出。 POS Tagging、chunking 和 DP 是句法结构预测任务,而 NER、AE、SDP 是语义结构预测任务。

Embedding选取

针对不同的语言,我们选取了不同的候选embedding组合,这里以英语为例,我们使用ELMo、Flair、BERT base、GloVe、fastText、character embedding、多语言Flair、多语言BERT 和XLM-R。最终在实验中搜索空间的大小为 。

实验结果

为了展示我们方法的有效性,我们将ACE与两个strong baseline进行比较。第一个baseline为All,我们让任务模型自己学习每个对任务有帮助的候选embedding的贡献。我们拼接所有的embedding并训练任务模型,让模型中的线性变换层来自己学习每个embedding的权重。第二个baseline为Random,通过随机搜索的方式来寻找embedding拼接,这是NAS中的一个非常强的baseline。结果显示 ACE 在超过6个任务的23个测试集中的准确度几乎都优于两个baseline。将Random与All进行比较,Random平均优于All 0.4,并且在 23 个测试集中的 14 个测试集上超过了All的准确度,因此拼接所有embedding不是大多数结构预测任务的最佳解决方案,而我们的ACE方法通常可以带来更好的embedding组合。

从之前实验可以看出,ACE 在搜索更好的embedding拼接方面具有优势。我们进一步进行实验来比较ACE与目前的SOTA模型之间的准确度。最近有非常多的工作通过finetune基于transformer结构的embedding来获得更好的效果。然而,当拼接多个embedding时,由于复杂的超参数设置和大量的GPU内存消耗,对特定的embedding组合进行finetune变得困难。为了解决这个问题,我们首先在下游任务上finetune每个基于transformer结构的embedding,然后将这些embedding与其他种类的embedding拼接在一起输入到ACE中。结果表明,使用finetune后的embedding的 ACE模型在所有测试集中都达到了SOTA,这表明找到一个好的embedding拼接有助于提高结构预测任务的效果。我们还发现 ACE 比finetune单个embedding训练的模型更强,这显示了拼接finetune后的embedding的有效性。

4. 结语

在本文中,我们提出了ACE,自动搜索结构预测任务的更好的embedding拼接。我们设计了一个简单的搜索空间,并设计了具有新颖的奖励函数的强化学习来有效地指导控制器搜索更好的embedding拼接,结果表明ACE 在21个数据集的6个任务中达到了SOTA。

可以加入钉钉 4170025534交流哈~

这篇关于【AdaSeq论文解读系列】ACL 21-自动组合各种BERT模型,在实体抽取、观点抽取、句法分析等六大结构预测任务20+个数据集获SOTA,比ensemble更强!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/760209

相关文章

IDEA如何让控制台自动换行

《IDEA如何让控制台自动换行》本文介绍了如何在IDEA中设置控制台自动换行,具体步骤为:File-Settings-Editor-General-Console,然后勾选Usesoftwrapsin... 目录IDEA如何让控制台自http://www.chinasem.cn动换行操作流http://www

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后