Transformer

1.模型架构

  • Transformer是深度学习领域中的一个重要模型架构,尤其在自然语言处理(NLP)领域取得了显著的成功。Transformer模型最初由Google在2017年提出,旨在解决传统序列到序列模型在处理长距离依赖问题上的不足。传统的RNN和LSTM模型在处理长文本序列时,容易出现梯度消失或爆炸问题,导致模型性能下降。而Transformer模型通过引入自注意力机制和多头注意力机制,成功地解决了这一问题。
  • 由输入部分、输出部分、编码器区域部分、解码器区域部分构成
  • 在这里插入图片描述

2.词嵌入和位置编码

词嵌入

  • 转换离散数据为连续数据自然语言处理中的文本数据本质上是离散的符号序列。例如,单词和字符是离散的,没有直接的数值表示。神经网络和其他机器学习算法通常处理的是连续的数值数据。因此,需要一种方法将这些离散的符号转换为连续的数值向量,这就是词嵌入的作用。
  • 捕捉语义关系通过适当的训练,词嵌入可以捕捉到单词之间的语义关系。比如,经过训练的词嵌入向量可以使得“king”与“queen”的距离接近于“man”与“woman”的距离。这种特性使得词嵌入向量不仅能够表示单词本身,还能反映单词间的语义相似性。

位置编码

  1. 序列顺序的重要性
    在自然语言处理中,单词的顺序非常重要。例如,在句子中,“I am eating an apple” 和 “An apple I am eating” 虽然意思相近,但结构和语义上还是有些不同。因此,模型需要知道单词在句子中的位置,才能准确地理解和处理句子。

  2. Transformer的结构特点
    Transformer是基于自注意力机制(Self-Attention)的模型,自注意力机制的一个特点是它对输入序列中的所有单词同时进行处理,而不是逐步处理。这使得模型缺乏顺序信息。为了弥补这一点,必须引入额外的位置信息。

  3. 提供位置感知能力
    通过位置编码,可以给模型提供每个单词在序列中的位置信息,使得模型不仅能关注单词本身,还能关注单词之间的相对位置关系。这样,模型在处理时能够保留输入序列的结构信息。

  4. 保持输入顺序的平移不变性
    位置编码确保了模型能够识别输入序列中的顺序,同时保证输入序列的平移不变性。即使输入序列的部分内容发生了位置变化,模型依然能够正确处理和理解。

  5. 位置编码的形式
    Transformer使用的常见位置编码方法是正弦和余弦函数,这种方式能够在不同的位置生成唯一的编码,同时具有平滑的变化和良好的扩展性。

PE ( p o s , 2 i ) = sin ⁡ ( p o s 1000 0 2 i d model ) PE ( p o s , 2 i + 1 ) = cos ⁡ ( p o s 1000 0 2 i d model ) \text{PE}(pos, 2i) = \sin\left( \frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}} \right)\\\text{PE}(pos, 2i + 1) = \cos\left( \frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}} \right) PE(pos,2i)=sin(10000dmodel2ipos)PE(pos,2i+1)=cos(10000dmodel2ipos)

其中, p o s pos pos 表示位置, i i i 表示维度, d model d_{\text{model}} dmodel 是嵌入维度。
为什么用这个编码,验证可能性
和角公式 s i n ( α + β ) = s i n α c o s β + c o s α s i n β , c o s ( α + β ) = c o s α c o s β − s i n α s i n β sin(\alpha+\beta)=sin\alpha cos\beta+cos\alpha sin\beta,cos(\alpha+\beta)=cos\alpha cos\beta-sin\alpha sin\beta sin(α+β)=sinαcosβ+cosαsinβ,cos(α+β)=cosαcosβsinαsinβ
假设我们有两个位置 x x x y y y,并且定义: f ( i ) = 1000 0 2 i d model f(i)=10000^{\frac{2i}{d_{\text{model}}}} f(i)=10000dmodel2i
有: P E x + y , 2 i = sin ⁡ ( x + y f ( i ) ) = sin ⁡ ( x f ( i ) ) cos ⁡ ( y f ( i ) ) + cos ⁡ ( x f ( i ) ) sin ⁡ ( y f ( i ) ) P E x + y , 2 i + 1 = cos ⁡ ( x + y f ( i ) ) = cos ⁡ ( x f ( i ) ) cos ⁡ ( y f ( i ) ) − sin ⁡ ( x f ( i ) ) sin ⁡ ( y f ( i ) ) PE_{x+y,2i} = \sin\left(\frac{x + y}{f(i)}\right) = \sin\left(\frac{x}{f(i)}\right)\cos\left(\frac{y}{f(i)}\right) + \cos\left(\frac{x}{f(i)}\right)\sin\left(\frac{y}{f(i)}\right)\\PE_{x+y,2i+1} = \cos\left(\frac{x + y}{f(i)}\right) = \cos\left(\frac{x}{f(i)}\right)\cos\left(\frac{y}{f(i)}\right) - \sin\left(\frac{x}{f(i)}\right)\sin\left(\frac{y}{f(i)}\right) PEx+y,2i=sin(f(i)x+y)=sin(f(i)x)cos(f(i)y)+cos(f(i)x)sin(f(i)y)PEx+y,2i+1=cos(f(i)x+y)=cos(f(i)x)cos(f(i)y)sin(f(i)x)sin(f(i)y)
则:
P E x + y , 2 i = P E x , 2 i ⋅ P E y , 2 i + 1 + P E x , 2 i + 1 ⋅ P E y , 2 i + 1 P E x + y , 2 i = P E x , 2 i + 1 ⋅ P E y , 2 i + 1 − P E x , 2 i ⋅ P E y , 2 i PE_{x + y, 2i} = PE_{x, 2i }\cdot PE_{y, 2i+1} + PE_{x, 2i +1} \cdot PE_{y, 2i + 1}\\PE_{x + y, 2i} = PE_{x, 2i +1}\cdot PE_{y, 2i+1} - PE_{x, 2i } \cdot PE_{y, 2i } PEx+y,2i=PEx,2iPEy,2i+1+PEx,2i+1PEy,2i+1PEx+y,2i=PEx,2i+1PEy,2i+1PEx,2iPEy,2i
可以看出 T r a n s f o r m e r Transformer Transformer可以线性变换表示位置 x x x y y y之间的相对关系,这样构造出的线性关系可以表达各个位置的相对关系。

3.自注意力机制

  • 自注意力机制,也称为内部注意力机制,允许模型在处理输入数据时,自动学习到不同位置之间的关联性,从而捕捉到更丰富的上下文信息。具体来说,它允许输入序列的每个元素都与序列中的其他元素进行比较,以计算序列的表示。

作用与优势

  • 捕捉复杂依赖关系:自注意力机制使模型能够聚焦于输入序列中不同位置的关系,从而捕捉序列内的复杂依赖关系。这对于处理自然语言、语音和图像等序列数据尤为重要。
  • 解决长距离依赖问题:传统的循环神经网络( R N N RNN RNN)在处理长序列时容易遇到梯度消失或梯度爆炸的问题,而自注意力机制可以有效地捕捉到序列中的长距离依赖关系。
  • 并行计算:自注意力机制可以利用 G P U GPU GPU等硬件资源进行并行计算,从而大大提高了计算效率。
  • 参数共享:在自注意力机制中,所有位置的权重共享相同的参数,这有助于减少模型的参数量和计算量。
    结构图
    在这里插入图片描述
    计算过程
  • 从每个编码器的输入向量(每个单词的词向量,即Embedding)中生成三个向量,即查询向量、键向量和一个值向量。(这三个向量是通过词嵌入与三个权重矩阵即 W Q , W K , W V W^Q,W^K,W^V WQ,WK,WV ,相乘后创建出来的)新向量在维度上往往比词嵌入向量更低。
    在这里插入图片描述
    以上所得到的查询向量、键向量、值向量组合起来就可以得到三个向量矩阵 Q u e r y 、 K e y s 、 V a l u e s Query、Keys、Values QueryKeysValues
    在这里插入图片描述
  • 计算得分
    分数是通过所有输入句子的单词的键向量与当前的查询向量相点积来计算的
    在这里插入图片描述
  • 是将分数除以 8 8 8( 8 8 8是论文中使用的键向量的维数 64 64 64的平方根,这会让梯度更稳定。这里也可以使用其它值, 8 8 8只是默认值,这样做是为了防止内积过大。),然后通过 s o f t m a x softmax softmax传递结果。随着模型处理输入序列的每个单词,自注意力会关注整个输入序列的所有单词,帮助模型对本单词更好地进行编码。 s o f t m a x softmax softmax的作用是使所有单词的分数归一化,得到的分数都是正值且和为 1 1 1
    在这里插入图片描述
  • 将每个值向量乘以 s o f t m a x softmax softmax分数(这是为了准备之后将它们求和)。这里的直觉是希望关注语义上相关的单词,并弱化不相关的单词(例如,让它们乘以 0.001 0.001 0.001这样的小数)。
    在这里插入图片描述
  • 使用注意力权重矩阵对值向量( V a l u e , V Value, V Value,V)进行加权。具体来说,对于每个查询向量,将其对应的注意力权重与值向量矩阵中相应位置的向量进行相乘。
    将所有加权后的值向量进行求和,得到该查询向量的新表示。这个过程是一个加权求和的过程,其中权重是注意力权重,而求和的对象是值向量。
    在这里插入图片描述

4.多头注意力机制

  • 有多个查询/键/值权重矩阵集合,( T r a n s f o r m e r Transformer Transformer使用八个注意力头)并且每一个都是随机初始化的。和上边一样,用矩阵 X X X乘以 W Q 、 W K 、 W V W^Q、W^K、W^V WQWKWV来产生查询、键、值矩阵。 s e l f − a t t e n t i o n self-attention selfattention只是使用了一组 W Q 、 W K 、 W V W^Q、W^K、W^V WQWKWV来进行变换得到查询、键、值矩阵,而 M u l t i − H e a d A t t e n t i o n Multi-HeadAttention MultiHeadAttention使用多组 W Q 、 W K 、 W V W^Q、W^K、W^V WQWKWV得到多组查询、键、值矩阵,然后每组分别计算得到一个 Z Z Z矩阵。

在这里插入图片描述
前馈层只需要一个矩阵,则把得到的 8 8 8个矩阵拼接在一起,然后用一个附加的权重矩阵 W h W^h Wh与它们相乘。
总结整个流程
在这里插入图片描述

5.残差链接和层归一化

1. A d d Add Add部分

  • 概念 A d d Add Add通常指的是残差连接( R e s i d u a l C o n n e c t i o n Residual Connection ResidualConnection)的加法操作。在神经网络中,尤其是在处理深层网络时,可能会出现训练困难、梯度消失或梯度爆炸等问题。残差连接通过允许原始输入信息直接流向更深层,有助于缓解这些问题。
  • 实现:在 T r a n s f o r m e r Transformer Transformer的编码器和解码器的每一层中,通常包括一个自注意力机制( S e l f − A t t e n t i o n Self-Attention SelfAttention)层和一个前馈神经网络( F e e d − F o r w a r d   N e u r a l   N e t w o r k , F F N Feed-Forward\ Neural\ Network,FFN FeedForward Neural NetworkFFN)。在这两个层之间,通过残差连接实现 A d d Add Add操作。具体来说,假设输入为 X X X,自注意力机制层的输出为 Z Z Z,则残差连接后的输出为 X + Z X+Z X+Z
  • 优点:残差连接使得网络在训练时能够更容易地学习到新的信息,同时保持原有信息不丢失。这有助于提升模型的性能,特别是在处理深层网络时。

2. Normalize部分

  • 概念 N o r m a l i z e Normalize Normalize指的是归一化操作,它通常用于将数据转换为具有统一尺度的形式,以便模型更容易学习和处理。在 T r a n s f o r m e r Transformer Transformer中, N o r m a l i z Normaliz Normalize操作通常指的是 L a y e r   N o r m a l i z a t i o n Layer\ Normalization Layer Normalization

  • 实现 L a y e r   N o r m a l i z a t i o n Layer\ Normalization Layer Normalization是在每个样本的每个层内部进行的,而不是在整个批次( b a t c h batch batch)上进行的。具体来说,它计算每个样本在每个层上的激活值的均值和标准差,然后使用这些统计量来归一化激活值。这有助于加速训练过程并提升模型的性能。

  • 优点 L a y e r   N o r m a l i z a t i o n Layer\ Normalization Layer Normalization可以使得每一层的输出具有固定的尺度,从而加速训练过程。此外,它还可以减少内部协变量偏移( I n t e r n a l   C o v a r i a t e   S h i f t Internal\ Covariate\ Shift Internal Covariate Shift),即网络在训练过程中参数的变化导致每一层输入的分布发生改变的问题。

3. 总结 A d d & N o r m a l i z e Add\&Normalize Add&Normalize T r a n s f o r m e r Transformer Transformer中通过残差连接和 L a y e r   N o r m a l i z a t i o n Layer\ Normalization Layer Normalization的结合,有效地提升了模型的训练效率和性能。残差连接使得模型能够更容易地学习新的信息并保持原有信息不丢失,而 L a y e r   N o r m a l i z a t i o n Layer\ Normalization Layer Normalization则通过归一化操作加速了训练过程并减少了内部协变量偏移。

6.编码器和解码器

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值