0%

BERT

简介

本文介绍了一种新的语言表征模型 BERT——来自 Transformer 的双向编码器表征。与最近的语言表征模型不同,BERT 旨在基于所有层的左、右语境来预训练深度双向表征。BERT 是首个在大批句子层面和 token 层面任务中取得当前最优性能的基于微调的表征模型,其性能超越许多使用任务特定架构的系统,刷新了 11 项 NLP 任务的当前最优性能记录。

相关工作

无监督sequence learning

  • 基于特征的策略
    • (如 ELMo)使用将预训练表征作为额外特征的任务专用架构。
    • 什么意思?
  • 微调策略(finetuning)
    • (如生成预训练 Transformer (OpenAI GPT))引入了任务特定最小参数(pretrain model之外的参数很少),通过简单地微调
      预训练参数在下游任务中进行训练。

在之前的研究中,两种策略在预训练期间使用相同的目标
函数,利用单向语言模型来学习通用语言表征。

传统方法的局限

标准语言模型是单向的(从左到右),这限制了可以在预训练期间使用的架构类型。

解读

  1. 单向: RNN、ngram都是单向的。word2vec、ELMo是都是双向吧?双向lstm呢?
  2. 限制架构类型: pretrain用的从左向右的单向网络,在双向网络transformer上怎样fine tune?比如OpenAI的GPT采用的从左到右的架构,其中每个 token 只能注意Transformer 自注意力层中的先前 token。这种局限很致命

BERT

BERT(Bidirectional Encoder Representations from Transformers)改进了基于微调的策略。

BERT 提出一种新的预训练目标——遮蔽语言模型(masked language model,MLM),来克服上文提到的单向局限。MLM 的灵感来自 Cloze 任务(Taylor, 1953)。MLM 随机遮蔽输入中的一些 token,,目标在于仅基于遮蔽词的语境来预测其原始词汇 id。与从左到右的语言模型预训练不同,MLM 目标允许表征融合左右两侧的语境,从而预训练一个深度双向 Transformer。除了 MLM,我们还引入了一个「下一句预测」(next sentence prediction)任务,该任务联合预训练文本对表征。

main task

BERT在11个NLP任务上Fine-tuning

1
TASKS = ["CoLA", "SST", "MRPC", "QQP", "STS", "MNLI", "SNLI", "QNLI", "RTE", "WNLI", "diagnostic"]

具体如下:

input output task
单句 类别 SST-2, CoLA
单句 标注 CoNLL-2003(NER)
双句 类别 MNLI, QQP, QNLI, STS-B, MRPC, RTE, SWAG
双句 标注 SQuAD v1.1

other task

BERT并不能直接用于以上模型,具体方案见相应的链接。

  • embedding用法
    • static embedding
    • dynamic embedding

code解读

训练数据

  • 中文维基百科(包含繁体、简体)

词典

  • 词典大小: 21128
  • 分词
    • character‑based tokenization for Chinese
    • WordPiece tokenization for all other languages.

字典内容,质量: 很杂乱

  • 词典第一个是[pad]
    • [unused0] 是干嘛的?
    • [UNK]
    • [CLS] 用于分类的标记
    • [SEP] 句子分隔符
    • [MASK] 用于mask language model
1
2
3
4
5
6
7
8
9
10
11
12
13
!
"
#

user
december
meiki


// ## 表示连接符,比如 pupperteer词典中没有,分词后是 puppet、##eer
##境
##墅
##銘

tokenizer 分词

  • 词典为什么不采用BPE?如何应用在我们的模型上?
  • Amrozi accused his brother
    • ‘am’, ‘##ro’, ‘##zi’, ‘accused’, ‘his’, ‘brother’, 分词采用最长匹配??
  • 中文采用的什么分词
    • 卧槽,好暴力,直接用的字,都不用分词
    • https://github.com/google-research/bert/blob/master/tokenization.py#L195

扩展阅读

  • glue实时榜单
  • SQuAD实时榜单