这门课正好分成上下两部分:上半段是传统模式识别,关心怎样从概率、间隔和投影中得到决策;下半段是机器视觉,关心怎样让网络从像素中学习表示,再完成分类、分割、检测和生成。
我按这个顺序压缩了全课。上半段以模式识别复习课件为准,保留能直接用于计算的公式;下半段按韦星星的期末 PPT 展开。目录里的 2025 年前人回忆只用于提醒哪些计算容易遗漏,我没有把它当作原卷,也没有据此推断考频。
使用时先读每节开头的主线,再遮住例子自己算一遍。卡在推导细节时,再回到对应讲次。
一套完整的模式识别系统通常按“信息获取 → 预处理 → 特征选择或提取 → 分类器训练 → 对新样本决策”运行。后面的贝叶斯、SVM、PCA 和 K 均值,分别落在分类、特征处理或无监督组织数据的环节。
一、贝叶斯决策
贝叶斯公式:
P(ωi∣x)=p(x)p(x∣ωi)P(ωi),p(x)=∑jp(x∣ωj)P(ωj)
最小错误率:选后验最大的类。等价于选 p(x∣ωi)P(ωi) 最大(分母相同可省)。
最小错误率似然比阈值(注意比值方向):
l(x)=p(x∣ω2)p(x∣ω1)>P(ω1)P(ω2)⟹判 ω1
记法:似然比是「1 比 2」,阈值先验是「2 比 1」,上下颠倒。
最小风险三步法:
- 算后验 P(ωj∣x);
- 算每个决策的条件风险 R(αi∣x)=∑jλijP(ωj∣x);
- 取风险最小的决策。
易错点:损失下标 λij = 真实为 ωj、却判成 αi 的损失。算 R(α1∣x) 时用第一行 λ11,λ12 配后验。
最小风险两类似然比阈值(带损失因子,容易写错):
p(x∣ω2)p(x∣ω1)>P(ω1)P(ω2)⋅λ21−λ11λ12−λ22⟹判 ω1
两者关系:0-1 损失(λii=0,λij=1)下,最小风险退化为最小错误率。即最小错误率是最小风险的特例。
一个很短的自测:若后验为 (0.7,0.3),损失矩阵为
λ=[0140],
则 R(α1∣x)=1.2,R(α2∣x)=0.7。最小错误率会选第一类,最小风险却会选第二个决策;差别来自错误代价不对称。
二、最大似然估计(MLE)
一类 MLE 计算都按同一套顺序走:写联合似然 L(θ),取对数得到 ℓ(θ),求导并令其为零,再检查参数范围和边界。独立样本让概率相乘,取对数后就变成求和。
常见结果如下:
| 分布 | MLE | 备注 |
|---|
| 高斯 μ | μ^=N1∑xi | 样本均值 |
| 高斯 σ2 | σ^2=N1∑(xi−μ^)2 | 分母 N,有偏偏小 |
| 伯努利 | p^=k/N | 频率 |
| 指数 λe−λx | λ^=1/xˉ | 均值倒数 |
| 泊松 | λ^=xˉ | 就是均值 |
| 均匀 U(0,θ) | θ^=maxixi | 驻点法无解,最优值在约束边界 |
均匀分布的约束:似然 θ−N 求导无零点。因为 θ−N 递减,而参数又必须满足 θ≥maxxi,所以 θ^=maxixi。
有偏与无偏:
- 高斯方差 MLE 有偏、偏小,E[σ^2]=NN−1σ2;
- 无偏修正用 N−1:s2=N−11∑(xi−xˉ)2;
- 用 xˉ 代替真实均值 μ 会消耗 1 个自由度。
多维高斯:μ^ = 样本均值;Σ^=N1∑(xk−μ^)(xk−μ^)T。μ^ 与 Σ 是否已知无关。
最小计算量的自测是样本 {1,2,3}:高斯均值 MLE 为 2,方差 MLE 为
3(1−2)2+(2−2)2+(3−2)2=32.
如果误写成除以 N−1,算到的是无偏样本方差,不是方差的 MLE。
三、SVM
令标签 tn∈{+1,−1},判别函数为 f(x)=wTx+b。符号 tnf(xn) 同时表示分类方向和离边界的程度:大于 0 表示分对,大于等于 1 表示还满足间隔要求。
线性可分时,硬间隔原问题是
w,bmin21∥w∥2s.t.tnf(xn)≥1.
两条间隔边界间的宽度为 2/∥w∥,单侧几何间隔为 1/∥w∥。因此最大化间隔等价于最小化 21∥w∥2。
对偶问题为
amaxn∑an−21n∑m∑anamtntmxnTxm,
约束为 an≥0 与 ∑nantn=0。由驻点条件得到
w=∑nantnxn,∑nantn=0
硬间隔的互补松弛条件是
an(tnf(xn)−1)=0
- an=0:通常位于间隔之外,不影响最终超平面;
- an>0:约束必须取等号,点位于间隔边界,是支持向量。
少量样本的手算可以按四步完成:
- 用 ∑nantn=0 减少未知数;
- 写 w=∑nantnxn;
- 对每个支持向量列 tn(wTxn+b)=1;
- 解方程组得 a,w,b;b 可由支持向量反解(多个取平均)。
线性不可分时引入松弛变量:
w,b,ξmin21∥w∥2+Cn∑ξn,s.t.tnf(xn)≥1−ξn,ξn≥0.
软间隔的 KKT 条件除了可行性和驻点条件,还包括
an[tnf(xn)−1+ξn]=0,(C−an)ξn=0,0≤an≤C.
- C 大时对违规惩罚更重、正则化更弱;C 小时允许更多违规、正则化更强。
- an=0:通常在间隔外;
- 0<an<C:ξn=0 且 tnf(xn)=1,恰在间隔边界;
- an=C:位于间隔内或被错分,也可能退化地落在边界上,不能只凭 an=C 判断是否错分。
核方法只替换内积,不必显式构造高维映射:
f(x)=n∈SV∑antnK(xn,x)+b.
常见的 RBF 核为 K(x,z)=exp(−γ∥x−z∥2)。核函数决定相似度,C 控制间隔与训练误差的权衡,二者不要混在一起解释。
四、PCA / LDA
协方差矩阵:S=N1∑(xn−xˉ)(xn−xˉ)T。
主成分的选择:主成分 = S 的最大特征值对应的特征向量;投影后方差 = 该特征值 λ。降到 M 维取前 M 大。
失真度(最小误差视角):J=∑i=M+1Dλi = 丢掉的特征值之和。
2×2 特征值计算步骤:解 det(S−λI)=0 → 得 λ → 回代 (S−λI)u=0 求特征向量。
PCA 的局限:只能寻找线性投影;把大方差方向当作主要信息,在低信噪比数据上可能选中噪声;只利用协方差等二阶统计量,可能忽略非线性或高阶结构。PCA 本身不要求数据服从高斯分布。
PCA vs LDA:
| PCA | LDA |
|---|
| 目标 | 方差最大、保信息 | 类别分得最开 |
| 标签 | 无监督 | 有监督 |
- LDA = Fisher 判别;准则 JF(w)=wTSwwwTSbw(类间/类内);
- 最优方向背:w∗=Sw−1(m1−m2);
- Sb=(m1−m2)(m1−m2)T,Sw=S1+S2。
五、K 均值
准则函数:J=∑n∑krnk∥xn−μk∥2(硬分配 rnk∈{0,1})。
两步交替(对应 E/M):
- E 步(分配):每点归最近中心,rnk=1 当 k=argminj∥xn−μj∥2;
- M 步(更新):μk=∑nrnk∑nrnkxn = 该类均值。
与 GMM/EM 的关系:K 均值是硬分配;GMM+EM 通常是软分配。各高斯分量具有相同球形协方差和相同混合权重时,取硬分配会得到 K 均值式更新;也可以从共同协方差趋近于零的小方差极限理解两者关系。
肘部法则:J-K 曲线由陡变缓的拐点定 K。
六、其他概念
- 三大流派:① 类条件密度(参数法 / 非参数法)② 判别函数(感知机/Fisher/SVM)③ 相似度。
- 非参数估计三件套:直方图、k 近邻、Parzen(核)窗。
- 监督 vs 非监督:有没有标签 y。聚类是非监督。
- 生成式 vs 判别式:生成式建模 p(x∣ω)(贝叶斯);判别式直接学边界(SVM、Logistic)。
- 一致最优 / 贝叶斯错误率:贝叶斯决策逐点条件错误率 P(e∣x)=1−maxiP(ωi∣x) 最小,是错误率理论下界。
CNN 利用三条图像先验:局部连接减少参数,权重共享让同一特征可以出现在不同位置,下采样逐步降低空间分辨率。卷积层学习局部特征,堆叠后感受野逐渐覆盖整个物体。
对输入 X 和卷积核 K,深度学习框架通常计算不翻转卷积核的互相关:
Y(i,j)=m∑n∑X(i+m,j+n)K(m,n).
例如
X=102211031,K=[100−1].
在步长 1、无填充时,左上角输出是 1×1+2×0+0×0+1×(−1)=0,完整输出为
Y=[0−1−10].
尺寸题分别计算高和宽:
Hout=⌊SH+2P−Kh⌋+1,Wout=⌊SW+2P−Kw⌋+1.
若有 Cin 个输入通道和 Cout 个卷积核,带偏置的参数量为
(KhKwCin+1)Cout.
最大池化保留窗口最大值;转置卷积用于上采样;空洞卷积通过拉开采样位置扩大感受野。
课件用图像描述任务把 CNN、RNN 和 Attention 连成一条线:
图像⟶CNN 空间特征 z1,…,zL⟶Attention 上下文 ct⟶RNN 逐词生成.
没有 Attention 时,CNN 特征常被压成固定初始状态,后续各词都依赖这份摘要。加入 Attention 后,每生成一个词都会重新选择图像区域:
et,i=fatt(ht−1,zi),αt,i=∑jexp(et,j)exp(et,i),ct=i∑αt,izi.
因此生成“人”和“帽子”时可以查看不同区域。这里要说清的不是网络名字,而是 Attention 让每个时间步获得不同的上下文。
Self-Attention 把同一序列同时映射成 Query、Key 和 Value:
Q=XWQ,K=XWK,V=XWV,
Attention(Q,K,V)=softmax(dkQKT)V.
- Query 与 Key 计算匹配程度,得到的权重再对 Value 求和;
- dk 防止点积随维度变大而让 softmax 过早饱和;
- 多头注意力在不同表示子空间中并行建模关系;
- Self-Attention 本身没有顺序概念,需要位置编码;
- RNN 必须按时间步顺序计算,Transformer 可以并行并直接连接远距离位置。
八、ViT、Swin 与 SAM
ViT 把图像切成互不重叠的 patch,展平后线性投影成 token,再加入位置编码与 [CLS] token,送入 Transformer Encoder,最后用 [CLS] 表示分类。
Patch 数量:
N=PHPW.
标准全局注意力对 token 数 N 的主要复杂度是 O(N2)。Swin 用分层结构、Patch Merging、窗口注意力 W-MSA 和移位窗口 SW-MSA 解决高分辨率图像的计算问题:固定窗口限制计算范围,下一层平移窗口,让原本分属不同窗口的 token 交换信息。
分割先要区分三种输出:
- 语义分割:像素分类,不区分同类实例;
- 实例分割:每个对象单独掩码;
- 全景分割:覆盖整图并区分实例。
常见分割网络采用编码器—解码器结构:编码器提取语义并降采样,解码器恢复空间分辨率,跳跃连接补回边缘和定位细节。
课件中的演进线是:FCN 把分类网络改成像素预测,U-Net 用对称解码器和跳跃连接恢复细节,PSPNet / DeepLab 汇集多尺度上下文,Mask R-CNN 在检测框上增加掩码分支,SETR、Swin-UNet 和 Segmenter 再把 Transformer 引入分割。
SAM 由 image encoder、prompt encoder 和 mask decoder 组成。前者提取 ViT 图像特征,中间部分编码点、框、文字或已有掩码等提示,轻量解码器融合二者并输出掩码。一个点可能同时指向局部、对象或更大区域,因此模型会给出多个候选掩码及质量分数。
SAM 数据引擎:模型辅助手动 → 半自动 → 全自动;SA-1B 约 1100 万图、11 亿掩码。
九、目标检测
两类检测器:两阶段方法先生成候选框,再分类和精修;一阶段方法一次前向直接预测。它们的速度与精度差异还取决于具体架构和训练方法。
IoU 只看几何重叠:
IoU=并集面积交集面积.
例如 A=(0,0,4,4)、B=(2,1,5,5),两框面积分别为 16 和 12,交集面积为 2×3=6,因此
IoU(A,B)=16+12−66=113.
NMS 在每个类别内按置信度排序,保留最高分框,删除与它 IoU 超过阈值的其余框,再从剩余框中重复。若阈值为 0.5,三个框分数为 0.9,0.8,0.7,且最高分框与后两框的 IoU 分别为 0.65,0.20,则第二个框被抑制,第三个框保留。IoU 是算重叠,NMS 是用重叠做筛选,两步不要混写。
R-CNN 系列的变化可以放在同一张表里看:
| 模型 | 候选框从哪里来 | CNN 怎样运行 | 主要变化 |
|---|
| R-CNN | Selective Search | 每个候选框单独跑 CNN | 流程分段,重复卷积很多 |
| SPP-Net | Selective Search | 整图只卷一次 | SPP 把任意区域变成定长表示 |
| Fast R-CNN | Selective Search | 共享整图特征 | ROI Pooling 后联合做分类与框回归 |
| Faster R-CNN | RPN | 共享整图特征 | Anchor + RPN 也由网络生成候选框 |
RPN 在共享特征图的每个位置放置多种尺度和长宽比的 anchor,对每个 anchor 做前景/背景二分类和粗回归;检测头再做具体类别分类和细回归。Fast R-CNN 与 Faster R-CNN 的关键差别就在于候选框仍由 Selective Search 给出,还是改由 RPN 学出来。
指标:
Precision=TP+FPTP,Recall=TP+FNTP.
Precision 看误检,Recall 看漏检;AP 针对单类,mAP 对所有类别求平均。
YOLO v1:7×7 网格,每格 2 框、20 类:
7×7×(2×5+20)=7×7×30.
物体中心落在哪格,哪格负责;confidence =P(Object)×IoU。
YOLO 属于一阶段检测器,不先生成一批 proposal。课件中的 YOLO v2 改进包括 Batch Normalization、高分辨率分类器、Anchor Boxes、用 K 均值选择框尺寸、直接位置预测、passthrough 细粒度特征和多尺度训练;主干网络采用 Darknet-19。
十、GAN 与 Diffusion
GAN 由生成器 G 和判别器 D 组成。G 把随机噪声变成样本,D 判断输入来自真实数据还是生成器:
GminDmaxEx∼pdata[logD(x)]+Ez∼pz[log(1−D(G(z)))].
固定 G 时,最优判别器为
D∗(x)=pdata(x)+pg(x)pdata(x).
理想收敛时 pg=pdata、D∗(x)=1/2。训练时交替更新两方;为缓解原始生成器目标在早期的梯度问题,常把生成器损失改成 −logD(G(z))。模式崩溃指不同噪声被映射到少数相似样本。
Diffusion:前向固定加噪,反向网络去噪。
xt=1−βtxt−1+βtϵ,
xt=αˉtx0+1−αˉtϵ.
训练时随机抽 t,给 x0 加到对应强度的噪声,再让 UNet 预测这次加入的 ϵ:
L=E[∥ϵ−ϵθ(xt,t)∥2].
训练可以随机选单个时间步,生成却要从噪声出发按时间反复去噪。课件中的对比可以概括为:GAN 一次前向即可生成,但对抗训练容易失衡;Diffusion 的训练目标更直接,代价是多步采样较慢。
十一、对比学习、CLIP 与 PEFT
对比学习把同一对象的两种视图作为正样本,把其他对象作为负样本,在表示空间中拉近正对、推远负对。InfoNCE 可以理解为:给定一个表示,在一批候选中识别与它正确配对的另一个表示。
CLIP 用图像编码器和文本编码器得到两个共享空间中的向量。在 batch 内构造 N×N 图文相似度矩阵,对角线是配对图文,非对角线是负样本,并同时计算图找文、文找图两个方向的分类损失。
CLIP zero-shot:类别套入 a photo of a {class} → 编码成文本向量 → 与图像向量算相似度 → 取最大类别。
PEFT:冻结大模型主体,只训练少量参数。
- Prompt Tuning:训练输入端连续 Soft Prompt;
- Adapter:每层插入下采样—激活—上采样的瓶颈模块;
- LoRA:冻结 W0,只学低秩增量 ΔW=BA,推理前可合并回原权重。
十二、合上文章后的自测
按下面的顺序口述或手算一遍,哪里停住就回看对应讲次:
- 给出先验、类条件密度和损失矩阵,先算后验,再比较两个条件风险。
- 对一组高斯样本算 μ^ 和方差 MLE,并解释为什么分母是 N。
- 从硬间隔原问题写出 w=∑antnxn,再按 an=0、0<an<C、an=C 解释样本位置。
- 给一个 2×2 协方差矩阵,求最大特征值对应方向;再说清 PCA 与 LDA 是否使用标签。
- 给定初始聚类中心,完成一次“分配—更新”,并计算新的类中心。
- 手算一次二维卷积,同时根据 H,W,K,P,S 算输出尺寸。
- 从 CNN 空间特征开始,讲清 RNN + Attention 怎样生成一条图像描述。
- 从 patch token 讲到 ViT,再说明 Swin 为什么需要窗口和移位窗口。
- 区分语义、实例和全景分割,并说出 SAM 的三个组件。
- 手算两个框的 IoU,再执行一轮 NMS;对比 R-CNN、Fast R-CNN、Faster R-CNN 与 YOLO 的数据流。
- 分别用一句话说明 GAN 的对抗目标与 Diffusion 的加噪—去噪过程。
- 画出 CLIP 的 N×N 相似度矩阵,并比较 Prompt Tuning、Adapter 和 LoRA 改了模型的哪一部分。
完成这十二项自测后,再回到对应讲次补完整推导和具体算例。