一、Hopfield 网络与玻尔兹曼机的历史
1.1 开场:为什么要讲历史
虽然今天的大模型训练范式和早期已经完全不同,但回看历史非常重要,因为历史里最值得学的不是”当年用过什么技巧”,而是科学家是如何定位问题、如何一步步打通思路的。
只看”是什么”意义不大,最重要的是”为什么要这样设计”。真正值钱的是背后的动机。
1.2 Hopfield 网络
2024 年,Hopfield 与 Hinton 共同获得诺贝尔物理学奖。Hopfield 的贡献不在于”网络更深”,而在于他把物理学、神经科学、神经网络三件事联系起来。
Hopfield 受到统计物理学中 Ising 模型(电子自旋向上/向下)的启发。Hopfield 网络的结构特点:
- 只有一层神经元,但存在大量侧向连接(lateral connection)——每个神经元与其他所有神经元都有连接。
- 神经元两两相连,但通常不与自己相连(无自环)。
- 神经元状态是离散的,常写成 $\{-1,+1\}$ 或 $\{0,1\}$。
- 由于网络存在反馈连接,它本质上属于一类早期的循环网络。
其更新规则与感知机类似——每个神经元接收其他神经元的加权和,减去阈值,再过一个符号函数:
\[s_i(t+1)=\operatorname{sign}\!\left(\sum_{j\neq i} w_{ij}s_j(t)-\theta_i\right)\]1.3 能量函数与缺损记忆恢复
Hopfield 的关键思想是在网络中定义能量函数(energy function):
\[E=-\frac{1}{2}\sum_{i\neq j}w_{ij}s_is_j+\sum_i \theta_i s_i\]这是一个动力学方程。Hopfield 证明了:网络每次异步更新都会让能量单调下降(或不变),因此最终一定会收敛到一个局部极小值——即网络存储的某个模式(pattern)。
记忆恢复过程:假设网络有 5 个神经元,存储了两个 pattern——pattern A 是 $(-1, 1, -1, 1, -1)$,pattern B 是 $(1, -1, 1, -1, 1)$。如果输入一个残缺的、带噪声的版本(比如把 pattern A 的某个位置改成 1),网络在动力学方程的不断迭代下,会自动收敛回原来存储的完整 pattern。
这个过程与人脑从残缺记忆中恢复完整记忆的机制高度一致。更有意思的是,这个模型还能以一定概率解 NP 完全问题(如 TSP 旅行商问题)——虽然不能保证每次都找到最优解,但能给出很好的近似解,这进一步说明了能量函数的优化能力。
总结:Hopfield 最核心的贡献,是把统计物理里的能量下降过程,和神经网络里的记忆恢复过程,放进了同一个框架里。
1.4 从 Hopfield 到玻尔兹曼机
Hopfield 的能量观点后来被用于训练玻尔兹曼机(Boltzmann Machine):
- 一般玻尔兹曼机:连接是无向的、层内也可能互连,结构灵活但训练非常困难。
- 受限玻尔兹曼机(Restricted Boltzmann Machine, RBM):可见层与隐层之间连接,但层内不连边,形成二部图结构,训练难度明显下降。
RBM 的意义不在于它今天仍是主流,而在于它提供了一个当时非常关键的训练思路:逐层无监督预训练。
1.5 逐层预训练与深度置信网络
早期深层网络很难直接端到端训练,原因主要有两点:
- 非线性函数主要依赖 sigmoid,深层反传时容易梯度衰减。
- 参数初始化很敏感,随机起点稍差,深层网络就可能训不动。
Hinton 当时的重要突破是:
- 先训练第一层 RBM,让第一层学到输入的统计结构。
- 固定第一层,再训练第二层。
- 逐层堆叠,形成 DBN(Deep Belief Network)。
- 最后再用监督信号做整体微调(fine-tuning)。
它的本质是:先把网络参数放到一个比较好的区域,再用反向传播做任务适配。
现在训练大模型,已经不是当年的逐层预训练范式了;但如果没有这一段历史,人们当时根本缺少训练很多层网络的手段。
二、深层网络为什么后来能训起来
2.1 sigmoid 的瓶颈
回顾早期深层网络训练困难的根源。以 sigmoid 为例,其导数为:
\[\sigma'(x)=\sigma(x)(1-\sigma(x))\]这个导数在绝大多数区域都很小,反向传播时层层相乘,梯度会迅速衰减。因此,网络一深,前面层几乎收不到有效训练信号。
2.2 修正线性单元(ReLU)
ReLU 的定义非常简单:
\[\operatorname{ReLU}(x)=\max(0,x)\]它相较于 sigmoid 的优势在于:
- 正半轴上导数恒为 1,不容易大范围梯度消失。
- 计算便宜,训练稳定。
- 网络可以更深。
ReLU 的成功不只是”换个激活函数”,而是直接改变了深层网络能否顺利传播梯度。
2.3 残差连接
另一个关键突破是残差网络的思想:
\[y = F(x) + x\]其中 $x$ 通过一条捷径直接传到后层,相当于给信息和梯度提供了一条”快速公路”。它解决的问题是:网络很深时,最后一层误差难以有效回传到前面层。
残差连接就像给信息修了一条高速路,不必每次都在层层弯路里慢慢传。
三、卷积神经网络的动机与基本操作
3.1 为什么全连接网络不适合图像
从图像建模的实际挑战切入,全连接层直接处理图像有几个明显问题:
- 参数量爆炸。比如 $100\times 100$ 的灰度图像,全连接到一个中等规模的隐层(如 1000 个神经元),仅第一层就有 $10^7$ 个参数。
- 忽视局部结构。图像的语义往往来自局部区域及其上下文(如边缘、纹理、角点),而不是每个像素与所有像素等价连接。
- 输入尺寸不灵活。全连接网络要求固定输入维度,无法处理不同分辨率的图片。
除了参数问题,图像还需要满足多种不变性(invariance)需求:
- 光照不变性:同一物体在不同光照下应该被识别为同一类。
- 几何形变鲁棒性:物体旋转、缩放、扭曲后,特征应保持稳定。
- 平移不变性:猫在图片中间、左边还是右边,特征应该差不多。
- 前景/背景分离:前景物体可能只占图片的一小部分。
深度学习的核心是表征(representation)。所谓好的表征,就是在各种变化下,同一物体的特征提取结果是一致的或接近的。这样分类器就能轻松工作。
3.2 CNN 的核心思想
CNN 的两个核心先验是:
- 局部感受野(local receptive field):一个位置的语义主要由附近区域决定——不看周围的像素,根本不知道这位置是边缘还是平坦区域。
- 参数共享(weight sharing):同一个模式(边缘、纹理)可以在图像不同位置重复出现——左上角的边缘和右下角的边缘,本质上是一样的模式。
为什么用同一组 kernel 扫过整张图?因为图像有平移等变性(translation equivariance)——同一种视觉模式无论在哪个位置出现,都应该被同一种方式检测到。参数共享正是利用了这个先验。
因此,卷积层不是给每个像素配一套新参数,而是用一个小卷积核在整张图上滑动,对每个局部区域做加权求和,提取出一个特征值。
3.3 二维卷积、stride、padding 与 channel
设输入张量大小为 $H\times W\times C_{\text{in}}$,卷积核大小为 $K_h\times K_w\times C_{\text{in}}$,步长为 $S$,填充为 $P$,则输出空间尺寸为:
\[H_{\text{out}}=\left\lfloor \frac{H+2P-K_h}{S}\right\rfloor + 1,\qquad W_{\text{out}}=\left\lfloor \frac{W+2P-K_w}{S}\right\rfloor + 1\]几个关键点:
- 一个卷积核会同时看见所有输入通道,然后输出一个 feature map。
- 多个卷积核并行工作,就会得到多个输出通道。
stride决定滑动步幅,越大下采样越强。padding用来控制边界信息是否保留,以及输出尺寸是否变化。
3.4 为什么卷积有效
从直觉上给了三个理由:
- 卷积关注局部区域,符合图像的生成规律。
- 卷积在不同位置复用同一组参数,显著减少参数量。
- 卷积天然在建模一个点的上下文,而上下文正是语义形成的关键。
此外,词义也依赖上下文,例如 bank 到底是”银行”还是”河岸”,取决于周围词语。
3.5 Pooling 池化为什么重要
卷积之后常接 Pooling:
- 压缩空间分辨率。
- 保留显著响应。
- 减少后续计算量。
- 提高对局部平移和形变的鲁棒性。
“卷积 + 池化”几乎就是早期 CNN 最核心的两块内容:卷积负责提特征,池化负责做稳健压缩。
四、从 LeNet 到一维/三维卷积
4.1 LeNet-5 与分层表征
以 LeNet-5 为例说明早期 CNN 的工作方式:前面层先提边缘、笔画和简单纹理,中间层提更复杂的局部形状,后面层组合成高层语义。
这说明 CNN 的表征具有明显层次性:越靠前越局部,越靠后越抽象。
4.2 特征可视化
不同层的可视化结果显示,我们可以观察网络早期、中期、后期究竟在提取什么。卷积网络之所以一度特别有魅力,一个原因就是它比很多别的模型更容易”看见”自己学了什么。
4.3 一维卷积与三维卷积
卷积并不局限于图像:
- 一维卷积(1D Convolution)用于文本、语音等序列信号,对一个时间窗口做滑动。
- 二维卷积(2D Convolution)用于图像。
- 三维卷积(3D Convolution)用于视频、医学体数据等,卷积核会同时沿空间和时间/深度方向滑动。
文本和语音做卷积时,本质上也是在一个局部窗口上提取模式,只不过窗口维度变成了时间或序列位置。
五、中文分词与序列标注
5.1 为什么中文分词难
中文分词(Chinese Word Segmentation)作为序列建模的典型任务,即使在大模型时代仍然重要,因为检索、索引、传统 NLP 流水线都受分词质量影响。
中文分词的难点主要有:
- 组合歧义:如”个人的名义”中的”个人”可以是一个词,而”一个人在家”中的”个”又是量词。
- 重叠歧义:如”从小学到中学”与”从小学计算机”中的切分方式不同。
- 整体歧义:如”美国会采取行动”,可能切成”美国/会/采取/行动”,也可能牵涉其他句法理解。
- 人名、机构名、新词持续出现。
- 中文构词和缩略规律并不总是规则可推。
- 可分词短语、插入语、简称等现象很多。
5.2 从词图搜索到序列标注
早期方法是枚举一句话的可能切分路径,再通过词典和概率选最优路径。但这种方法依赖词典、效率低、应对新词也差。
真正的突破是把分词改写成序列标注(sequence labeling)问题:对每个字打标签即可恢复分词结果。
5.3 BIES 标注方案
采用 BIES 风格的标签思想:
B:词首(Begin)I:词中(Inside)E:词尾(End)S:单字成词(Single)
这样一来,输入是字序列,输出是标签序列,分词就从”结构搜索问题”变成了”序列预测问题”。
总结:这一步思路转化非常关键,它标志着中文分词从词典规则,真正走向了统计学习方法。
六、隐马尔可夫模型的引入
6.1 HMM 的直觉
从 HMM 的角度来看:如果把观测到的字序列看作 observation,把背后的分词标签看作 hidden state,那么分词自然可以转化成一个带隐状态的序列模型问题。
在 HMM 里:
- 观测序列是字或其他可见信号。
- 隐状态序列是看不到、但真正决定观测生成方式的结构。
- 模型包含状态转移概率和发射概率两类核心参数。
6.2 HMM 的三个经典问题
HMM 的三大核心问题:
- 评估问题:给定观测序列,求它出现的概率。
- 解码问题:给定观测序列,求最可能的隐状态序列。
- 学习问题:给定样本序列,反推模型参数。
这些内容会在下一节课展开。
七、本章主线总结
本章的主线:
- 先从 Hopfield、玻尔兹曼机、逐层预训练回看深度学习的历史突破。
- 再说明 ReLU 和残差为什么让深层网络真正可训练。
- 接着讲 CNN 为什么适合图像,以及卷积/池化/可视化/1D-3D 卷积的统一思想。
- 最后把中文分词引到序列标注,再引出 HMM。
核心观点:学历史不是为了复古,而是为了理解每一次模型设计背后到底在解决什么训练困难、什么结构困难、什么表示困难。