大语言模型技术 step by step 第3章 机器学习与深度学习基础
第3章 机器学习与深度学习基础
学习目标
- 理解机器学习的基本范式:监督、无监督与自监督学习
- 掌握神经网络的核心组件与训练流程
- 了解从浅层网络到深度网络的关键技术演进
本章为理解大模型铺垫深度学习基础。我们将从机器学习的范式出发,逐步过渡到神经网络、反向传播,再到序列模型,最终引出 Transformer 诞生的动机。如果你已熟悉这些内容,可快速浏览后进入第二部分。
3.1 机器学习范式
3.1.1 监督学习
监督学习是最常见的机器学习范式。给定特征-标签对 (x(i),y(i))(x^{(i)}, y^{(i)})(x(i),y(i)),模型学习一个映射 fθ:x↦yf_\theta: x \mapsto yfθ:x↦y。两类典型任务:
- 分类:yyy 是离散类别,如判断邮件是否为垃圾邮件。
- 回归:yyy 是连续值,如预测房价。
监督学习的目标是经验风险最小化(在训练集上损失最小),同时通过正则化等手段实现结构风险最小化(控制模型复杂度以防过拟合)。监督学习的瓶颈在于需要大量标注数据,而标注成本高昂。
3.1.2 无监督学习
无监督学习处理没有标签的数据,目标是发现数据中的结构:
- 聚类:将相似样本归为一类(如 K-Means)。
- 降维:找到数据的低维表示(如 PCA、t-SNE)。
- 密度估计:估计数据分布 p(x)p(x)p(x)。
- 表示学习:学习数据的特征表示,这是预训练的核心。
无监督学习的价值在于能利用海量无标注数据,这正是大模型突破数据瓶颈的关键。
3.1.3 自监督学习
自监督学习是大模型预训练的基石。它的核心思想是:从数据本身构造监督信号,无需人工标注。
对文本而言,最自然的自监督任务是"预测下一个词"或"预测被遮盖的词"——这些"标签"直接来自原始文本,无需任何人工标注。通过这种方式,模型可以利用互联网上海量的无标注文本进行学习。
自监督学习的成功彻底改变了 NLP 的范式:从"每个任务单独标注、单独训练",转向"在大规模无标注数据上预训练,再在少量标注数据上微调"。这种"预训练 + 微调"范式正是大模型的起点。
3.1.4 强化学习简介
强化学习(RL)研究智能体在与环境交互中通过奖励信号学习最优策略。其框架是马尔可夫决策过程(MDP):智能体在状态 sss 采取动作 aaa,环境返回奖励 rrr 和新状态 s′s's′,智能体学习策略 π(a∣s)\pi(a \mid s)π(a∣s) 以最大化累积奖励。
虽然预训练主要用自监督学习,但对齐阶段(RLHF,第13章)会用到强化学习:把语言模型视为策略,把人类偏好转化为奖励,用策略梯度方法优化模型。因此,理解强化学习的基本概念对第四部分很重要。
3.2 线性模型与感知机
3.2.1 线性回归与逻辑回归
最简单的模型是线性模型 y=w⊤x+by = w^\top x + by=w⊤x+b。线性回归用均方误差(MSE)训练,用于回归任务。逻辑回归在线性模型外接 Sigmoid 函数 σ(z)=11+e−z\sigma(z) = \frac{1}{1+e^{-z}}σ(z)=1+e−z1,将输出压缩到 (0,1)(0,1)(0,1),用于二分类,损失为二元交叉熵。
逻辑回归虽简单,却包含了神经网络的核心要素:线性变换 + 非线性激活 + 交叉熵损失。理解它,就理解了神经网络的"单元"。
3.2.2 感知机
感知机是最早的神经网络模型,由 Rosenblatt 于 1958 年提出。它是一个二分类器:
y=sign(w⊤x+b)y = \mathrm{sign}(w^\top x + b)y=sign(w⊤x+b)
感知机通过错分样本更新权重:w←w+η(y−y^)xw \leftarrow w + \eta(y - \hat{y})xw←w+η(y−y^)x。感知机收敛定理保证:若数据线性可分,感知机必能在有限步内收敛。
然而,感知机只能解决线性可分问题,无法处理异或(XOR)等非线性问题。这一局限曾让神经网络研究陷入低谷(“AI 寒冬”)。突破来自多层网络:通过叠加多个线性层与非线性激活,可以逼近任意复杂的函数。
3.3 多层感知机与反向传播
3.3.1 多层感知机(MLP)
多层感知机由输入层、若干隐藏层、输出层组成。每个隐藏层执行:
h=σ(Wx+b)\mathbf{h} = \sigma(W\mathbf{x} + \mathbf{b})h=σ(Wx+b)
其中 σ\sigmaσ 是非线性激活函数。通用近似定理表明:只要隐藏层足够宽,带非线性激活的单隐藏层 MLP 可以逼近任意连续函数。这从理论上保证了神经网络的强大表达能力。
关键在于非线性激活。若没有非线性,多层线性变换的叠加仍是线性变换,深度便失去意义。常见激活函数:
- Sigmoid 11+e−z\frac{1}{1+e^{-z}}1+e−z1:输出 (0,1)(0,1)(0,1),但易梯度消失。
- Tanh ez−e−zez+e−z\frac{e^z - e^{-z}}{e^z + e^{-z}}ez+e−zez−e−z:输出 (−1,1)(-1,1)(−1,1),零中心化,但仍易饱和。
- ReLU max(0,z)\max(0, z)max(0,z):计算简单、梯度不饱和,是深度学习的主力。
- GELU x⋅Φ(x)x \cdot \Phi(x)x⋅Φ(x):高斯误差线性单元,平滑的 ReLU,现代 Transformer(BERT/GPT 系)的常用激活;原始 Transformer 论文使用 ReLU。
- SwiGLU:门控变体,LLaMA 等现代大模型采用(第7章)。
3.3.2 反向传播算法
反向传播是训练神经网络的核心算法,本质是链式法则的逐层应用。以两层 MLP 为例:
L=ℓ(f2(f1(x)))\mathcal{L} = \ell(f_2(f_1(\mathbf{x})))L=ℓ(f2(f1(x)))
前向传播逐层计算并缓存中间结果;反向传播从 ∂L∂f2\frac{\partial \mathcal{L}}{\partial f_2}∂f2∂L 出发,逐层计算:
∂L∂f1=∂L∂f2⋅∂f2∂f1\frac{\partial \mathcal{L}}{\partial f_1} = \frac{\partial \mathcal{L}}{\partial f_2} \cdot \frac{\partial f_2}{\partial f_1}∂f1∂L=∂f2∂L⋅∂f1∂f2
最终得到各层权重的梯度。反向传播的精妙在于:它把看似复杂的"全网络梯度"问题,分解为局部的、可复用的"每层梯度"计算,使训练深层网络成为可能。
3.3.3 从零实现一个 MLP
import torch
import torch.nn as nn
class MLP(nn.Module):
def __init__(self, in_dim, hidden_dim, out_dim):
super().__init__()
self.fc1 = nn.Linear(in_dim, hidden_dim)
self.act = nn.GELU()
self.fc2 = nn.Linear(hidden_dim, out_dim)
def forward(self, x):
return self.fc2(self.act(self.fc1(x)))
# 训练循环
model = MLP(784, 256, 10)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3)
for x, y in dataloader:
optimizer.zero_grad() # 清空上一步的梯度(惯例:放在前向之前)
logits = model(x)
loss = nn.functional.cross_entropy(logits, y)
loss.backward() # 反向传播
optimizer.step() # 更新参数
这段代码包含了深度学习训练的完整要素:模型定义、前向传播、损失计算、反向传播、参数更新。后续所有大模型的训练,本质上都是在这个框架上的扩展。
3.4 深度学习的关键组件
3.4.1 损失函数
损失函数衡量预测与真实值的差距。分类用交叉熵,回归用 MSE。损失函数与概率模型紧密相关:交叉熵对应最大似然估计,MSE 对应高斯噪声假设下的最大似然。选择合适的损失,等价于对数据生成过程做出合理的概率假设。
3.4.2 优化器
- SGD + 动量:累积历史梯度方向,加速收敛、减少震荡。
- Adam:结合一阶矩(动量)与二阶矩(自适应学习率),对每个参数自适应调整步长。
- AdamW:将权重衰减与自适应学习率解耦,是大模型训练的事实标准(第11章)。
优化器的选择对训练效果影响巨大。大模型训练中,AdamW 配合 Warmup 和余弦退火已成为标准配方。
3.4.3 正则化
正则化防止过拟合、稳定训练:
- L2 权重衰减:约束权重大小。
- Dropout:训练时随机置零部分神经元,迫使网络不依赖单一通路。
- Layer Normalization:对每个样本的特征维度归一化,稳定深层网络训练。Transformer 普遍使用 LayerNorm(第6章)。
3.4.4 参数初始化
初始化影响训练能否开始以及收敛速度。若初始化不当,信号会在前向传播中爆炸或消失。Xavier 初始化(针对 tanh)和 He 初始化(针对 ReLU)通过控制方差,使信号在各层间保持稳定。残差连接的引入大大缓解了初始化的敏感性,使训练超深网络成为可能。
3.5 序列建模
自然语言是变长序列,处理序列是 NLP 的核心需求。序列建模面临三大挑战:序列长度可变、需捕捉长距离依赖、需编码顺序信息。
3.5.1 循环神经网络(RNN)
RNN 通过隐状态在时间步间传递信息:
ht=tanh(Whht−1+Wxxt+b)h_t = \tanh(W_h h_{t-1} + W_x x_t + b)ht=tanh(Whht−1+Wxxt+b)
RNN 理论上能捕捉任意长度依赖,但实践中有致命缺陷:梯度消失与梯度爆炸。在反向传播通过时间(BPTT)时,梯度需要连乘多个时间步的雅可比矩阵。若这些矩阵的谱半径小于 1,梯度指数衰减(消失);若大于 1,梯度指数增长(爆炸)。这导致 RNN 难以学习长距离依赖。
3.5.2 LSTM 与 GRU
LSTM(长短期记忆网络)通过门控机制(输入门、遗忘门、输出门)控制信息流动,并通过单元状态提供一条梯度"高速公路",缓解了梯度消失。GRU(门控循环单元)是 LSTM 的简化版,参数更少。
LSTM/GRU 在 2010 年代中期是序列建模的主流,但仍有两个根本局限:一是无法并行(必须按时间步顺序计算),训练效率低;二是长距离依赖虽有改善却未根除。
3.5.3 卷积神经网络处理序列
一维 CNN 也能处理序列,通过滑动窗口提取局部特征。CNN 的优势是可并行,且通过堆叠多层可扩大感受野。但 CNN 的感受野是局部的,要捕捉远距离依赖需要很深的网络或很大的卷积核,效率仍有限。
3.6 从序列模型到 Transformer
RNN 与 CNN 各有优劣,却都难以兼顾两个目标:高效并行与长距离依赖建模。RNN 能建模长依赖但无法并行;CNN 可并行但感受野受限。
2017 年,Transformer 横空出世,用一个简洁而强大的机制——注意力——同时解决了这两个问题:
- 并行性:注意力对所有位置同时计算,无需像 RNN 那样顺序处理。
- 长距离依赖:任意两个位置直接通过注意力交互,路径长度为 O(1)O(1)O(1),无论距离多远。
Transformer 的诞生不仅革新了 NLP,更成为大模型的统一架构。理解它的前提,是掌握本章的神经网络与序列建模基础。从下一章开始,我们将进入 Transformer 的世界:先理解它如何表示语言(第4章词嵌入),再剖析它的核心机制——注意力(第5章),最后组装完整架构(第6章)。
小结
本章回顾了从传统机器学习到深度学习的基础知识。我们看到了监督、无监督、自监督三种范式的区别,理解了 MLP 与反向传播如何让训练深层网络成为可能,也看到了 RNN/CNN 在序列建模上的局限——正是这些局限催生了 Transformer。掌握本章内容,你就具备了阅读第二部分的核心架构剖析的准备。
延伸阅读
- Goodfellow et al. Deep Learning 第 5-8 章 - 深度学习基础权威论述。
- LeCun, Bengio, Hinton. Deep Learning (Nature, 2015) - 深度学习综述。
- Hochreiter & Schmidhuber. Long Short-Term Memory (1997) - LSTM 经典论文。
- Rumelhart et al. Learning representations by back-propagating errors (1986) - 反向传播的提出。
更多推荐



所有评论(0)