第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θ:xy。两类典型任务:

  • 分类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)π(as) 以最大化累积奖励。

虽然预训练主要用自监督学习,但对齐阶段(RLHF,第13章)会用到强化学习:把语言模型视为策略,把人类偏好转化为奖励,用策略梯度方法优化模型。因此,理解强化学习的基本概念对第四部分很重要。

3.2 线性模型与感知机

3.2.1 线性回归与逻辑回归

最简单的模型是线性模型 y=w⊤x+by = w^\top x + by=wx+b线性回归用均方误差(MSE)训练,用于回归任务。逻辑回归在线性模型外接 Sigmoid 函数 σ(z)=11+e−z\sigma(z) = \frac{1}{1+e^{-z}}σ(z)=1+ez1,将输出压缩到 (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(wx+b)

感知机通过错分样本更新权重:w←w+η(y−y^)xw \leftarrow w + \eta(y - \hat{y})xww+η(yy^)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+ez1:输出 (0,1)(0,1)(0,1),但易梯度消失。
  • Tanh ez−e−zez+e−z\frac{e^z - e^{-z}}{e^z + e^{-z}}ez+ezezez:输出 (−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}f2L 出发,逐层计算:

∂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}f1L=f2Lf1f2

最终得到各层权重的梯度。反向传播的精妙在于:它把看似复杂的"全网络梯度"问题,分解为局部的、可复用的"每层梯度"计算,使训练深层网络成为可能。

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(Whht1+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) - 反向传播的提出。

更多推荐