【Transformer】架构:解锁自然语言处理的无限可能

🐇明明跟你说过:个人主页

🏅个人专栏:《深度探秘:AI界的007》 🏅

🔖行路有良友,便是天堂🔖

目录

一、引言

1、什么是LLM

2、Transformer在LLM中的作用

二、Transformer架构基础

1、Transformer的诞生

2、Transformer的核心组件概览

三、Transformer模型详解

1、输入表示与处理

[1️⃣ 输入数据的预处理](#1️⃣ 输入数据的预处理)

[2️⃣ 输入嵌入(Input Embedding)](#2️⃣ 输入嵌入(Input Embedding))

[3️⃣ 位置编码(Positional Encoding)](#3️⃣ 位置编码(Positional Encoding))

[4️⃣ Transformer 输入表示示意图](#4️⃣ Transformer 输入表示示意图)

2、编码器(Encoder)结构

[1️⃣ 编码器(Encoder)基本结构](#1️⃣ 编码器(Encoder)基本结构)

[2️⃣ 多头自注意力机制(Multi-Head Self-Attention)](#2️⃣ 多头自注意力机制(Multi-Head Self-Attention))

3、解码器(Decoder)结构

[1️⃣ 解码器(Decoder)基本结构](#1️⃣ 解码器(Decoder)基本结构)

[2️⃣ 解码器的核心模块](#2️⃣ 解码器的核心模块)

[3️⃣ 解码器完整计算流程](#3️⃣ 解码器完整计算流程)

4、编码器-解码器交互

[1️⃣ 编码器-解码器交互的核心目标](#1️⃣ 编码器-解码器交互的核心目标)

[2️⃣ 交互流程(Encoder-Decoder Attention)](#2️⃣ 交互流程(Encoder-Decoder Attention))

[3️⃣ 编码器-解码器交互的核心机制](#3️⃣ 编码器-解码器交互的核心机制)

[4️⃣ 交互示例](#4️⃣ 交互示例)


一、引言

1、什么是LLM

LLM 就像一个超级"语言大脑" ,它能理解、生成、总结、翻译各种人类语言的文本,就像一个超级智能的"文字助手"。

🚀 LLM 的核心特点

  1. 📖 吸收大量知识

    • 它是通过学习 海量的文本数据(比如书籍、网站、论文)来"理解"人类语言的。
    • 训练后,它能像人一样对话、写文章、总结信息。
  2. 📝 预测下一个单词

    • 它的原理其实很简单,就是不断预测下一个最可能出现的单词,就像玩填字游戏一样。
    • 例如:
      输入 :「天气真好,我们去......」
      LLM 预测:「公园散步」「海边游泳」等等。
    • 但因为训练数据足够多,它的预测非常智能,就像会思考一样。
  3. 🛠 适用于多种任务

    • 对话:像 ChatGPT 一样聊天。
    • 写作:写文章、编故事、写代码。
    • 翻译:把英文翻译成中文,反之亦然。
    • 信息处理:总结长文、分析数据、回答问题。

📌 现实中的 LLM

  • ChatGPT(GPT-3.5 / GPT-4) 👉 你正在使用的聊天 AI。
  • Claude(Anthropic) 👉 另一个智能助手。
  • Gemini(Google) 👉 Google 的 AI 模型。
  • Llama(Meta) 👉 开源 LLM。

2、Transformer在LLM中的作用

Transformer 是 LLM 的核心"引擎" ,它决定了模型如何高效理解和生成语言。可以把它比作超级大脑的运算核心,让 AI 具备强大的语言处理能力。

在 LLM(如 GPT-4、ChatGPT)中,Transformer 主要负责以下 3 个关键任务:

1️⃣ 编码输入(理解文本)

  • LLM 需要理解你输入的内容 ,Transformer 通过 Self-Attention(自注意力机制) 找出句子中最重要的部分。
  • 例如:
    输入 :「AI 是一种强大的工具,它可以帮助人们提高效率。」
    Transformer 处理后:它能知道「AI」和「工具」、「帮助」和「提高效率」这些词关系密切。

2️⃣ 预测下一个词(生成文本)

  • Transformer 通过 自回归(Autoregressive) 预测下一个可能的单词。
  • 例如:
    输入 :「今天的天气很好,我们去」
    模型预测:「公园散步」「海边玩耍」「外面吃饭」等可能的结果。

3️⃣ 长文本记忆(关联上下文)

  • Transformer 让 LLM 能理解长篇内容,不像旧的 RNN 那样容易"忘记"前面的话。
  • Self-Attention 机制 让它能处理上千个词的上下文,使得回答更加连贯。
  • 例如:
    • 旧的 RNN 可能会"忘记"前几句的内容。
    • Transformer 可以一直记住对话的上下文,确保回答不离题。

二、Transformer架构基础

1、Transformer的诞生

📜 Transformer 的诞生:从 RNN 到 Attention 机制的革命

🔍 Transformer 诞生的背景

在 2017 年之前,NLP(自然语言处理)主要依赖 RNN(循环神经网络)LSTM(长短时记忆网络) 处理文本。但这些方法有几个严重的缺点:

  1. 训练慢:RNN/LSTM 需要逐字处理文本,难以并行化,训练成本高。
  2. 长期依赖问题:长文本容易"忘记"前面的内容,导致语义理解不准确。
  3. 梯度消失:深层网络训练时,梯度可能消失或爆炸,使得模型难以学习。

于是,研究人员开始探索新的架构,最终 Transformer 在 2017 年横空出世! 🚀

📅 2017 年:Transformer 论文问世

2017 年,Google Brain 团队发表了一篇震撼 NLP 领域的论文: 👉 《Attention is All You Need》(注意力就是一切)

这篇论文提出了一种全新的深度学习架构------Transformer ,彻底摆脱了 RNN/LSTM,而是 完全依赖 Attention(注意力机制) 来处理文本。

自从 2017 年 Transformer 诞生后,NLP 领域发生了革命性的变化:

  • 2018 年:Google 发布 BERT(基于 Transformer 的预训练语言模型)
  • 2020 年:OpenAI 发布 GPT-3(使用 Transformer 进行文本生成)
  • 2023 年:GPT-4、LLama、Claude 等模型纷纷崛起

如今,所有主流的大语言模型(LLM)都基于 Transformer 架构,它已经成为 AI 领域的基石!🚀

2、Transformer的核心组件概览

Transformer 由 编码器(Encoder)解码器(Decoder) 组成,每个部分都由多个核心组件构成。

🧩 1. 输入嵌入(Input Embedding)

  • 作用:将输入的文本(单词或字符)转换为向量表示。
  • 方式:通常使用 词向量(Word Embedding)Token Embedding(如 Word2Vec、BERT 词嵌入等)。
  • 示例:
    • 句子 "Hello world" → ["Hello", "world"]

    • 通过嵌入层转换为向量:

      Hello → [0.12, 0.98, -0.45, ...]
      World → [0.67, -0.22, 0.78, ...]


📍 2. 位置编码(Positional Encoding)

  • Transformer 不具备序列信息 ,所以需要位置编码来引入单词的顺序信息。
  • 方式:使用正弦和余弦函数生成固定的编码,将其加到输入嵌入上:
  • 作用:让 Transformer 能够区分 "Hello world " 和 "World Hello"。

🎯 3. 多头自注意力(Multi-Head Self-Attention)

(1)自注意力(Self-Attention)

  • 作用:让模型能够关注句子中最重要的单词,而不仅仅是靠前或靠后的信息。
  • 计算方式:
    1. 生成 Q(Query),K(Key),V(Value)矩阵
      • Q:表示当前单词对其他单词的关注度。
      • K:表示当前单词的特征。
      • V:表示当前单词的实际值。
    2. 计算注意力分数
      • 计算 QK^T(查询和键的点积),然后用 Softmax 归一化
    3. 根据注意力权重调整 V,得到新的单词表示。

(2)多头注意力(Multi-Head Attention)

  • 作用:使用多个独立的注意力头,让模型可以关注不同方面的信息(如语法、语义)。
  • 方式:多个 Self-Attention 头并行计算,每个注意力头关注不同的上下文信息。

🔄 4. 前馈神经网络(Feed Forward Network, FFN)

  • 作用:对每个单词独立进行非线性变换,增加模型的表达能力。
  • 结构:包含两个全连接层(带 ReLU 激活函数)

🔁 5. 残差连接(Residual Connection)+ 层归一化(Layer Normalization)

  • 残差连接(Residual Connection)

    • 作用:缓解梯度消失问题,使得深层 Transformer 仍然可以学习。
    • 方式:在每个模块的输出 + 原始输入
  • 层归一化(Layer Normalization)

    • 作用:防止内部协变量偏移(Internal Covariate Shift),加快训练速度。

📦 6. 编码器(Encoder)

  • 结构:由多个相同的 Encoder 层堆叠而成(通常是 6 层)。
  • 组成
    1. 多头自注意力(Self-Attention)
    2. 前馈神经网络(FFN)
    3. 残差连接 + 层归一化
  • 作用:将输入文本编码成更丰富的语义向量。

📦 7. 解码器(Decoder)

  • 结构 :与 Encoder 类似,但多了一个 "掩码多头注意力(Masked Multi-Head Attention)"
  • 组成
    1. Masked Multi-Head Attention(掩码多头自注意力)
      • 作用:防止解码器看到未来的单词,使得模型能够按照自回归方式生成文本。
    2. Encoder-Decoder Multi-Head Attention
      • 作用:解码器能够关注编码器的输出,使得生成的文本与输入相关。
    3. 前馈神经网络(FFN)
    4. 残差连接 + 层归一化
  • 作用:根据输入的编码表示,逐步生成输出。

🔚 8. 输出层(Output Layer)

  • 作用:最终生成概率分布,预测下一个单词。
  • 方式:使用 Softmax 计算单词的概率分布,选取概率最高的单词作为输出

三、Transformer模型详解

1、输入表示与处理

Transformer 在处理文本时,需要将原始输入转换为模型可以理解的格式。这一过程涉及多个关键步骤,包括**分词、嵌入(Embedding)、位置编码(Positional Encoding)**等。

1️⃣ 输入数据的预处理

Transformer 处理文本的第一步是将文本转换为离散的数值表示,主要包括:

  • 分词(Tokenization)
  • 词表(Vocabulary)映射
  • 添加特殊标记(如 [CLS], [SEP]

(1)分词(Tokenization)

分词是将文本拆分成更小的单位,比如单词、子词或字符。常见的分词方法:

  • Word-based(基于单词) :如 ["Hello", "world"]
  • Subword-based(基于子词) (BERT、GPT 使用的方式):如 ["Hel", "lo", "world"]
  • Character-based(基于字符) :如 ["H", "e", "l", "l", "o", "w", "o", "r", "l", "d"]

为什么使用 Subword?

  • 避免 **OOV(Out of Vocabulary,词表外单词)**问题
  • 兼顾单词级和字符级的优势

常见分词算法

  • BPE(Byte Pair Encoding) → GPT 系列
  • WordPiece → BERT
  • SentencePiece → T5、mT5

示例 原始文本:

复制代码
Transformer is amazing!
复制代码
BPE 分词:
复制代码
["Transform", "er", "is", "amaz", "ing", "!"]

WordPiece 分词:

复制代码
["Trans", "##former", "is", "amazing", "!"]

(2)词表(Vocabulary)映射

Transformer 不能直接处理文本,而是通过一个 固定的词表(Vocabulary) 把分词后的 token 转换为索引(整数)。

复制代码
Vocabulary:
{
    "hello": 3145,
    "world": 9271,
    "amazing": 4212,
    ...
}

分词后的结果:

复制代码
["Trans", "##former", "is", "amazing", "!"]

对应的索引:

复制代码
[1284, 9521, 102, 4212, 99]

(3)添加特殊标记

在 Transformer 任务(如 BERT、GPT)中,我们通常会添加一些特殊标记:

  • [CLS](分类任务,如文本分类)
  • [SEP](分隔符,用于句子对任务)
  • [MASK](用于 BERT 预训练)

示例(BERT 任务):

复制代码
[CLS] How are you? [SEP] I am fine. [SEP]

转换为 token:

复制代码
["[CLS]", "How", "are", "you", "?", "[SEP]", "I", "am", "fine", ".", "[SEP]"]

对应索引:

复制代码
[101, 2129, 2024, 2017, 1029, 102, 1045, 2572, 2986, 1012, 102]

2️⃣ 输入嵌入(Input Embedding)

Transformer 需要将整数索引转换为高维向量(Embedding),使模型能够学习单词之间的语义关系。

(1)嵌入层(Embedding Layer)

每个 token 都会被映射到一个固定维度的向量:

  • 维度通常为 768(BERT-base)、1024(GPT-3)、4096(GPT-4)

  • 例如:

    "Hello" → [0.12, 0.98, -0.45, ..., 0.67] (768 维)
    "World" → [0.34, -0.12, 0.56, ..., -0.78] (768 维)

示例:

复制代码
"Hello world" → 词嵌入矩阵:
[
  [0.12, 0.98, -0.45, ..., 0.67],   # "Hello"
  [0.34, -0.12, 0.56, ..., -0.78]   # "World"
]

3️⃣ 位置编码(Positional Encoding)

❓ 为什么需要位置编码? Transformer 没有循环结构(不像 RNN 那样按顺序输入),所以需要额外的信息来表示单词的 位置 ,否则它无法区分 "Hello world""World Hello"

4️⃣ Transformer 输入表示示意图

最终 Transformer 输入是一个矩阵,每一行表示一个 Token:

复制代码
[
  [0.12, 0.98, -0.45, ..., 0.67]  # "Hello" + Positional Encoding
  [0.34, -0.12, 0.56, ..., -0.78]  # "World" + Positional Encoding
]

这个矩阵会进入 多头注意力(Multi-Head Attention) 进行计算。

Transformer 处理输入的流程:

  1. 文本预处理
    • 分词(Tokenization)
    • 词表映射(Vocabulary)
    • 添加特殊标记(如 [CLS], [SEP]
  2. 输入嵌入
    • 通过 Embedding 层 将 Token 变为向量
  3. 位置编码
    • 正弦/余弦函数 生成位置信息,并加到词嵌入上

最终,得到一个带有语义和位置信息的 数值矩阵,作为 Transformer 的输入。

这样,Transformer 就能无视句子长度、并行处理整个文本,同时保留单词顺序信息! 🚀

2、编码器(Encoder)结构

Transformer 的 编码器(Encoder) 负责处理输入文本,并将其转换为高维语义表示。它是 Transformer 结构的核心部分,主要用于自然语言理解(NLU)任务,如 BERT、T5 等。

1️⃣ 编码器(Encoder)基本结构

Transformer 的编码器由 多个相同的编码器层(Encoder Layer) 堆叠而成。每个编码器层包含两个主要部分:

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

输入序列 -----> [Embedding + 位置编码]

┌──────────────────┐

│ 编码器层 1 │

├──────────────────┤

│ 编码器层 2 │

├──────────────────┤

│ 编码器层 N │

└──────────────────┘

语义表示

其中:

  • 每个 编码器层(Encoder Layer) 结构相同
  • N 层堆叠(BERT-base 用 12 层,BERT-large 用 24 层)
  • 输入和输出维度相同,便于堆叠

2️⃣ 多头自注意力机制(Multi-Head Self-Attention)

编码器的核心是 自注意力机制(Self-Attention),它允许模型关注整个输入序列的不同部分,而不仅仅是局部信息(如 CNN 或 RNN)。

给定输入序列:

复制代码
"The", "cat", "sat", "on", "the", "mat"] 

自注意力计算每个单词相对于所有其他单词的重要性:

复制代码
"The"  →  关注 ["The", "cat", "sat", "on", "the", "mat"]
"cat"  →  关注 ["The", "cat", "sat", "on", "the", "mat"]
...

这使得模型可以:

  • 关注远距离的单词(长依赖关系)
  • 处理不同语境下的相同单词(如 "bank" 在不同句子中的含义)

3、解码器(Decoder)结构

解码器(Decoder)是 Transformer 模型的另一半,主要用于生成任务 (如机器翻译、文本摘要、代码生成等)。它的作用是根据编码器的输出,逐步生成目标序列

1️⃣ 解码器(Decoder)基本结构

解码器由 多个相同的解码器层(Decoder Layer) 叠加而成,每层包括:

  1. Masked 多头自注意力(Masked Multi-Head Self-Attention)
  2. 跨注意力(Encoder-Decoder Attention)
  3. 前馈神经网络(FFN)

目标序列 -----> [Embedding + 位置编码]

┌──────────────────┐

│ 解码器层 1 │

├──────────────────┤

│ 解码器层 2 │

├──────────────────┤

│ 解码器层 N │

└──────────────────┘

生成输出

  • 输入是目标序列(如翻译任务中的目标语言)
  • 解码器每次只能看到过去的单词(使用 Mask 机制)
  • 依赖编码器提供的上下文信息
  • 最终输出用于生成文本

2️⃣ 解码器的核心模块

(1)Masked 多头自注意力(Masked Multi-Head Self-Attention)

解码器的第一步是 自注意力机制 ,但与编码器不同,它采用 Masked(掩码) 机制:

  • 防止模型看到未来的单词
  • 保证自回归特性(Autoregressive)

(2)跨注意力(Encoder-Decoder Attention)

这一层是解码器唯一能访问编码器输出的地方 ,用于获取源语言句子的上下文信息

3️⃣ 解码器完整计算流程

1. 输入

  • 目标序列 经过 Embedding + 位置编码
  • 初始时只有起始标记(<BOS>)

2. Masked 多头自注意力

  • 计算 Query、Key、Value
  • 计算注意力分数
  • Mask 未来单词,防止作弊

3. 跨注意力(Encoder-Decoder Attention)

  • Query 来自解码器
  • Key、Value 来自编码器
  • 关注源文本的不同部分

4. 前馈神经网络(FFN)

  • 线性变换 + ReLU
  • 线性变换

5. 归一化 + 残差连接

  • 进行 LayerNorm
  • 传递给下一层

6. 最终输出

  • 传入 线性层 + Softmax
  • 选择下一个单词,继续解码

4、编码器-解码器交互

在 Transformer 结构中,编码器(Encoder)和解码器(Decoder)交互 是关键,它们协同工作,实现从输入到输出的转换,例如机器翻译(MT)、文本摘要(Summarization)、语音识别(ASR)等任务。

1️⃣ 编码器-解码器交互的核心目标

🔹 编码器作用 :将输入序列转换为高维表示(上下文向量) ,包含全局信息。

🔹 解码器作用 :利用编码器的输出,逐步生成目标序列

🔹 交互方式 :解码器通过 跨注意力(Cross-Attention) 机制与编码器交互,获取编码器的上下文信息。

2️⃣ 交互流程(Encoder-Decoder Attention)

编码器-解码器的交互主要体现在 解码器的"跨注意力层" (Encoder-Decoder Attention)。

该部分使解码器能访问编码器的输出,以生成正确的目标序列。

输入句子(源语言) -----> 编码器(Encoder)

编码器输出(上下文向量)

┌────────────────────┐

│ 解码器(Decoder) │

└────────────────────┘

生成目标句子(目标语言)

📌 详细流程

  1. 输入处理
  • 输入序列 X (如 "The cat sat on the mat")经过 嵌入(Embedding)+ 位置编码(Positional Encoding) 处理,进入编码器
  1. 编码器处理
  • 通过多层自注意力 + FFN ,将输入转换为一组 高维上下文向量(Context Representation)。
  • 这些向量保留了输入句子的重要信息,如词语之间的关系、句子结构等。
  1. 解码器接收输入
  • 解码器 接收目标句子的前一部分(如 "Le chat")。
  • 经过 Masked 自注意力 处理,确保解码器不会看到未来的单词。
  1. 跨注意力(Encoder-Decoder Attention)
  • 解码器计算 Query(Q) ,编码器提供 Key(K)和 Value(V): Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax} \left( \frac{QK^T}{\sqrt{d_k}} \right) VAttention(Q,K,V)=softmax(dkQKT)V
  • 这样,解码器可以在生成目标序列时,参考编码器的输出
  1. 目标序列逐步生成
  • 解码器利用编码器的信息,生成目标单词,并不断重复步骤 3️⃣ ~ 4️⃣,直到输出完整的句子。

3️⃣ 编码器-解码器交互的核心机制

(1)编码器-解码器注意力(Cross-Attention)

作用 :解码器关注编码器的输出 ,确保翻译时参考源语言信息
关键点

  • Query 来自解码器
  • Key、Value 来自编码器
  • 计算注意力分数,提取重要信息

(2)屏蔽未来信息(Masked Attention)

解码器的自注意力层屏蔽未来单词,确保模型按顺序生成。

(3)残差连接 & 归一化

每层都有残差连接 + LayerNorm,让训练更加稳定。

4️⃣ 交互示例

🌍 机器翻译示例

输入(英语):

复制代码
The cat sat on the mat

编码器输出(上下文向量):

复制代码
[cat: 0.32, 0.45, ...], [sat: 0.54, 0.21, ...], ...

解码器输入(目标语言 - 法语):

复制代码
Le chat

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!

相关推荐
Landy_Jay28 分钟前
深度学习:从零开始的DeepSeek-R1-Distill有监督微调训练实战(SFT)
人工智能·深度学习
淘小欣31 分钟前
10分钟打造专属AI助手:用ms-swift实现自我认知微调
开发语言·人工智能·ai·swift·模型微调
Y1nhl1 小时前
搜广推校招面经五十五
人工智能·python·深度学习·机器学习·广告算法·推荐算法·搜索算法
liufangshun4 小时前
【DeepSeekR1】怎样清除mssql的日志文件?
数据库·人工智能·sqlserver
深圳市快瞳科技有限公司4 小时前
AI鸟类识别技术革新生态监测:快瞳科技如何用“智慧之眼”守护自然?
人工智能·科技
ModelWhale5 小时前
和鲸科技受邀赴中国气象局气象干部培训学院湖南分院开展 DeepSeek 趋势下的人工智能技术应用专题培训
人工智能·科技
Fansv5875 小时前
深度学习框架PyTorch——从入门到精通(3)数据集和数据加载器
人工智能·pytorch·深度学习
Sunday_ding7 小时前
NLP 与常见的nlp应用
人工智能·自然语言处理
一ge科研小菜鸡7 小时前
当下主流 AI 模型对比:ChatGPT、DeepSeek、Grok 及其他前沿技术
人工智能
ai产品老杨8 小时前
全流程数字化管理的智慧物流开源了。
前端·javascript·vue.js·人工智能·安全