跟着李沐老师做BERT论文逐段精读(笔记)
作者:互联网
论文地址 ; 中文翻译 ; 代码地址 ; 视频地址 ; 本篇大部分内容来源 。只做整理补充,推荐去看李沐老师原视频,讲的真的很好
建议学习顺序: 李沐老师论文讲解 -> 图解or手推BERT -> 代码讲解
1-标题 + 作者
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
- pre-training: 在一个大的数据集上训练好一个模型 pre-training,模型的主要任务是用在其它任务 training 上
- deep bidirectional transformers: 深的双向 transformers
- language understanding: 更广义,transformer 主要用在机器翻译 MT
- 总结:BERT:是用用深的、双向的、transformer 来做预训练,用来做语言理解的任务。
2-摘要
摘要第一段:和哪两篇工作相关,区别是什么:BERT 是在 GPT 和 ELMo 的基础上的改动。
新的语言表征模型 BERT: Bidirectional Encoder Representations from Transformer,是 Transformers 模型的双向编码表示。与 ELMo 和 Generative Pre-trained Transformer 不同:
- BERT 从无标注的文本中(jointly conditioning 联合左右的上下文信息)预训练得到无标注文本的 deep bidirectional representations
- GPT unidirectional,使用左边的上下文信息 预测未来
- BERT bidirectional,使用左右侧的上下文信息
- pre-trained BERT 可以通过加一个输出层来 fine-tune,不需要对特定任务的做架构上的修改就可以在在很多任务(问答、推理)有很不错的、state-of-the-art 的 效果
- ELMo based on RNNs, down-stream 任务需要调整架构
- GPT, down-stream 任务只需要改最上层
- BERT based on Transformers, down-stream 任务只需要调整最上层
可以说,BERT 具有预训练、深度、双向这几个特点
摘要第二段:BERT 的好处(实例)
simple and empirically powerful
- 在 11 个不同的任务上比较好,以及具体的对比结果(包括绝对精度和相对其他任务的精度)
3-Introduction
导言第一段:本篇论文关注的研究方向的一点点 background
- Language model pre-training 可以提升 NLP 任务的性能
- NLP 任务主要分两类:sentence-level tasks 句子级别的任务——情绪识别; token-level tasks 词级别的人物——NER (人名、街道名) 需要 fine-grained output
注意,NLP 预训练很早之前存在,BERT 使 NLP 预训练 出圈了
导言第二段:摘要第一段的扩充
- 常见的 pre-trained language representations 两类策略:
- 基于特征的
- 对
每一个下游的任务
都去构造一个和这个任务相关的
神经网络 - 训练好的 representation(如词嵌入等等)作为额外的特征,和输入一起放进模型,作为一个很好的特征表达
- 如 ELMo,使用 RNN
- 对
- 基于微调参数
- 预训练好的模型放在下游应用的时候只要改动最上层
- 预训练好的参数在下游微调一下
- GPT
- 基于特征的
介绍别人工作的目的:铺垫自己方法的好
- ELMo 和 GPT 预训练时 使用 单向的语言模型 unidirectional language model,使用相同的目标函数
- 毕竟语言模型是单向的、预测未来。不是给第 一句、第三句,预测第二句
导言第三段:当前相关技术的局限性
- 标准语言模型是 unidirectional 单向的,限制了模型架构的选择
- GPT 从左到右的架构,只能将输入的一个句子从左看到右。
- 然而对于句子情感分类任务:从左看到右、从右看到左 都应该是合法的。我输入的是完整的句子
- 哪怕是 token-level tasks,如问答 QA,也应该可以看完整个句子选答案,不是从左往右一步一步看。
- ∴ 如果能 incorporate context from both directions 看两方向的信息,能提升 任务性能。
已知相关工作的局限性,+ 解决局限性的想法 -- > 导言第四段: 如何解决?
BERT 通过 MLM(Masked language model) 带掩码的语言模型 作为预训练的目标,来减轻 语言模型的单向约束
- MLM 带掩码的语言模型做什么呢?
- 每次随机选输入的词源 tokens, 然后 mask 它们,目标函数是预测被 masked 的词;类似挖空填词、完形填空。
- MLM 和 standard language model (只看左边的信息)有什么区别?
- MLM 可以看 左右的上下文信息, pre-train deep bidirectional transformer 的基础
- BERT 除了 MLM 还有什么?
- NSP: next sentence prediction
- 判断两个句子是随机采样的 or 原文相邻,学习 sentence-level 的信息
导言第五段:文章的贡献
- 展示了 bidirectional 双向信息的重要性
- GPT 只用了 unidirectional 信息
- Peter 2018 也做了双向的尝试,但只是简单把
从左看到
和 从右看到左的模型独立训练 + shallow concatenation 拼在一起 - BERT 在 bidirectional pre-training 的应用更好
- 假如预训练模型结果很好就不用对特定任务的架构等做这么多改动了
- BERT 是第一个微调模型,在一系列 sentence-level and token-level task 都取得了很好的成绩
- BERT 开源,随便用
4-结论
近期实验表明,非监督的预训练模型很好, 资源不多的任务也能
本文拓展前任的结果到 deep bidirectional architectures,使同样的预训练模型能够处理大量的 NLP 任务
近年来语言模型迁移学习的研究表明:
- 无监督的预训练对许多 语言理解系统 很重要,
- 对它们研究的发现使资源较少的任务也能从 deep unidirectional architectures 中获益
- 我们则将这些发现进一步普遍化 -> 深入到双向架构(即 deep bidirectional architectures),允许相同的预训练模型成功地处理一系列广泛的 NLP 任务
稍微总结
- ELMo 用了 bidirectional 信息,但架构是 RNN 比较老
- GPT 架构 Transformer 新,但只用了 unidirectional 信息
- BERT = ELMo 的 bidirectional 信息 + GPT 的新架构 transformer。毕竟语言任务很多并不是预测未来,而是完形填空
- 结合这俩,并证明双向有用
锐评:A + B 缝合工作 or C 技术解决 D 领域的问题,不要觉得想法小、不值得写出来;简单朴实的写出来。简单好用 说不定会出圈
标签:BERT,精读,训练,逐段,模型,任务,token,句子 来源: https://www.cnblogs.com/youtmdyang/p/16177152.html