Toggle navigation
Mr.Strawberry's House
文章
网址导航
更多
甜品站
杂物间
新版博客
关于 快刀切草莓君
友情链接
妙妙屋开发日志
注册
登录
搜索
文章列表
分类 标签
归档
# BERT 论文阅读 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding ## 1 引言 两种为下游任务应用预训练模型表示的现存策略 - 基于特征 e.g. ELMo:使用包括预训练表示作为额外特征的特定任务架构 - 精调 e.g. GPT Generative Pre-trained Transformer 引入最少的特定任务参数 - 这两种策略都使用了单一方向语言模型 限制了与训练表示的能力 benchmark:GLUE, MultiNLI, SQuAD ## 2 相关工作 简要回顾使用最广的**预训练泛化语言表示**(pre-training general language representations) 方式。 ### 2.1 基于特征的无监督方式 预训练的**词嵌入**(word embedding),使用了从左至右的<u>语言模型</u>目标以及从左到右<u>找不正确的词</u>discriminate correct from incorrect word。这些方法泛化到句子和段落的嵌入。 训练句子的表示:给下个句子打分;根据给定的句子,从左至右生成下一个句子的词。 ELMo,从双向语言模型中提取语境相关特征(contextual representation) ### 2.2 无监督精调方式 Fine-tuning GPT,左到右的语言建模和自动编码目标。 ### 2.3 有监督数据的迁移学习 大数据集监督学习任务:机器翻译、自然语言推理;ImageNet:迁移学习的重要性 ## 3 BERT 两个阶段:预训练(使用无标签数据在不同的预训练任务)、精调(用与训练参数初始化后,用有标签数据精调) ![](https://img2020.cnblogs.com/blog/1403725/202009/1403725-20200917195434850-1993342818.png) [CLS]:在每个输入例子前;[SEP]:特殊分隔符 不同的下游任务都有独立的精调模型,但是这些精调模型和预训练模型差异很小。 **模型架构**:多层双向Trnsformer编码器 - BERT-BASE (L=12, H=768, A=12, Total Parameters=110M) ; GPT的规模 - BERT-LARGE (L=24, H=1024, A=16, Total Parameters=340M). - L:Transformer块,H:隐藏层size,A:自注意力机制头数 **输入输出表示** Input/Output Representations - 输入表示可以明确表示句子和一些句子在一个token sentence中,BERT是根据输入标记来定义句 - WordPiece embedding,30000个token的词表。 - 每个句子的第一个token是 [CLS],最后一个隐藏状态balabala - 句子对被打包成一个句子,用两种方式区分:1.[SEP], 2.加入一个学习到的嵌入到每个token中指示其归属。 - 每个token的输入由相应的token、段落和位置编码。 ![](https://img2020.cnblogs.com/blog/1403725/202009/1403725-20200917195513458-613256521.png) ### 3.1 预训练 BERT 使用两个无监督任务来预训练BERT:Masked LM, Next Sentence Prediction(NSP) **任务1:Masked LM** - 标准的条件语言模型只能用单向的顺序来训练,因为双向会让每个字不能正确地看自己,模型会琐碎地预测目标此在一个多层的上下文中 ? - 随机应该一定比重的输入token,然后预测这些token,这个过程称MLM,完形填空;与mask token对应的最后的隐藏向量送去词表上做softmax - 尽管可以获得双向预训练模型,但是由于[MASK]token不会在精调的时候出现,预训练和精调出现了不匹配;为了减轻这一情况,不都使用[MASK]token;80% mask, 10% 随机token;10%原先的不变的词;最后的输出还是预测原先的token **任务2:预测下一个句子 NSP** - 预训练一个二值化的预测下一个句子任务,50%是正确的;在这种任务上预训练对QA和NLI(自然语言推理)非常有帮助。 - NSP任务和表示学习(representation-learning)目标有关系,但是在早期的工作中,只有句子嵌入被传给下游任务;然而BERT将所有的参数用来给下游任务模型做初始化 - 预训练数据:BooksCorpus,英文维基百科。 ### 3.2 精调 BERT - 对于涉及文本对的应用,一般的方法是在应用双向交叉注意力机制前独立地对他们进行编码;而BERT使用自注意力机制将这两个阶段联合起来,因为使用自注意力机制连接文本对有效地包括了两个句子之间地双向交叉注意力。 bidirectional cross attention - 对于每个任务,简单地加入特定的输入输出到BERT中,对所有参数进行端到端精调。 - 在输入部分,预训练的句子AB就类似1.转述中的句子对;2.蕴含(entailment)中的假设前提对;3.问答中的问题文章对;4.文本分类或序列标注中的退化的text-none对 - 在输出部分,token表示被送到token-level的任务中去,像序列标注和问答;[CLS]表示可以被喂给用于分类的输出层,例如蕴含和情感分析(sentiment analysis) - 和预训练相比,精调是非常便宜的。 ## 4 实验 BERT在11个NLP任务上精调后的结果。 ### 4.1 一般语言阅读理解评估 GLUE - 使用单个句子或句子对输入,使用与[CLS]对应的token作为聚合表示;仅引入了一个新的分类层。 更新中 ## 5 Ablation Studies 消融实验 更新中 ## 6 结论 最近用语言模型迁移学习而来的经验带来的提升,已经说明了昂贵的、无监督学习的预训练是很多语言理解系统整体的一部分。这些结果使得一些资源较少的任务从中受益。
文章信息
标题:BERT 论文阅读笔记
作者:快刀切草莓君
分类:自然语言处理
发布时间:2020年9月17日
最近编辑:2020年9月17日
浏览量:979
↑