Transformer小白入门

Encoder-Decoder -> Attention -> Transformer 逐步理解
本文内容是由个人见解和网上资料整理而来,仅为本人的学习过程,侵删

一、Encoder-Decoder 编码-解码框架

1.1 简介

Encoder-Decoder是一个模型框架,可以用不同的模型来实现,目前较多的应该就是seq2seq和transformer。其广泛应用于自然语言处理、图像处理、语音识别等领域

1.2 编码器

编码器的作用是接收输入序列(文字、图片、音频等),并将其转换成固定长度的上下文向量(context vector)。这个向量是输入序列的一种内部表示,捕获了输入信息的关键特征。在自然语言处理的应用中,输入序列通常是一系列词语或字符。

编码器可以根据不同类型的问题选择不同的深度学习模型,比如在处理序列数据方面,可以使用RNN、LSTM、GRU等


编码器

1.3 解码器

解码器的目标是将编码器产生的上下文向量转换为输出序列(文字、图片、音频等)。在开始解码过程时,它首先接收到编码器生成的上下文向量,然后基于这个向量生成输出序列的第一个元素。接下来,它将自己之前的输出作为下一步的输入,逐步生成整个输出序列。

解码器也可以是各种类型的深度学习模型,但通常与编码器使用相同类型的模型以保持一致性。


解码器

1.4 整体架构

简单架构如下

具体架构如下

特点:

  1. 无论输入输出的长度为多少,中间の共享向量C的长度都是固定的(缺点)
  2. 解码-编码类似于压缩-解压,中间会产生信息丢失(后续引入Attention)
  3. 本身是一个end-to-end(端到端)的学习算法

信息丢失:编码器要将整个序列的信息压缩进一个固定长度的向量中去

  1. 语义向量无法完全表示整个序列的信息。
  2. 先输入的内容携带的信息会被后输入的信息稀释掉,或者说,被覆盖了输入序列越长,这个现象就越严重。

1.5 应用

自然语言处理领域NLP
  • 机器翻译
  • 文本摘要
  • 聊天与问答系统
图像处理领域CV
  • 图像去噪(以AE为例)
    • 编码器:接收含噪声的图像,通过逐层压缩数据,学习到一个潜在的、更紧凑的表示形式。这一过程中,网络被迫学习忽略噪声,只保留最重要的图像特征。
    • 解码器:接收潜在空间中的紧凑表示,通过逐层扩展数据,重构去噪后的图像。理想情况下,重构的图像应该接近原始图像,而不包含噪声。
  • 特征提取和降维(以AE为例)
    • 编码器:将高维输入数据(如图像)映射到一个低维表示。这个低维表示是输入数据的一个压缩形式,包含了最重要的特征。
    • 解码器:尝试从这个低维表示重构原始输入。如果重构质量高,这表明低维表示成功捕获了输入数据的关键信息。
  • 图像生成(以VAE为例)
    • 编码器:不仅学习将输入映射到潜在空间的表示,还学习输入数据在潜在空间的分布参数。这允许模型捕获输入数据的概率特性。
    • 解码器:从潜在空间的分布中随机采样点,然后将这些点映射回数据空间,生成新的数据实例。

二、 Attention 注意力机制

2.1 注意力机制(Attention Mechanism)

引起方式

当大家第一次看到这幅图时,是更愿意把注意力集中在可爱的大熊猫幼崽身上还是关心它周边的环境呢?

非自主提示:是由于物体本身的特征十分突出引起的注意力倾向。(比如上图中大家第一眼可能关注的都是大熊猫)
自主提示:是经过先验知识的介入下,对具有先验权重的物体引起的注意力倾向。(这种就源自于一种主观倾向,在看到大熊猫之后,从而关注它的行为,此时将便会不由自主地将注意力集中在它周边的事物上)

基础概念

注意力机制其实是源自于人对外部信息的处理能力。由于人每一时刻接受的信息都是无比的庞大且复杂,远远超过人脑的处理能力,因此人在处理信息的时候,会将注意力放在需要关注的信息上,对于其他无关的外部信息进行过滤,这种处理方式被称为注意力机制

在处理大量输入数据时,注意力机制允许模型关注于最关键的部分。

Query、Key、Value
  • 查询(Query):指的是查询的范围,自主提示,主观意识的特征向量,代表需要获取信息的请求,即输入信息
  • 键(Key):指的是被对比的项,非自主提示,物体的突出特征信息向量,与Query相关性的衡量标准
  • 值(Value):物体本身的特征向量,通常和Key成对出现
  • 权重(Attention Weights):用来缩放注意力权重分布的一个系数,为了稳定梯度

QueryKeyValue 的每个属性在不同的空间

简单理解
以上面的熊猫图为例,Q是我们想知道图中大熊猫在干嘛(问题,自主提示),KV对则是有大熊猫的那张图(原始数据)

数学定义

在数学上,注意力函数可以被定义为一个映射,该映射接受一个查询(Query)和一组键值对(Key-Value pairs),然后输出一个聚合后的信息,通常称为注意力输出(也叫注意力分数)

注意力(Q, K, V) = 聚合(权重 * V)

注意力机制是通过QueryKey的注意力汇聚(给定一个 Query,计算QueryKey的相关性,然后根据QueryKey的相关性去找到最合适的 Value)实现对Value的注意力权重分配,生成最终的输出结果。计算过程如下:

  1. 首先,根据Query和Key计算两者之间的相关性或相似性计算注意力得分,常见方法如下:

    • 点积: S i m i l a r i t y ( Q u e r y , K e y i ) = Q u e r y ⋅ K e y i Similarity(Query,Key_i) = Query\cdot Key_i Similarity(Query,Keyi)=QueryKeyi
    • 余弦相似度: S i m i l a r i t y ( Q u e r y , K e y i ) = Q u e r y ⋅ K e y i ∣ ∣ Q u e r y ∣ ∣ ⋅ ∣ ∣ K e y i ∣ ∣ Similarity(Query,Key_i) = \frac{Query · Key_i}{||Query ||\cdot || Key_i||} Similarity(Query,Keyi)=∣∣Query∣∣∣∣Keyi∣∣QueryKeyi
    • MLP网络: S i m i l a r i t y ( Q u e r y , K e y i ) = M L P ( Q u e r y , K e y i ) Similarity(Query,Key_i) = MLP(Query , Key_i) Similarity(Query,Keyi)=MLP(Query,Keyi)
  2. 其次,对注意力得分进行缩放scale(除以维度的根号),再softmax函数,一方面可以进行归一化,将原始计算分值整理成所有元素权重之和为1的概率分布;另一方面也可以通过softmax的内在机制更加突出重要元素的权重。一般采用如下公式计算:

    • a i = S o f t m a x ( S i m i ) = e S i m i ∑ j = 1 L x e S i m j a_i = Softmax(Sim_i) = \frac{e^{Sim_i}}{\sum_{j=1}^{L_x}e^{Sim_j}} ai=Softmax(Simi)=j=1LxeSimjeSimi
  3. 最后,根据权重系数对Value值进行加权求和,得到Attention Value(此时的V是具有一些注意力信息的,更重要的信息更关注,不重要的信息被忽视了)

    • A t t e n t t i o n ( Q u e r y , S o u r c e ) = ∑ i = 1 L x a i ⋅ V a l u e i Attenttion(Query,Source) = \sum_{i=1}^{L_x}a_i \cdot Value_i Attenttion(Query,Source)=i=1LxaiValuei

2.2 自注意力机制(Self-Attention Mechanism)

由于神经网络接收的输入是很多大小不一的向量,而且不同向量之间有一定的关系,但是实际训练时无法充分注意输入之间的关系从而使得模型训练的效果达不到预期。针对这种情况(全连接神经网络对于多个相关的输入无法建立相关性的问题),提出了自注意力机制,目的是让机器注意到整个输入中不同部分之间的相关性。

区别

注意力机制:通常在两个不同序列之间计算注意力权重(如源语言和目标语言),Q和K是不同来源,通常是用于输入和输出之间的相互作用。

自注意力机制:在单个序列的内部计算注意力权重(如一个句子中的每个词与其他词之间的关系),Q和K都是来自于同一组的元素。其强调序列中各个元素之间的关系,不需要外部的输入与其交互。这是Transformer模型的核心组件,它允许模型在捕捉长距离依赖时更加有效

应用

计算步骤与注意力机制相同

注意力(Q, K, V) = 聚合(权重 * V)

假设输入序列长度为 n n n,每个元素是一个向量,向量的维度为 d m o d e l d_{model} dmodel。我们可以将输入序列表示为一个矩阵 X ∈ R n × d m o d e l X \in \mathbb{R}^{n \times d_{model}} XRn×dmodel,每一行对应一个输入向量。

1、生成Q,K,V矩阵
自注意力机制使用三个不同的矩阵来计算注意力:

  • Query (Q):查询矩阵,用来计算某个词对其他词的关注程度。
  • Key (K):键矩阵,用来与Query进行匹配,度量Query和Key的相似度。
  • Value (V):值矩阵,表示每个词的具体信息,用于最后生成输出。

通过将输入矩阵 X X X乘以三个权重矩阵 W q , W k , W v W^q, W^k, W^v Wq,Wk,Wv,得到 Query、Key 和 Value 矩阵:

Q = X W q , K = X W k , V = X W v Q = XW^q, \quad K = XW^k, \quad V = XW^v Q=XWq,K=XWk,V=XWv

其中,权重矩阵的维度为:

  • W q ∈ R d m o d e l × d k W^q \in \mathbb{R}^{d_{model} \times d_k} WqRdmodel×dk
  • W k ∈ R d m o d e l × d k W^k \in \mathbb{R}^{d_{model} \times d_k} WkRdmodel×dk
  • W v ∈ R d m o d e l × d v W^v \in \mathbb{R}^{d_{model} \times d_v} WvRdmodel×dv

通常 d k = d v = d m o d e l d_k = d_v = d_{model} dk=dv=dmodel,但可以有不同的维度。

三个权重矩阵式需要学习的参数

2、计算注意力分数
自注意力机制的核心是计算 Query 和 Key 的相关性,常用的方法是点积。具体计算如下:
Attention Scores = Q K T d k \text{Attention Scores} = \frac{QK^T}{\sqrt{d_k}} Attention Scores=dk QKT

  • Q ∈ R n × d k Q \in \mathbb{R}^{n \times d_k} QRn×dk
  • K T ∈ R d k × n K^T \in \mathbb{R}^{d_k \times n} KTRdk×n
    计算得到的结果是一个 n × n n \times n n×n的矩阵,表示序列中每个位置对其他位置的注意力分数。

缩放因子 d k \sqrt{d_k} dk 是为了避免点积结果过大,影响梯度的稳定性。

3、计算权重矩阵

为了将注意力分数转换为概率分布,通常使用Softmax函数来计算每个词对其他词的注意力权重:

Attention Weights = Softmax ( Q K T d k ) \text{Attention Weights} = \text{Softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) Attention Weights=Softmax(dk QKT)

Softmax会将每行转换为一个概率分布,表示当前词对其他所有词的注意力权重。

4、权重矩阵与V相乘,计算加权求和
利用计算得到的注意力权重对 Value 矩阵 ( V ) 进行加权求和,得到输出:

Output = Attention Weights × V \text{Output} = \text{Attention Weights} \times V Output=Attention Weights×V

  • 注意力权重矩阵的维度为 n × n n \times n n×n
  • Value 矩阵 V V V的维度为 n × d v n \times d_v n×dv

乘积的结果是一个 n × d v n \times d_v n×dv 的矩阵,这就是自注意力机制的输出,表示每个位置根据整个序列的信息加权后的向量。

问题
1. 计算和内存消耗问题

自注意力机制的计算复杂度是 O ( n 2 × d ) O(n^2 \times d) O(n2×d),其中 n n n 是序列长度, d d d 是每个向量的维度。随着序列长度 n n n 的增加,计算量和内存消耗都呈二次增长,尤其在处理长序列时非常耗资源。

2. 长距离依赖问题

虽然自注意力机制能够捕捉长距离依赖,但在序列较长时,远距离的元素之间的依赖关系可能被稀释或忽略。此外,计算每个元素对所有其他元素的注意力也可能导致无关信息干扰。

3. 对局部结构不敏感

自注意力机制本质上是全局的,它在计算过程中没有明确的局部信息,例如在图像或时间序列数据中,局部信息通常很重要。由于所有输入位置之间的相互作用,模型可能忽略了局部模式。虽然考虑了所有的输入向量,但没有考虑到向量的位置信息。(位置编码解决)

4. 模型训练时间长

由于自注意力机制涉及大量的矩阵乘法和Softmax操作,导致训练过程非常耗时,尤其是在处理大规模数据时,训练时间可能会非常长

5. 自回归模型无法并行化

自注意力机制在生成序列任务中(如文本生成)通常是自回归的,即生成下一个词时必须依赖前面的词,这种自回归方式限制了并行化,导致推理速度较慢。

6. 有效的信息抓取能力较小

自注意力机制的原理是筛选重要信息,过滤不重要信息,这就导致其有效信息的抓取能力会比CNN小一些(模型在对当前位置的信息进行编码时,会过度的将注意力集中于自身的位置,有效信息抓取能力就差一些),可以应用多头注意力机制来解决。

2.3 多头注意力机制(Multi-Head Attention Mechanism)

为了让模型从不同的表示空间捕捉到更多的上下文信息,通常使用多头注意力机制。多头注意力的计算过程是对 QueryKeyValue 进行多组并行计算,每组使用不同的权重矩阵W,然后将所有头的输出拼接起来,并再通过一个线性变换得到最终的输出。

具体步骤
  1. 对输入矩阵 X X X 分别使用多个不同的权重矩阵 W q , W k , W v W^q, W^k, W^v Wq,Wk,Wv,生成多组 Q , K , V Q, K, V Q,K,V
  2. 对每组 Q , K , V Q, K, V Q,K,V计算注意力。
  3. 将所有头的结果拼接在一起,再通过一个线性变换矩阵 W o W^o Wo得到最终的输出。
完整流程

以8组为例,假设输入向量 X X X维度为 [ 2 , 4 ] [2,4] [2,4],权重矩阵 W q , W k , W v W^q,W^k,W^v Wq,Wk,Wv都为 [ 4 , 3 ] [4,3] [4,3],线性变换矩阵 W O W^O WO维度为 [ 24 , 4 ] [24,4] [24,4],则

  1. 输出的 Q , K , V Q,K,V QKV矩阵维度为 [ 2 , 3 ] [2,3] [2,3]
  2. 对每个单头进行self-attention,得到 Z 0 − Z 7 Z_0 - Z_7 Z0Z7,维度都是 [ 2 , 3 ] [2,3] [2,3]
  3. 将所有头的结果拼接,维度为 [ 2 , 24 ] [2,24] [2,24]
  4. 乘上矩阵 W O W^O WO,得到 Z Z Z,其维度为 [ 2 , 4 ] [2,4] [2,4]
    在这里插入图片描述

2.4 通道注意力机制(Channel Attention Mechanism, CAM)

在卷积神经网络(CNN)中,输入的每个特征图可以被看作是不同的“通道”(或过滤器的输出)。通道注意力机制通过分配不同的权重来强调或抑制某些特征图。

计算步骤:
  1. 计算每个通道的全局信息(如通过全局平均池化、全局最大池化)。
  2. 使用MLP或其他轻量的网络模块生成通道的权重。
  3. 对输入的每个通道进行加权操作。
应用场景:

图像分类、目标检测、语义分割等任务,常与卷积神经网络结合使用。通道注意力可以帮助模型更好地选择关键特征,从而提升性能。

代表模型:

压缩与激励网络(Squeeze-and-Excitation Networks,SENet)。
该网络分为两个部分:
在这里插入图片描述
压缩:对全局信息进行压缩,然后在通道维度进行特征学习,形成各个通道的重要性,最后通过激励部分对各个通道分配不同权重

激励:将压缩部分得到的 1 × 1 × C 1\times1\times C 1×1×C的维度融入全连接层,预测各个通道的重要程度,然后再激励到前面特征图对应通道上进行操作。

使用通道注意力机制学习各个通道的重要性时,是先对特征图的空间进行压缩,然后在通道维度进行学习,得到各个通道的重要性

2.5 空间注意力机制(Spatial Attention Mechanism)

空间注意力机制在卷积神经网络的特征图上,关注图像的不同空间位置的重要性。它计算每个空间位置的权重,从而引导模型更关注图像中的关键位置。

计算步骤:
  1. 通过通道方向上的全局池化来得到空间上的全局信息(如平均池化、最大池化)。
  2. 生成每个空间位置的注意力权重(通常使用卷积操作)。
  3. 将权重与输入特征图的每个空间位置相乘,得到加权后的特征图。
应用场景:

适用于需要对图像不同区域进行区分的任务,比如目标检测、图像分割等。

代表模型:

空间变换神经网络(Spatial Transformer Networks,STN)
STN 能够对各种形变数据在空间中进行转换并自动捕获重要区域特征。它能够保证图像在经过裁剪、平移或者旋转等操作后,依然可以获得和操作前的原始图像相同的结果。
STN 网络包括局部网络、参数化网络采样(网络生成器)和差分图像采样。
在这里插入图片描述
局部网络:预测输入数字的变换(平移/缩放/旋转)
网络生成器:获得输出特征图坐标点在输入特征图中坐标点的对应位置。

2.6 混合注意力机制(Hybrid Attention Mechanism)

混合注意力机制同时结合通道和空间注意力,通过考虑通道和空间维度的信息来更加全面地增强输入特征。

计算步骤:

先进行通道注意力计算,对每个特征图进行加权。
在得到加权后的特征图基础上,再进行空间注意力计算。
输出的是同时经过通道和空间加权的特征图。

应用场景:

图像分类、语义分割、目标检测等任务中,混合注意力可以捕捉到更加细致的图像信息,提高网络的整体性能。

2.6 联合注意力机制(Joint Attention Mechanism)

后续拓展

三、 Transformer

Attention is all you need
transformer 完全摒弃了之前的循环和卷积操作,完全基于注意力机制,拥有更强的并行能力,训练效率也得到较高提升。

3.1 背景

往期模型的不足

方法: RNN、LSTM、GRU、Encoder-Decoder

不足:

  1. 从左到右一步步计算,因此难以并行计算
  2. 过早的历史信息可能被丢弃,时序信息一步一步向后传递
  3. 内存开销大,训练时间慢
改进的优点

完全依赖于注意力机制来绘制输入和输出之间的全局依赖关系
减少了序列计算(减少到常数次操作),但是由于平均注意力加权位置信息,从而降低了有效分辨率(使用多头注意力抵消该影响)

3.2 模型结构

Transformer的总体架构:使用堆叠的self-attention层、point-wise层和全连接层,分别用于encoder和decoder,如下图所示


Transformer模型结构
3.2.1 Encoder-Decoder 编码解码结构

Encoder:如图所示,由N个完全相同的layer堆叠而成,每个layer有两个子层。

  • 第一层:多头自注意力机制
  • 第二层:简单的位置全连接的前馈神经网络
  • 在每个子层后采用残差网络,再进行层标准化
  • 每个sub-layer的输出都做一个残差连接和layerNorm。计算公式:LayerNorm( x + Sublayer(x) ),Sublayer(x) 指 self-attention 或者 MLP。

残差连接需要输入和输出的维度一致,所以每一层的输出维度在transformer里都是固定的,都是512维。

Decoder:如图所示,由N个完全相同的layer堆叠而成,每个layer有三个子层。

  • 第一层:对encoder层的输出执行多头注意力,另外对自注意力子层进行修改(Mask),防止某个position受后续的position的影响。确保位置 i i i的预测只依赖于小于 i i i的位置的已知输出。
  • 第二层:多头自注意力机制
  • 第三层:简单的位置全连接的前馈神经网络
3.2.2 AM 注意力机制

Transformer中使用了缩放点积注意力和多头注意力

缩放点积注意力(Scaled Dot-Product Attention)

Scaled Dot-Product Attention是特殊attention,输入包括查询 Q Q Q和键 K K K的维度 d k d_k dk以及值 V V V的维度 d v d_v dv​ 。计算查询和键的点积,将每个结果除 d k \sqrt{d_{k}} dk ,然后用 s o f t m a x ( ) softmax() softmax() 函数来获得值的权重。


缩放点积注意力

在实际使用中,我们同时计算一组查询的注意力函数,并一起打包成矩阵 Q。键和值也一起打包成矩阵 K 和 V。计算方式如下:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk QKT)V

加入缩放因子 d k \sqrt{d_k} dk ,避免内积过大时,softmax产生的结果非0即1

多头注意力(Multi-head Attention)

多头注意力的输入还是 Q 、 K 、 V Q 、K 、V QKV,但是输出是将不同的注意力头的输出合并,在投影到 W O W^O WO 里,每个头 h i h_i hi Q , K , V Q,K,V Q,K,V 通过可以学习的 W q W^q Wq, W k W^k Wk, W v W^v Wv投影到 d v d_v dv上,再通过注意力函数,得到 h e a d head head


多头注意力

Multi-head attention允许模型把不同位置子序列的表示都整合到一个信息中。如果只有一个attention head,它的平均值会削弱这个信息。
h e a d i = A t t e n t i o n ( Q W i q , K W i k , V W i v ) head_i = Attention(QW_i^q,KW_i^k,VW_i^v) headi=Attention(QWiq,KWik,VWiv)时, M u l t i h e a d ( Q , K , V ) = C o n c a t ( h e a d 1 , . . . , h e a d h ) W O Multihead(Q,K,V) = Concat(head_1,...,head_h)W^O Multihead(Q,K,V)=Concat(head1,...,headh)WO

multi-head attention在Transformer中有三种不同的使用方式:

  • 在encoder-decoder attention层中,queries来自前面的decoder层,而keys和values来自encoder的输出。这使得decoder中的每个位置都能关注到输入序列中的所有位置。 这是模仿序列到序列模型中典型的编码器—解码器的attention机制,例如[38, 2, 9]。
  • encoder包含self-attention层。 在self-attention层中,所有的key、value和query来自同一个地方,在这里是encoder中前一层的输出。 encoder中的每个位置都可以关注到encoder上一层的所有位置。
  • decoder中的self-attention层允许decoder中的每个位置都关注decoder层中当前位置之前的所有位置(包括当前位置)。 为了保持解码器的自回归特性,需要防止解码器中的信息向左流动。我们在scaled dot-product attention的内部 ,通过屏蔽 s o f t m a x softmax softmax输入中所有的非法连接值(设置为 − ∞ -\infty )实现了这一点。
3.2.3 Position-wise Feed-Forward Networks 基于位置的前馈神经网络

除了attention子层,我们encoder-decoder框架中每一层都包含一个全连接的前馈网络,它分别相同地应用于每个位置。它由两个线性变换和中间的一个ReLU激活函数组成
F F N ( x ) = m a x ( 0 , x W 1 + b 1 ) W 2 + b 2 FFN(x) = max(0,xW_1+b_1)W_2+b_2 FFN(x)=max(0,xW1+b1)W2+b2
两个线性转换作用于相同的位置,但是在他们用的参数不同。 另一种描述方式是比作两个kernel size=1的卷积核。输入输出的维度为512,中间维度为2048。

3.2.4 Embeddings and Softmax 词嵌入和 softmax

embeddings将输入和输出tokens转换为向量,线性变换和softmax函数将decoder输出转换为预测的写一个token概率。

Embedding: 特征嵌入,embedding是可以简单理解为通过某种方式将词向量化,即输入一个词输出该词对应的一个向量。(embedding可以采用训练好的模型如GLOVE等进行处理,也可以直接利用深度学习模型直接学习一个embedding层,Transformer模型的embedding方式是第二种,即自己去学习的一个embedding层。)

3.2.5 Positional Encoding 位置编码

使用目的:防止在处理时序数据时,由于序列被打乱从而导致语义发生变化
应用方法:在注意力机制的输入中加入时序信息,位置在encoder端和decoder端的embedding之后,用于补充Attention机制本身不能捕捉位置信息的缺陷。
例如:不同频率的正弦和余弦函数,其中 p o s pos pos指的是位置, i i i指的是维度
P E ( p o s , 2 i ) = s i n ( p o s / 1000 0 2 i / d m o d e l ) PE_{(pos,2i)} = sin(pos/10000^{2i/d_{model}}) PE(pos,2i)=sin(pos/100002i/dmodel)
P E ( p o s , 2 i + 1 ) = c o s ( p o s / 1000 0 2 i / d m o d e l ) PE_{(pos,2i+1)} = cos(pos/10000^{2i/d_{model}}) PE(pos,2i+1)=cos(pos/100002i/dmodel)

3.3 优缺点

Transformer模型的优点

  1. 更好的并行性能:Transformer模型能够在所有位置同时计算,从而充分利用GPU并行计算的优势,加速了模型的训练和推理过程。
  2. 能够处理长序列:传统的循环神经网络模型在处理长序列时容易出现梯度消失和梯度爆炸的问题,而Transformer模型使用了自注意力机制,能够同时考虑所有位置的信息,从而更好地处理长序列。
  3. 更好的性能表现:Transformer模型在自然语言处理领域中已经取得了很多重要的研究成果,比如在机器翻译、文本生成、语言模型等任务中都取得了很好的效果。

Transformer模型的缺点

  1. 对于小数据集,Transformer模型的表现可能会不如传统的循环神经网络模型,因为它需要更大的数据集来训练。
  2. Transformer模型的计算复杂度较高,需要更多的计算资源,比如GPU等。
  3. Transformer模型的可解释性不如传统的循环神经网络模型,因为它使用了自注意力机制,难以解释每个位置的重要性。
  4. 完全基于self-attention,对于词语位置之间的信息有一定的丢失,虽然加入了positional encoding来解决这个问题,但也还存在着可以优化的地方。

3.4 应用场景

自然语言处理
语音识别
计算机视觉
强化学习

引用:Transformer是一种近年来非常火热的模型,它的结构非常巧妙。简单来说,Transformer是一个由多个编码器和解码器组成的模型。编码器负责将输入序列转换成抽象的特征表示,解码器则根据编码器的输出和之前的输出来生成目标序列。Transformer主要的特点是使用了自注意力机制,这使得模型能够在处理长文本时也能保持较好的效果。 对于小白来说,理解Transformer的结构可能需要花费一些功夫。但是可以通过以下几个步骤来逐渐掌握Transformer的概念: 1. 首先,了解Transformer的整体结构。它由编码器和解码器组成,编码器负责将输入序列转换为特征表示,解码器根据编码器的输出和之前的输出生成目标序列。 2. 其次,研究Transformer的细节。其中一个关键的概念是自注意力机制,它允许模型在处理时对输入序列中的不同位置进行关注。这种机制有助于模型捕捉输入序列的上下文信息。 3. 最后,了解Transformer的优缺点。Transformer的优点是它在处理长文本时能够保持较好的效果,并且由于使用了自注意力机制,它能够捕捉全局上下文信息。然而,Transformer的缺点是它需要大量的计算资源和时间来训练,并且对于小样本数据可能不够鲁棒。 希望这些解释能帮助你对Transformer有一个初步的了解!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [史上最小白Transformer详解](https://blog.csdn.net/Tink1995/article/details/105080033)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值