论文阅读——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
Abstract
作者引入了一种新的语言表示模型BERT,只需增加一个输出层,就可以对预先训练的BERT模型进行微调,无需对特定于任务的架构进行重大修改。
1 Introduction
语言模型预训练已经证明对很多下游NLP任务有帮助,比如:自然语言推理,释义(通过整体分析来预测句子之间的关系);命名实体识别,问答(模型需要在词牌(token)级别产生细粒度输出)
目前有两种应用预训练语言表示的策略:
基于特征的方法。例如,ELMo,用包含预训练表示的基于任务的架构作为额外特征。
基于微调的方法。OpenAI GPT,引入最少的基于任务的参数,并且通过简单微调所有预训练参数对下游任务进行训练。
这两种方法在训练前具有相同的目标函数,即使用单向语言模型学习一般语言表征。
在本文中,我们改进了基于微调的方法,BERT通过使用“掩码语言模型”(MLM)预训练目标减轻了前面提到的单向性约束,不同于从左到右的语言模型预训练MLM目标能够让表示融合左侧和右侧的上下文,这使我们能预训练一个深度双向Transformer。
本文的贡献:
说明了对语言表示来说双向预训练的重要性(之前的模型在pre-training阶段是单向的)
BERT使用MLM来启用预训练深度双向表示
预训练表示降低了许多精心设计的特定任务架构的需求
BERT是第一个基于微调的表示模型,其性能超过了许多特定任务架构。
2 Related work
Unsupervised Feature-based Approaches(基于无监督特征的方法)
word representation
预训练词嵌入 > 从头开始学习的嵌入
为了预训练词嵌入向量,使用了从左到右语言建模目标 + 在左右上下文中区分正确单词和错误单词的目标
coarser granularities(更粗粒度)
为了训练句子表示,之前的工作使用目标对候选的下一个句子进行排序,给出一个之前句子的表示,从左到右生成下一个句子单词。
traditional word embedding
从一个left-to-right和一个
right-to-left语言模型中抽取上下文敏感特征每个词牌(token)的上下文表示是 从左到右 和 从右到左 表示的串联。
LSTMs与ELMo类似,它们的模型都是基于特征的,都不是深度双向的
Unsupervised Fine-tuning Approaches(基于无监督微调的方法)
该方向的第一批工作只能从未标记文本中预训练词嵌入参数。
最近,生成上下文词牌(token)表示的句子或文本编码器已经从未标记的文本中进行了预训练,并且针对有监督的下游任务进行了微调。优点:几乎没有参数需要从头开始学习。
Transfer Learning from Supervised Data(基于监督数据的迁移学习)
计算机视觉研究表明来自大规模预训练模型的迁移学习的重要性
一个有效方法是微调用ImageNet预训练的模型
3 BERT
BERT框架主要有两步:预训练和微调
- 预训练:模型在不同预训练任务的未标记数据上进行训练
- 微调:BERT模型首先用预训练参数进行初始化,并且所有的参数用来自下游任务的标签数据进行微调
每一个下游任务有独立的微调模型,即使它们用相同的预训练参数进行初始化。BERT的一个显著特征就是跨不同任务的统一架构,预训练架构和最终的下游架构之间的差异很小。
Model Architecture(模型架构)
BERT的模型架构是一个多层双向变压器编码器(a multi-layer bidirectional Transformer en
coder)
L:层数;H:隐藏层大小;A:self-attention的头数
两种模型大小:
BERTbaseBERT_{base}BERTbase (L=12, H=768, A=12, Total Parameters=110M)
BERTlargeBERT_{large}BERTlarge (L=24, H=1024, A=16, Total Parameters=340M)
BERTbaseBERT_{base}BERTbase Transformer与OpenAI GPT Transformer比较:
BERT使用双向self-attention;而OpenAI GPT使用受限的self-attention,其中每个词牌(token)只能关注左侧的上下文。
Input/Output Representations(输入输出表示)
为了使BERT处理不同的下游任务,
我们的输入表示(input representation)能够在每个词牌序列(token sequence)中清楚明确地表示单个句子和句子对。
其中,句子是连续文本一段任意范围,而不是一个真实的语言句子;序列指的是输入词牌序列到BERT中,它可能是单个句子,也可能是打包在一起的真实句子。
[CLS]作为每个序列的第一个标记
[SEP]句子间的分割符(是分割而不是区分)
3.1 Pre-training BERT
作者没有使用传统的从左到右或从右到左语言模型去预训练BERT,使用了两个非监督任务来预训练BERT。
Task #1:Masked LM
问题:标准的条件语言模型只能从左到右或从右到左训练,因为双向条件会让每个词间接地“看到自己”
目的:训练一个深层双向表示
解决方法:我们只是随机掩盖一部分输入词牌(input tokens),然后预测那些掩码词牌(masked tokens)
掩码语言模型(masked LM ,MLM),与掩码词牌相对应的最终隐含向量被输送到词汇表上的输出softmax,就像在标准语言模型中一样。随机屏蔽了15%的WordPiece标记,我们只预测被掩码的单词而不是重建整个输入。
问题:尽管获得了一个双向的预训练模型,但真正完全遮盖屏蔽的掩码会造成预训练和微调不匹配
解决方法:随机选择15%的词牌位置用于预测。其中,80%词牌用[MASK]掩盖,10%用随机词牌替代,剩下的10%保持不变。Ti将用于预测具有交叉熵损失的原始令牌
Task #2:Next Sentence Prediction (NSP)
许多重要的下游任务,例如问答和自然语言推理,都基于理解两个句子之间的关系。
问题:语言模型无法捕捉句子之间的关系
解决方法:对二分类的下一句预测任务进行预训练,该任务可以从任意单语语料库中生成
当为每一个预训练实例选择句子A、B时,其中50%是真实的下一个句子,标记为IsNext;而另外50%是随机句子,标记为NotNext。C用于下一句预测任务,它和表征学习目标密切相关。在之前的工作中,只有句子插入能够被传递到下游任务中,但BERT能够将所有参数都以初始化终端任务模型参数。
Pre-training data BooksCorpus(800万字)和英语维基百科(2500万字,只提取文本段落,忽略列表、表和标题)
3.2 Fine-tuning BERT
微调是很简单的(straightforward ),因为Transformer中的self-attention允许BERT通过交换适当的输入输出对许多下游任务建模。
问题:对于包含文本对的应用,一种常见的模式就是在应用双向交叉attention之前独立编码文本对。
解决方法:BERT使用self-attention机制统一这两个阶段,因为编码具有self-attention的连接文本对有效地包括了两个句子之间的双向交叉注意力。
对于每一个任务,我们只需要将特定于任务的输入和输出插入到BERT,并且端到端地微调所有参数。
在输出端,词牌表示被输入到输出层用于词牌级任务,比如 序列标记 或 问题回答 , 而[CLS]表示被输入到输出层中用于分类,比如文本蕴含或情感分析。
4 Experiments
4.1 GLUE
GLUE是多种自然语言理解任务的集合,为了在GLUE上进行微调,像第三节描述的表示输入序列(对单个句子或句子对),使用与第一个输入标记([CLS])相对应的最终隐含向量C作为聚合表示。微调过程中引入的唯一新参数是分类层权值,用C和W计算一个标准分类损失,即log(softmax(CWT))log(softmax(CW^T))log(softmax(CWT))。
设置batch size为32,并对所有GLUE任务进行3个epoch的微调。
结果如上表所示,BERTbaseBERT_{base}BERTbase和BERTlargeBERT_{large}BERTlarge都比所有系统有显著优势。BERTlargeBERT_{large}BERTlarge在所有任务中显著优于BERTbaseBERT_{base}BERTbase,特别是那些训练数据很少的任务。
4.2 SQuAD v1.1
斯坦福问答数据集(SQuAD v1.1)收集了100k条众包的问题/答案。给定一个问题和一篇来自Wikipedia带答案的文章,任务是预测文章中答案文本的范围。
在问答任务中,作者将输入的问题和段落表示为一个单独的打包序列。单词i作为答案范围起始的概率 = 计算Ti与向量s的点积,然后对段落中所有单词进行softmax
相似的公式用于答案范围的结尾。
从位置i到位置j的候选答案范围分值 = STi + ETj,其中,最大分值的范围用作预测。
训练目标是正确开始和结束位置的对数似然之和。
4.3 SQuAD v2.0
斯坦福问答数据集2.0扩展数据集1.1,
- 通过允许在提供的段落中不存在简短的答案来增强问题的实际性。
- 认为没有答案的问题有一个从start开始到[CLS]结束的答案范围
论文阅读——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding相关推荐
- 论文阅读笔记:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
提示:阅读论文时进行相关思想.结构.优缺点,内容进行提炼和记录,论文和相关引用会标明出处. 文章目录 前言 介绍 背景知识 相关工作 具体实现结构 Pre-training BERT Fine-tun ...
- 【论文阅读笔记】BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT的出现使我们终于可以在一个大数据集上训练号一个深的神经网络,应用在很多NLP应用上面. BERT: Pre-training of Deep Bidirectional Transformer ...
- BERT(一)--论文翻译:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
转载请注明出处:https://blog.csdn.net/nocml/article/details/124860490 传送门: BERT(一)–论文翻译:BERT: Pre-training o ...
- bert论文解析——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 前言 bert是google在NLP方 ...
- 【文本分类】BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
·阅读摘要: Bert是继Transformer之后的又一杰出的模型.Bert是一种预训练语言模型,是在GPT.Elmo.Transformer的基础上提出的.基于Bert的多个NLP领域任务都取 ...
- 预训练模型:BERT深度解析《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》
目录 1. 背景 2. 什么是 Bert 及原理? 3. 论文内容<BERT: Pre-training of Deep Bidirectional Transformers for Langu ...
- 《BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding》
目录 <BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding> 1.Bert研究意 ...
- Paper:《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding用于语言理解的深度双向Tr
Paper:<BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding用于语言理解的深度双 ...
- BERT论文阅读(一): Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT三大核心: pre-training bidirectional==>alleviates the unidirectionality constriant of fine-tuning ...
最新文章
- 论文速递:智能作为信息处理系统
- PHP之Session与Cookie:存放 安全 应用场景 过期设定 依赖关系
- Oracle 11g 之自动收集统计信息
- ubuntu19.10下面的redis的启动与关闭
- 匿名方法,lambad表达式,匿名类
- Spark SQL运行原理和架构
- rocket mq 监听端口_如何使用Jmeter实现MQ数据的发送和接收?性能测试实战篇
- Matplotlib库-Python数据可视化
- python包裹和运费_使用shopifyapipython,添加新产品并注明价格和“需要运费”:Fals...
- 编程猫海龟编辑器(python)_编程猫海龟编辑器(少儿编程软件)
- 408计算机考研真题推荐,2017计算机408考研真题.pdf
- 推荐几款非常好用且免费的在线绘图工具
- 中青杯数学建模竞赛是什么级别的比赛_2018年中青杯全国大学生数学建模竞赛...
- 电脑w ndows无法自动修复,电脑无法自动修复,开不了机怎么办
- php博客 程序 论文,php博客系统论文 (附加程序代码)
- 《c语言入门经典》Ivor Horton第十章练习题4
- HUAWEI华为MateBook13 2020锐龙版R5集显16G+512GB(HNL-WFQ9)原装出厂系统恢复原厂系统
- cannot be cast to javax.servlet.Servlet 解决
- 3合1集成充电宝移动电源IC
- 零基础入门学习Python(19)--函数:我的地盘听我的
热门文章
- Ubuntu 10.04 在 Vmware 虚拟机下安装 vmware tools
- 微信浏览器 点击 出现卡顿现象及解决方案
- 智能合约和去中心化应用DAPP
- JavaScript判断对象中每一项属性都不为空
- python close_wait_服务器TIME_WAIT和CLOSE_WAIT分析和解决办法
- 灰度图转bmp文件 C++
- 朋友介绍对象加微信后,对方不搭理你的真实原因都在这里面
- 如何用PowerBI做损益计算书
- 【endnote】在word中插入的参考文献:字体大小、样式,段前、段后,缩进 ,行间距 怎么改
- VUE单页面应用的内页很难被百度收录