Bert
BERT(Bidirectional Encoder Representations from Transformers)是在Transformer模型基础上的一种改进,主要有以下几点:
- 双向编码:
- Transformer是一个编码器-解码器结构的模型,主要用于序列到序列的任务(如机器翻译)。BERT则改变了这种结构,只使用了Transformer的编码器部分,并且是双向的,即可以同时考虑上下文的信息。这使得 BERT 可以更好地捕捉词与词之间的关系,从而提升模型的性能。
- BERT 使用Transformer的编码器部分来实现双向编码。具体来说,BERT 使用一个特殊的符号 [MASK] 来遮住输入句子中的某些词,然后让模型预测这些被遮住的词是什么。这种方式使得模型能够在预测一个词的时候,同时考虑到它前面和后面的词,从而实现双向编码。
- 在BERT的训练过程中,会随机选择一些词,并用[MASK]符号将它们替换掉,然后模型需要预测这些被遮住的词是什么。通过这种方式,模型可以学习到词与词间的关系,从而更好地理解语言的语义。
- 需要注意的是,由于 [MASK] 符号在实际的测试或使用过程中是不会出现的,在BERT 的微调阶段,会移除这种Masking操作,使得模型能够正常处理没有被遮住词的输入。
- 预训练和微调:
- BERT 的另一个重要创新是采用了预训练+微调的训练方式。在预训练阶段,BERT 通过大量无标签的文本数据学习语言的通用表示,然后在微调阶段,根据具体任务的标签数据进行优化。这种方式使得BERT能利用海量的无标签数据获得更强的泛化能力。
Transformer的编码器的输入是一个序列,输出也是一个序列。Transformer编码器的输入和输出序列的长度是一样的。每个输入词都会产生一个对应的输出向量,这个向量包含了该词的语义信息,以及它与其他词的关系信息。 Transformer编码器内部的前馈神经网络(Feed-Forward Network, FFN)的输入和输出数量是一样的。具体来说,前馈神经网络的作用是对每个位置的词的表示进行非线性变换,因此对于每个输入位置,都会有一个对应的输出位置。
- 新的训练任务:
- BERT 引入了两种新的训练任务:Masked Language Model(MLM) 和 Next Sentence Prediction(NSP)。MLM的目标是预测被遮住的词,这样可以使模型学习到更丰富的词汇关系。NSP的目标是判断两个句子是否是连续的,使模型学习到句子之间的关系。
- 在 Masked Language Model (MLM) 任务中,BERT 的目标是预测被遮住的词是什么。具体步骤如下:
- 随机选择一些词,并用一个特殊的符号 [MASK] 将它们替换掉。
- 将这个被遮住的词的序列输入到 BERT 模型中。
- BERT 模型会输出一个序列,其中包含了每个词的表示。
- 从被遮住的词的表示中,使用一个线性层和 softmax 操作,预测被遮住的词。
- 在 Next Sentence Prediction (NSP) 任务中,BERT 的目标是判断两个句子是否是连续。具体步骤如下:
- 输入两个句子 A 和 B,其中 B 可能是 A 的下一句,也可能不是。
- 在句子A和B之间插入一个特殊的符号[SEP],并在句子A前面插入特殊符号 [CLS]。
- 将这个序列输入到 BERT 模型中。
- BERT 模型会输出一个序列,其中包含了每个词的表示。
- 从[CLS]符号对应表示中,使用一个线性层和softmax操作,判断B是否是A下一句。
- 模型大小:
- BERT模型通常比原始的Transformer模型更大,包含更多的参数,这使得它能够捕捉更多的信息,从而提供更好的性能。