Transformer 与 BERT 可以沿同一条阅读线理解:先弄清注意力怎样组合序列中的信息,再看编码器如何产生上下文表示,以及训练目标怎样影响表示的用途。这是论文学习笔记,公式和小例子用于解释结构,不代表复现了论文实验。
从 Q、K、V 到注意力
2017 年的 Attention Is All You Need提出基于注意力的 Transformer。缩放点积注意力可以写为:
Attention(Q, K, V) = softmax(QKᵀ / √dₖ + M)V
Q 表示查询,K 表示键,V 表示值;Q 与 K 的内积产生匹配分数,缩放后按可见位置归一化,再对 V 加权。M 表示需要的遮罩:允许位置不额外改变分数,不允许位置在 softmax 前被屏蔽。
一个维度检查有助于理解:若查询有 n 个位置、键值有 m 个位置,QKᵀ 得到 n×m 的分数,每个查询位置再组合 m 个值。这里是计算关系,不能把某个未经测量的代词关联画成“模型实际注意了 80%”。
多头注意力使用不同投影分别计算,再组合结果。头数增加不等于每个头自动拥有一个固定、可命名的语言职责。论文第 3.2 节
编码器与解码器各看哪些内容
原 Transformer 的编码器对输入序列形成表示;解码器包含受因果遮罩限制的自注意力,并利用编码器输出。位置表示提供顺序信息,前馈网络、残差连接与归一化也是结构的一部分,不能把整个模型等同于单独一条 Attention 公式。
训练时可以利用并行计算,但自回归生成仍依赖此前生成的内容。“不用循环网络”不等于生成整段文本时不再有先后依赖。
BERT 为什么强调双向
2018 年的 BERT 论文使用 Transformer 编码器学习双向上下文表示。它与只依据前缀预测后续内容的训练方式存在目标和可见信息上的差异。
原论文的重要组成包括:
| 部分 | 阅读时关注什么 |
|---|---|
| WordPiece 与特殊标记 | 文本如何切分,如何组织句子对 |
| Token、位置、分段表示 | 一个输入位置怎样形成初始表示 |
| MLM | 如何利用被遮盖位置的上下文学习预测 |
| NSP | 原论文如何构造句子关系训练任务 |
| 微调 | 怎样添加任务输出并继续训练 |
[CLS] 与 [SEP] 是输入组织的一部分;它们不是所有任务都能直接拿来当最终答案的保证。论文中的 L、H、A 分别用于层数、隐藏维度和注意力头数,读配置表时应区分这些量。BERT 第 3 节
带着问题继续读
我更关注三个连接点:遮罩决定位置能看什么,损失决定模型被要求学什么,下游评估决定这些表示是否有用。看到“能理解上下文”时,应继续追问输入如何组织、训练目标是什么、具体任务怎样衡量。
BERT、编码器解码器模型与解码器生成模型也不能只按发布时间排成简单的能力高低顺序。任务、训练条件和评估数据不同,就需要保留比较边界。