GPT 块和 BERT 块有什么区别

数据挖掘 伯特 变压器 openai-gpt
2022-02-28 18:42:25

现在很多应用只分别使用 Transformer 的 Encoder 和 Decoder 部分。不过,我很难理解其中的区别。

如果 GPT 仅使用 Decoder 而 BERT 仅使用 Encoder,这是否意味着两者之间的唯一区别基本上在掩码部分?

解码器中的交叉注意力层被省略了,因为 GPT 中没有编码器,对吧?

1个回答

BERT 是 Transformer 编码器,而 GPT 是 Transformer 解码器:

变压器图

你是对的,鉴于 GPT 是仅解码器,没有编码器注意块,因此解码器等效于编码器,除了多头注意块中的掩蔽。

然而,BERT 和 GPT 的训练方式有一个额外的区别:

  • BERT是一个Transformer编码器,这意味着对于输入中的每个位置,相同位置的输出是相同的token(或[MASK]masked token的token),即每个token的输入和输出位置是相同的。

  • GPT 是一个 Transformer 解码器,这意味着它用于自回归推理。这意味着输入中的标记相对于输出向右移动了一个位置,即如果输出为 [ the, dog, is, brown, </s>],则输入为 [ <s>, the, dog, is, brown, </s>]。

除此之外,在推理时,BERT 一次生成所有输出,而 GPT 是自回归的,因此您需要一次迭代地生成一个令牌。