序
本文是国科大《模式识别与机器学习》课程的简要复习,基于课件然后让ai帮忙补充了一些解释。本文是第十三章,是最后一章。本文章更多是对于课件的知识点的记录总结,找了点例题和讲解,建议结合其他资料或者课件来看。
第十三章 深度学习
本章旨在从传统机器学习过渡到深度学习,重点在于理解神经网络的结构演进、卷积神经网络(CNN)的特征提取机制、Transformer 的注意力机制以及生成式模型的基本原理。
13.1 神经元与网络基础
13.1.1 人工神经元(M-P 模型)
神经元是神经网络的最小单位。它模仿生物神经元接收信号、加权求和、判断是否超过阈值并输出。
y = f ( ∑ i = 1 n w i x i + b ) y = f\left(\sum_{i=1}^{n} w_i x_i + b\right) y=f(i=1∑nwixi+b)
- x i x_i xi:输入特征。
- w i w_i wi:权重(Weight),代表输入的重要性。
- b b b:偏置(Bias),调整激活的难易程度。
- f f f:激活函数,引入非线性(如 Sigmoid, ReLU)。
直观理解:神经元就像一个"投票过滤器"。权重是各评委的话语权,偏置是个人的偏见底色,激活函数则是决定"最终是否把这件事说出去"的门槛。
13.1.2 激活函数对比表
| 激活函数 | 公式 | 特点 | 考试注意点 |
|---|---|---|---|
| Sigmoid | 1 / ( 1 + e − x ) 1 / (1 + e^{-x}) 1/(1+e−x) | 输出在 (0, 1) 之间 | 容易产生梯度消失 |
| ReLU | m a x ( 0 , x ) max(0, x) max(0,x) | 计算极其简单,单侧抑制 | 深度学习中最主流,解决梯度消失 |
| Softmax | e x i / ∑ e x j e^{x_i} / \sum e^{x_j} exi/∑exj | 所有输出和为 1 | 用于多分类问题的输出层 |
13.2 深度学习的训练核心:反向传播 (BP)
反向传播算法是考试中理解"网络如何更新"的关键。你不需要推导偏导数,但要明白它的逻辑步骤。
核心逻辑:
- 前向传播:数据进去,算出一个预测值。
- 计算误差:预测值和真实值(Label)差了多少。
- 误差反传 :根据误差,通过链式法则从后往前,告诉每一层的每一个权重 w w w:你刚才对这个错误的贡献是多少。
- 参数更新:权重根据分配到的"责任"进行微调。
直观理解:就像一个生产线,最后成品不合格。质量检查员从成品往回溯,发现是最后一道工序偏了 2mm,倒数第二道工序偏了 1mm,于是每道工序都按比例调整。
13.3 卷积神经网络 (CNN)
13.3.1 为什么用 CNN 而不是全连接 (MLP)?
如果用普通网络处理一张 12MP 的图片,参数量会达到几十亿(3.6B),根本无法训练。CNN 借鉴了生物视觉的两个特性:
- 局部连接:神经元只看图片的一小块("鸟喙"检测器)。
- 权值共享:同一个检测器可以扫过整张图(左上的鸟喙和中间的鸟喙可以用同一个卷积核找)。
13.3.2 核心组件与计算
考试考点:输出尺寸计算。
计算公式:
已知输入大小 I I I,卷积核大小 K K K,步长(Stride) S S S,填充(Padding) P P P:
O = I − K + 2 P S + 1 O = \frac{I - K + 2P}{S} + 1 O=SI−K+2P+1
- 卷积层:提取特征。
- 池化层 (Pooling) :压缩特征,减小尺寸(通常有 Max Pooling 和 Mean Pooling),它没有参数需要学习。
- 全连接层 (Flatten/FC):把提取到的特征拉直,进行最后的分类。
另一种形式是:
给定输入图像大小 W × H W \times H W×H,卷积核大小 K × K K \times K K×K,步长 S S S,填充 P P P。
W W W(Width)是它的宽度, H H H(Height)是它的高度。
W o u t = ⌊ W i n − K + 2 P S ⌋ + 1 W_{out} = \lfloor \frac{W_{in} - K + 2P}{S} \rfloor + 1 Wout=⌊SWin−K+2P⌋+1 W i n W_{in} Win:输入宽度(高度同理)。
K K K:卷积核(Filter)大小。
P P P:填充(Padding)层数(通常是为了保持尺寸或处理边缘)。
S S S:步长(Stride)。
如果输入图像的高度是 H i n H_{in} Hin,那么输出高度 H o u t H_{out} Hout 的计算公式为: H o u t = ⌊ H i n − F + 2 P S ⌋ + 1 H_{out} = \lfloor \frac{H_{in} - F + 2P}{S} \rfloor + 1 Hout=⌊SHin−F+2P⌋+1
H i n H_{in} Hin:输入图像的原始高度(像素数)。 F F F:卷积核在垂直方向上的大小(通常卷积核是正方形 F × F F \times F F×F,所以高也是 F F F)。 P P P:垂直方向的填充。 S S S:垂直方向的步长。
如果题目说 "Same Padding",意思就是输出尺寸和输入一致。如果 S = 1 S=1 S=1,那么 P = ( K − 1 ) / 2 P = (K-1)/2 P=(K−1)/2。
参数量计算(权重数)公式:
T o t a l _ P a r a m s = ( F × F × C i n + 1 ) × C o u t Total\Params = (F \times F \times C{in} + 1) \times C_{out} Total_Params=(F×F×Cin+1)×Cout
F × F F \times F F×F:卷积核大小。
C i n C_{in} Cin:输入通道数(如 RGB 为 3)。
C o u t C_{out} Cout:输出通道数(即卷积核的个数)。
- 1 +1 +1:表示每个卷积核有一个偏置 (Bias)。
参数量就像是你要买多少个"滤镜"。每个滤镜的大小是 F × F F \times F F×F,它要处理之前所有层( C i n C_{in} Cin)留下的信息,最后你想得到多少个新特征( C o u t C_{out} Cout),就得准备多少套滤镜。
例题:
题目 :输入图片尺寸为 32 × 32 32 \times 32 32×32,使用 5 × 5 5 \times 5 5×5 的卷积核,步长 S = 1 S=1 S=1,填充 P = 2 P=2 P=2。请计算输出特征图的尺寸。
步骤1 :识别参数。 I = 32 , K = 5 , S = 1 , P = 2 I=32, K=5, S=1, P=2 I=32,K=5,S=1,P=2。
步骤2 :带入公式。 O = ( 32 − 5 + 2 × 2 ) / 1 + 1 O = (32 - 5 + 2 \times 2) / 1 + 1 O=(32−5+2×2)/1+1。
步骤3 :计算结果。 O = ( 31 ) / 1 + 1 = 32 O = (31) / 1 + 1 = 32 O=(31)/1+1=32。
结论 :输出依然是 32 × 32 32 \times 32 32×32(这种 Padding 方式常被称为 Same Padding)。
例题2
题目: 输入图像为 224 × 224 × 3 224 \times 224 \times 3 224×224×3(RGB),第一层使用 64 个 3 × 3 3 \times 3 3×3 的卷积核,步长为 2,填充为1。
- 计算输出特征图的尺寸。
- 计算该层的总参数量。
步骤 1:算尺寸带入公式: W o u t = ( 224 − 3 + 2 × 1 ) / 2 + 1 = 223 / 2 + 1 = 111.5 + 1 ≈ 112 W_{out} = (224 - 3 + 2 \times 1) / 2 + 1 = 223 / 2 + 1 = 111.5 + 1 \approx 112 Wout=(224−3+2×1)/2+1=223/2+1=111.5+1≈112。输出尺寸为: 112 × 112 × 64 112 \times 112 \times 64 112×112×64。
步骤 2:算参数单个卷积核参数 = 3 × 3 × 3 ( 通道 ) + 1 ( 偏置 ) = 28 3 \times 3 \times 3 (\text{通道}) + 1 (\text{偏置}) = 28 3×3×3(通道)+1(偏置)=28。总参数 = 28 × 64 = 1792 28 \times 64 = 1792 28×64=1792。
13.4 Transformer 机制
Transformer 彻底改变了处理序列(如文字、视频)的方式。其核心是自注意力机制 (Self-Attention)。
13.4.1 自注意力机制的三个矩阵
- Query (Q):我去查谁?
- Key (K):谁等着被查?
- Value (V):查到了带走什么信息?
直观理解:这就像在一个派对里。你想了解某人(Q),你扫视全场人的名牌(K),计算你和每个人相似度(注意力权重),最后你根据相似度高低,吸收了他们身上的故事(V)。
或者说:
Query ( Q Q Q):代表"我要找什么"。
Key ( K K K):代表"我有什么标签"。
Value ( V V V):代表"我实际的内容"。
计算三部曲:
算得分: S c o r e = Q ⋅ K T Score = Q \cdot K^T Score=Q⋅KT(计算当前词和所有词的相关度)。
归一化: A t t e n t i o n _ W e i g h t s = Softmax ( S c o r e d k ) Attention\_Weights = \text{Softmax}(\frac{Score}{\sqrt{d_k}}) Attention_Weights=Softmax(dk Score)(把得分变成概率,总和为 1)。
加权和: O u t p u t = ∑ ( W e i g h t s × V ) Output = \sum (Weights \times V) Output=∑(Weights×V)(根据相关度,把大家的 V 收集起来)。
13.4.2 为什么比 RNN 好?
- 并行计算:RNN 必须一个字一个字读,Transformer 可以一次性看一整句话。
- 长程依赖 :Transformer 无论两个字隔多远,都能通过 Q ⋅ K Q \cdot K Q⋅K 直接建立联系。
13.5 生成式模型 (Generative Models)
13.5.1 生成模型对比表
| 模型类型 | 核心思想 | 优缺点 |
|---|---|---|
| VAE (变分自编码器) | 学习数据的分布(均值和方差) | 结果容易模糊 |
| GAN (生成对抗网络) | 生成器和判别器"左右互搏" | 效果逼真但训练不稳定 |
| Diffusion (扩散模型) | 先加噪把图毁掉,再学习如何去噪还原 | 效果最好(Stable Diffusion),但速度慢 |
13.5.2 GAN 的基本思路
- 生成器 (Generator):负责造假,目标是骗过判别器。
- 判别器 (Discriminator):负责鉴假,目标是识破生成器。
直观理解:生成器是伪钞制造者,判别器是警察。警察越厉害,伪钞制造者技术就越精湛,最后伪钞和真钞几乎无法分辨。
GAN 的损失函数:
GAN 的目标是什么? min G max D V ( D , G ) \min_G \max_D V(D, G) GminDmaxV(D,G)
D D D 的目标:最大化判别正确率(给真图打高分,给假图打低分)。
G G G 的目标:最小化 D D D 的判断能力(让 D D D 分不清真假)。