Transformer理解

Transformer是一个用于翻译的模型。由N个结构完全相同的encoder(训练时N个encoder参数独立训练)和N个结构完全相同的decoder(训练时N个decoder参数独立训练)组成。其中“N”是可以自己设定的,论文中给定的一个参考值为6.
Transformer模型框架:
在这里插入图片描述
将Transformer进一步细化为Encoder部分和Decoder部分。
**

Encoder

**
而Encoder部分又可分为3个部分:输入部分、注意力机制、前馈神经网络。
在这里插入图片描述

输入部分

包括两个:1.embedding 2.位置嵌入
为什么需要位置编码?
在RNN中,输入参数U、隐藏参数W和输出参数V是一套参数,在RNN的所有time steps中共享一套U、W、V参数。比如下面这张图,将左边这张图按时间线展开之后,可以看到右边在每个time step U、W、V是一样的,而不是Ut-1、Ut、Ut+1,所以RNN叫循环神经网络。
在这里插入图片描述
而Transformer具有并行化,一句话所有单词是可以一起处理的,而不是像RNN这样一个单词一个单词按照序列处理。这样做增快了速度,但是忽略了单词之间的位置信息(比如某些单词是在前面的,某些单词是在后面的)。
位置编码公式
公式理解:pos是单词在句中的位置,2i和2i+1分别表示偶数位置和奇数位置,偶数位置使用sin公式计算,奇数位置使用cos公式计算。比如下面这个单词“爱”,如果它的位置编码向量为512维度,那么在每个偶数维度上使用上图中sin公式计算,在每个奇数维度上使用上图中cos公式计算。最终得到了一个512维的位置编码向量。
在这里插入图片描述
而“爱”这个词最终的编码向量是:位置编码+embedding(shape相同,对应位置相加)

注意力机制

注意力机制的输入必须要有三个矩阵:Q、K、V,通过计算Q和K的相似度并除以一个超参数得到相似的概率分布,最后与V矩阵进行相乘。在Transformer中如何计算Q、K、V呢?
在这里插入图片描述
经过了位置编码和embedding,我们已经获得了单词“Thinking”的Embedding,如何获取Q、K、V呢?如上图所示,只需要将其分别与WQ、WK、WV(参数矩阵首先初始化,然后训练更新其中参数)相乘。单词“Machine”也是一样的操作。下图中展示了计算Attention的过程。
在这里插入图片描述
上图中红框中是上面步骤得到的query、key、和value向量,紫框中的计算公式如下:
Attention计算公式

其中X是一个句子中所有单词的embedding矩阵。
上图中计算Attention的过程只是一套WQ、WK、WV来获得Q、K、V,多头注意力机制是指使用多套WQ、WK、WV。如下图:
上图中2套参数
多个头会有多个输出,最后将输出拼接在一起。
在这里插入图片描述
如上图所示,残差+LayerNorm的过程:单词“Thinking”和单词“Machines”经过embedding和position embedding之后相加得到黄色的x1、x2(拼接之后为x),接着输入到self-attention网络中得到输出z1和z2(拼接之后为x),然后将黄色的x和粉色的z相加(这里就是残差)并进行归一化(layerNorm)。

残差网络理解
BN和LN理解

前馈神经网络

两层的全连接层和 残差+LN

**

Decoder

**
在这里插入图片描述
Decoder的重点是Maseked Multi-Head Attention 以及Multi-Head Attention

Maseked Multi-Head Attention

为什么需要mask?mask的又是什么呢?看下图:
在这里插入图片描述
因为在训练过程中有ground truth,如果Decoder的输入没有mask,那么,就会发生这样一种现象,当某一时刻,使用“LOVE”生成“YOU”的时候,Decoder能够看到后面的单词“YOU”和“NOW”,也就是在“S”、“I”、“LOVE”、“YOU”、“NOW”的共同影响下,生成了“YOU”这个词。但在测试过程中,没有ground truth,那么测试的时候结果就会与训练时候大相径庭(也称gap)。因此我们需要在训练时mask掉当前单词及当前单词之后的单词。

Multi-head Attention

Decoder中的Multi-head的K、V来自encoder框架中最后一个encoder的输出,Q来自decoder中multi-head attention的前一层输出。如下图所示:
在这里插入图片描述
本文参考b站一位up主视频,链接原视频还会讲关于Transformer的面试题目以及解答

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Transformer是一种用于自然语言处理的模型架构,它由编码组件和解码组件组成[^1]。Transformer的工作原理是通过注意力机制来处理输入序列和输出序列之间的关系[^2]。它在处理文本数据时具有很大的优势,并且在自然语言处理领域取得了重要的突破。 Transformer的编码组件主要负责将输入序列转换为一系列的隐藏表示,这些隐藏表示包含了输入序列的语义信息。编码组件由多个相同的层组成,每个层都包含了多头自注意力机制和前馈神经网络。自注意力机制能够捕捉输入序列中不同位置之间的依赖关系,而前馈神经网络则能够对每个位置的隐藏表示进行非线性变换。通过多个层的堆叠,编码组件能够逐渐提取输入序列的更高级别的语义信息。 解码组件则负责根据编码组件生成的隐藏表示来生成输出序列。解码组件也由多个相同的层组成,每个层包含了多头自注意力机制、多头编码-解码注意力机制和前馈神经网络。多头编码-解码注意力机制能够捕捉输入序列和输出序列之间的依赖关系,而前馈神经网络则能够对每个位置的隐藏表示进行非线性变换。通过多个层的堆叠,解码组件能够逐渐生成输出序列。 Transformer的注意力机制是其核心部分,它能够在不同位置之间建立关联,并且能够根据输入序列和输出序列的不同位置之间的关系来进行加权计算。这种注意力机制使得Transformer能够更好地处理长距离依赖关系,从而提高了模型的性能。 总结起来,Transformer是一种用于自然语言处理的模型架构,它通过注意力机制来处理输入序列和输出序列之间的关系。它在自然语言处理领域取得了重要的突破,并且被广泛应用于各种任务,如机器翻译、文本生成等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值