自编码模型 AutoEncoder model,AE
本篇主要围绕BERT作为代表了解AE
代表模型BERT
BERT是2018年10月由Google AI研究院提出的一种预训练模型(Bidirectional Encoder Representation from Transformer)
特点:encoder-only
基本原理:在输入中随机MASK掉一部分单词,根据上下文预测这个词(不难联想到BERT的主要预训练任务MLM)
AE模型通常用于内容理解任务(NLU),比如NLU中的分类任务:情感分析、提取式问答
BERT架构

BERT架构整体可以分为三个模块:
- 第一层Embedding模块
- 中间层Transformer模块
- 第三层预微调模块
Embedding模块
该模块由三种embedding共同组成

- Token Embeddings:词嵌入张量,第一个单词是CLS标志,可用于之后的分类任务
- Segment Embeddings:句子分段张量,为了服务后续的NSP预训练任务
- Positional Embeddings:位置编码张量
整个Embedding模块的输出张量是这三个张量的直接加和结果
双向Transformer模块
依然可以看到上面那张图,BERT只使用了Transformer中的encoder部分,完全舍弃decoder部分
两大预训练任务也集中体现在训练Transformer模块中
预微调模块
- 经过中间层Transformer的处理后,Bert的最后一层根据下游任务需求做调整即可

- 比如对于sequence-level的分类任务,直接取第一个[CLS] token的 last_hidden_state,再加一层全连接层后进行softmax来预测最终的标签
BERT的预训练任务
MLM(Masked Language Model)
带mask的语言模型训练
在原始训练文本中, 随机的抽取15%的token作为参与MASK任务的对象
- 80%的概率下, 用[MASK]标记替换该token
- 在10%的概率下, 用一个随机的单词替换token
- 在10%的概率下, 保持该token不变.
NSP(Next Sentence Prediction)
下一句话预测任务
输入句子对(A, B), 模型来预测句子B是不是句子A的真实的下一句话.
- 所有参与任务训练的语句都被选中作为句子A
- 其中50%的B是原始文本中真实跟随A的下一句话(标记为IsNext, 代表正样本)
- 其中50%的B是原始文本中随机抽取的一句话(标记为NotNext, 代表负样本)
数据集与参数
数据集:BooksCorpus (800M words) + English Wikipedia (2,500M words)
模型超参数:
| 参数 | 取值 |
|---|---|
| transformer层数 | 12 |
| 特征维度 | 768 |
| transformer head数 | 12 |
| 总参数量 | 1.15亿 |