什么是Transformer?
最初的Transformer是在论文《Attention is all you need》(2017)中提出的,这是一种基于编码器-解码器的神经网络,其主要特点是使用了所谓的注意力机制(即确定句子中单词对其他单词的重要性或哪些单词更可能一起出现的机制),而不使用循环连接(或循环神经网络)来解决涉及序列(或句子)的任务,尽管基于RNN的系统当时已经成为解决自然语言处理(NLP)或理解(NLU)任务的标准方法。因此,这篇论文被命名为《Attention is all you need》,即只需要注意力机制而不需要循环连接来解决NLP任务。
编码器-解码器架构和注意力机制都不是新提出的。事实上,以前用于解决许多NLP任务(如机器翻译)的神经网络架构已经使用了这些机制(例如,可以看看这篇论文)。Transformer及其引用的论文的新颖之处在于,它表明我们只需使用注意力机制即可解决涉及序列的任务(如机器翻译),而不需要循环连接,这是一种优势,因为循环连接可能会阻碍训练过程的并行化。
原始的Transformer架构如引用论文的图1所示。编码器和解码器都由以下部分组成:
注意力模块
前馈(或全连接)层
残差(或跳跃)连接
归一化层
dropout
标签平滑
嵌入层
位置编码
解码器部分还包含一个线性层,后面跟一个softmax,用于解决特定的NLP任务(例如,预测句子中的下一个单词)。
什么是BERT?
BERT代表Bidirectional Encoder Representations from Transformers,顾名思义,它是一种使用Transformer来学习语言表示的方法,具体来说,使用的是Transformer的编码器部分。
Transformer和BERT有什么区别?
BERT是一种语言模型,即它表示语言中单词的统计关系,即哪些单词更可能在另一个单词之后出现等。因此,其名称中的Representations部分即Bidirectional Encoder Representations from Transformers。
BERT可以以无监督的方式进行表示学习,然后我们可以在所谓的下游任务中以监督的方式微调BERT(即迁移学习)。有预训练版本的BERT可以直接进行微调(例如这个),并用于解决特定的监督学习任务。你可以使用这个TensorFlow教程来玩转预训练的BERT模型。
另一方面,原始的Transformer最初并不是作为一种语言模型来设计的,而是为了在没有循环连接(或卷积)的情况下,只使用注意力来解决序列转换任务(即将一个序列转换为另一个序列,例如机器翻译)。
BERT仅是一个编码器,而原始的Transformer由编码器和解码器组成。由于BERT使用的编码器与原始Transformer的编码器非常相似,因此我们可以说BERT是基于Transformer的模型。所以,BERT不使用循环连接,而只使用注意力和前馈层。还有其他只使用Transformer解码器部分的基于Transformer的神经网络,例如GPT模型。
BERT使用了与《Attention is all you need》中不同的超参数以达到最佳性能。例如,它使用了12和16个“注意力头”(请阅读Transformer论文以了解更多关于这些“注意力头”的信息),而不是8个(尽管在原始的Transformer论文中,作者尝试了不同数量的头)。
BERT还使用了段落嵌入,而原始的Transformer只使用了单词嵌入和位置编码。
可能还有其他我遗漏的小差异,但在阅读了《Attention is all you need》论文并快速浏览了BERT论文的部分内容后,这些似乎是主要的差异。
何时使用BERT和Transformer?
虽然我从未使用过它们,但我会说,当你想以监督方式解决NLP任务,但你的标注训练数据集不足以获得良好性能时,你可能想使用BERT。在这种情况下,你可以从一个预训练的BERT模型开始,然后用你的小标注数据集对其进行微调。你可能需要向BERT添加特定的层来解决你的任务。
来源:
https://ai.stackexchange.com/questions/23221/how-is-bert-different-from-the-original-transformer-architecture