据我所知,BERT 是一种 Transformer 架构。我不明白的是:
Bert 与原来的 Transformer 架构有何不同?
哪些任务更适合 BERT,哪些任务更适合原始架构?
据我所知,BERT 是一种 Transformer 架构。我不明白的是:
Bert 与原来的 Transformer 架构有何不同?
哪些任务更适合 BERT,哪些任务更适合原始架构?
最初的transformer,在论文Attention is all you need(2017)中提出,是一个基于encoder-decoder的神经网络,主要特点是使用了所谓的attention(即确定单词重要性的机制句子中的其他词或哪些词更可能组合在一起)以及不使用循环连接(或循环神经网络)来解决涉及序列(或句子)的任务,即使基于 RNN 的系统正在成为标准练习解决自然语言处理 (NLP) 或理解 (NLU) 任务。因此,论文的名称“注意就是你所需要的”,即你只需要注意,不需要循环连接来解决 NLP 任务。
编码器-解码器架构和注意力机制都不是新颖的提议。事实上,以前用于解决许多 NLP 任务的神经网络架构,例如机器翻译,已经使用了这些机制(例如,看看这篇论文)。Transformer 和这篇引用论文的新颖之处在于,它表明我们可以简单地使用注意力来解决涉及序列的任务(例如机器翻译),并且我们不需要循环连接,这是一个优势,因为循环连接会阻碍训练过程的并行化。
原始转换架构在引用论文的图 1 中进行了描述。编码器和解码器都由
解码器部分也由一个线性层和一个 softmax 组成,用于解决特定的 NLP 任务(例如,预测句子中的下一个单词)。
BERT代表来自 Transformers的双向编码器表示,因此,顾名思义,它是一种学习使用转换器的语言表示的方法,特别是转换器的编码器部分。
BERT 是一种语言模型,即它表示一种语言中单词的统计关系,即哪些单词更有可能出现在另一个单词之后。因此,其名称中的部分表示,来自 Transformers的双向编码器表示。
BERT 可以以无监督的方式进行表示学习的训练,然后我们可以在所谓的下游任务上以有监督的方式(即迁移学习)微调BERT。BERT 的预训练版本已经可以进行微调(例如这个)并用于解决您的特定监督学习任务。您可以使用此 TensorFlow 教程来使用预训练的 BERT 模型。
另一方面,原来的transformed并不是最初设想为一种语言模型,而是解决序列转导任务(即将一个序列转换为另一个,例如机器翻译),没有循环连接(或卷积),而只有注意力。
BERT 只是一个编码器,而原来的Transformer 是由编码器和解码器组成。鉴于 BERT 使用的编码器与 Transformer 的原始编码器非常相似,我们可以说 BERT 是一个基于 Transformer 的模型。因此,BERT 不使用循环连接,而仅使用注意力和前馈层。还有其他基于变换的神经网络仅使用变换器的解码器部分,例如GPT 模型。
BERT 使用的超参数与Attention 中使用的超参数不同,这就是实现最佳性能所需的全部。例如,它使用 12 和 16 个“注意力头”(请阅读转换器论文以了解更多关于这些“注意力头”的信息)而不是 8 个(尽管在最初的转换器论文中,作者尝试了不同数量的头)。
BERT 还使用了段嵌入,而原始转换器只使用了词嵌入和位置编码。
我可能错过了其他一些小的差异,但是,在阅读了论文Attention is all you need并快速阅读BERT 论文的某些部分之后,这些似乎是主要差异。
虽然我从未使用过它们,但我想说,当你想以有监督的方式解决 NLP 任务时,你想使用 BERT,但是你的标记训练数据集不足以实现良好的性能。在这种情况下,您从一个预先训练的 BERT 模型开始,然后使用您的小型标记数据集对其进行微调。您可能需要向 BERT 添加特定层来解决您的任务。