【预训练语言模型】SpanBERT: Improving Pre-training by Representing...

本文主要是介绍【预训练语言模型】SpanBERT: Improving Pre-training by Representing...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【预训练语言模型】SpanBERT: Improving Pre-training by Representing and Predicting Spans (2020ACL)

  陈丹琦团队的一篇改进BERT预训练任务的工作,扩展了BERT预训练语言模型:

  • 不像BERT只MASK单独的一个token,而是随机MASK掉连续的序列( contiguous random span);
  • 训练span boundary representation预测mask掉的整个区间内容;

1、动机:

  • 许多NLP任务涉及到包含多个span之间关系的推理,传统的BERT则无法处理这类问题;
  • 预测一个区间的多个token更加困难;

2、方法:

  • 不同于BERT,我们使用不同的随机策略mask掉一个span;
  • 添加辅助任务SPO,根据span boundary的两个token表征信息来预测span;
  • 随机采样一段文本,而不是两个,删掉了BERT中的Next Sentence Predicition任务

3、span masking

  给定一个文本序列X,从中挑选一些token组成Y集合,并迭代地进行采样。

  • 在每一次采样过程中,先基于几何分布采样span的长度(最短为1,最长为10,p=0.2),平均采样的区间长度约为3.8:
    在这里插入图片描述

  • 然后再基于均匀分布采样span的start位置。由于BERT采用的是word piece,因此需要保证采样的起始点必须是某个单词的起始点。

  • 传统的BERT模型中,对一个句子随机mask 15%的token,这些mask掉的token中,有80%被替换为[MASK],10%为随机替换一个token,10%保持不变。spanBERT中则是对span完成的,也就是说整个span的所有token都会满足“80%被替换为[MASK],10%为随机替换一个token,10%保持不变”的设置。

4、span boundary objective

  任务目标:根据span的前一个与后一个位置的token来预测span的所有token。假设Transformer的每个token输出记作 x 1 , . . . , x n \mathbf{x}_1, ..., \mathbf{x}_n x1,...,xn,给定一个mask span ( x s , . . . , x e ) (x_s, ..., x_e) (xs,...,xe),对mask span内的每一个token的表示,取决于 x s − 1 , x e + 1 \mathbf{x}_{s-1}, \mathbf{x}_{e+1} xs1xe+1、以及位置表征 P i − s + 1 \mathbf{P}_{i - s + 1} Pis+1(相对于 x s − 1 \mathbf{x}_{s-1} xs1的距离):
在这里插入图片描述

其中 f f f 函数为两层前馈网络,并添加Layer normalization:
在这里插入图片描述

最终获得的 y i \mathbf{y}_i yi 表示maxk span中的第 i i i 个[MASK] token,使用交叉熵损失函数作为目标函数,预测该[MASK]对应的词

5、single-sequence training

  作者认为添加next sentence prediction效果不好,因此摈弃这一个任务。

  关于对抽取式问答的下有任务,spanBERT依然在模型的输出部分,添加两个独立的分类器,并分别预测start和end的位置。

这篇关于【预训练语言模型】SpanBERT: Improving Pre-training by Representing...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

基于Python实现多语言朗读与单词选择测验

《基于Python实现多语言朗读与单词选择测验》在数字化教育日益普及的今天,开发一款能够支持多语言朗读和单词选择测验的程序,对于语言学习者来说无疑是一个巨大的福音,下面我们就来用Python实现一个这... 目录一、项目概述二、环境准备三、实现朗读功能四、实现单词选择测验五、创建图形用户界面六、运行程序七、

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

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

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

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

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型