整体介绍
Bert主要工作分为pre-traing(预训练)与fine-tuning(微调),核心工作是预训练,微调是根据down-stream task(下游任务)进行修改即可
预训练的输入:unlabelled sentence pair 训练 BERT 的权重
下游任务:创建同样的 BERT 的模型,权重的初始化值来自于 预训练好 的权重MNLI, NER, SQuAD 下游任务有 自己的 labeled data, 对 BERT 继续训练,得到各个下游任务自己的的 BERT 版本。
Model Architecture
multi-layer bidirectional Transformer encoder一个多层双向 Transformer 的解码器,基于 transfomer 的论文和代码
理论
BERT 通过 MLM 带掩码的语言模型 作为预训练的目标,来减轻 语言模型的单向约束。inspired by the Close task 1953
MLM 带掩码的语言模型做什么呢?
每次随机选输入的词源 tokens, 然后 mask 它们,目标函数是预测被 masked 的词;类似挖空填词、完形填空。
MLM 和 standard language model (只看左边的信息)有什么区别?
MLM 可以看 左右的上下文信息, pre-train deep bidirectional transformer 的基础。
BERT 除了 MLM 还有什么?
NSP: next sentence prediction
判断两个句子是随机采样的 or 原文相邻,学习 sentence-level 的信息。
论文细节
L: transform blocks的个数
H: hidden size 隐藏层大小
A: 自注意力机制 multi-head 中 head 头的个数
代码
开源地址:后期整理自己的基于Bert的项目
李沐老师讲bert下面精彩的留言
网友总结:
1.摘要(Abstract):与别的文章的区别是什么?效果有多好?
2.引言(Introduction):语言模型的简单介绍;摘要第一段的扩充;主要想法;如何解决所遇到的问题;
贡献点:双向信息的重要性(句子从左看到右,从右看到左)、在BERT上做微调效果很好、代码开源
3.结论(Conlusion):无监督的预训练很重要(在计算机视觉领域,在没有标签的数据集上做训练比在有标签的数据集上做训练效果会更好);主要贡献是将这些发现进一步推广到深度双向架构,使相同的预训练模型能够成功处理一系列的 NLP 任务。
在本篇论文的结论中最大贡献是双向性(在写一篇论文的时候,最好有一个卖点,而不是这里好那里也好)。
选了选双向性带来的不好是什么?做一个选择会得到一些,也会失去一些。
缺点是:与GPT(Improving Language Understanding by Generative Pre-Training)比,BERT用的是编码器,GPT用的是解码器。BERT做机器翻译、文本的摘要(生成类的任务)不好做。
但分类问题在NLP中更常见。
完整解决问题的思路:在一个很大的数据集上训练好一个很宽很深的模型,可以用在很多小的问题上,通过微调来全面提升小数据的性能(在计算机视觉领域用了很多年),模型越大,效果越好(很简单很暴力)。
文章 3点贡献【参考链接2】
1 bidirectional 双向信息的重要性,GPT 只用了 uni-directional 信息;另外 Peter 2018 把从左看到右 和 从右看到左的模型独立训练 + shallow concatenation 拼在一起;BERT 在 bi-directional pre-training 的应用更好
2 BERT 首个 微调模型,在 sentence-level and token-level task效果好好的预训练模型,不用对特定任务做一些模型架构的改动
3 BERT 开源,随便用
结论
近期实验表明,非监督的预训练模型很好,low-resource 任务也能享受 benefit from 深的神经网络。
本文贡献:拓展前任的结果到 deep bidirectional architectures,使同样的预训练模型能够处理大量的 NLP 任务
本文故事
2个相关工作:ELMo 用了 bidirectional 信息,但架构 RNN 老;GPT 架构 Transformer 新,但只用了 unidirectional 信息。
BERT = ELMo 的 bidirectional 信息 + GPT 的新架构 transformer
How?Language model 任务:不是预测未来,而是完形填空。
写作:两个算法的结合,主要工作 -- 证明 双向有用
A + B 缝合工作 or C 技术解决 D 领域的问题,不要觉得想法小、不值得写出来;简单朴实的写出来。简单好用 说不定会出圈
相关工作
2.1 Unsupervised Feature-based approaches
非监督的基于特征表示的工作:词嵌入、ELMo等
基于特征的 ELMo (构建和每一个下游任务相关的 NN 架构;训练好的特征(作为额外的特征) 和 输入 一起放进模型)
2.2 Unsupervised Fine-tuning approaches
非监督的基于微调的工作:GPT等
基于微调参数的 GPT
所有的权重参数根据新的数据集进行微调
2.3 Transfer Learning from Supervised Data
在有标号的数据上做迁移学习。
NLP 有标号 的大数据集:natural language inference and machine translation
CV做的还不错,ImageNet 训练好、再做迁移。
NLP 表现不那么好:CV 和 NLP 任务的区别,NLP 数据的不足。
BERT 的作用:NLP 中,在无标号的大量数据集上训练的模型效果 > 有标号、但数据量少一些的数据集上训练效果
CV 采用 BERT 的想法嘛?Yes,在大量无标号的图片上训练的模型,可能比 有标号的 ImageNet 百万图片 效果更好。
Reference