初谈BERT

1,525 阅读1分钟

Transformer 左半边为 Encoder,右半边为 Decoder。我们将 Encoder 输入的句子称为 source,Decoder 输入的句子称为 target

Encoder 负责将 source 进行 self-attention 并获得句子中每个词的 representation,最经典的 Encoder 架构就是 BERT,通过 Masked Language Model 来学习词之间的关系,另外还有 XLNet, RoBERTa, ALBERT, DistilBERT 等等。但是单独 Encoder 结构不适用于生成任务

Decoder 如下图所示,输入与输出之间差一个位置,主要是模拟在 Inference 时,不能让模型看到未来的词,这种方式称为 AutoRegressive,常见的基于 Decoder 的模型通常是用来做序列生成的,例如 GPT, CTRL 等等。但是单独 Decoder 结构仅基于左侧上下文预测单词,无法学习双向交互

而两者合在一起后,就能当成一种 Seq2Seq 模型,进行翻译任务。下图是 BART 的主要结构,看上去似乎和 Transformer 没什么不同,主要区别在于 source 和 target

训练阶段,Encoder 端使用双向模型编码被破坏的文本,然后 Decoder 采用自回归的方式计算出原始输入;测试阶段或者是微调阶段,Encoder 和 Decoder 的输入都是未被破坏的文本

BART vs Transformer BART 使用标准的 Transformer 模型,不过做了一些改变:

1、同 GPT 一样,将 ReLU 激活函数改为 GeLU,并且参数初始化服从正态分布 2、BART base 模型的 Encoder 和 Decoder 各有 6 层,large 模型增加到了 12 层 3、BART 解码器的各层对编码器最终隐藏层额外执行 cross-attention 4、BERT 在词预测之前使用了额外的 Feed Forward Layer,而 BART 没有