BERT 与 GPT 架构、概念和实现的差异

数据挖掘 机器学习 nlp 伯特 变压器 openai-gpt
2022-02-17 10:48:41

BERT 论文中,我了解到 BERT 是仅编码器模型,即它仅涉及转换器编码器块。

GPT 论文中,我了解到 GPT 是仅解码器模型,即它仅涉及转换器解码器块。

我猜有什么区别。我知道编码器和解码器块之间的以下区别: GPT 解码器仅查看先前生成的令牌并从中学习,而不是右侧令牌。BERT 编码器关注两边的令牌。

但我有以下疑问:

Q1。GPT2,3 侧重于新/一/零短期学习。我们不能用像 BERT 这样的纯编码器架构来构建新的/一/零短学习模型吗?

Q2。HuggingfaceGpt2Model包含forward()方法。我想,将单个数据实例提供给这种方法就像是一次性学习?

Q3。我已经实现了神经网络模型,它利用BertModel来自拥抱脸的输出。我可以简单地将BertModel课程GPT2Model与某个课程交换吗?的返回值Gpt2Model.forward确实包含last_hidden_state类似于BertModel.forwardBertModel所以,我想换掉Gpt2Model确实可行,对吧?

Q4。除了仅解码器和仅编码器、自回归与非自回归以及是否接受迄今为止生成的令牌作为输入之外,GPT 和 BERT 有哪些高级架构/概念差异?

1个回答

从你的最后一个问题开始:你正确地说 BERT 是一个仅编码器的模型,使用掩码语言建模目标进行训练,并且以非自回归方式运行。GPT-2 是一个仅解码模型,使用从左到右的语言目标进行训练,并以自回归方式运行。除此之外,超参数仅存在技术差异,而没有其他概念差异。

BERT(其他掩码 LM)也可用于零样本或少样本学习,但方式略有不同。有一种方法称为PET(模式开发训练)。它通过模板使用 BERT 的语言建模能力。例如,对于情绪分析,您可以执行以下操作:

<...text of the review..><.TEMPLATE......> <  ?  >.
The pizza was fantastic. The restaurant is [MASK].

然后你检查分数是多少goodbad得到[MASK]令牌的位置。

使用 GPT-2 模型并不像使用 BERT 那样简单。forward给定您提供的可在模型中进一步使用的输入,调用该方法会返回 GPT-2 的隐藏状态。您可以使用 GPT-2 的隐藏状态作为上下文嵌入,就像您使用 BERT 的输出一样,但是,这不是 GPT-2 通常的使用方式。

从模型中使用 GPT-2 采样的常用方法。这意味着您提供提示(作为纯文本)并希望模型以合理的方式继续。有很多关于如何从 GPT-2 模型生成的教程,例如Huggingface的这篇博文。