【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

相关文章

Springboot的自动配置是什么及注意事项

《Springboot的自动配置是什么及注意事项》SpringBoot的自动配置(Auto-configuration)是指框架根据项目的依赖和应用程序的环境自动配置Spring应用上下文中的Bean... 目录核心概念:自动配置的关键特点:自动配置工作原理:示例:需要注意的点1.默认配置可能不适合所有场景

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题

《解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题》在Spring开发中,@Autowired注解常用于实现依赖注入,它可以应用于类的属性、构造器或setter方法上,然... 目录1. 为什么 @Autowired 在属性上被警告?1.1 隐式依赖注入1.2 IDE 的警告:

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Rust中的注释使用解读

《Rust中的注释使用解读》本文介绍了Rust中的行注释、块注释和文档注释的使用方法,通过示例展示了如何在实际代码中应用这些注释,以提高代码的可读性和可维护性... 目录Rust 中的注释使用指南1. 行注释示例:行注释2. 块注释示例:块注释3. 文档注释示例:文档注释4. 综合示例总结Rust 中的注释

解读Pandas和Polars的区别及说明

《解读Pandas和Polars的区别及说明》Pandas和Polars是Python中用于数据处理的两个库,Pandas适用于中小规模数据的快速原型开发和复杂数据操作,而Polars则专注于高效数据... 目录Pandas vs Polars 对比表使用场景对比Pandas 的使用场景Polars 的使用

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

Java中实现订单超时自动取消功能(最新推荐)

《Java中实现订单超时自动取消功能(最新推荐)》本文介绍了Java中实现订单超时自动取消功能的几种方法,包括定时任务、JDK延迟队列、Redis过期监听、Redisson分布式延迟队列、Rocket... 目录1、定时任务2、JDK延迟队列 DelayQueue(1)定义实现Delayed接口的实体类 (