BERT 和 GPT2 之间的主要区别?

问题描述

我读了很多文章,人们都说 BERT 对 NLU 有好处,而 GPT 对 NLG 有好处。但它们在结构上的关键区别只是在self-attention中是否添加了mask,并且以不同的方式训练了模型。

从下面的代码中,如果我理解正确,我们可以自由选择是否添加注意力掩码。 https://github.com/huggingface/transformers/blob/master/src/transformers/models/bert/modeling_bert.py https://github.com/huggingface/transformers/blob/master/src/transformers/models/gpt2/modeling_gpt2.py

那么我是否可以得出“BERT 的预训练参数对 NLU 有利”和“GPT2 的预训练参数对 NLG 有利”的结论? 或者这两者之间还有什么其他关键的区别让人们得出我在开头提到的这个结论?

解决方法

BERT 和 GPT 针对不同的训练目标和目的进行训练。

BERT 被训练为自动编码器。它使用掩码语言模型 (MLM) 来破坏输入,该模型的目标是识别掩码标记。它还使用自注意,其中输入句子中的每个标记查看双向上下文(所考虑标记左侧和右侧的其他标记)。

相比之下,GPT 被训练为自回归模型。它使用语言建模目标进行训练,其中给定的标记序列用于预测下一个标记(因此只查看过去或左侧的上下文)。它还使用 Masked Attention 将自回归方法引入基于 Transformer 的模型中。

因此,它不仅与预训练参数有关,还与模型及其目标有关。