AI大模型:探索神经网络的奥秘:从模型到深度学习

34 阅读29分钟

探索神经网络的奥秘:从模型到深度学习

摘要

神经网络是一种通过参数化数学公式实现通用函数逼近的模型。本文从“模型即数学公式”出发,系统阐述神经网络的基本原理、训练机制(梯度下降与反向传播)以及以 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=i=1nwixi+b=wx+bz = \sum_{i=1}^{n} w_i x_i + b = \mathbf{w}^\top \mathbf{x} + b

a=f(z)a = f(z)

  • xix_i:输入信号(可以来自原始数据或上一层的输出)
  • wiw_i权重,决定输入的重要性
  • bb偏置,允许激活函数横向平移
  • f()f(\cdot)激活函数,引入非线性

常见激活函数

  • ReLUf(z)=max(0,z)f(z) = \max(0, z)(最常用)
  • Sigmoidf(z)=11+ezf(z) = \frac{1}{1+e^{-z}} (输出可视为概率,但易饱和)
  • Tanhf(z)=ezezez+ezf(z) = \frac{e^{z}-e^{-z}}{e^{z}+e^{-z}} (零中心,比 Sigmoid 稍优)

1.4 多层神经网络与深度

多个神经元组成,多层堆叠形成深度神经网络。一个典型的前馈全连接网络包含:

  • 输入层:接收原始数据
  • 隐藏层:中间层,进行特征提取与变换
  • 输出层:产生最终预测(如分类概率)

当隐藏层数超过 5 层时,通常称为深度学习。深度的核心优势在于分层特征提取:浅层学习简单模式(边缘、纹理),深层组合为复杂语义(物体、场景)。

1.5 补充案例:手动设计参数(非学习方式)

本案例来自原始讲义,用于说明参数设计比公式设计更难。

假设我们想让神经网络检测图像中的边缘,可以尝试手动设计第一层隐藏层的参数。设输入向量 xx 长度为 784(28×28 图像展平),我们希望隐藏层向量 zz 的每个元素为相邻像素的差值:z[i]=x[i]x[i+1]z[i]=x[i]−x[i+1]。 这等价于设置权重 wi=1wi+1=1wi=1,wi+1=−1,其余权重为 0,偏置为 0。例如:

z0=1x0+(1)x1+0x2+z_0 = 1 \cdot x_0 + (-1) \cdot x_1 + 0 \cdot x_2 + \dots

这种手工设计虽然直观,但无法泛化到复杂任务。这正是需要机器学习自动确定参数的原因。


第二部分:线性分类完整案例(鳄鱼 vs 蛇)

本案例来自原始讲义,完整呈现了从随机初始化到迭代优化的全过程,是理解梯度下降和损失函数的极佳示例。

2.1 数据集

以下为 16 种鳄鱼和蛇的身长(米)与体重(公斤)数据:

动物身长 (x)体重 (y)类别
扬子鳄2.545鳄鱼
直布罗陀鳄鱼5225鳄鱼
森林鳄6420鳄鱼
马来鳄6550鳄鱼
奥里诺科鳄4225鳄鱼
尼罗鳄5300鳄鱼
美洲鳄5.5500鳄鱼
盐水鳄5.5400鳄鱼
眼镜王蛇48
非洲岩蟒770
网纹蟒860
印度蟒650
亚马逊绿水蟒10270
缅甸蟒690
紫晶蟒5100
水蟒8200

任务:使用线性模型 y=ax+by = ax + b将两类动物分开(即直线的一侧为鳄鱼,另一侧为蛇)。

2.2 初始参数与误差计算

随机初始化 a=3,b=5a = 3, b = -5

对于每个点,计算 3x5y3x - 5 - y,并取平方作为该点的误差。

例如:

  • 扬子鳄:3×2.5545=42.53 \times 2.5 - 5 - 45 = -42.5,平方 = 1806.25
  • 眼镜王蛇:3×458=13 \times 4 - 5 - 8 = -1,平方 = 1

全部计算结果如下表:

动物(3x-5-y)平方误差
扬子鳄-42.51806.25
直布罗陀鳄鱼-22550625
森林鳄-420176400
马来鳄-550302500
奥里诺科鳄-21847524
尼罗鳄-30090000
美洲鳄-488.5238632.25
盐水鳄-488.5238632.25
眼镜王蛇-11
非洲岩蟒-411681
网纹蟒-411681
印度蟒-371369
亚马逊绿水蟒-27072900
缅甸蟒-908100
紫晶蟒-10010000
水蟒-20040000
总误差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 的典型三层全连接网络结构如下:

输入维度输出维度参数公式参数数量
输入 → 隐藏层1784784(784 \times (784+1))615,440
隐藏层1 → 隐藏层278428(28 \times (784+1))21,980
隐藏层2 → 输出层2810(10 \times (28+1))290
总计637,710

该参数规模远超手工所能调节的范畴,必须依赖计算机自动学习。

3.3 Softmax 与概率输出

输出层的原始值(logits)通过 Softmax 函数 转换为概率分布:

pk=ezkj=09ezj,k=0,1,,9p_k = \frac{e^{z_k}}{\sum_{j=0}^{9} e^{z_j}}, \quad k = 0,1,\dots,9

Softmax 确保所有输出概率非负且和为 1,因此 pkp_k 可直接解释为输入图像属于数字 kk 的置信度。

3.4 损失函数:交叉熵的具体数值例

本案例来自原始讲义,展示交叉熵损失如何随预测概率变化。

假设正确答案是数字“3”(one‑hot 编码中只有第3位为1,其余为0)。模型输出两组不同的概率分布:

  • 第一组:(p_3 = 0.91),其他均为 0.01
    损失 = ln(0.91)0.0943-\ln(0.91) \approx 0.0943

  • 第二组:(p_3 = 0.41),其他分布较散
    损失 = ln(0.41)0.8916-\ln(0.41) \approx 0.8916

结论:模型对正确答案越自信(概率越接近1),交叉熵损失越小。

一般形式的交叉熵损失(one‑hot 标签)为:

L=c=09ycln(pc)=ln(ptrue)L = -\sum_{c=0}^{9} y_c \ln(p_c) = -\ln(p_{\text{true}})


第四部分:训练机制——机器学习如何学习

4.1 训练流程

机器学习通过数据自动确定模型的最优参数。标准训练流程如下:

  1. 随机初始化所有参数(权重 (w) 和偏置 (b)),常用 He / Xavier 初始化。

  2. 前向传播:将一批训练数据输入网络,逐层计算,得到预测输出。

  3. 计算损失:使用损失函数(如交叉熵)评估预测与真实标签的差距。

  4. 反向传播:从输出层向输入层逐层计算损失对每个参数的偏导数。这是利用链式法则高效计算梯度的关键算法。

  5. 梯度下降:根据梯度方向更新参数,使损失减小:

    wnew=woldηLww_{\text{new}} = w_{\text{old}} - \eta \frac{\partial L}{\partial w}

    其中 η\eta学习率,控制每一步的步长。

  6. 重复步骤 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)及其变体

循环神经网络 用于处理序列数据(文本、语音、时间序列)。其核心是隐藏状态 hth_t,它随时间步传递历史信息: ht=tanh(Wxhxt+Whhht1+bh)h_t = \tanh(W_{xh} x_t + W_{hh} h_{t-1} + b_h)

但传统 RNN 存在严重的梯度消失/爆炸问题,难以捕捉长距离依赖(例如句子开头的名词与末尾的动词的一致性)。

LSTM(长短期记忆网络) 通过三个门控单元解决该问题:

  • 遗忘门:决定丢弃多少旧记忆
  • 输入门:控制新信息的写入量
  • 输出门:调节记忆对当前输出的影响

GRU(门控循环单元) 是 LSTM 的简化版,将遗忘门和输入门合并为更新门,结构更精简,训练更快,性能相近。

5.4 Transformer 与自注意力机制

Transformer 完全摒弃了循环结构,基于自注意力机制 实现序列建模。自注意力允许序列中任意两个位置直接交互,并支持全并行计算,极大提升了训练效率。

自注意力计算Attention(Q,K,V)=softmax(QKdk)V\text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V

  • Q,K,VQ, K, V 由输入序列经过线性变换得到
  • 缩放因子 1/dk1/\sqrt{d_k} 防止内积过大

Transformer 由编码器解码器堆叠而成(通常各 6 层),每个编码器/解码器包含多头自注意力和前馈网络,并带有残差连接与层归一化。

Transformer 是现代大语言模型(GPT-4、LLaMA、BERT)的基石。

5.5 ResNet 与残差学习

残差网络 通过跳跃连接将输入直接跨层传递到输出,使网络学习残差映射 F(x)=H(x)xF(x) = H(x) - x 而非完整映射 H(x)H(x)。残差块的形式: H(x)=F(x)+xH(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 的简化版本
TransformerTransformer基于自注意力的序列模型
残差网络Residual Network (ResNet)使用跳跃连接的深度网络
跳跃连接Skip Connection / Shortcut跨层直接传递信息的连接
梯度消失Vanishing Gradient反向传播中梯度趋近于 0
梯度爆炸Exploding Gradient梯度指数级增长
批归一化Batch Normalization标准化各层输入以稳定训练
DropoutDropout训练时随机丢弃神经元

附录 B:核心公式汇总

  1. 神经元计算
    z=wx+b,a=f(z)z = \mathbf{w}^\top \mathbf{x} + b, \quad a = f(z)

  2. ReLU 激活函数
    ReLU(z)=max(0,z)\text{ReLU}(z) = \max(0, z)

  3. Softmax 函数
    pk=ezkjezjp_k = \frac{e^{z_k}}{\sum_{j} e^{z_j}}

  4. 交叉熵损失(one‑hot 标签)
    L=ln(ptrue)L = -\ln(p_{\text{true}})

  5. 梯度下降更新
    wwηLww \leftarrow w - \eta \frac{\partial L}{\partial w}

  6. 残差块
    H(x)=F(x)+xH(x) = F(x) + x

  7. 自注意力机制
    Attention(Q,K,V)=softmax(QKdk)V\text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V

附录 C:MNIST 网络参数详细计算表(637,710)

输入维度输出维度参数公式参数数量
输入 → 隐藏层1784784784×(784+1)784 \times (784+1)615,440
隐藏层1 → 隐藏层27842828×(784+1)28 \times (784+1)21,980
隐藏层2 → 输出层281010×(28+1)10 \times (28+1)290
总计637,710

附录 D:梯度消失/爆炸的链式连乘说明

以三层网络为例,损失 LL 对第一层权重 W(1)W^{(1)}) 的梯度为:

LW(1)=[diag(f(z(3)))W(3)][diag(f(z(2)))W(2)]La(3)a(1)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)}}

diag(f(z))W<1\| \text{diag}(f'(z)) W \| < 1,连乘导致梯度消失;若大于 1,则爆炸。ReLU 在正半轴 f(z)=1f'(z)=1,配合 He 初始化可以保持范数稳定。

附录 E:重要概念补充说明

  • 学习率调度:训练过程中动态降低学习率(如余弦退火、分段常数衰减)有助于更好收敛。
  • 优化器变体:Adam、RMSProp 等自适应学习率方法改进了基本梯度下降。
  • 数据增强:对图像进行随机旋转、裁剪、颜色抖动等操作,生成更多训练样本以减轻过拟合。
  • 卷积层与池化层的区别:卷积层有可学习的权重,池化层无权重,仅作下采样。

参考文献与推荐阅读

  1. LeCun, Y., Cortes, C., & Burges, C. J. (1998). The MNIST database of handwritten digits.
  2. Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet classification with deep convolutional neural networks. NeurIPS.
  3. Hochreiter, S., & Schmidhuber, J. (1997). Long short-term memory. Neural Computation.
  4. Vaswani, A., et al. (2017). Attention is all you need. NeurIPS.
  5. He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. CVPR.
  6. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
  7. 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‑pTemperature 的组合,控制模型在文本生成时的“自由发挥”程度。

8.4 为什么 LLM 能看得懂上文?—— 详解除以 Transformer 为核心的 LLM 架构

尽管 GPT 系列的参数达到万亿级别,结构极其复杂,但从抽象的底层逻辑看,它依然遵循 多层解码器(Decoder‑Only) 的架构,由大量堆叠的、结构相同的Transformer 块组成。

我们会通过一个具体的例子,理解它是如何处理一段话的:

场景: 我们输入一个不完整的句子 “天空非常……”,LLM 需要根据前文预测大概率的下一个词是正确的 “蓝” 而非 “硬”

处理步骤:

  • 步骤 1:分词与向量化(Tokenization & Embedding)

    • 大语言模型无法直接看汉字,会将输入文本切分为 token(子词单元)。例如:["天空", "非常", "......"] 被映射为高维空间的向量。
    • 模型还会加入位置编码(Positional Encoding),让模型感知词汇的前后顺序,否则模型会认为 ["非常", "天空"] 与输入等价。
  • 步骤 2:堆叠的解码器(Stacked Decoders)

    • 切分后的向量会依次流入堆叠的 N 层解码器(如 GPT‑3 有 96 层)进行深度特征提取。这也是完成下一词预测的核心环节,通过 多头掩码自注意力机制(Masked Multi-Head Self-Attention) 与前馈神经网络共同协作:
      1. 掩码自注意力层:让模型在预测下一个词时,只能关注到当前词以及之前的所有词,而无法“偷看”后面的词语。比如预测“……非常的”的后半截,"蓝" 必须与前文的 "天空" 建立强关联。
      2. 注意力机制:具体的计算公式为 Attention(Q,K,V) = softmax((QK^T)/√d_k) * V,其中 Q、K、V 分别代表查询、键和值。这种机制可以被通俗地理解为**“阅读理解”**:计算每个 token 与其他所有相关 token 的匹配程度,找出逻辑上真正相关的关键信息。
      3. 前馈神经网络(Feed-Forward Network, FFN):该网络对注意力层筛选出的信息进行复杂的非线性处理,本质是一个“知识存储与特征转换”的模块,提取逻辑关系并准备生成输出。
  • 步骤 3:最终的输出生成(Output Generation)

    • 最后一层解码器输出的最终向量,会被传入 Softmax 层(与我们之前在 MNIST 分类案例中使用的机制原理相同),生成一个覆盖全词典的概率列表,如 P(“蓝”) = 0.85, P(“高”) = 0.1, P(“轻”) = 0.04 等。
    • 此时,系统会自动调用第 8.3 节中介绍的 解码与采样策略(贪婪、Top‑p 等),从中抽取一个 token(例如抽中了 "蓝"),确认最终的输出判定。

通过上述拆解,我们得以发现:尽管 GPT 的参数量达到了万亿级别,其数百层的“掩码自注意力”流程极其复杂,但从数学原理和模型结构的底层逻辑来看,它并没有脱离前文介绍的神经网络基础架构

它仍然是那个“万能公式”——输入一串可以无限长的序列向量,通过海量的矩阵运算(计算量大幅提升),输出下一个单词的概率分布。所依赖的训练方式,仍然是前文的核心——前向传播、计算损失、梯度下降反向传播的大规模并行版本。它是在此基础上,通过堆叠深度、引入掩码自注意力机制,并经历了预训练、SFT、RLHF 三阶段范式,才从基础的“单词统计器”淬炼为了当下的“通用人工智能引擎”。


参考文献与推荐阅读(本章节)

  1. Vaswani, A., et al. (2017). Attention is all you need. NeurIPS.
  2. Radford, A., et al. (2019). Language Models are Unsupervised Multitask Learners. (GPT-2).
  3. Brown, T. B., et al. (2020). Language Models are Few-Shot Learners. (GPT-3). NeurIPS.
  4. Ouyang, L., et al. (2022). Training language models to follow instructions with human feedback. (InstructGPT). arXiv.
  5. Rae, J. W., et al. (2021). Scaling Language Models: Methods, Analysis & Insights from Training Gopher. DeepMind.

插曲:什么是“高维向量”?——从你熟悉的三维空间说起

在理解神经网络(尤其是大语言模型)时,你可能会频繁遇到“高维向量”、“嵌入空间”、“向量化”等术语。很多初学者会被“高维”这个词吓到,误以为需要理解四维以上的几何。其实,我们可以用非常简单的类比来理解。

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. 小结

关键词通俗解释
维度描述一个事物所用的数字个数
低维如二维平面、三维空间,容易想象但表达能力有限
高维成百上千个数字,虽然无法想象,但数学处理很简单
嵌入向量将原始数据(词、图片)转换为一串高维数字
嵌入空间所有向量的集合,相似的向量在空间中距离近

一句话记住:高维就像给每个事物一张超长的“属性清单”,计算机通过比较这些清单(向量)来做判断。你不需要想象清单长什么样子,只需要知道清单上的数字可以参与数学运算。