STRUCTBERT:将语言结构融入预训练以提升深度语言理解

news2025/4/2 23:02:43

【摘要】最近,预训练语言模型BERT(及其经过稳健优化的版本RoBERTa)在自然语言理解(NLU)领域引起了广泛关注,并在情感分类、自然语言推理、语义文本相似度和问答等各种NLU任务中达到了最先进的准确率。受到Elman [8] 线性化探索工作的启发,我们在BERT的基础上提出了一种新模型StructBERT,通过在预训练过程中融入语言结构来提升表现。具体而言,我们为StructBERT设计了两个辅助任务,以充分利用单词和句子的顺序信息,从而在词级和句子级别上利用语言结构。这使得新模型能够适应下游任务所需的不同层次的语言理解能力。在引入结构化预训练后,StructBERT在多个下游任务上取得了出色的实验结果。例如,在GLUE基准测试中达到89.0的分数(超越所有已发布模型),在SQuAD v1.1问答任务中F1分数达到93.0,在SNLI数据集上的准确率达到91.7。

1,引言

预训练语言模型(LM)是许多自然语言理解(NLU)任务的关键组件,例如语义文本相似度 [4]、问答 [21] 和情感分类 [25]。为了获得可靠的语言表示,神经语言模型利用自监督学习来定义文本中单词序列的联合概率分布。与传统的基于单词的嵌入方法不同(即为每个标记分配一个全局表示),近年来的研究(如 Cove [16]、ELMo [18]、GPT [20] 和 BERT [6])通过在大规模文本语料库上训练语言模型,生成上下文化的单词向量。这些模型已被证明在许多下游NLU任务中具有良好的效果。

在上下文敏感的语言模型中,BERT(及其经过稳健优化的版本RoBERTa [15])席卷了NLP领域。BERT的设计旨在通过在所有层中同时考虑左右上下文来预训练双向表示,并仅通过上下文来预测被掩码的单词,以学习语言表示。然而,它并未充分利用潜在的语言结构。

根据 Elman [8] 的研究,循环神经网络(RNN)在处理简单句子时对单词顺序的规律性表现出敏感性。由于语言的流畅性取决于单词和句子的排序,因此在许多自然语言处理(NLP)任务(如机器翻译和自然语言理解 [9])中,找到一组单词和句子的最佳排列方式是一个关键问题。近年来,单词排序被视为基于语言模型(LM)的线性化任务,仅依赖语言模型进行处理 [24]。Schmaltz 的研究表明,即使没有显式的句法信息,带有长短时记忆(LSTM)单元的循环神经网络语言模型(RNN-LM)[17] 也能有效地完成单词排序任务。

在本文中,我们介绍了一种新的上下文表示方式——StructBERT,它通过提出两种新的线性化策略,将语言结构引入到BERT的预训练中。具体而言,除了现有的掩码策略外,StructBERT 还利用结构信息来扩展 BERT,包括词级顺序和句级顺序。我们在模型预训练过程中分别针对句内结构和句间结构引入了两个新的结构化目标。通过这种方式,语言学特征在预训练过程中得到了显式捕捉。通过结构化预训练,StructBERT 在上下文化表示中编码了单词之间以及句子之间的依赖关系,从而使模型具有更好的泛化能力和适应性。

  • 我们提出了一种新颖的结构化预训练方法,通过引入词级结构目标和句级结构目标扩展 BERT,在上下文化表示中利用语言结构。这使得 StructBERT 能够显式建模语言结构,并通过强制模型重建正确的单词和句子顺序来进行准确预测。

  • StructBERT 在各种自然语言理解(NLU)任务上显著超越了所有已发布的最新模型。该模型扩展了 BERT 的优势,并在语义文本相似度、情感分析、文本蕴含和问答等语言理解应用中提升了性能。

2,StructBERT 模型预训练

StructBERT 基于 BERT 架构,后者使用多层双向 Transformer 网络 [26]。给定一个单独的文本句子或一对文本句子,BERT 将它们打包成一个令牌序列,并为每个令牌学习一个上下文化的向量表示。每个输入令牌的表示是基于该词、位置以及它所属的文本片段。接下来,输入向量被送入一堆多层双向 Transformer 块,这些块使用自注意力机制,通过考虑整个输入序列来计算文本表示。

原始的 BERT 引入了两个无监督的预测任务来预训练模型:即掩码语言模型(Masked LM)任务和下一个句子预测任务。与原始 BERT 不同,我们的 StructBERT 通过在单词掩码后打乱一定数量的令牌并预测正确的顺序,增强了掩码语言模型任务的能力。此外,为了更好地理解句子之间的关系,StructBERT 随机交换句子顺序,并预测下一个句子和前一个句子,作为一种新的句子预测任务。通过这种方式,新的模型不仅显式地捕捉了每个句子中细粒度的词语结构,还以双向的方式正确地建模了句间结构。一旦通过这两个辅助任务预训练了 StructBERT 语言模型,我们就可以在任务特定数据上进行微调,以适应广泛的下游任务。

2.1,输入表示

每个输入 x 是一系列词元,可以是一个单独的句子,也可以是两个句子组成的对。输入表示遵循 BERT [6] 中使用的方式。对于每个输入词元 t_i,其向量表示 x_i 是通过将对应的词元嵌入、位置嵌入和段落嵌入相加来计算的。我们总是将一个特殊的分类嵌入([CLS])作为每个序列的第一个词元,并在每个段落的末尾添加一个特殊的序列结束标记([SEP])。文本通过 WordPiece [30] 被分词为子词单元,绝对位置嵌入是通过支持的最大序列长度(最多 512 个词元)进行学习的。此外,段落嵌入用于区分一对句子,就像 BERT 中一样。

2.2,Transformer Encoder

我们使用多层双向 Transformer 编码器 [26] 来对输入表示进行上下文信息编码。给定输入向量 X=\left \{ x_i \right \}_{i=1}^N,使用 L 层 Transformer 对输入进行编码,表示为:

H^l=Transformer_{l}(H^{l-1})

其中:l\in[1,L]H^0=XH^L=[h_1^L,...,h_N^L]。我们使用隐藏向量 h_i^L 作为输入词元 t_i的上下文化表示。

2.3,预训练目标

为了充分利用语言中丰富的句内和句间结构,我们在原始 BERT 的预训练目标基础上进行了两方面的扩展:

  • 词汇结构目标(主要用于单句任务)

  • 句子结构目标(主要用于句子对任务)

我们将这两个辅助目标与原始的掩码语言模型(LM)目标一起,在统一的模型中进行预训练,以利用语言的固有结构。

【词汇结构目标】尽管原始 BERT 在各种自然语言理解(NLU)任务中取得了成功,但它无法显式地建模自然语言中词语的顺序和高阶依赖关系。给定一组随机顺序的词汇,理想的语言模型应该能够通过重构这些词汇的正确顺序来恢复原句。为了在 StructBERT 中实现这一想法,我们在 BERT 的训练目标基础上增加了一个新的词汇结构目标,使模型具备了重构某些故意打乱顺序的词元正确顺序的能力。这个新的词汇目标与 BERT 的原始掩码语言模型(LM)目标一起联合训练。

上图展示了联合训练新的词汇目标和掩码 LM 目标的过程。在每个输入序列中,我们首先像 BERT [6] 中一样随机掩码 15% 的所有词元。由双向 Transformer 编码器计算的掩码词元对应的输出向量 h_i^L 被输入到 softmax 分类器中,以预测原始词元。

接下来,新的词汇目标开始发挥作用,考虑词语顺序。鉴于词元洗牌的随机性,词汇目标相当于最大化将每个洗牌词元放置到其正确位置的概率。更正式地,这个目标可以被表述为:

arg\, \underset{\theta}{max}\sum log\,P(pos_1=t_1,pos_2=t_2,...,pos_K=t_K[t_1,t_2,...,t_K,\theta])

其中,\theta 表示 StructBERT 的可训练参数集,K 表示每个打乱子序列的长度。从技术上讲,较大的 K 会迫使模型能够重建更长的序列,同时注入更多干扰的输入。相反,当 K 较小的时候,模型获得更多未受干扰的序列,但在恢复长序列方面的能力较差。我们决定使用三元组(即 K = 3)进行子序列打乱,以平衡语言重建能力和模型的鲁棒性。

具体来说,如上图所示,我们随机选择一定比例的三元组来自未屏蔽的标记,并在每个三元组内打乱三个词(例如图中的 t2、t3 和 t4)。通过双向 Transformer 编码器计算的打乱标记的输出向量,然后输入到一个 softmax 分类器中,以预测原始标记。新的词目标与掩蔽语言模型(LM)目标一起在统一的预训练模型中共同学习,并赋予相等的权重。

【句子结构目标】原始 BERT 模型认为下一个句子预测任务比较简单(BERT 在此任务中的预测准确率可以轻松达到 97%-98% [6])。因此,我们通过预测下一个句子和上一个句子,扩展了句子预测任务,以使预训练语言模型以双向的方式意识到句子的顺序。如上图所示,给定一对句子(S1,S2)作为输入,我们预测 S2 是紧随 S1 之后的下一个句子,还是在 S1 之前的上一个句子,或者是来自不同文档的随机句子。具体来说,对于句子 S1,1/3 的时间我们选择紧随 S1 之后的文本片段作为第二个句子 S2,1/3 的时间选择 S1 之前的上一个句子,1/3 的时间则随机从其他文档中抽取一个句子作为 S2。这两个句子被连接在一起,形成一个输入序列,并在中间使用分隔符标记 [SEP],如同 BERT 中的做法。我们通过取对应于第一个标记 [CLS] 的隐藏状态来汇聚模型输出,并将 [CLS] 的编码向量输入到一个 softmax 分类器中进行三类预测。

2.4,预训练设置

训练目标函数是词汇结构目标和句子结构目标的线性组合。对于掩蔽语言模型(Masked LM)目标,我们采用了与BERT [6] 相同的掩蔽率和设置,选择5%的三元组进行随机打乱。我们使用了来自英文维基百科(2,500M词)和BookCorpus [35] 的文档作为预训练数据,遵循了[6]中的预处理和WordPiece分词方法。输入序列的最大长度设置为512。

我们使用Adam优化器,学习率设置为1e-4,β1 = 0.9,β2 = 0.999,L2权重衰减为0.01,前10%总步骤进行了学习率预热,学习率采用线性衰减。每层设置了0.1的dropout概率。激活函数使用了gelu [10],与GPT [20]相同。

我们将Transformer块的层数记为L,隐藏向量的大小记为H,自注意力头数记为A。按照BERT的做法,我们主要报告两种模型规模的实验结果:

  • StructBERTBase:L = 12,H = 768,A = 12,参数数量 = 1.1亿

  • StructBERTLarge:L = 24,H = 1024,A = 16,参数数量 = 3.4亿

StructBERT的预训练是在一个由64个Tesla V100 GPU卡组成的分布式计算集群上进行的。对于StructBERTBase,我们进行了40轮预训练,耗时大约38小时;而StructBERTLarge的训练大约花费了7天完成。

3,结论

在本文中,我们提出了一种新颖的结构化预训练方法,将词汇结构和句子结构纳入BERT的预训练中。我们引入了词汇结构目标和句子结构目标,作为两种新的预训练任务,用于在不同粒度上深度理解自然语言。实验结果表明,新的StructBERT模型在多种下游任务中取得了新的最先进的结果,包括流行的GLUE基准、SNLI语料库和SQuAD v1.1问答任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2326830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

16-CSS3新增选择器

知识目标 掌握属性选择器的使用掌握关系选择器的使用掌握结构化伪类选择器的使用掌握伪元素选择器的使用 如何减少文档内class属性和id属性的定义,使文档变得更加简洁? 可以通过属性选择器、关系选择器、结构化伪类选择器、伪元素选择器。 1. 属性选择…

SQL Server:用户权限

目录 创建 & 删除1. 创建用户命令整理创建 admin2 用户创建 admin_super 用户 2. 删除用户命令删除 admin2 用户删除 admin_super 用户 3. 创建时权限的区别admin2 用户权限admin_super 用户权限 查看方法一:使用对象资源管理器(图形化界面&#xff…

服务器数据恢复—误格式化NTFS文件系统分区别慌,NTFS数据复活秘籍

NTFS文件系统下格式化在理论上不会对数据造成太大影响,但有可能造成部分文件目录结构丢失的情况。下面介绍一个人为误操作导致服务器磁盘阵列中的NTFS文件系统分区被格式化后的服务器数据恢复案例。 服务器数据恢复过程: 1、将故障服务器连接到一台备份…

【3】数据结构的双向链表章

目录标题 双向链表的定义双向链表的初始化双向链表的创建插入操作删除操作 双向链表总代码与调试 双向链表的定义 结点结构组成:数据域(data)、指针域(pre)、指针域(next)。其中, da…

蓝桥杯杯赛-日期模拟

知识点 处理日期 1. 按天枚举日期:逐天遍历起始日期到结束日期范围内的每个日期。 2. 处理闰年:正确判断闰年条件。闰年定义为:年份 满足以下任意一个条件:(闰年的2月只有29天) 满足下面一个条件就是闰年 1> 是 400 的倍数…

搭建开源笔记平台:outline

折腾的意义 为什么要自己搭建一个笔记平台?没理由,就是突然想试试。有时候突然有个想法,搜了一下正好有合适的方案,就顺手试一下。 其实已经有很多成熟的笔记软件,例如Notion/OneNote,但谁不想要一个数据完…

Unity编辑器功能及拓展(2) —Gizmos编辑器绘制功能

Unity中的Gizmos功能是用于在场景视图中绘制辅助图形或图标的工具,帮助开发者在编辑模式下直观调试和可视化游戏对象的位置、范围、方向等信息。 一.定义概述 Gizomsd 概述 Gizoms是Unity提供的一个API,或者叫做一个工具类,包含一系列静态…

电脑屏幕亮度随心控,在Windows上自由调整屏幕亮度的方法

调整电脑屏幕的亮度对于保护视力和适应不同环境光线条件非常重要。无论是在白天强光下还是夜晚昏暗环境中,合适的屏幕亮度都能让您的眼睛更加舒适。本文中简鹿办公小编将向您介绍几种在 Windows 系统中调整屏幕亮度的方法。 方法一:使用快捷键 大多数笔…

presto行转列

presto的行列转换和spark、hive一样也是通过外链语句实现的,只不过语法和关键子有点不同,如下 with tmp1 as (select 1,2,3 as a1,4,5,6 as a2 ) select * from tmp1 cross join unnest(split(tmp1.a1, ,),split(tmp1.a2, ,) ) as b(a1s,a2s) 结果如下

51c自动驾驶~合集15

我自己的原文哦~ https://blog.51cto.com/whaosoft/11720657 #DRAMA 首个基于Mamba的端到端运动规划器(新加坡国立) 运动规划是一项具有挑战性的任务,在高度动态和复杂的环境中生成安全可行的轨迹,形成自动驾驶汽车的核心能…

拼多多 anti-token unidbg 分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 版本7.3-7.4 都试过加密没什…

【Git】5 个分区的切换方式及示例

目录 1. **工作区(Working Directory)**2. **缓存区(Stage/Index)**3. **本地仓库(Local Repository)**4. **远程仓库(Remote Repository)**5. **贮藏区(Stash&#xff0…

Java高频面试之并发编程-02

hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:进程和线程的区别是什么? 1. 资源分配与独立性 进程: 独立性:每个进程拥有独立的内存…

openwebui和keycloak集成,使用keycloak的用户名和密码登录

1,实现效果 使用keycloak定义的用户名和密码,直接登录openwebui 2,实现原理 keycloak中用户信息中包含用户名和密码,以及email。 使用keycloak中的用户名和密码登录之后,会用email创建一个openwebui的账号。之后每次…

【区块链安全 | 第八篇】多签机制及恶意多签

部分参考:慢雾科技 文章目录 为什么需要多签多签机制Tron钱包下的恶意多签Tron 钱包多签权限分类Tron 多签机制的运作方式 恶意多签的过程黑客通过多签机制控制账户黑客剥夺用户权限,完全控制账户 恶意多签成因 在区块链中,多签(M…

二月公开赛Web-ssrfme

目录 环境搭建 题目分析 分析代码 解题过程 Redis未授权访问 寻找Flag 环境搭建 进入含有docker-compose.yml的文件内,拉取容器镜像 docker-compose up -d 题目分析 访问容器地址172.25.254.200:8091查看题目 分析代码 url通过GET请求访问界面&#xff0c…

告别枯燥工作,走向自动化

嘿,小伙伴们!今天给你们介绍两款超实用的RPA办公自动化软件,用它们,再也不用像机器一样做重复劳动啦,超省时间! 工具名称:影刀RPA(类似产品,八爪鱼 RPA,操作上…

可信数据空间:构筑安全可控数据流通

前言:可信数据空间是一种数据基础设施,发展可信数据空间是全国及各地数据基础设施建设的重要方面。国内数据空间的探索和实践仍然数据探索阶段。本期分享:可信数据空间构筑安全可控数据流通,包括可信数据空间技术介绍、如何助力数…

Zookeeper特性与节点数据类型

数据结构和监听机制 CP 文件系统形式存储 观察者模式监听节点数据变化、 临时节点客户端超时或发生异常节点就会删除 2888同步数据 3888选举端口 1.什么是Zookeeper ZooKeeper 是一个开源的分布式协调框架,是Apache Hadoop 的一个子项目,主要用来…

处理 Linux 信号:进程控制与异常管理的核心

个人主页:chian-ocean 文章专栏-Linux 前言: 在 Linux 操作系统中,信号是用于进程间通信的一种机制,能够向进程发送通知,指示某些事件的发生。信号通常由操作系统内核、硬件中断或其他进程发送。接收和处理信号是 Li…