Transformer详解:Attention机制原理

前言

Hello,大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者,本系列文章是作者参加DataWhale2025年1月份学习赛,旨在讲解Transformer模型的理论和实践。😲

本文将详细探讨Attention机制的原理、其在Transformer模型中的应用,以及Transformer模型如何通过自注意力机制(Self-Attention)和多头注意力机制(Multi-Head Attention)来处理序列数据。我们还将讨论Transformer模型在自然语言处理(NLP)任务中的优势,并对比其与CNN、RNN的计算复杂度、并行操作数量和学习距离长度。


一、 Attention机制原理

在这里插入图片描述

注意力机制(Attention Mechanism)最初是为了改进基于Encoder-Decoder架构的神经机器翻译(Neural Machine Translation, NMT)系统而提出的。传统的NMT系统依赖于RNN或LSTM来编码输入句子并生成上下文向量,但这种架构在处理长句子时存在长程依赖问题,导致信息丢失。2015年,Bahdanau等人提出了第一个Attention模型,通过引入注意力机制,模型能够在生成每个输出词时动态地关注输入序列中的不同部分,从而显著提升了翻译质量

1.Attention机制的引入

① 传统Encoder-Decoder架构的局限性

在传统的Encoder-Decoder架构中,编码器(Encoder)将输入序列编码为一个固定长度的上下文向量,解码器(Decoder)则基于该上下文向量生成输出序列。这种架构的局限性在于:

  • 长程依赖问题:随着输入序列长度的增加,编码器难以捕捉到长距离的依赖关系,导致信息丢失。
  • 固定长度上下文向量:Encoder将整个输入序列压缩为一个固定长度的向量,导致信息丢失。

这部分我上篇文章中已经详细说明!


② Attention机制的引入

🤔Attention机制允许Decoder在生成每个输出时动态地关注输入序列的不同部分,打破了固定长度上下文向量的限制。
在这里插入图片描述

Attention机制的核心思想是:在生成每个输出词时,动态地为输入序列中的每个词分配不同的权重。具体来说,Attention机制通过以下步骤实现:

  1. 分解输入:将输入序列分解为多个词或token。
  2. 计算注意力分数:对于每个输出词,计算其与输入序列中每个词的相似度(通常通过点积、加性注意力或其他相似度度量方法)。
    • 公式化表示: e t , s = score ( h t , h s ) e_{t,s} = \text{score}(h_t, h_s) et,s=score(ht,hs),其中 h t h_t ht 是Decoder的当前隐藏状态, h s h_s hs 是Encoder的第 s 个隐藏状态。
  3. 计算注意力权重:通过Softmax函数将注意力分数转换为权重,确保权重之和为1。
    • 公式化表示: α t , s = exp ⁡ ( e t , s ) ∑ s ′ exp ⁡ ( e t , s ′ ) \alpha_{t,s} = \frac{\exp(e_{t,s})}{\sum_{s'} \exp(e_{t,s'})} αt,s=sexp(et,s)exp(et,s)
  4. 加权求和:根据注意力权重对Encoder的隐藏状态进行加权求和,生成一个动态的上下文向量 c t c_t ct
    • 公式化表示: c t = ∑ s α t , s h s c_t = \sum_s \alpha_{t,s} h_s ct=sαt,shs
  5. 生成输出:将上下文向量 c t c_t ct 与Decoder的当前隐藏状态 h t h_t ht 结合,生成输出词。

通过这种方式,Attention机制能够有效地捕捉输入序列中的长程依赖关系,并为每个输出词生成一个与其相关的上下文向量。


2. Attention机制的发展类比

先类比一下不同发展阶段:

① 死记硬背:RNN时代

在RNN时代,模型通过大量的背诵词汇和学习语法来理解语言。这种方法的局限性在于难以处理长序列和长程依赖问题。

  • 类比:就像人类学习一门新语言时,最初通过死记硬背词汇和语法规则来掌握基础知识。这种方法虽然简单直接,但难以理解长句子或复杂语境中的深层含义。
② 提纲挈领:Attention机制

Attention机制的引入使得模型能够在生成每个输出词时动态地关注输入序列中的不同部分,从而显著提升了翻译质量。

  • 类比:就像人类在听力练习中,逐渐学会通过关键词和转折句来理解句子的核心意思。Attention机制通过“加权求和”的方式,从输入序列中提取重要信息,忽略不相关部分。
③ 融会贯通:Transformer

Self-Attention使得模型能够在输入序列内部建立全局依赖关系,而不仅仅是依赖Encoder和Decoder之间的交互。这种机制特别适合处理长序列任务,因为它能够直接捕捉序列中任意两个位置之间的关系;

Transformer模型通过自注意力机制(Self-Attention)和多头注意力机制(Multi-Head Attention)进一步提升了模型的表达能力;

  • 类比:就像人类通过大量的听力和日常对话,逐渐理解上下文中的代词指代、名词潜在含义,并学会举一反三。Transformer模型通过多头注意力机制,能够同时关注输入序列中的多个不同部分,从而更全面地理解上下文。
④ 登峰造极:GPT

GPT模型通过大量的预训练数据和自回归生成方式,使得模型能够在各种自然语言处理任务中表现出色,达到了“登峰造极”的境界。

  • 类比:就像人类通过沉浸式的大量练习,最终能够熟练使用新语言,甚至能够信手拈来地表达专业词汇和幽默段子。GPT模型通过海量数据的训练,掌握了语言的深层规律,能够在各种任务中游刃有余。

再来类比一下整个实现的步骤:

① 分解输入

假设我们有一段上下文想要计算机理解。首先,计算机会将这些输入分解为更小的部分,例如单个词汇,或称之为token。

  • 类比:就像人类在阅读时,会将句子分解为单词或短语来理解。
② 挑选出重要的部分

然后,计算机会查看这些部分并决定哪些是最重要的。它会通过每个部分与它心中的认为的“主题”进行比较来实现这一点。

  • 疑问解答:计算机如何知道哪一部分最重要?
    • 这是通过计算每个token与当前任务的“查询”之间的相似度来实现的。相似度越高,说明该token越重要。这个过程类似于K-Means算法中的“距离计算”,但Attention机制中的“查询”是动态变化的,取决于当前任务的需求。
③ 分配重要性

根据每个部分与问题的匹配程度,为其分配一个分数。分数越高,该部分就越重要。对每个部分进行评分后,系统会确定对每个部分应该给予多少关注。得分较高的部分会获得更多关注,而得分较低的部分则会获得较少关注。

  • 疑问解答:为什么需要分配权重?
    • 分配权重的目的是让模型能够动态地关注输入序列中的重要部分,而不是平等对待所有部分。加权求和的结果是一个上下文向量,它综合了输入序列中的重要信息,而不是一个单独的值。
④ 加权求和

最后,计算机将所有信息加起来,但会给重要信息赋予更大的权重。这样,计算机就能更清楚地了解输入中最重要的信息。

  • 疑问解答:为什么不直接分配权重矩阵?
    • 权重矩阵是Attention机制的核心组成部分。通过权重矩阵,模型能够动态地计算每个token的重要性,并生成一个上下文向量。这个上下文向量是模型生成输出的关键输入。

3. 全局注意力和局部注意力

注意力又分为全局注意力和局部注意力,其各有其应用场景;

① 全局注意力

在这里插入图片描述

全局注意力意味着所有的输入都很重要。在全局注意力机制中,模型会考虑编码器LSTM和解码器LSTM的所有隐藏状态来计算可变长度的上下文向量。

  • 计算量大:随着输入大小的增加,矩阵大小随之增加,进而增加了计算量。
  • 隐藏状态:隐藏状态是一个向量,多个隐藏状态代表不同语境下的隐藏状态。权重矩阵是为了方便进行批量的向量运算。
② 局部注意力

在这里插入图片描述

局部注意力是通过定义一个窗口来限制注意力的范围,从而减少计算量,但它仍然是可微的,因此与硬注意力有本质区别。硬注意力是不可微的,通常需要强化学习来训练。

  • 预测对齐位置:模型需要预测在源句子中哪个位置(( p_t ))对于当前的目标词嵌入最为重要。这里的源句子指的是原来的输入,( p_t ) 指的是编码器编码前的段落的token对应的位置向量。预测是通过训练一个模型,输入是当前的目标词token,输出当前句子中与目标词权重最高的token所在的位置向量值。
    • 预测对齐公式 p t = S ⋅ sigmoid ( v p ⊤ tanh ⁡ ( W p h t ) ) p_t = S \cdot \text{sigmoid}(v_p^\top \tanh(W_p h_t)) pt=Ssigmoid(vptanh(Wpht)),其中 S 是源句子长度, v p v_p vp W p W_p Wp 是可学习参数。
  • 定义注意力窗口:在预测的位置 p t p_t pt 周围定义一个大小为 2D 的窗口,其中 D 是经验选择的一个参数。这类似于图像卷积运算中的窗口。
  • 计算上下文向量:上下文向量是窗口内输入序列的加权平均值。权重是根据预测的位置和窗口内的每个位置之间的相似度来计算的。如果对象是矩阵,那么窗口就是一个二维的卷积窗口,计算加权平均值就是窗口内的像元值的均值。如果对象是一维的向量,那么这个输入的序列的均值就是上下文向量。如果这个窗口对全局都进行遍历,相当于对全局文本做了一个平滑处理,最后得到的就是平滑后的文本。
③ 对齐方法
  • 单调对齐:其中 ( p_t ) 设置为 ( t ),假设在时间 ( t ) 时,只有 ( t ) 附近的信息才重要。这意味着距离关键词远的结果权重更低,这也是为什么在大模型最后的时候指定的指令大模型更加遵循。
  • 预测对齐:其中模型本身预测对齐位置如下: p t = S ⋅ sigmoid ( v p ⊤ tanh ⁡ ( W p h t ) ) p_t = S \cdot \text{sigmoid}(v_p^\top \tanh(W_p h_t)) pt=Ssigmoid(vptanh(Wpht)),其中 V p V_p Vp W p W_p Wp是训练过程中学习到的模型参数,S 是源句子长度。这个公式通过sigmoid函数和tanh函数来预测对齐位置,使得模型能够动态地调整注意力窗口。

预测对齐的核心思想是通过一个可学习的模型来动态预测对齐位置,而不是像单调对齐那样简单地假设对齐位置与时间步一致。这种动态预测的能力使得模型能够更好地捕捉输入序列中的复杂依赖关系。


4. 图像字幕任务中的软注意力和硬注意力

  • 软注意力(Soft Attention):在图像字幕任务中,软注意力为所有图像区域分配权重,权重是通过Softmax函数计算的,因此是连续的。软注意力是可微的,适用于端到端训练,对标上面的全局注意力。
  • 硬注意力(Hard Attention):硬注意力是随机选择一个图像区域,而不是只考虑一个图像块。硬注意力通常使用强化学习来训练,因为它是不可微的。
  • 局部注意力与图像字幕任务的关系:局部注意力并不是软注意力和硬注意力的折中,而是一种计算效率更高的软注意力机制。它通过定义一个窗口来限制注意力的范围,从而减少计算量,但仍然保持可微性。

二、 Transformer模型中的Attention机制

1. Transformer模型概述

在这里插入图片描述

Transformer模型由Vaswani等人在2017年提出,完全基于Attention机制,摒弃了传统的RNN和CNN结构。Transformer模型的核心组件包括:

  • 编码器-解码器架构:编码器负责处理输入序列,解码器负责生成输出序列。
  • 自注意力机制(Self-Attention):允许模型在处理每个序列元素时,考虑到序列中所有其他元素的信息。
  • 多头注意力机制(Multi-Head Attention):通过并行计算多个注意力头,捕捉序列中不同部分的依赖关系。
  • 位置编码(Positional Encoding):为序列中的每个元素提供位置信息,以弥补Transformer模型缺乏递归结构的不足。
  • 前馈网络(Feed-Forward Network):在自注意力机制之后,进一步对每个位置的表示进行非线性变换。

2. Transformer组成

在这里插入图片描述

① 编码器-解码器架构

在这里插入图片描述

Transformer模型由编码器和解码器两部分组成,每部分都由多个相同的层堆叠而成。

  • 编码器:编码器由N个相同的层组成,每层包含两个子层:

    1. 多头自注意力机制:用于捕捉输入序列中各个元素之间的关系。
    2. 前馈网络:对每个位置的表示进行非线性变换。

    每个子层后面都接有残差连接(Residual Connection)和层归一化(Layer Normalization),以加速训练并提高模型的稳定性。

  • 解码器:解码器也由N个相同的层组成,每层包含三个子层:

    1. 掩码多头自注意力机制:在生成输出序列时,解码器只能看到当前及之前的元素,因此需要使用掩码来防止未来信息的泄露。
    2. 多头注意力机制:解码器通过该机制关注编码器的输出。
    3. 前馈网络:与编码器中的前馈网络相同,用于进一步处理每个位置的表示。

    解码器的每个子层后面同样接有残差连接和层归一化。

② 自注意力机制(Self-Attention)

自注意力机制是Transformer模型的核心组件之一。其工作原理如下:

  1. 输入表示:将输入序列中的每个词表示为三个向量:Query(Q)、Key(K)和Value(V)。
  2. 计算注意力分数:对于每个Query向量,计算其与所有Key向量的点积,得到注意力分数。
  3. 加权求和:根据注意力分数对Value向量进行加权求和,生成每个词的输出表示。

通过自注意力机制,模型能够捕捉序列中每个词与其他词之间的依赖关系,从而生成上下文丰富的表示。

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

在这里插入图片描述

多头注意力机制通过并行计算多个注意力头,进一步增强了模型的表达能力。每个注意力头独立计算一组Query、Key和Value向量,并生成一个输出表示。最后,将所有注意力头的输出拼接起来,并通过线性变换生成最终的输出。

多头注意力机制的优点在于:

  • 捕捉多样化的依赖关系:不同的注意力头可以关注序列中的不同部分,从而捕捉多样化的依赖关系。
  • 增强模型的表达能力:通过并行计算多个注意力头,模型能够生成更加丰富的表示。
④ 位置编码(Positional Encoding)

在这里插入图片描述

由于Transformer模型缺乏递归结构,无法直接捕捉序列中元素的位置信息。为了解决这个问题,Transformer模型引入了位置编码。位置编码通过将每个词的位置信息编码为一个向量,并与词嵌入向量相加,从而为模型提供序列的顺序信息。

位置编码的公式如下:

P E ( p o s , 2 i ) = sin ⁡ ( p o s 1000 0 2 i d m o d e l ) PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{\frac{2i}{d_{model}}}}\right) PE(pos,2i)=sin(10000dmodel2ipos)

P E ( p o s , 2 i + 1 ) = cos ⁡ ( p o s 1000 0 2 i d m o d e l ) PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{\frac{2i}{d_{model}}}}\right) PE(pos,2i+1)=cos(10000dmodel2ipos)

其中,pos表示词的位置,i表示维度索引, d m o d e l d_{model} dmodel表示词嵌入的维度。

⑤ 前馈网络(Feed-Forward Network)

在这里插入图片描述

在自注意力机制之后,Transformer模型使用前馈网络对每个位置的表示进行进一步的非线性变换。前馈网络由两个线性变换和一个激活函数组成,公式如下:

F F N ( x ) = max ⁡ ( 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

其中, W 1 W_1 W1 W 2 W_2 W2是可学习的权重矩阵, b 1 b_1 b1 b 2 b_2 b2是偏置项。前馈网络的作用是对每个位置的表示进行独立的变换,增强模型的表达能力。

⑥ 残差连接与层归一化

为了加速训练并提高模型的稳定性,Transformer模型在每个子层(自注意力机制和前馈网络)后面都添加了残差连接和层归一化。残差连接通过将输入直接加到输出上,缓解了梯度消失问题。层归一化则通过对每个样本的特征进行归一化,加速了模型的收敛。

3.Transformer工作演示

① 输入文本

假设我们有以下一段文本:

  • 原文

    “The quick brown fox jumps over the lazy dog. The dog, surprised by the sudden movement, barks loudly. The fox, unfazed, continues running.”

我们的目标是生成一个摘要,比如:

  • 摘要

    “A fox jumps over a dog, which barks loudly, but the fox keeps running.”

② Transformer 的处理流程
(1)输入编码(Input Embedding)
  • 每个单词(如 “fox”、“jumps”、“dog”)被转换为一个向量表示(词嵌入)。
  • 位置编码(Positional Encoding) 被添加到词嵌入中,以保留单词在句子中的位置信息。
(2)编码器(Encoder)

编码器由多层组成,每层包含两个主要组件:

  1. 多头自注意力机制(Multi-Head Self-Attention)
  2. 前馈神经网络(Feed-Forward Network)

自注意力机制

  • 目标:让模型关注文本中不同单词之间的关系。
  • 过程
    1. 对于每个单词,计算其 Query(Q)Key(K)Value(V) 向量。
    2. 使用 QK 计算注意力分数,表示单词之间的相关性。
    3. 使用注意力分数对 V 进行加权求和,得到每个单词的上下文表示。

多头机制

  • 模型会并行计算多个注意力头(例如 8 个),每个头关注不同的语义关系。
  • 例如:
    • 一个头可能关注 “fox” 和 “jumps” 之间的关系(动作)。
    • 另一个头可能关注 “dog” 和 “barks” 之间的关系(反应)。

前馈神经网络:

对自注意力机制的输出进行非线性变换,进一步增强表示能力。

(3)解码器(Decoder)

解码器也由多层组成,每层包含三个主要组件:

  1. 掩码多头自注意力机制(Masked Multi-Head Self-Attention)
  • 解码器只能看到当前及之前的单词,避免未来信息泄露。
  1. 编码器-解码器注意力机制(Encoder-Decoder Attention)
  • 解码器关注编码器的输出,结合上下文信息。
  1. 前馈神经网络(Feed-Forward Network)
  • 对注意力机制的输出进行进一步处理。

③ 具体流程演示
(1)编码器处理输入文本
  • 模型首先对输入文本进行编码。
  • 在多头自注意力机制中:
  - 一个注意力头发现 “fox” 和 “jumps” 之间的关系(动作)。
  - 另一个注意力头发现 “dog” 和 “barks” 之间的关系(反应)。
  - 第三个注意力头发现 “fox” 和 “running” 之间的关系(持续动作)。
  • 解码器根据编码器的输出,逐步生成摘要。

例如:

  1. 生成单词 “A”:
     - 解码器从编码器中提取到 “fox” 是句子的主语。
  2. 生成单词 “fox”:
     - 解码器关注编码器中 “fox” 的上下文信息。
  3. 生成单词 “jumps”:
     - 解码器从编码器中提取到 “fox” 和 “jumps” 之间的关系。
  4. 生成单词 “over”:
     - 解码器关注编码器中 “jumps” 和 “dog” 之间的关系。
  5. 生成单词 “a”:
     - 解码器从编码器中提取到 “dog” 是句子的宾语。
  6. 生成单词 “dog”:
     - 解码器关注编码器中 “dog” 的上下文信息。
  7. 生成单词 “which”:
     - 解码器从编码器中提取到 “dog” 和 “barks” 之间的关系。
  8. 生成单词 “barks”:
     - 解码器关注编码器中 “barks” 的上下文信息。
  9. 生成单词 “loudly”:
     - 解码器从编码器中提取到 “barks” 和 “loudly” 之间的关系。
  10. 生成单词 “but”:
      - 解码器关注编码器中 “fox” 和 “running” 之间的关系。
  11. 生成单词 “the”:
      - 解码器从编码器中提取到 “fox” 是句子的主语。
  12. 生成单词 “fox”:
      - 解码器关注编码器中 “fox” 的上下文信息。
  13. 生成单词 “keeps”:
      - 解码器从编码器中提取到 “fox” 和 “running” 之间的关系。
  14. 生成单词 “running”:
      - 解码器关注编码器中 “running” 的上下文信息。
  • 最终生成的摘要为:
    “A fox jumps over a dog, which barks loudly, but the fox keeps running.”

在这个例子中,多头注意力机制的作用体现在:

  1. 捕捉多样化的语义关系
    • 一个注意力头关注 “fox” 和 “jumps” 之间的关系(动作)。
    • 另一个注意力头关注 “dog” 和 “barks” 之间的关系(反应)。
    • 第三个注意力头关注 “fox” 和 “running” 之间的关系(持续动作)。
  2. 增强模型的表达能力
    • 通过并行计算多个注意力头,模型能够生成更加丰富和准确的摘要。

希望这个demo能帮助各位更好地理解 Transformer 的工作流程🙂!

4.Transformer模型在GIS中的应用案例

作为一个GIS开发者,我也得举个案例辅助同行理解:我们可以将其应用到地理信息系统(GIS)中的一个具体案例中。假设我们正在处理一个城市交通流量预测的任务,目标是预测未来某个时间段的交通流量。我们可以将这个过程类比为Transformer模型的工作方式。

① 数据收集阶段(编码器 - Encoder)

类比:收集交通数据

  • 收集信息:首先,我们需要收集城市中各个路段的交通流量数据,包括历史流量、天气情况、节假日信息等。这就像Transformer模型的编码器在接收输入信息。
  • 记录数据:我们将这些数据记录下来,比如某条道路在早高峰时段的平均车速、某个交叉口的车流量等。这些记录就像Transformer模型中的“编码”过程,将原始信息转换成内部表示。
② 数据分析阶段(自注意力机制 - Self-Attention)

类比:分析交通数据的关联性

  • 考虑关联性:在分析交通数据时,我们注意到某些路段在特定天气条件下的流量会显著增加,比如下雨天时,高速公路的流量可能会减少,而城市主干道的流量会增加。这个考虑关联性的过程就像Transformer模型中的自注意力机制,它能够注意到不同信息之间的关联性。
  • 优先级排序:我们进一步发现,某些路段在节假日期间的流量变化最为显著,因此我们会优先考虑这些路段的数据。这个决定过程就像自注意力机制中的权重分配,重要的信息会被赋予更高的权重。
③ 预测阶段(解码器 - Decoder)

类比:生成交通流量预测

  • 按计划预测:根据记录的交通数据和考虑到的关联性,我们开始生成未来某个时间段的交通流量预测。这就像Transformer模型的解码器,它根据编码器的输出和自注意力机制的结果来生成最终的输出。
  • 调整细节:在预测过程中,我们可能会根据实际情况调整预测模型,比如发现某个路段的施工信息,我们会调整该路段的预测结果。这就像解码器在生成输出时会根据上下文调整细节。
⑤ 结果应用阶段

类比:应用预测结果

  • 享受成果:最终,我们得到了未来某个时间段的交通流量预测结果,并可以将其应用于交通管理、路线规划等实际场景中。这就像Transformer模型成功完成了预测任务。

通过这个GIS中的交通流量预测案例,我们可以看到Transformer模型的工作流程:

  • 编码器(数据收集阶段接收并处理输入信息(交通数据)。
  • 自注意力机制(数据分析阶段识别信息之间的关联性并分配权重(考虑天气、节假日等因素)。
  • 解码器(预测阶段根据编码器的输出和自注意力机制的结果生成最终的输出(交通流量预测)。
  • 结果应用阶段将预测结果应用于实际场景中。

这样,Transformer模型就像一个高效的交通流量预测系统,能够根据不同的数据需求和关联性来完成任务。

作者这里再次感谢一下Deepseek😉😊帮我生成这个案例!


三、Transformer模型的计算复杂度与并行性

1. 计算复杂度

Transformer模型的计算复杂度主要来自于自注意力机制。假设输入序列长度为 n n n,每个词的维度为 d d d,则自注意力机制的计算复杂度为 O ( n 2 ⋅ d ) O(n^2 \cdot d) O(n2d)。相比之下,RNN的计算复杂度为 O ( n ⋅ d 2 ) O(n \cdot d^2) O(nd2),CNN的计算复杂度为 O ( k ⋅ n ⋅ d 2 ) O(k \cdot n \cdot d^2) O(knd2),其中 k k k为卷积核的大小。

2. 并行操作数量

Transformer模型的并行操作数量为 O ( 1 ) O(1) O(1),因为自注意力机制可以同时计算所有词的注意力分数。相比之下,RNN的并行操作数量为 O ( n ) O(n) O(n),因为RNN需要按顺序处理每个词。

3. 最长计算路径

Transformer模型的最长计算路径为 O ( 1 ) O(1) O(1),因为自注意力机制可以一次性处理整个序列。相比之下,RNN的最长计算路径为 O ( n ) O(n) O(n),因为RNN需要依次处理每个词。


四、Transformer模型的应用与发展

1. 应用场景

在这里插入图片描述

Transformer模型在NLP领域的应用非常广泛,包括:

  • 机器翻译:Transformer模型在机器翻译任务中取得了显著的性能提升。
  • 文本摘要:通过捕捉文本中的关键信息,Transformer模型能够生成高质量的文本摘要。
  • 问答系统:Transformer模型能够理解问题的上下文,并生成准确的答案。

2. 预训练模型的发展

Transformer模型的成功为预训练模型的发展奠定了基础。例如,BERT、GPT等模型都是基于Transformer架构的预训练模型。这些模型通过在大量未标注文本上进行预训练,学习到了丰富的语言表示,并在多种下游任务中取得了显著的性能提升。

在这里插入图片描述

年份里程碑模型/技术主要贡献
2013Word Embedding提出词嵌入(如 Word2Vec),将单词映射到低维向量空间,捕捉语义信息。
2017Transformer提出 Transformer 模型,完全基于注意力机制,摒弃 RNN 和 CNN 结构。
2018ELMo提出上下文相关的词表示(Contextualized Word Embeddings)。
2018Transformer-Decoder (GPT-1)提出 GPT-1,基于 Transformer 解码器,用于生成式预训练。
2018BERT提出 BERT,基于 Transformer 编码器,使用双向上下文进行预训练。
2019Transformer-XL提出 Transformer-XL,解决长文本建模问题,引入循环机制。
2019XLNet提出 XLNet,结合自回归和自编码的优点,提升预训练效果。
2019GPT-2提出 GPT-2,更大规模的 GPT 模型,生成能力显著提升。
2020GPT-3提出 GPT-3,参数量达到 1750 亿,展示了少样本学习和强大生成能力。
2021Codex (基于 GPT-3)提出 Codex,专门用于代码生成和理解,支持 GitHub Copilot。
2022ChatGPT (基于 GPT-3.5)提出 ChatGPT,专注于对话生成,展示了强大的自然语言交互能力。
2023GPT-4提出 GPT-4,进一步扩展模型规模,支持多模态输入(文本、图像等)。

五、Transformer vs CNN vs RNN

特征提取器计算复杂度并行操作数量学习距离长度
Transformer O ( n 2 ⋅ d ) O(n^2 \cdot d) O(n2d) O ( 1 ) O(1) O(1) O ( 1 ) O(1) O(1)
CNN O ( k ⋅ n ⋅ d 2 ) O(k \cdot n \cdot d^2) O(knd2) O ( n ) O(n) O(n) O ( log ⁡ k n ) O(\log_k n) O(logkn)
RNN O ( n ⋅ d 2 ) O(n \cdot d^2) O(nd2) O ( n ) O(n) O(n) O ( n ) O(n) O(n)

六、总结

Attention机制通过动态地为输入序列中的每个词分配不同的权重,有效地解决了传统Encoder-Decoder架构中的长程依赖问题。Transformer模型通过引入自注意力机制和多头注意力机制,进一步增强了模型的表达能力,并在NLP任务中取得了显著的性能提升。随着预训练模型的发展,Transformer模型的应用前景将更加广阔。🤔

OK!今天就学习到这里了!🙂


项目地址

  • 拓展阅读
  • 专栏文章

thank_watch

如果觉得我的文章对您有帮助,三连+关注便是对我创作的最大鼓励!或者一个star🌟也可以😂.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/956441.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PHP变量

目录 变量的定义 预定义变量 $_SERVER $_GET $_POST $_REQUEST $_COOKIE $_SESSION $_FILES 变量作用域 global 关键字 static 变量 可变变量 完结 上一篇文章已经学习了PHP的数据类型,今天将学习新的内容:变量。 变量的定义 PHP 中变量…

四、CSS效果

一、box-shadow box-shadow:在元素的框架上添加阴影效果 /* x 偏移量 | y 偏移量 | 阴影颜色 */ box-shadow: 60px -16px teal; /* x 偏移量 | y 偏移量 | 阴影模糊半径 | 阴影颜色 */ box-shadow: 10px 5px 5px black; /* x 偏移量 | y 偏移量 | 阴影模糊半径 | 阴影扩散半…

STM32 FreeRTOS 事件标志组

目录 事件标志组简介 基本概念 1、事件位(事件标志) 2、事件组 事件组和事件位数据类型 事件标志组和信号量的区别 事件标志组相关API函数介绍 事件标志组简介 基本概念 当在嵌入式系统中运行多个任务时,这些任务可能需要相互通信&am…

【网络原理】万字详解 HTTP 协议

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. HTTP 前置知识1.1 HTTP 是什么1.2 HTPP 协议应用场景1.3 HTTP 协议工作过程 2. HTTP 协议格式2.1 fiddler…

打造餐饮品牌的产品矩阵:美味与策略的完美融合-中小企实战运营和营销工作室博客

打造餐饮品牌的产品矩阵:美味与策略的完美融合-中小企实战运营和营销工作室博客 在竞争激烈的餐饮市场中,打造一个成功的餐饮品牌,关键在于构建一个强大且富有吸引力的产品矩阵。这不仅涉及到研发出令人垂涎欲滴的美味佳肴,更需要…

[Qt] Box Model | 控件样式 | 实现log_in界面

目录 1、样式属性 (1)盒模型(Box Model) 2、控件样式示例 (1)按钮 (2)复选框 (3)单选框 (4)输入框 (5&#xff09…

【LangChain】Chapter10 - Retrieval

说在前面 上一节,我们介绍了语义搜索的基础知识,并做了一些实践案例,可以看到在有些情况下效果不错,但同时也能看到存在一些边缘情况。本节将介绍 检索(Retrieval)以及讲解一些解决这些边缘案例的高级方法。&#xff…

【物联网】ARM核介绍

文章目录 一、芯片产业链1. CPU核(1)ARM(2)MIPS(3)PowerPc(4)Intel(5)RISC-V 2. SOC芯片(1)主流厂家(2)产品解决方案 3. 产品 二、ARM核发展1. 不同架构的特点分析(1)VFP(2)Jazelle(3)Thumb(4)TrustZone(5)SIMD(6)NEON 三、ARM核(ARMv7)工作模式1. 权限级别(privilege level)2.…

【深度学习】关键技术-损失函数(Loss Function)

损失函数(Loss Function) 是机器学习和深度学习模型训练过程中的核心概念,用于度量模型的预测输出与真实标签之间的差异。通过最小化损失函数的值,模型可以逐步优化其参数,提高预测性能。 损失函数的作用 衡量模型性能…

软件测试 —— Postman(2)

软件测试 —— Postman(2) GETURL结构协议与主机名路径查询字符串(Query String) 总结 urlcode和urldecodeParams 参数Authorization基本结构常见的认证方案1. Basic 认证2. Bearer Token (OAuth 2.0)3. API 密钥4. 其他认证方案 …

靠右行驶数学建模分析(2014MCM美赛A题)

笔记 题目 要求分析: 比较规则的性能,分为light和heavy两种情况,性能指的是 a.流量与安全 b. 速度限制等分析左侧驾驶分析智能系统 论文 参考论文 两类规则分析 靠右行驶(第一条)2. 无限制(去掉了第一条…

算法日记6.StarryCoding P52:我们都需要0(异或)

一、题目 二、题解: 1、对于这道题,题意为让我们寻找一个数x使得 b[i]a[i]^x, 并且b[1]^b[2]^b[3]^ b[4]^b[5]....0 2、我们把b[i]给拆开,可以得到 3、又因为^满足结合律,因此,可以把括号给拆开 4、接着…

快速入门:如何注册并使用GPT

文章目录 ProtonMail邮箱步骤 1:访问Proton官网步骤 2:创建ProtonMail账户步骤 3:选择注册免费账户步骤 4:填写邮箱地址和手机号(可选)步骤 5:邮箱验证(必须进行验证)步骤…

嵌入式硬件篇---PID控制

文章目录 前言第一部分:连续PID1.比例(Proportional,P)控制2.积分(Integral,I)控制3.微分(Derivative,D)控制4.PID的工作原理5..实质6.分析7.各种PID控制器P控…

将IDLE里面python环境pyqt5配置的vscode

首先安装pyqt5全套:pip install pyqt5-tools 打开Vscode: 安装第三方扩展:PYQT Integration 成功配置designer.exe的路径【个人安装pyqt5的执行路径】,便可直接打开UI文件,进行编辑。 配置pyuic,如果下图填写方法使用…

LDD3学习9--数据类型和定时器

这部分对应的是第七章和第十一章,因为内容也不是很多,就一起写了。里面的内容基本上就是一个个的点,所以也就一个个点简单总结一下。 1 数据类型 1.1 数据长度 不同操作系统类型长度可能不一样,看图的话最好用u8,u16&…

python http server运行Angular 单页面路由时重定向,解决404问题

问题 当Angular在本地ng server运行时候,可以顺利访问各级路由。 但是运行ng build后,在dist 路径下的打包好的额index.html 必须要在服务器下运行才能加载。 在服务器下我们第一次访问路由页面时是没有问题的,但是尝试刷新页面或手动输入路…

SparkSQL数据源与数据存储

文章目录 1. 大数据分析流程2. Spark SQL数据源2.1 SparkSQL常见数据源2.2 SparkSQL支持的文本格式2.3 加载外部数据源步骤 3. 本地文件系统加载数据3.1 本地文件系统加载JSON格式数据3.1.1 概述3.1.2 案例演示 3.2 本地文件系统加载CSV格式数据3.2.1 概述3.2.2 案例演示 3.3 本…

LLM - 大模型 ScallingLaws 的 CLM 和 MLM 中不同系数(PLM) 教程(2)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145188660 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Scalin…

AI agent 在 6G 网络应用,无人机群控场景

AI agent 在 6G 网络应用,无人机群控场景 随着 6G 时代的临近,融合人工智能成为关键趋势。借鉴 IT 行业 AI Agent 应用范式,提出 6G AI Agent 技术框架,包含多模型融合、定制化 Agent 和插件式环境交互理念,构建了涵盖四层结构的框架。通过各层协同实现自主环境感知等能力…