探索神经网络的奥秘:从模型到深度学习
摘要
神经网络是一种通过参数化数学公式实现通用函数逼近的模型。本文从"模型即数学公式"出发,系统阐述神经网络的基本原理、训练机制(梯度下降与反向传播)以及以 MNIST 手写数字识别为代表的经典案例。在此基础上,深入介绍深度神经网络的主要架构演化:卷积神经网络(CNN)、循环神经网络(RNN)及其变体 LSTM/GRU、Transformer 和残差网络(ResNet),并分析深度网络训练中梯度消失/爆炸、退化、过拟合等难题及其解决方案。附录提供完整的术语表与核心公式汇总,兼顾科普性与专业性。
第一部分:模型与神经网络基础
1.1 什么是模型?
在机器学习中,模型 本质上是一个带有可调参数的数学函数,它将输入数据映射为输出结果。设计模型就是设计能够解决真实问题的数学公式。
分类任务 是最常见的模型应用形式:
- 输入:一组符合要求的特征数据(如图像像素、身长体重、文本前缀)
- 已知:类别总数为 (n)(即 (n) 选 1)
- 输出:经过公式计算后得到 (n) 个概率,分别代表输入属于每个类别的可能性。
典型示例:
- 输入一张手写数字图片 → 输出 0~9 的概率
- 输入动物的身长和体重 → 输出 200 种动物的概率
- 输入一段文本前缀 → 输出 30,000 个汉字作为下一个字符的概率
1.2 设计模型就是设计数学公式
早期研究者针对不同问题手工设计公式(例如线性回归 (y = ax + b))。然而,图像、语音、自然语言等复杂任务难以用简单公式描述。于是,科学家提出了神经网络------一种通用的、可学习的数学结构。
万能近似定理 指出:一个前馈神经网络,只要具有足够多的神经元,就能以任意精度逼近任何连续函数。这使神经网络成为"万金油"公式。
1.3 单个神经元的形式化定义
一个人工神经元模拟生物神经元的基本行为:
z = \\sum_{i=1}\^{n} w_i x_i + b = \\mathbf{w}\^\\top \\mathbf{x} + b \] \[ a = f(z)
- (x_i):输入信号(可以来自原始数据或上一层的输出)
- (w_i):权重,决定输入的重要性
- (b):偏置,允许激活函数横向平移
- (f(\cdot)):激活函数,引入非线性
常见激活函数:
- ReLU:(f(z) = \max(0, z)) (最常用)
- Sigmoid:(f(z) = \frac{1}{1+e^{-z}}) (输出可视为概率,但易饱和)
- Tanh:(f(z) = \frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}) (零中心,比 Sigmoid 稍优)
1.4 多层神经网络与深度
多个神经元组成层 ,多层堆叠形成深度神经网络。一个典型的前馈全连接网络包含:
- 输入层:接收原始数据
- 隐藏层:中间层,进行特征提取与变换
- 输出层:产生最终预测(如分类概率)
当隐藏层数超过 5 层时,通常称为深度学习 。深度的核心优势在于分层特征提取:浅层学习简单模式(边缘、纹理),深层组合为复杂语义(物体、场景)。
1.5 补充案例:手动设计参数(非学习方式)
本案例来自原始讲义,用于说明参数设计比公式设计更难。
假设我们想让神经网络检测图像中的边缘,可以尝试手动设计第一层隐藏层的参数。设输入向量 (\mathbf{x}) 长度为 784(28×28 图像展平),我们希望隐藏层向量 (\mathbf{z}) 的每个元素为相邻像素的差值:(z[i] = x[i] - x[i+1])。这等价于设置权重 (w_i = 1),(w_{i+1} = -1),其余权重为 0,偏置为 0。例如:
z_0 = 1 \\cdot x_0 + (-1) \\cdot x_1 + 0 \\cdot x_2 + \\dots
这种手工设计虽然直观,但无法泛化到复杂任务。这正是需要机器学习自动确定参数的原因。
第二部分:线性分类完整案例(鳄鱼 vs 蛇)
本案例来自原始讲义,完整呈现了从随机初始化到迭代优化的全过程,是理解梯度下降和损失函数的极佳示例。
2.1 数据集
以下为 16 种鳄鱼和蛇的身长(米)与体重(公斤)数据:
| 动物 | 身长 (x) | 体重 (y) | 类别 |
|---|---|---|---|
| 扬子鳄 | 2.5 | 45 | 鳄鱼 |
| 直布罗陀鳄鱼 | 5 | 225 | 鳄鱼 |
| 森林鳄 | 6 | 420 | 鳄鱼 |
| 马来鳄 | 6 | 550 | 鳄鱼 |
| 奥里诺科鳄 | 4 | 225 | 鳄鱼 |
| 尼罗鳄 | 5 | 300 | 鳄鱼 |
| 美洲鳄 | 5.5 | 500 | 鳄鱼 |
| 盐水鳄 | 5.5 | 400 | 鳄鱼 |
| 眼镜王蛇 | 4 | 8 | 蛇 |
| 非洲岩蟒 | 7 | 70 | 蛇 |
| 网纹蟒 | 8 | 60 | 蛇 |
| 印度蟒 | 6 | 50 | 蛇 |
| 亚马逊绿水蟒 | 10 | 270 | 蛇 |
| 缅甸蟒 | 6 | 90 | 蛇 |
| 紫晶蟒 | 5 | 100 | 蛇 |
| 水蟒 | 8 | 200 | 蛇 |
任务:使用线性模型 (y = ax + b) 将两类动物分开(即直线的一侧为鳄鱼,另一侧为蛇)。
2.2 初始参数与误差计算
随机初始化 (a = 3, b = -5)。对于每个点,计算 (3x - 5 - y),并取平方作为该点的误差。例如:
- 扬子鳄:(3 \times 2.5 - 5 - 45 = -42.5),平方 = 1806.25
- 眼镜王蛇:(3 \times 4 - 5 - 8 = -1),平方 = 1
全部计算结果如下表:
| 动物 | (3x-5-y) | 平方误差 |
|---|---|---|
| 扬子鳄 | -42.5 | 1806.25 |
| 直布罗陀鳄鱼 | -225 | 50625 |
| 森林鳄 | -420 | 176400 |
| 马来鳄 | -550 | 302500 |
| 奥里诺科鳄 | -218 | 47524 |
| 尼罗鳄 | -300 | 90000 |
| 美洲鳄 | -488.5 | 238632.25 |
| 盐水鳄 | -488.5 | 238632.25 |
| 眼镜王蛇 | -1 | 1 |
| 非洲岩蟒 | -41 | 1681 |
| 网纹蟒 | -41 | 1681 |
| 印度蟒 | -37 | 1369 |
| 亚马逊绿水蟒 | -270 | 72900 |
| 缅甸蟒 | -90 | 8100 |
| 紫晶蟒 | -100 | 10000 |
| 水蟒 | -200 | 40000 |
| 总误差 | 1,136,019.75 |
2.3 迭代优化过程
使用梯度下降调整 ((a, b)),依次尝试多组参数,总误差变化如下:
| (a, b) | 总误差 |
|---|---|
| (3, -5) | 1,136,019.75 |
| (9, 1) | 888,195.75 |
| (15, 7) | 697,809.75 |
| (21, 13) | 564,861.75 |
| (27, 19) | 489,351.75 |
| (33, 25) | 471,279.75 |
| (22, 89) | 453,488.00 |
| (9, 165) | 447,527.75 |
| ... | 持续下降 |
可见,通过不断调整参数,总误差逐渐减小,模型分类能力逐步提升。
第三部分:以 MNIST 手写数字识别为例
3.1 MNIST 数据集
MNIST(Mixed National Institute of Standards and Technology database)是手写数字识别的经典基准数据集:
- 规模:70,000 张灰度图像,28×28 像素
- 划分:60,000 张训练,10,000 张测试
- 内容:每张图像包含一个手写数字(0--9)
3.2 网络结构与参数计算
一个用于 MNIST 的典型三层全连接网络结构如下:
| 层 | 输入维度 | 输出维度 | 参数公式 | 参数数量 |
|---|---|---|---|---|
| 输入 → 隐藏层1 | 784 | 784 | (784 \times (784+1)) | 615,440 |
| 隐藏层1 → 隐藏层2 | 784 | 28 | (28 \times (784+1)) | 21,980 |
| 隐藏层2 → 输出层 | 28 | 10 | (10 \times (28+1)) | 290 |
| 总计 | 637,710 |
该参数规模远超手工所能调节的范畴,必须依赖计算机自动学习。
3.3 Softmax 与概率输出
输出层的原始值(logits)通过 Softmax 函数 转换为概率分布:
p_k = \\frac{e\^{z_k}}{\\sum_{j=0}\^{9} e\^{z_j}}, \\quad k = 0,1,\\dots,9
Softmax 确保所有输出概率非负且和为 1,因此 (p_k) 可直接解释为输入图像属于数字 (k) 的置信度。
3.4 损失函数:交叉熵的具体数值例
本案例来自原始讲义,展示交叉熵损失如何随预测概率变化。
假设正确答案是数字"3"(one‑hot 编码中只有第3位为1,其余为0)。模型输出两组不同的概率分布:
-
第一组 :(p_3 = 0.91),其他均为 0.01
损失 = (-\ln(0.91) \approx 0.0943)
-
第二组 :(p_3 = 0.41),其他分布较散
损失 = (-\ln(0.41) \approx 0.8916)
结论:模型对正确答案越自信(概率越接近1),交叉熵损失越小。
一般形式的交叉熵损失(one‑hot 标签)为:
L = -\\sum_{c=0}\^{9} y_c \\ln(p_c) = -\\ln(p_{\\text{true}})
第四部分:训练机制------机器学习如何学习
4.1 训练流程
机器学习通过数据自动确定模型的最优参数。标准训练流程如下:
- 随机初始化所有参数(权重 (w) 和偏置 (b)),常用 He / Xavier 初始化。
- 前向传播:将一批训练数据输入网络,逐层计算,得到预测输出。
- 计算损失:使用损失函数(如交叉熵)评估预测与真实标签的差距。
- 反向传播 :从输出层向输入层逐层计算损失对每个参数的偏导数。这是利用链式法则高效计算梯度的关键算法。
- 梯度下降 :根据梯度方向更新参数,使损失减小: [ w_{\text{new}} = w_{\text{old}} - \eta \frac{\partial L}{\partial w} ] 其中 (\eta) 是学习率,控制每一步的步长。
- 重复步骤 2--5,直到损失收敛或达到预设迭代次数。
实际训练中常用小批量梯度下降:每次随机抽取一个小批量样本计算梯度,兼顾效率与稳定性。
4.2 梯度下降的直观理解
将损失函数视为一个地形曲面,参数为曲面上的坐标。梯度指向曲面最陡的上升方向。沿着梯度的反方向移动,相当于下坡,最终到达一个局部最低点。学习率决定每一步迈出多远------太大可能越过谷底,太小收敛缓慢。
4.3 补充案例:Next Token Prediction(语言模型训练)
本案例来自原始讲义,展示大语言模型的基本训练方式。
输入前缀:"刷新100米自由泳世界纪录!潘展乐为"
期望输出(Ground Truth):"中国泳军拿下首金!46秒40!北京时间8月1日凌晨..."
模型的任务是预测下一个字符(或子词)。这可以看作一个超大规模分类问题:类别数 = 字典大小(如 30,000 或 50,000)。训练时,模型输出每个可能下一个字符的概率,计算交叉熵损失(真实下一个字符的概率越高,损失越小),然后反向传播更新参数。
这一范式被称为 Next Token Prediction,是 GPT 系列模型训练的核心。
第五部分:深度神经网络的主流架构
随着网络加深,简单的全连接网络面临参数爆炸、梯度消失、难以捕捉空间或时间结构等问题。研究者针对不同数据类型开发了专用架构。
5.1 深度全连接网络(DNN)
最基础的深度网络仍由全连接层堆叠而成。优点是理论表达能力最强,缺点是参数量大、缺乏对数据结构的归纳偏置。适用于结构化表格数据,但不适合图像或长序列。
5.2 卷积神经网络(CNN)
卷积神经网络 专为图像等网格状数据设计,核心创新:
- 局部感知:每个神经元只响应输入的一个局部区域(感受野),模仿视觉皮层的分层抽象。
- 权重共享:同一个卷积核在整个输入上滑动,使用相同的权重,极大减少参数量。
- 池化层:通过最大池化或平均池化降低空间维度,增强平移不变性。
典型结构:卷积层 → 激活函数 → 池化层 → ... → 全连接层。
里程碑模型:
- AlexNet(2012 ImageNet 冠军):首次引入 ReLU、Dropout 和 GPU 并行训练,引爆深度学习浪潮。
- ResNet(2015):通过残差连接实现 152 层网络(详见 5.5)。
5.3 循环神经网络(RNN)及其变体
循环神经网络 用于处理序列数据(文本、语音、时间序列)。其核心是隐藏状态 (h_t),它随时间步传递历史信息: [ h_t = \tanh(W_{xh} x_t + W_{hh} h_{t-1} + b_h) ]
但传统 RNN 存在严重的梯度消失/爆炸问题,难以捕捉长距离依赖(例如句子开头的名词与末尾的动词的一致性)。
LSTM(长短期记忆网络) 通过三个门控单元解决该问题:
- 遗忘门:决定丢弃多少旧记忆
- 输入门:控制新信息的写入量
- 输出门:调节记忆对当前输出的影响
GRU(门控循环单元) 是 LSTM 的简化版,将遗忘门和输入门合并为更新门,结构更精简,训练更快,性能相近。
5.4 Transformer 与自注意力机制
Transformer 完全摒弃了循环结构,基于自注意力机制 实现序列建模。自注意力允许序列中任意两个位置直接交互,并支持全并行计算,极大提升了训练效率。
自注意力计算: [ \text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V ]
- (Q, K, V) 由输入序列经过线性变换得到
- 缩放因子 (1/\sqrt{d_k}) 防止内积过大
Transformer 由编码器 和解码器堆叠而成(通常各 6 层),每个编码器/解码器包含多头自注意力和前馈网络,并带有残差连接与层归一化。
Transformer 是现代大语言模型(GPT-4、LLaMA、BERT)的基石。
5.5 ResNet 与残差学习
残差网络 通过跳跃连接将输入直接跨层传递到输出,使网络学习残差映射 (F(x) = H(x) - x) 而非完整映射 (H(x))。残差块的形式: [ H(x) = F(x) + x ]
为何有效?
- 跳跃连接为反向传播提供了"梯度高速公路",让梯度能直接从深层流回浅层,避免连乘衰减。
- 如果理想映射是恒等映射,网络只需将 (F(x)) 逼近 0,这比直接学习 (H(x)=x) 容易得多。
ResNet 使得训练 152 层的网络成为可能,并在图像分类、目标检测等领域取得突破。
第六部分:深度神经网络的训练难题与解决方案
| 问题 | 描述 | 常用解决方案 |
|---|---|---|
| 梯度消失 | 反向传播时梯度逐层衰减,浅层参数几乎不更新 | He/Xavier 初始化、批归一化、ReLU 激活函数、残差连接 |
| 梯度爆炸 | 梯度指数级增长,导致参数不稳定 | 梯度裁剪、恰当的初始化 |
| 网络退化 | 过深的网络训练误差反而高于较浅的网络 | 残差学习(ResNet)、恒等映射跳跃连接 |
| 过拟合 | 模型在训练集表现极好,测试集表现差 | 数据增强、Dropout、L1/L2 正则化、早停 |
6.1 梯度消失/爆炸的数学成因
在反向传播中,梯度流动涉及多个激活函数导数与权重矩阵的连乘。若激活函数导数 (f'(z)) 在大部分区域小于 1(如 Sigmoid 最大为 0.25),且权重的范数也小于 1,则连乘结果指数衰减至 0(消失);若大于 1,则指数增长(爆炸)。ReLU 在正半轴导数为 1,能缓解消失,但仍需配合适当的初始化(如 He 初始化)。
6.2 批归一化
批归一化(Batch Normalization)对每一层的输入进行标准化(减均值除方差),使每一层的分布保持稳定。这能平滑梯度流,允许更大的学习率,并起到一定的正则化作用。
第七部分:总结与展望
- 模型 是带参数的数学函数,神经网络提供了一种通用的函数形式。
- 机器学习 通过反向传播和梯度下降自动学习参数,无需手工设计特征。
- 深度神经网络 通过增加层数实现分层特征提取,显著提升了图像、语音、自然语言等复杂任务的性能。
- 主流架构 :
- CNN:利用局部连接和权重共享处理图像。
- RNN/LSTM/GRU:通过隐藏状态和门控机制处理序列。
- Transformer:基于自注意力,实现全并行序列建模。
- ResNet:使用残差连接解决深度退化问题。
- 训练挑战:梯度消失/爆炸、退化、过拟合等已有成熟应对方案。
随着算力提升与数据规模扩大,神经网络正朝着更高效率、更强泛化、更低能耗的方向演进(如混合专家模型、模型蒸馏、自监督学习)。然而,本文所介绍的基础概念------模型、参数、损失函数、梯度下降------始终是理解一切机器学习方法的基石。
附录
附录 A:术语表(中英文对照)
| 中文 | 英文 | 简要解释 |
|---|---|---|
| 模型 | Model | 带有参数的数学函数 |
| 参数 | Parameter | 可学习的权重 (w) 和偏置 (b) |
| 神经网络 | Neural Network | 多层神经元组成的计算图 |
| 深度神经网络 | Deep Neural Network (DNN) | 具有多个隐藏层的神经网络 |
| 激活函数 | Activation Function | 引入非线性的函数,如 ReLU、Sigmoid |
| 损失函数 | Loss Function | 衡量预测与真实值的差距 |
| 交叉熵损失 | Cross-Entropy Loss | 分类任务中最常用的损失函数 |
| 梯度下降 | Gradient Descent | 沿梯度反方向更新参数的算法 |
| 学习率 | Learning Rate | 梯度下降的步长 |
| 反向传播 | Backpropagation | 高效计算梯度的算法 |
| 过拟合 | Overfitting | 训练集表现好,测试集表现差 |
| 正则化 | Regularization | 防止过拟合的技术(L1/L2, Dropout) |
| 卷积神经网络 | Convolutional Neural Network (CNN) | 用于图像数据的专用网络 |
| 循环神经网络 | Recurrent Neural Network (RNN) | 用于序列数据的网络 |
| 长短期记忆网络 | Long Short-Term Memory (LSTM) | 带门控机制的 RNN 变体 |
| 门控循环单元 | Gated Recurrent Unit (GRU) | LSTM 的简化版本 |
| Transformer | Transformer | 基于自注意力的序列模型 |
| 残差网络 | Residual Network (ResNet) | 使用跳跃连接的深度网络 |
| 跳跃连接 | Skip Connection / Shortcut | 跨层直接传递信息的连接 |
| 梯度消失 | Vanishing Gradient | 反向传播中梯度趋近于 0 |
| 梯度爆炸 | Exploding Gradient | 梯度指数级增长 |
| 批归一化 | Batch Normalization | 标准化各层输入以稳定训练 |
| Dropout | Dropout | 训练时随机丢弃神经元 |
附录 B:核心公式汇总
-
神经元计算
z = \\mathbf{w}\^\\top \\mathbf{x} + b, \\quad a = f(z)
-
ReLU 激活函数
\\text{ReLU}(z) = \\max(0, z)
-
Softmax 函数
p_k = \\frac{e\^{z_k}}{\\sum_{j} e\^{z_j}}
-
交叉熵损失(one‑hot 标签)
L = -\\ln(p_{\\text{true}})
-
梯度下降更新
w \\leftarrow w - \\eta \\frac{\\partial L}{\\partial w}
-
残差块
H(x) = F(x) + x
-
自注意力机制
\\text{Attention}(Q,K,V) = \\text{softmax}\\left(\\frac{QK\^\\top}{\\sqrt{d_k}}\\right)V
附录 C:MNIST 网络参数详细计算表(637,710)
| 层 | 输入维度 | 输出维度 | 参数公式 | 参数数量 |
|---|---|---|---|---|
| 输入 → 隐藏层1 | 784 | 784 | (784 \times (784+1)) | 615,440 |
| 隐藏层1 → 隐藏层2 | 784 | 28 | (28 \times (784+1)) | 21,980 |
| 隐藏层2 → 输出层 | 28 | 10 | (10 \times (28+1)) | 290 |
| 总计 | 637,710 |
附录 D:梯度消失/爆炸的链式连乘说明
以三层网络为例,损失 (L) 对第一层权重 (W^{(1)}) 的梯度为:
\\frac{\\partial L}{\\partial W\^{(1)}} = \\left\[ \\text{diag}(f'(z\^{(3)})) W\^{(3)} \\right\] \\left\[ \\text{diag}(f'(z\^{(2)})) W\^{(2)} \\right\] \\frac{\\partial L}{\\partial a\^{(3)}} \\cdot \\frac{\\partial a\^{(1)}}{\\partial W\^{(1)}}
若 (| \text{diag}(f'(z)) W | < 1),连乘导致梯度消失;若大于 1,则爆炸。ReLU 在正半轴 (f'(z)=1),配合 He 初始化可以保持范数稳定。
附录 E:重要概念补充说明
- 学习率调度:训练过程中动态降低学习率(如余弦退火、分段常数衰减)有助于更好收敛。
- 优化器变体:Adam、RMSProp 等自适应学习率方法改进了基本梯度下降。
- 数据增强:对图像进行随机旋转、裁剪、颜色抖动等操作,生成更多训练样本以减轻过拟合。
- 卷积层与池化层的区别:卷积层有可学习的权重,池化层无权重,仅作下采样。
参考文献与推荐阅读
- LeCun, Y., Cortes, C., & Burges, C. J. (1998). The MNIST database of handwritten digits.
- Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet classification with deep convolutional neural networks. NeurIPS.
- Hochreiter, S., & Schmidhuber, J. (1997). Long short-term memory. Neural Computation.
- Vaswani, A., et al. (2017). Attention is all you need. NeurIPS.
- He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. CVPR.
- Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
- Nair, V., & Hinton, G. E. (2010). Rectified linear units improve restricted Boltzmann machines. ICML.
我将缺失的"LLM运行模式"作为独立一章,补充进之前的完整文章中。
第八部分:走向通用智能------大语言模型(LLM)的运行模式
上一章节,我们通过"鳄鱼 vs 蛇"的线性回归案例和小型全连接网络(MLP),完整走通了机器学习的基本流程:定义模型 → 前向传播 → 计算损失 → 反向传播 → 梯度下降。这些基础原理,同样构成理解 GPT、Claude、DeepSeek 等当代大语言模型(Large Language Model, LLM)的底层框架 。不同之处在于,LLM 将数据从"身长体重"换成了"整个互联网的文本",同时解决了三个更深层次的问题:理解长上下文 、高效生成新文本 以及对齐人类的交互意图。
8.1 核心理念:自回归生成与 next‑token prediction
与之前 MNIST 数字识别的"十选一"静态分类不同,LLM 擅长处理变化长度的序列数据。它的核心原理是**"猜下一个字"**:自动预测段落中合理的下一个字。
这并非通过查字典实现,而是通过大量的训练,让 LLM 学会从上下文中寻找复杂的数学-语义规律,进而推断出下一个最可能出现的词汇,这便是文本生成任务背后的"next‑token prediction"范式。
技术上,LLM 运行的精确术语是自回归生成(Autoregressive Generation):模型每次只生成一个 token(一个单词或一个子词),然后将新生成的 token 追加到输入序列的末尾,作为生成下一个 token 的"上文",如此循环往复,直到生成一个完整的回答或达到停止条件【6†L33-L34】。
🔬 深入理解:从统计规律到智能涌现
这种"猜词"能力的本质,是模型在训练阶段学习了海量人类文本(数万亿 token)的统计规律与隐含逻辑。它并非简单记忆下一个词是什么,而是根据"问题 + 已生成内容"的动态上下文,计算概率分布:前几个字可能率性而为,但一旦话题确定,接下来的用词和逻辑就需严格"紧扣主题"。
这种从海量文本统计中涌现出逻辑推断、知识回忆、甚至思维链的现象,构成了我们今天看到的大语言模型的通用智能基础。
8.2 如何训练新一代大语言模型?
LLM 的构建并非一蹴而就。为了让一个只会"拼单词"的原始模型,进化为一个能遵循指令、有安全边界的智能助手,工业界通常采用三阶段训练流程:
-
阶段一:基础预训练(Pre‑training)
- "填鸭式"海量文本学习:收集来自互联网、书籍、论文等海量的原始文本,让模型在"无监督"状态下进行 next‑token prediction。在这个阶段,模型掌握语法、事实知识和推理能力,成为一个"通用语言模型"。
- 本文第一部分介绍的神经网络前向传播、反向传播与梯度下降原理,在这一规模上被并行化应用于万亿级别的参数(如 GPT‑4 的 1.8 万亿参数)。
-
阶段二:监督微调(Supervised Fine-Tuning, SFT)
- 工业化应用的关键:为了让模型理解并执行"写一首诗"、"总结文章"等指令,或学会多轮对话的格式,需要使用"输入-输出"对(类似 Q&A 对话数据)进行有监督的微调。
- 这一阶段将"词频统计器"初步转变为"懂指令的 ChatBot"。
-
阶段三:人类反馈强化学习(Reinforcement Learning from Human Feedback, RLHF)
- 最后的"价值观对齐":为了让模型回答更符合人类偏好,同时规避有害信息,RLHF 利用用户反馈对模型输出进行排序打分,使用强化学习算法优化模型,使其倾向于生成更受欢迎的回复。
💡 总结 :这三个阶段共同造就了 ChatGPT。预训练提供了"知识储备",SFT 教会模型"如何回应",而 RLHF 则确保了模型"懂得什么话该说,什么不该说"。
8.3 推断:LLM 如何选择下一个 token?
当模型训练完毕后,在真实的对话推断(Inference)环境中,模型输出的是一个涵盖所有词汇的概率分布。如何从这个分布中抽取确定的一个 token 来生成最终答案呢?
现代 LLM 利用解码策略(Decoding Strategy) 来控制标准,从而在"创造力"与"保守性"之间取得平衡:
- 贪婪搜索(Greedy Search):每次都 100% 选择概率最高的词汇。这种选择确定性极高,但容易导致输出单调、重复或陷入逻辑死循环。
- 随机采样(Random Sampling):根据概率分布抽签,让模型有机会"跳出舒适区",探索概率较低的优质词汇。
- Top‑k 采样:限定仅从概率最高的前 k 个词汇中抽签,过滤掉那些极低概率的胡言乱语(如 Top‑k=50 时,不论概率分布多广,模型只在前 50 强中选)。
- Top‑p 采样(核采样):一种更灵活的采样方式,动态选择概率之和超过阈值 p 的最小词汇集合,再从中采样。
- 温度调节(Temperature) :一个平滑因子,温度参数直接对底层的 logits 逻辑值进行"缩放",温度 = 0 时等价于贪婪选择,值越高,概率分布被拉得越平,模型的"脑洞"就越大。
在实际的中文互联网应用中,绝大多数的对话场景会动态混合使用 Top‑p 和 Temperature 的组合,控制模型在文本生成时的"自由发挥"程度。
8.4 为什么 LLM 能看得懂上文?------ 详解除以 Transformer 为核心的 LLM 架构
尽管 GPT 系列的参数达到万亿级别,结构极其复杂,但从抽象的底层逻辑看,它依然遵循 多层解码器(Decoder‑Only) 的架构,由大量堆叠的、结构相同的Transformer 块组成。
我们会通过一个具体的例子,理解它是如何处理一段话的:
场景: 我们输入一个不完整的句子 "天空非常......" ,LLM 需要根据前文预测大概率的下一个词是正确的 "蓝" 而非 "硬"。
处理步骤:
-
步骤 1:分词与向量化(Tokenization & Embedding)
- 大语言模型无法直接看汉字,会将输入文本切分为 token(子词单元)。例如:
["天空", "非常", "......"]被映射为高维空间的向量。 - 模型还会加入位置编码(Positional Encoding) ,让模型感知词汇的前后顺序,否则模型会认为
["非常", "天空"]与输入等价。
- 大语言模型无法直接看汉字,会将输入文本切分为 token(子词单元)。例如:
-
步骤 2:堆叠的解码器(Stacked Decoders)
- 切分后的向量会依次流入堆叠的 N 层解码器(如 GPT‑3 有 96 层)进行深度特征提取。这也是完成下一词预测的核心环节,通过 多头掩码自注意力机制(Masked Multi-Head Self-Attention) 与前馈神经网络共同协作:
- 掩码自注意力层 :让模型在预测下一个词时,只能关注到当前词以及之前的所有词 ,而无法"偷看"后面的词语。比如预测"......非常的"的后半截,
"蓝"必须与前文的"天空"建立强关联。 - 注意力机制:具体的计算公式为 Attention(Q,K,V) = softmax((QK^T)/√d_k) * V,其中 Q、K、V 分别代表查询、键和值。这种机制可以被通俗地理解为**"阅读理解"**:计算每个 token 与其他所有相关 token 的匹配程度,找出逻辑上真正相关的关键信息。
- 前馈神经网络(Feed-Forward Network, FFN):该网络对注意力层筛选出的信息进行复杂的非线性处理,本质是一个"知识存储与特征转换"的模块,提取逻辑关系并准备生成输出。
- 掩码自注意力层 :让模型在预测下一个词时,只能关注到当前词以及之前的所有词 ,而无法"偷看"后面的词语。比如预测"......非常的"的后半截,
- 切分后的向量会依次流入堆叠的 N 层解码器(如 GPT‑3 有 96 层)进行深度特征提取。这也是完成下一词预测的核心环节,通过 多头掩码自注意力机制(Masked Multi-Head Self-Attention) 与前馈神经网络共同协作:
-
步骤 3:最终的输出生成(Output Generation)
- 最后一层解码器输出的最终向量,会被传入 Softmax 层(与我们之前在 MNIST 分类案例中使用的机制原理相同),生成一个覆盖全词典的概率列表,如 P("蓝") = 0.85, P("高") = 0.1, P("轻") = 0.04 等。
- 此时,系统会自动调用第 8.3 节中介绍的 解码与采样策略(贪婪、Top‑p 等) ,从中抽取一个 token(例如抽中了
"蓝"),确认最终的输出判定。
通过上述拆解,我们得以发现:尽管 GPT 的参数量达到了万亿级别,其数百层的"掩码自注意力"流程极其复杂,但从数学原理和模型结构 的底层逻辑来看,它并没有脱离前文介绍的神经网络基础架构。
它仍然是那个"万能公式"------输入一串可以无限长的序列向量,通过海量的矩阵运算(计算量大幅提升),输出下一个单词的概率分布。所依赖的训练方式,仍然是前文的核心------前向传播、计算损失、梯度下降反向传播的大规模并行版本 。它是在此基础上,通过堆叠深度、引入掩码自注意力机制 ,并经历了预训练、SFT、RLHF 三阶段范式,才从基础的"单词统计器"淬炼为了当下的"通用人工智能引擎"。
参考文献与推荐阅读(本章节)
- Vaswani, A., et al. (2017). Attention is all you need. NeurIPS.
- Radford, A., et al. (2019). Language Models are Unsupervised Multitask Learners. (GPT-2).
- Brown, T. B., et al. (2020). Language Models are Few-Shot Learners. (GPT-3). NeurIPS.
- Ouyang, L., et al. (2022). Training language models to follow instructions with human feedback. (InstructGPT). arXiv.
- Rae, J. W., et al. (2021). Scaling Language Models: Methods, Analysis & Insights from Training Gopher. DeepMind.
文档版本 :4.0(补充 LLM 运行模式章节)
最后更新 :2026年4月
适用范围:机器学习与深度学习入门课程、自学笔记、教学辅助材料
您说得对,"高维"对于初学者来说确实是一个抽象概念,需要更直观的解释。以下我将补充一节 "什么是高维向量------从三维空间到千维空间",可以插入到 LLM 运行模式章节中(例如在 8.1 之后或作为独立附录)。内容保持通俗、有比喻、有例子,同时不丢失专业术语。
插曲:什么是"高维向量"?------从你熟悉的三维空间说起
在理解神经网络(尤其是大语言模型)时,你可能会频繁遇到"高维向量"、"嵌入空间"、"向量化"等术语。很多初学者会被"高维"这个词吓到,误以为需要理解四维以上的几何。其实,我们可以用非常简单的类比来理解。
1. 从三维坐标说起
你已经在中学数学中接触过三维空间:
- 一个点可以用
(x, y, z)三个数字表示,比如(1, 2, 3)。 - 这三个数字就是维度。三维空间中,每个点有 3 个独立的坐标值。
在机器学习中,我们经常需要用一组数字来描述一个事物。例如:
- 描述一个人:身高(cm)、体重(kg)、年龄(岁) → 三维向量
(175, 65, 25) - 描述一张手写数字图片:28×28 像素 → 784 个灰度值 → 784 维向量
关键点:维度就是"描述一个事物需要多少个独立的数字"。
2. 为什么需要几百甚至几千维?
低维度(例如 2 维、3 维)只能表达非常简单的信息。要区分一只猫和一只狗,仅用身长和体重往往不够(鳄鱼和蛇的例子就是 2 维,容易重叠)。但如果增加"耳朵长度、胡须数量、瞳孔形状"等几十个特征,就能更精确地区分。
在实际的深度学习中,我们并不手工设计这些特征,而是让神经网络自动学习。但为了让网络有足够的"表达空间",我们需要将输入映射到高维空间 (例如 256 维、768 维、4096 维)。在高维空间中,原本难以区分的数据可以被"拉伸"成容易分离的形状------这被称为维度诅咒的反面:高维空间拥有更强的表示能力。
比喻:低维空间像一张白纸,你只能画简单的线条。高维空间像一个巨大的工具箱,里面有成千上万个"旋钮",你可以精细地调整每一条信息。虽然我们人类无法想象 768 维的空间,但数学上完全可以处理:无非就是 768 个数字排成一列。
3. 神经网络中的高维向量是如何产生的?
以 GPT 为例,输入文本被切分成 token(例如"天空")。模型不会直接使用"天空"这两个字,而是将它映射为一个高维向量 ,比如一个 768 维的浮点数列表:[0.12, -0.34, 0.56, ..., 0.78]。这个过程称为嵌入(Embedding)。
这个向量并不是随机的,它是在训练过程中通过预测下一个词的任务逐渐学习出来 的。相似的词(如"天空"和"蓝天")在向量空间中会彼此靠近,不相关的词(如"天空"和"汽车")会远离。数学家称这种空间为嵌入空间 或表示空间。
专业术语:词嵌入(Word Embedding)、向量空间模型(Vector Space Model)、表示学习(Representation Learning)。
4. 高维计算实际上很简单
你可能担心:768 维的向量计算会不会很复杂?其实,任何维度的向量计算都遵循相同的规则:
- 加法:对应位置相加
- 点积(内积):对应位置相乘再求和
- 线性变换:乘以一个
768 × 768的矩阵
这些操作都可以通过计算机并行完成,对电脑来说,处理 768 维和 3 维的难度几乎没有本质区别(只是多做一些乘加运算)。我们人类不需要"想象"768 维空间,只需要理解数学规则即可。
5. 小结
| 关键词 | 通俗解释 |
|---|---|
| 维度 | 描述一个事物所用的数字个数 |
| 低维 | 如二维平面、三维空间,容易想象但表达能力有限 |
| 高维 | 成百上千个数字,虽然无法想象,但数学处理很简单 |
| 嵌入向量 | 将原始数据(词、图片)转换为一串高维数字 |
| 嵌入空间 | 所有向量的集合,相似的向量在空间中距离近 |
一句话记住:高维就像给每个事物一张超长的"属性清单",计算机通过比较这些清单(向量)来做判断。你不需要想象清单长什么样子,只需要知道清单上的数字可以参与数学运算。