欢迎光临散文网 会员登陆 & 注册

Transformer&&Bert

2022-02-04 23:22 作者:hey_just_do_it  | 我要投稿

Transformer

背景

像在语言建模和机器翻译等这一些建模和转换问题中,采用的主流框架是编码器-解码器框架。传统的编码器-解码器框架采用的主要方法是RNN,而RNN及其衍生的网络对前后的隐藏状态有依赖性,无法实现并行。这样就导致在训练长序列任务和较深的网络时,速度十分缓慢。 而Transformer就利用自注意力机制实现了快速并行,改进了RNN及其衍生网络训练慢的特点,同时可以训练非常深的网络,从而提高模型的准确率。

模型结构

Transformer最开始用于机器翻译领域,它的输入是待翻译语言的句子,输出是翻译好的句子。它的框架是编码器-解码器框架,编码器和解码器都有六个相同的块组成,每个块中都使用了自注意力机制。

Postional Encoding

位置编码是Transformer里一个重要的部分。因为在注意力机制部分是没有考虑语序的,也就是说将一个句子随机打乱输入到注意力机制层,他的输出结果与不打乱是相同的,所以在位置编码部分,通过完整编码公式,让每个位置的编码值不同以此来记住句子中词的绝对位置信息,同时由于sin、cos这类周期函数,让每个位置的词都能由其他任一位置的此表示以此来记住句子中词之间的相对位置信息。这样就弥补了注意力机制层不考虑句子语序的部分。

Self-Attention

注意力机制是Transformer的核心部分,Transformer首发论文的名字就是《Attention is all your need》,由此也可以看出注意力机制的重要性。注意力机制层通过Q,K,V三个矩阵计算每个词和句子中每个词的注意分数力,相关性大的注意力分数就会大,以此让得到的词向量不仅仅只包含自身的含义,而是综合考虑了全局,融入了上下文信息。

Multi-Head Attention

多头就类似于CNN网络中的通道,它保证了模型可以注意到不同子空间的信息,从而捕捉到更加丰富的特征信息。

Masked Multi-Head Attention

带掩码的多头注意力机制层位于解码器中,因为注意力机制能开到上下文的信息,而解码器在对序列中的一个元素输出时时不应该看到该元素之后的元素的,因此Transformer中将该元素之后的元素使用< mask >掩盖起来,其他的与编码器的注意力机制层相同。

Add & Norm

Add表示残差网络,它通过乘法变加法,用于缓解梯度消失,以及来训练更深层次的网络。 Norm表示LayerNorm,它对样本的的元素进行归一化,以此缓解数据的剧烈变化,从而加快模型收敛速度。


Bert

整体框架

Bert采用了Transformer的编码器结构,但是网络结构比Transformer更深,有BERT BASE 和BERT LARGE两个版本。Bert是给基于微调的模型,完成新的任务只需要增加一个简单的输出层即可,它在大规模数据上进行训练,训练主要分为两个阶段:预训练阶段(在大型数据集上进行训练得到预训练模型)和Fine-tuning阶段(后续迁移到其他任务中的微调)

对输入的修改

与Tranformer模型进行比较,Bert对输入的修改包括以下几个部分:

  1. 输入的每一个样本是一个句子对

  2. 加入了[CLS]和[SEP]分隔符

  3. 使用Segment Embedding区分每个单词归属于那个句子

  4. 位置编码信息通过模型训练过程中学习得到的

预训练任务一:带掩码的语言模型

使用 < mask > 随机掩盖句子中的一部分单词,然后传入Bert模型,预测掩盖位置的正确单词,这样预测词时能看到上下文的信息,从而更好的根据全文理解单词的意思。

预训练任务二:下一个句子预测

将50%传入句子对的第二个句子的替换成预料库中的随机句子,然后预测第二个句子是否承接上一句,以此让模型学习到全文的信息。

微调

预训练完得到模型之后就可以利用微调让模型适应下游任务。



Transformer&&Bert的评论 (共 条)

分享到微博请遵守国家法律