Transformer

1,027 阅读3分钟

这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战

Transformer

背景

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

image.png

模型结构

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

Postional Encoding

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

image.png

Self-Attention

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

image.png

Multi-Head Attention

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

image.png

Masked Multi-Head Attention

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

image.png

Add & Norm

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