大语言模型基石:Transformer

一、引言

如今火爆的 GPT、LLaMA、通义千问、ChatGLM 等大语言模型,背后都离不开一个核心架构——Transformer

2017 年,Google 在论文《Attention Is All You Need》中首次提出 Transformer 模型,彻底改变了自然语言处理的发展方向。它摒弃了传统的循环结构(RNN/LSTM),完全依赖注意力机制实现高效、并行化的序列建模。
在这里插入图片描述

二、模型总览:Encoder-Decoder 框架

论文提出的 Transformer 是一个典型的 Encoder-Decoder 结构,整体架构如下图所示:

在这里插入图片描述

📌 图1:Transformer 整体架构(源自论文 Fig.1)

🔹 Encoder:负责将输入序列编码为富含语义的表示。
🔹 Decoder:基于编码结果,自回归地生成输出序列。

两者均由 6 层相同结构的模块堆叠而成,每一层都包含多头注意力和前馈网络。

在这里插入图片描述

三、模型架构详解(Model Architecture)

3.1 编码器(Encoder)

每个编码器层由两个子层组成:
在这里插入图片描述

  1. 多头自注意力机制(Multi-Head Self-Attention)
  2. 位置前馈网络(Position-wise Feed-Forward Network, FFN)
  • 每个子层后都有 残差连接(Residual Connection)层归一化(LayerNorm):
    由Transformer 结构组成的网络结构通常都非常庞大。编码器和解码器均由很多层基本的Transformer块组成,每一层中都包含复杂的非线性映射,这就导致模型的训练比较困难。因此,研究人员在Transformer 块中进一步引入了残差连接与层归一化技术,以进一步提升训练的稳定性。具体来说,残差连接主要是指使用一条直连通道直接将对应子层的输入连接到输出,避免在优化过程中因网络过深而产生潜在的梯度消失问题。

  • 所有层输入输出维度均为 d_model = 512

✅ 这种设计有助于梯度传播,支持深层网络训练。


3.2 解码器(Decoder)

解码器结构更复杂一些,每层包含 三个子层

  1. 掩码多头自注意力(Masked Multi-Head Self-Attention)
  2. 编码器-解码器注意力(Encoder-Decoder Attention)
  3. 位置前馈网络(FFN)

流程如下:
在这里插入图片描述

🔹 为什么需要“掩码”?

为了防止解码时“偷看未来”。例如生成句子时:

“我 爱 吃 __”

模型在预测“吃”后面的词时,不能看到后面的词。因此使用 因果掩码(Causal Mask),只允许关注当前位置及之前的位置。

掩码矩阵示意(下三角):

[1, 0, 0, 0]
[1, 1, 0, 0]
[1, 1, 1, 0]
[1, 1, 1, 1]

3.3 注意力机制(Attention)

在这里插入图片描述

这是论文最核心的部分。标准注意力定义为:

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dkQKT)V

其中:

  • QQQ:Query,表示“我在找什么”
  • KKK:Key,表示“我能被找到吗”
  • VVV:Value,表示“我提供什么信息”

通过 QKTQK^TQKT 计算相似度,softmax 归一化后加权求和 VVV,得到输出。

多头注意力(Multi-Head Attention)

单次注意力可能只捕捉一种关系,因此论文提出“多头”机制:

MultiHead(Q,K,V)=Concat(head1,...,headh)WO\text{MultiHead}(Q,K,V) = \text{Concat}(head_1, ..., head_h)W^O MultiHead(Q,K,V)=Concat(head1,...,headh)WO

其中每个 head 独立计算:

headi=Attention(QWiQ,KWiK,VWiV)head_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) headi=Attention(QWiQ,KWiK,VWiV)

参数矩阵 WiQ,WiK,WiVW_i^Q, W_i^K, W_i^VWiQ,WiK,WiV 不同,使每个 head 关注不同子空间的信息。

✅ 类比:多个专家从不同角度分析同一个问题,最后汇总决策。
✅自注意力机制使模型能够识别不同输入部分的重要性,而不受距离的影响,从而
能够捕捉输入句子中的长距离依赖关系和复杂关系。


3.4 位置前馈网络(Position-wise FFN)

前馈层接收自注意力子层的输出作为输入。
每个位置独立通过一个两层全连接网络:

FFN(x)=max⁡(0,xW1+b1)W2+b2\text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 FFN(x)=max(0,xW1+b1)W2+b2

通常设置为:d_model=512, d_ff=2048

虽然简单,但它增强了模型的非线性表达能力。


四、词嵌入与位置编码(Embeddings & Positional Encoding)

4.1 词嵌入(Token Embeddings)

输入的每个词先映射为 d_model 维的向量(如 512 维),与其他模型类似。

4.2 位置编码(Positional Encoding)

由于 Transformer 没有循环或卷积结构,无法感知词序,因此必须显式加入位置信息。具体来说,序列中每一个单词所在的位置都对应一个向量。这一向量会与单词表示对应相加并送入后续模块中做进一步处理

论文使用正弦和余弦函数生成位置编码:

PE(pos,2i)=sin⁡(pos100002i/dmodel)PE(pos,2i+1)=cos⁡(pos100002i/dmodel)PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) \\ PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) PE(pos,2i)=sin(100002i/dmodelpos)PE(pos,2i+1)=cos(100002i/dmodelpos)

这些编码与词嵌入相加,作为最终输入:

Input=Word Embedding+Positional Encoding\text{Input} = \text{Word Embedding} + \text{Positional Encoding} Input=Word Embedding+Positional Encoding

✅ 优点:能表示相对位置,且可扩展到更长序列。


五、为什么 Transformer 能支撑大语言模型?

虽然原始 Transformer 是为机器翻译设计的,但它的设计理念完美契合了大语言模型的需求:

特性对大模型的意义
并行计算可高效训练千亿参数模型
长距离依赖建模能理解上下文数百词外的信息
可堆叠性层数越多,表达能力越强
注意力可视化易于分析模型决策过程

现代大语言模型大多基于 Transformer 的变体:

模型类型结构来源典型代表
Decoder-only仅保留解码器GPT 系列、LLaMA、通义千问
Encoder-only仅保留编码器BERT、RoBERTa
Encoder-Decoder完整结构T5、BART

🔹 GPT 就是典型的 Decoder-only 模型:去掉编码器,仅用掩码注意力进行自回归生成。


六、总结:Transformer 的革命性意义

维度RNN/LSTMCNNTransformer
并行性✅ 极强
长程依赖一般✅ 强
可解释性✅ 注意力可可视化
扩展性有限一般✅ 支持超大规模

Transformer 的成功在于:

  • 用注意力替代循环,实现高效并行
  • 多头机制 提升语义表达多样性
  • 位置编码 解决顺序感知问题
  • 模块化设计 易于扩展和改进

它不仅是 NLP 的里程碑,更是通向通用人工智能的重要一步。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法】【链表】160.相交链表--通俗讲解

算法通俗讲解推荐阅读 【算法–链表】83.删除排序链表中的重复元素–通俗讲解 【算法–链表】删除排序链表中的重复元素 II–通俗讲解 【算法–链表】86.分割链表–通俗讲解 【算法】92.翻转链表Ⅱ–通俗讲解 【算法–链表】109.有序链表转换二叉搜索树–通俗讲解 【算法–链表…

MySQL——库的操作

1、创建数据库语法:CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name这里的CHARACTER SET表示指定数据库采用的字符集…

Python ast模块(Abstract Syntax Trees,抽象语法树)介绍及使用

文章目录 核心概念 基本使用流程 常用节点类型 示例代码 实际应用场景 注意事项 `ast.literal_eval()` 功能说明 适用场景 使用示例 限制与安全特性 与 `eval()` 的对比 总结 Python 的 ast 模块( Abstract Syntax Trees,抽象语法树)允许你解析、分析和修改 Python 代码的…

C++宽度优先搜索算法:队列与优先级队列

本期我们就来深入学习一下C算法中一个很重要的算法思想:宽度优先搜索算法 宽度优先算法是一个应用十分广泛的算法思想,涉及的领域也十分繁多,因此本篇我们先只涉猎它的一部分算法题:队列/优先级队列,后续我们会进一步地…

类的property属性

​​Python 中的 property 特性详解​​property 是 Python 中用于​​将方法转换为属性​​的装饰器,它允许开发者以访问属性的方式调用方法,同时可以添加逻辑控制(如数据校验、计算属性等)。以下是其核心用法和优势:…

【Redis#9】其他数据结构

引言 Redis 除了我们最常用的 String、Hash、List、Set、ZSet(Sorted Set) 这五种基本数据结构外,还提供了很多高级或特殊用途的数据结构/类型 ,它们可以满足更复杂的业务需求。 ✅ Redis 的“五大基本数据结构”回顾类型特点Stri…

AutoGen——自定义Agent

目录引子自定义 AgentCountDownAgentArithmeticAgent在自定义 Agent 中使用自定义模型客户端让自定义 Agent 声明式化Selector Group Chat示例:网页搜索 / 数据分析代理(Agents)Workflow终止条件(Termination Conditions&#xff…

【重定向和转发的核心理解】

重定向和转发 不废话: “转发” 的核心定义: 服务端内部主导跳转、客户端无感知(仅 1 次请求)、浏览器 URL 不改变,与传统 Web 开发中 “转发” 的本质逻辑完全一致,只是实现载体(Nginx 路由层 …

生成对抗网络详解与实现

生成对抗网络详解与实现0. 前言1. GAN 原理2. GAN 架构3. 损失函数3.1 判别器损失3.2 生成器损失3.4 VANILLA GAN4. GAN 训练步骤0. 前言 生成对抗网络 (Generative Adversarial Network, GAN) 是图像和视频生成中的主要方法之一。在本节中,我们将了解 GAN 的架构、…

FPGA硬件开发-XPE工具的使用

目录 XPE 工具概述​ XPE 使用步骤详解​ 1. 工具获取与初始化​ 2. 器件选择与配置​ 3. 电源电压设置​ 4. 资源使用量配置​ 5. 时钟与开关活动配置​ 6. 功耗计算与报告生成​ 报告解读与电源设计优化​ 常见问题与最佳实践​ 与实际功耗的差异处理​ 工具版本…

CentOS 7.9 RAID 10 实验报告

文章目录CentOS 7.9 RAID 10 实验报告一、实验概述1.1 实验目的1.2 实验环境1.3 实验拓扑二、实验准备2.1 磁盘准备2.2 安装必要软件三、RAID 10阵列创建3.1 创建RAID 10阵列3.2 创建文件系统并挂载3.3 保存RAID配置四、性能基准测试4.1 初始性能测试4.2 创建测试数据集五、故障…

机器人逆运动学进阶:李代数、矩阵指数与旋转流形计算

做机器人逆运动学(IK)的时候,你迟早会遇到矩阵指数和对数这些东西。为什么呢?因为计算三维旋转的误差,不能简单地用欧氏距离那一套,那只对位置有效。旋转得用另一套方法——你需要算两个旋转矩阵之间的差异…

计算机视觉(opencv)实战十八——图像透视转换

图像透视变换详解与实战在图像处理中,透视变换(Perspective Transform) 是一种常见的几何变换,用来将图像中某个四边形区域拉伸或压缩,映射到一个矩形区域。常见应用场景包括:纠正拍照时的倾斜(…

【飞书多维表格插件】

coze中添加飞书多维表格记录插件 添加单条记录 [{"fields":{"任务详情":"选项1","是否完成":"未完成"}}]添加多条记录 [{"fields":{"任务详情":"选项1","是否完成":"已完…

Java基础 9.14

1.Collection接口遍历对象方式2-for循环增强增强for循环,可以代替iterator选代器,特点:增强for就是简化版的iterator本质一样 只能用于遍历集合或数组package com.logic.collection_;import java.util.ArrayList; import java.util.Collectio…

数据结构(C语言篇):(十三)堆的应用

目录 前言 一、堆排序 1.1 版本一:基于已有数组建堆、取栈顶元素完成排序 1.1.1 实现逻辑 1.1.2 底层原理 1.1.3 应用示例 1.1.4 执行流程 1.2 版本二:原地排序 —— 标准堆排序 1.2.1 实现逻辑 1.2.2 底层原理 1.2.3 时间复杂度计算…

4步OpenCV-----扫秒身份证号

这段代码用 OpenCV 做了一份“数字模板字典”,然后在银行卡/身份证照片里自动找到身份证号那一行,把每个数字切出来跟模板比对,最终输出并高亮显示出完整的身份证号码,下面是代码解释:模块 1 工具箱(通用函…

冯诺依曼体系:现代计算机的基石与未来展望

冯诺依曼体系:现代计算机的基石与未来展望 引人入胜的开篇 当你用手机刷视频、用电脑办公时,是否想过这些设备背后共享的底层逻辑?从指尖轻滑切换APP,到电脑秒开文档,这种「无缝衔接」的体验,其实藏着一个改…

前端基础 —— C / JavaScript基础语法

以下是对《3.JavaScript(基础语法).pdf》的内容大纲总结:---📘 一、JavaScript 简介 - 定义:脚本语言,最初用于表单验证,现为通用编程语言。 - 应用:网页开发、游戏、服务器(Node.js&#xff09…