[文献阅读]——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

目录

  • preliminaries
  • 引言
  • 相关工作
    • 无监督的、基于特征的方法
    • 无监督的、微调的方法
  • 模型
    • 基础介绍
    • 预训练BERT
      • Pretraining TASK1:Masked LM
      • Pretraining TASK2:Next Sentence Prediction(NSP)
    • 微调BERT
  • 实验
    • GLUE
    • SQuAD
    • SWAG
  • 附录
    • A1:详细介绍了两个预训练tasks
    • A2:训练
    • A3:超参数
    • A4:BERT\GPT\EMLo
    • A5:不同的下游任务
    • C:不同的mask策略
  • 拓展阅读

preliminaries

  • GPT
  • EMLo
  • left-to-right LM
  • transformer

引言

预训练模型运用在下游任务的两种方式

  • feature-based:EMLo
  • fine-tuning:GPT

目前的技术的缺陷是: 单向。

  • 对于句子级别的任务是:次优的
  • 对于token级别的任务是:有害的

本文的贡献:

  • 使用masked language model(MLM) pre-training objective,从而可以训练一个深层双向的transformer
  • 效果好

相关工作

无监督的、基于特征的方法

  • word embeddings:
    • left-to-right LM objectives
    • 从左右上下文中的不正确单词中,区别正确的单词(w2v)
  • sentence embeddings:
    • 给候选句子排名
    • 给定之前的句子,从左到右地生成下一个句子
    • dAE derived objective
  • EMLo
    • 使用从左到右、从右到左的LSTM,来得到context-sensitive features,但也只是简单的拼接
    • ELMo不是深层双向的,需要在上层加上task-specific architectures

无监督的、微调的方法

OpenAI GPT

  • 使用句子或者段落编码器,来产生上下文的token representation

大多使用以下两种训练目标:

  • 从左到右的LM objective
  • 自编码 objective(encoder\decoder)

模型

基础介绍

参数:具体看transformer

  • number of layers(L)
  • hidden size(H)
  • number of self-attention heads(A)
  • fead-forward/filter size(?): 4 * H

输入输出:

  • 输入:

    • wordpiece embeddings with 30000 token vocabulary
    • +[CLS][SEP]
    • 输入的是1. token embedding + 2. segment embedding + 3. position embedding的加和
      [文献阅读]——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding_第1张图片
  • 输出:

    • CLS token 和 other input tokens,分别用于sentence和token level的downstream tasks

预训练BERT

数据集(GPT只用了上面一个)

  • BooksCorpus(800M words)
  • English Wikipedia(2500M words)

Pretraining TASK1:Masked LM

LM:

  • 传统的LM只能是单向的,因为如果是双向的,每一个单词都会间接地知道自己,模型会自然而然(trivially?)地知道target。(不太懂LM的缺点到底怎么表达)

MLM:

  • 原始做法:以15%的概率随机选择一些token,将其替换成[MASK],用[MASK]的final hidden vectors去预测是哪一个单词
  • 原始做法存在的问题:微调过程中,并不存在[MASK],会造成不匹配
  • 改进做法:以15%的概率随机选择一些token,对于一个token,有80%的概率被替换成[MASK],有10%的概率被替换成一个随机的token,有10%的概率保持不变
  • 优点:双向

Pretraining TASK2:Next Sentence Prediction(NSP)

training example:

  • 句子对A和B,其中B有50%的概率就是A的下一句话,有50%的概率不是

final hidden vector of [CLS] token:

  • 用于分类,但不是一个有意义的句子表示

看附录才意识到:TASK1和TASK2应该是联合训练的,即: l o s s ( θ ) = l o s s ( t a s k 1 ) + l o s s ( t a s k 2 ) loss(θ) = loss(task1) + loss(task2) loss(θ)=loss(task1)+loss(task2)

微调BERT

编码句子对的两种不同方式:

  • 传统方式:分别编码两个句子,然后使用cross-attention(如用于句子对分类的ESIM模型,旨在建模句子的信息交互)
  • BERT:使用self-attention直接编码两个句子,完成了从两步->一步的转变

其中,句子A和句子B的不同的任务中有不同的含义:

  • paraphrasing task: sentence pairs
  • entailment task: hypothesis premise pairs
  • QA task: question-passage pairs
  • text classification task: text-空 pairs

[CLS]和其它token怎么用?:

  • cls用于分类(sentence-level-tasks)
  • 其它token用于 token-level tasks
    • sequence tagging:给每一个token预测类别
    • QA:A代表Question,B代表Paragraph,给B中的每一个token计算两个分数:1.是开始token的分数 2.是结束token的分数,最终的span取得是 两个分数之和最大的那个组合。

实验

GLUE

单句子分类:

  • SST-2:电影评论的情感分类
  • CoLA:判断一个英文句子是否是在语言学上,可以被认可

句子对分类:

  • MNLI:预测entailment\contradiction\neutral三个label
  • QQP:判断两个问题是否在语义上是相同的
  • QNLI:判断B是否是A问题的答案
  • STS-B:给两个句子的相似性打分(1-5)
  • MRPC:判断两个句子是否在语义上是相同的
  • RTE:和MNLI差不多,但是数据量较小

SQuAD

start是可训练的参数层,用于和每一个位置的token进行dot product,来计算是否可能是开头的分数;end也如此。[文献阅读]——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding_第2张图片
SQuAD V1:paragraph里面存在答案对应的span
SQuAD V2:首先依然是有S和E两个映射,对于输入的[question,paragraph]对,由于并不知道这个问题是否是可以回答的,所以首先计算S·C+E·C(score1),接着去paragraph里面去计算所有的 S ⋅ T i + E ⋅ T j S·T_i+E·T_j STi+ETj,并取出最大的那一个分数,记为score2,如果1. score2 > score1 + threshold(该参数在dev set上调整),则score2 对应的span为答案 2. 否则,不可回答

SWAG

句子对分类

附录

A1:详细介绍了两个预训练tasks

A2:训练

两个tasks似乎是一起训练的:首先通过A和B的拼接,得到sentences,然后再在上面做LM mask,计算loss时,同时计算NSP和MLM的loss,并求和。

A3:超参数

鲁棒的超参设置:

  • batch size:16\32
  • learning rate:5e-5\3e-5\2e-5
  • number of epochs:2\3\4

在超过10万的大数据集上,超参的影响不明显

A4:BERT\GPT\EMLo

[文献阅读]——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding_第3张图片
挖坑:

  • GPT阅读笔记
  • EMLo阅读笔记

A5:不同的下游任务

[文献阅读]——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding_第4张图片

C:不同的mask策略

原文认为:feature-based能够放大(amplify)“将[mask]代替原词所带来的训练测试不匹配问题”
[文献阅读]——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding_第5张图片

拓展阅读

ELMo
GPT
auto-encoder
Transformers

你可能感兴趣的:(文献阅读之家)