机器学习

机器学习Chapter 0. 概念Chapter 1. 线性回归Chapter 2. 决策树 & 随机森林Chapter 3. 贝叶斯分类 (朴素贝叶斯网络)Chapter 4. Naive Classification Algorithm: KNNImprovementsHyper-parametersUniversal ApproximationSummaryChapter 5. Linear Classifier: Logistic Regression5.1 核心概念5.2 线性分类器的基础模型:感知机(Perceptron)5.3 逻辑回归:从硬决策到概率估计5.4 多分类:Softmax 回归(多项式逻辑回归)5.5 二分类 与 多分类:SVM LossChapter 6. Multi-layer Perceptrons6.1 基本概念6.2 激活函数6.3 MLP 中的优化算法:反向传播6.4 深度学习与 MLP6.5 总结Chapter 7. Language Model7.1 词的表示方法:从离散符号到向量表示7.2 Word2Vec:词嵌入 (Word Embeddings) 的经典框架7.3 LM Basics7.4 神经网络语言模型与循环神经网络(RNN)7.4.1 基本概念7.4.2 训练方法7.4.3 总结Chapter 8. Transformer & Attention8.1 从 RNN Encoder-Decoder 到 Attention 机制8.1.1 基本概念8.1.2 训练方法8.1.3 思考与总结8.1.4 改进:Cross Attention (Encoder-Decoder Attention)8.2 Self-Attention: Transformer 的核心组件8.3 Transformer 架构8.4 总结Chapter 9. Large Language Model (LLM)9.1 预训练语言模型:从 BERT 到 GPT9.1.1 BERT: Bidirectional Encoder Representations from Transformers9.1.2 自回归架构9.1.3 GPT: Generative Pre-Trained Transformer9.2 微调 Fine-Tuning9.2.1 微调的核心逻辑9.2.2 参数高效微调(PEFT)技术9.3 提示工程(Prompt Engineering):解锁 LLM 的关键9.4 检索增强生成(RAG):弥补 LLM 知识局限Chapter 10. CNN & CVChapter 11. Computer Vision11.1 语义分割11.2 目标检测11.2.1 两阶段检测:R-CNN 系列的演进11.2.2 端到端检测:YOLO(You Only Look Once)11.2.3 图像字幕生成:从编码器 - 解码器到注意力机制11.2.4 视觉语言模型(VLMs):多模态融合的前沿11.2.5 扩展知识11.2.6 总结:计算机视觉的演进脉络Chapter 12. 无监督学习12.1 Clustering & K-Means12.1.1 基本定义12.1.2 K-means 算法的原理与步骤12.1.3 K-means 的关键问题与优化12.1.4 K-means 的优缺点与应用场景12.1.5 K-means 与其他聚类算法的对比12.2 Dimensionality Reduction12.2.1 背景:维度灾难(The Curse of Dimensionality)12.2.2 线性降维算法:PCA 主成分分析12.2.3 非线性降维:自动编码器(Auto-encoder)12.2.4 降维算法的延伸与前沿12.3 深度生成网络12.3.1 生成对抗网络(GAN)典型架构与变种12.3.2 变分自编码器(VAE):概率视角下的生成与压缩核心思想:潜码的概率约束12.3.3 扩散模型(Diffusion Models):从噪声到真实的逆向生成Chapter 13. 强化学习13.1 机器学习分类与强化学习定位13.2 强化学习基础框架:马尔可夫决策过程(MDP)13.2.1 核心概念13.2.2 值函数方法 (Value Learning):Q-learning 与深度 Q 网络(DQN)13.2.3 策略梯度方法 (Policy Learning):直接优化行为策略13.2.4 案例解析:AlphaGo 的混合智能框架13.2.5 强化学习在自然语言处理中的应用

Chapter 0. 概念

我们现在就会发现,深度学习和强化学习的概念是重叠的。前者强调通过多层神经网络模型的方式达到机器学习的效果;后者强调 学习的环境、学习的方式,因此后者可以利用前者的思想/算法来达到目的(如 “深度强化学习”)。

机器学习 4 要素:

机器学习分类:

数据归一化:

泛化性与过拟合:模型应该学习普遍的规律还是记住特定细节?

 

Chapter 1. 线性回归

考虑监督学习中的 “回归问题”。

目的:通过大量观察,回归到统计数据的真实情况。

定义:A function that describe the relationship between one dependent variable and a series of other (independent) variables.

应用:预测、归因分析、控制;

模型核心:简单的线性函数 f(x)=wTx+b

训练过程:根据数据误差估算合适的 w,b

预测过程:根据输入的新数据计算回归值。

损失函数:对于完整数据集 D 和权重初值 w0,使用均方误差(MSE),L(w|w0,D)=12Nl=1N(r(l)y(l))2

r 为预测值,y 为 ground truth;

训练优化:梯度下降。目标:w=argminL(w),迭代步骤:wt+1=wtαwL(w)

结论:计算解析梯度可知,wt+1=wt+1Nl=1N(r(l)y(l))x(l)

预测值 y=Xw,损失函数:L(w)=12(rXw)T(rXw)

梯度 wL(w)=XT(rXw);最优参数 w=(XTX)1XTr

代入预测值:y=X(XTX)1XTr

Chapter 2. 决策树 & 随机森林

再考虑监督学习中的 “分类问题”。

如何构建决策树?

  1. 构造一个根节点,包含整个数据集;

  2. 选择一个最合适的属性,根据选择属性的不同取值,将当前节点的样本划分成若干子集;

  3. 对每个划分后的子集创建一个孩子节点,并将子集的数据传给该孩子节点;

  4. 递归重复 2~3 直到满足停止条件;

按照不同划分顺序,同一数据可以构建多种不同的树。

如何高效率地构建决策树?选择每个属性 X 的时候,尽可能最大化标签 Y 的纯度。

决策树将数据逐步分割成越来越小的子集。最理想的情况是叶节点对应的样本属于同一类别(节点的标签纯净)。

如何选择属性以最大化标签的纯度?选择 X 以最大化 信息增益Gini 系数等(每⼀种指标对应⼀种决策树构造算法)。常见算法如 ID3、CART、C4.5 等等。

随机森林。将数据随机划分子集,各自构建决策树,将结果合并。

Chapter 3. 贝叶斯分类 (朴素贝叶斯网络)

考虑从概率学角度解决分类问题。

P(Ci|x)=P(x|Ci)P(Ci)P(x):先验概率 P(Ci),统计可能性 P(x|Ci)P(x)=P(x|Ci)P(Ci)(全概率公式,Ci 互不相交,整体完备),最终迭代得到后验概率 P(Ci|x)。判断标准:P(x|Ci)P(Ci)>P(x|Cj)P(Cj)

多条件下:P(Ci|x1,x2,,xd)=P(x1,x2,,xd|Ci)P(Ci)P(x1,x2,,xd)。我们容易得到先验概率(数据集直接统计),那么如何得到 P(x1,x2,,xd|Ci)

我们需要构建一个 (x1,x2,,xd)Ci 下的联合概率分布表,这在高维数据下是不可接受的。

不过我们做一些概率学变换:P(x1,x2,,xd|Ci)=P(x1|Ci)P(x2|x1,Ci)P(x3|x1,x2,Ci)P(xd|x1,x2,,Ci)(由条件概率定义得到);

我们作出假设:假设给定的特征(维度)间相互独立。在这个假设下,我们有:

P(x1,x2,,xd|Ci)P(x1|Ci)P(x2|Ci)P(xd|Ci)

这样可以用频率简单地估计每个 P(xk|Ci)count(xk,Ci)jcount(xj,Ci)

为了解决 zero count 的问题(任何一个 P(xk|Ci)=0 都会导致 P(x1,x2,,xd|Ci)=0),我们修改上面的公式:

P(xk|Ci)count(xk,Ci)+1jcount(xj,Ci)+1

这被称为 Laplace Smoothing

最终对输入 xk 的判别标准 C^=argmaxiP(Ci|xk),就是 P(xk|Ci)P(Ci)>P(xk|Cj)P(Cj)

优势:

劣势:

但是通常效果也不错,因为我们不需要 P(Ci|x1,x2,,xd) 计算正确,只需要:

argmaxcP^(c)iP^(xi|c)=argmaxcP(c)P(x1,x2,,xd|c)

 

Chapter 4. Naive Classification Algorithm: KNN

先来个最简单的算法(甚至不配叫深度学习算法):最近邻。

算法描述:

  1. 选取邻居数 k

  2. 对测试集中的每个需要被分类的样本 xi,计算到所有训练数据 xti 的距离(定义如上);

  3. 按距离数据排序,取最近的 k 个测试数据,根据这 k 个数据的 majority vote 决定当前的样本 xi 的类型;

这个方法有致命缺陷:训练 O(1),但测试 O(N)。现实中我们宁愿训练过程耗时,也不愿意测试的时间耗费多。

此外,使用曼哈顿距离并不是很聪明(只是把看起来相近的图片归为一类,例如白色背景的猫和白色背景的青蛙会被归成一类)。

我们引入 decision boundaries(决策边界)来描述,这幅图被称为 Voronoi Tessellation(维诺图,沃罗诺伊分割):

对于一个二维数据(例如 2 个像素的图像),点代表训练集,颜色代表标注的 labels。没有标注点的是其他的可能数据。而黑线就是按照模型算法判断的决策边界。所谓区分两个类型就是确定两个类的决策边界(黑线)。下次测试输入数据时查看落在哪块区域内即可。

某些异常情况(例如噪点)可能导致真实的分类边界参差不齐。

Improvements

改进 1:为了解决最近邻不准确的问题(直接使用最近邻居的 label),我们引申出 K-Nearest Neighbor(KNN),从 K 个最近邻居中选出得票最多的 label 作为测试数据的 label。这个改进我们可以从决策边界图看到:

可以看到,这使得模型的决策边界变得平滑,并且减小了测试数据受到个别噪声点的影响

但 K-Nearest Neighbor 的问题是可能存在投票平局的问题,此时在图中显示是空白的颜色。你可以使用 heuristics(例如 fall back 到一个的情况)。

总结:

K 过小:算法效率提升,但更易受到噪声点的影响;

K 过大:算法效率不高,且包含太多其他类的 votes,over-smoothing 分类结果,模型效果不佳;

改进 2:更改 Distance Metrics。在 KNN 的基础上,我们将判断图像相似度的距离指标从曼哈顿距离(p=1)更换为欧几里得距离(p=2),发现:

曼哈顿距离的边界都是由垂直或水平或 45 度倾角的线段组成;而欧几里得距离的边界虽然还是由线段组成,但是可以朝向任意方向(相当于用计算量换取更灵活准确的分类方式)。

这里虽然看不出来二者的优势究竟在哪,但是这告诉我们一个好消息:对于任何一个数据类型,只要给一个 distance matrics,就能将 KNN 算法应用上去!例如衡量两个 PDF 文件的相似性(作为 distance),可以使用 TF-IDF(Term Frequency-Inverse Document Frequency,词频-逆文件频率)similarity,它通常被用在一些 NLP 应用中。

TF-IDF 指出,字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降

前者因为它更能代表一篇文章的主题,后者因为它更有可能是停用词、或者是不能很好作出区分的词汇。

这再次证明了,不考虑性能的情况下,调整 KNN 的距离指标计算方法可以在不同的应用场景下获得很好的分类效果。

Hyper-parameters

另一方面,除了 training data,还有一类参数例如 邻居数 K、最佳的距离指标(各种距离还是其他算法?),它们被称为学习算法的 “超参数”(hyper-parameters),意指在训练前就应该为学习算法确定的(而不是训练时获得),能对算法的运作方式产生间接深远影响的参数。

通常情况下,超参数的最优取法与具体问题有关,没有 silver bullet;有几种做法:

Universal Approximation

由于 KNN 对于处理的函数几乎没有做前提假设,因此在训练集大到接近无穷时,KNN 甚至可以表示几乎任何常见的函数(有点像泰勒级数的逼近)。

问题是随着维度的增加,需要逼近真实解到同样程度的训练集大小会呈指数级增加,这被称为 “curse of dimensionality”(维度诅咒)。这是不可接受的,因为上面图的情况仅仅是一维的数据。如果是一张 32x32 的图片,训练集大小的数量级会在 232×3210308 左右。

正因如此,KNN 在 raw pixels 的图像处理领域很少被用到,总结:

但某些情况下(不是 raw pixels)KNN 能很好的识别图像特征,例如在深度卷积神经网络计算得到的特征向量(特征提取)中进行 KNN 并以此做图像分类/看图说话等等,可以得到很好的效果(从容应对 various viewpoints、bg clutter、illumination changes 等干扰因素),这个后面讨论。

Summary

优势:

劣势:

 

Chapter 5. Linear Classifier: Logistic Regression

线性分类器,其核心思想是通过线性函数直接建模类别间的决策边界,相比估计数据密度(如贝叶斯)或距离(如 KNN),分类的效果更直接。

Determinizing class boundaries (discriminants) is usually easier than estimating the class densities.

5.1 核心概念

基于建模决策边界的分类器的核心,就是判别函数(Discriminant Functions):为每个类别定义一个函数 gi(x),决策规则为将样本 x 分配给 gi(x) 最大的类别

例如,贝叶斯决策可转化为 gi(x)=P(Cix) 或其对数形式:

这章我们考虑简单情况,也就是判别函数是线性函数的分类器。它就是线性分类器。它的判别函数:gi(x|wi,wi0)=wiTx+wi0;由于 wiwi0 可以看作矩阵/张量,因此可以记为:f(x,W)=Wx+W0

优势:

 

以二分类为例,线性分类器的决策边界是超平面(Hyperplane),由 gi(x)=gj(x) 定义,形式为 wTx+w0=0,将空间划分为两个半空间。

 

5.2 线性分类器的基础模型:感知机(Perceptron)

感知机是最早的线性分类器,其判别函数为 g(x)=wTx+w0,决策规则为:若 g(x)>0 则判为 C1,否则为 C2

训练算法(感知机学习规则):

感知机的局限性:

 

知识补充:

香农(Shannon)认为,一个事件的不确定性(或者称 surprisal / self-information)越大,信息量就越大;重复的 Message 传递的信息量更少。他引入了衡量信息量的量 —— Shannon Information Content;一件发生概率为 p 的事件的香农信息量由下面的式子给出:

SIC=log21p (bits)

事件的信息由 SIC(香农信息熵)衡量,那么 随机变量的概率分布 的信息 由什么衡量?

假定 X 是一个有限样本空间 X={x1,,xM} 的一维离散型随机变量。其概率在各个值的分布为 (p1,,pM),那么定义:该随机变量所遵循的概率分布的信息量大小由 信息熵(Information Entropy)衡量,大小由下面的式子给出

H(X):=E{log1p(X)}=xXp(x)log2p(x)

离散型随机变量概率分布负对数的期望。信息熵越大,意味着随机变量的概率分布的不确定性越强(在一维离散型随机变量的概率分布中的体现就是,随机变量的每个可能取值的概率接近),说明它的信息量越大。

通俗地说,信息熵描述了有多少信息是无法确定的。信息接收了多少,熵就降低了多少。

或者说,熵是要消解事件不确定性的平均代价

数学小提示:

limx0+xlogbx=0

你会在很多场合用到,可以通过换元法证明。简记为 0 log 0 = 0


高维离散型随机变量的概率分布是联合概率分布,以二维随机变量为例,联合熵定义为:

H(X,Y):=E{logp(X,Y)}=xXyYp(x,y)log2p(x,y)

那么条件概率分布呢?这是我们已知条件(降低了信息熵)的基础上,求一件事物的信息熵。它的定义如下:

(X,Y)p(x,y),则:

H(Y|X):=xXp(x)H(Y|X=x)=xXp(x)yYp(y|x)log21p(y|x)=xXyYp(x,y)log2p(y|x)

式子的含义是,在所有给定 X 的条件下的 H(Y|X=x) 的期望。根据定义求解的方法是,找到 P(Y|X)P(X,Y),代入公式即可。

如果是给定 x 的情况下(也比较好理解,上面的 H(Y|X) 定义式不对 X 求和、p(x,y) 更改成已知 x 的条件概率即可):

H(Y|X=x)=yYp(y|x)log2p(y|x)

但是,最好理解的方法还是 “熵的含义”:熵是对事件的不确定性。我们已知了 X 事件的信息,就相当于消解了联合概率分布 P(X,Y)X 的信息熵,也就是从两个事件的联合熵中减去了 X 的信息熵,推导如下:

H(Y|X)=EX,Y{log21p(Y|X)}=EX,Y{log2p(X)p(X,Y)}=EX,Y{log21p(X,Y)log21p(X)}=EX,Y{log21p(X,Y)}EX{log21p(X)}=H(X,Y)H(X)

所以条件熵第二种算法,也是最简单、最通俗易懂的计算方法,就是 H(X,Y) 减去 H(X)

这就是信息熵的链式法则:

H(X1,X2,,Xn)=i=1nH(Xi|X1,,Xi1)

类比条件概率的链式法则:

P(X1,X2,,Xn)=i=1nP(Xi|X1,,Xi1)

说明熵的对数运算让乘除变为了加减。

以下是条件熵的特性:

  • H(Y|X)=0 等价于 Y 完全取决于 X

  • H(Y|X)=H(Y) 等价于 YX 相互独立;


那么,再考虑一种情况。我们之前都是正确掌握了随机变量的概率分布,并用这些信息构建了概率分布的信息熵的定义。

如果对于一个离散型随机变量,我们并不知道它的具体分布、只是模拟了近似的概率分布。这样的信息和真正的概率分布有差距,那这个概率分布的不确定性又该如何描述?

人们定义了 “交叉熵” 的概念,用来描述:在实际概率分布为 p,但却作出概率分布 q 的假设下,消解该随机变量不确定性的平均代价就是交叉熵,定义如下:

CE(p,q):=Exp(x){log21q(x)}=xXp(x)log2q(x)

准确的定义是,对于同一个事件集上的两种概率分布 pq 间的交叉熵,描述的是:如果编码方案采用针对 q 的优化,而非真实分布 p 的优化,那么平均需要从事件集中取出多少 bit 才能发现真实分布的情况

这就相当于我们不知道 p、但先当作 q 估计的时候,所要了解事件的真实分布需要的平均代价

现在假设我们后来知道了 p,那么我们由于原来作出的假设 q 分布,而造成与现实情况的偏差,导致要花费的更多的代价才消解不确定性。那么如何衡量这个代价的增量?这就是相对熵(Relative Entropy),又称 KL 散度(KL Divergence)

D(p||q):=CE(p,q)H(p)=xXp(x)log2p(x)q(x)

显然 D(p||q)D(q||p)

数学上,可以用优化理论证明,D(p||q)=0 当且仅当 p=q 成立。

交叉熵和相对熵在机器学习领域(例如损失函数)使用颇多。它可以描述 当前估计的数据分布 相较于 真实数据分布 的偏差情况。

如果两个随机变量不是相互独立的,那么它们必定在概率和信息熵上相关联。

就是说,一旦两个随机变量不相互独立,那么得到一个随机变量的信息,就会影响另一个随机变量的信息熵(就是从熵的角度理解两个非独立随机变量的条件概率)。


如何描述这两个随机变量的 “信息关联性” 呢?

人们定义了 “互信息” 的概念:一个随机变量所携带另一个随机变量信息的信息量。这个携带的信息量越大,那么这两个随机变量的相关性越强。

I(X;Y):=D(p(x,y)||p(x)p(y))=xXyYp(x,y)log2p(x,y)p(x)p(y)

这个定义的含义是,假设分布 p(x)p(y)(二者独立)相对于 真正的分布 p(x,y) 的偏差代价。

除了直接计算 P(X,Y)P(X)P(Y),我们还能通过推论更直观的方法理解互信息:

I(X;Y)=H(X)H(X|Y)=H(X)+H(Y)H(X,Y)

两个信息熵相交的部分。

5.3 逻辑回归:从硬决策到概率估计

为了优化感知机的算法,我们需要将 “0-1” 硬决策转换成概率估计的值,这个时候就需要引入 sigmoid 函数:

y=sigmoid(wTx+w0)=11+e(wTx+w0)

优势:

  1. 输出范围在 (0,1) 之间,可解释为属于 C1 的后验概率;

  2. 函数平滑可导,并且数学特性方便求导,便于优化。

现在输出的并不是特定的类型,而是类似概率的值。为了方便模型参数优化,我们还需要为它定义损失函数,用来衡量决策的好坏。这里我们引入 “交叉熵” 损失函数(注意由于是二分类问题,r 只有可能是 0 或者 1,r=0 表示 xC1r=1 表示 xC2):

L(x,w,r)=xXp(x)logq(x)=rlogy(1r)log(1y)

数学上注意到,这等价于最大化此式概率:r|xBernoulli(y)p(r|x)=yr(1y)1r

这样原问题转换为,确定让损失函数最小的 w(优化问题,optimization)。这个优化问题我们的优化算法采用梯度下降算法(Gradient Descent);

注意到 LwL(x,w,r) 计算:Lwj=l(r(l)y(l))xj(l);因此计算伪代码实现是:

 

5.4 多分类:Softmax 回归(多项式逻辑回归)

对多分类问题,我们需要更改损失函数,以便输出 K 个类别的概率分布,这就是 softmax 损失函数。

对任意一个样本-标签对 (xi,yi),记它在模型下的各个类类别的得分向量为 Si=(si1,si2,,siN)=f(xi,W),我们可以将这些分数翻译为概率:

P(Y=k|X=xi)=esikjesij

softmax 函数:f(zi)=ezik=1Kezk(之所以称之为 “softmax”,是指 “max” 函数的可导的近似函数,a soft differentiable approximation to hard max function);

  1. 可以让向量的各项介于 0~1 间,并且总和为 1(不至于像 max 函数一样大部分是 0,这使得网络中的一些计算难以进行);

  2. 可以借助指数函数特性(ex),让两个不同的数值 zi 大的更大、小的更小(凸显不同数据的差异);

  3. 其导数有很好的性质,方便计算交叉熵损失函数;

它在 “需要计算 max 特征”、“需要可导”的这些场景下比较有用。

注意到这是 softmax 函数。我们考虑模型对 (xi,yi) 而言 k 标签的打分 sik 对应的损失值,组成得分向量 Si=(si1,si2,),通过 softmax 函数规范后为概率向量:Pi=(pi1,pi2,);易知 pik=P(Y=k|X=xi)=esikjesij;设 ground truth 的对应单位向量为 Ti=(0,0,,1,0,)(第 yi 项为 1 的单位向量),则我们只需要将 Tipik 的差距比较一下就能衡量。

我们回想一下,在概率学中,想要衡量 “在实际概率分布为 p,但却作出概率分布 q 的假设下,消解该随机变量不确定性的平均代价”,这不正是交叉熵的定义吗!因此我们使用交叉熵作为模型打分的损失函数,其中输入实际概率分布由 softmax 得出。

Li=CE(Pi,Ti)=kKt(k)logp(k)=logpiyi=logesiyijesij=siyi+logjesij

注意到 yixi 这个样本提供的 ground truth。

现在优化方法仍然保持不变(梯度下降),我们计算 Lw=j(rijLj(xij))xj

 

总结线性分类器:

优势:计算高效(时间复杂度 O(d))、可解释性强(权重反映特征重要性),在假设成立时精度较高。

劣势,线性分类器对于某些特定的数据类型没法很好地分类:

或者说:

  1. 线性可分假设:若数据无法用超平面划分(如 XOR 问题),线性分类器性能较差。

  2. 多解问题:即使数据线性可分,可能存在无数超平面实现分类,需额外约束(如 SVM 的最大 margin)来确定最优解。

 

补充:

 

5.5 二分类 与 多分类:SVM Loss

多分类问题,除了 softmax 作为损失函数,还有一种损失函数是 multiclass SVM Loss。这个损失函数的思想是,正确的类型的得分,会远远高出不正确类型的得分。即不关心具体得分,只关心能否给出准确的 label。

通俗的来说,就是要最大化两个类别间的 margin(得分差)。

注:我们将使用 Multi-class SVM Loss 作为损失函数的线性分类器称为 “SVM classifier”;

对于一个图像样本 xi 而言,我们记客观上正确的分类 label(即 ground truth)为 yi,其他参与选择的类比标签为 l1,l2,,lN

Multi-class SVM Loss 给出:一个算法对 “ground truth 的得分大小和其他错误类比的得分大小关系” 与损失值的关系。绘图如下:

解读:当一个算法对 ground truth 判断的得分高出其他错误得分的差值越小(小于 margin 时),损失值会线性增大。

这种含有线性区域和零区域(水平区域)图像的损失函数,被称为 “Hinge Loss”(看起来像 door hinge);

我们记 sik 表示对于样本 xi,模型在类别 k 的评分。

因此这个损失函数的数学表达式可以写成:Li=kyimax(0,sijsiyi+Δ),其中 si=f(xi,W) 为模型计算得分,yi 是对应 xi 的 ground truth,Δ 就是上面所说的 “margin”,也就是 SVM 希望正确类别应该高出不正确类别的得分差。

解读:所有对于任意样本 xi,评分系统 sxi 上的损失 Li 由所有不正确类型的得分(sik, kyi)和 ground truth 得分(siyi)决定。

意味着只有正确类别比其他每个类别得分都要高出 Δ 才能实现无损失。

注意到:在一开始没有进行训练时,一个样本的损失值大约为 (C1)Δ,其中 C 为分类数。因为 sijsiyi0

为什么需要知道这个?因为我们需要一些 debugging 的手段(大概知道自己的模型有没有写错)。

显然,Δ 就是 SVM classifier 的超参数。

拓展:Δ 应该设置成什么值,是否需要 cross validation?这里先给出答案,你可以先看 “正则化” 一节后再来理解:

事实证明,在任何情况下都可以放心地将这个超参数设置为 Δ=1.0。超参数 Δ 和正则化参数 λ 似乎是两个不同的超参数,但实际上它们控制着相同的权衡:目标中 Data Loss 和正则化损失之间的权衡。理解这一点的关键在于,权重 W 的大小对分数(以及它们之间的差异)有直接影响:当我们缩小 W 内的所有值时,分数差异会变小,而当我们扩大权重时分数差异就会增大。因此确切值(例如 Δ=1Δ=100) 在某种意义上是没有意义的,因为权重可以任意缩小或拉伸差异。因此,唯一真正需要权衡的是正则化参数 λ)。

Tips 1:如果把上面损失函数的求和换成求平均,这个分类器会不会有明显变化?答案是不会,因为将所有样本损失值同时乘以 1(C1)Δ,仍然是单调映射,不会改变对某个类别的 preference。不过总体来说训练效果会稍差一点,因为损失值的差距被减小了。

Tips 2:如果将损失函数换成 Li=kyimax(0,sijsiyi+Δ)2 呢?答案是会有明显不同!这是个对损失值进行了非线性映射,对每个类别的 preferences 会出现非平凡的改变。

Tips 3:假设我们找到一个 W 使得 i,Li=0,那么这个 W 唯一吗?答案很简单:不唯一,因为如果 W 满足,那么 2W 也满足。


实际上 SVM 尤其擅长解决二分类问题(毕竟它的语义就是从二分类出来的)。

考虑 SVM 解决二分类问题:

对于线性二分类问题,SVM 可以将其转换为二次规划,是个凸问题,意味着 SVM 总是能找到最优解!

下面是一些线性二分类 SVM 的计算结论(损失函数完整表达式、梯度下降时会用到的梯度计算式):

 

Chapter 6. Multi-layer Perceptrons

6.1 基本概念

单层感知机:

  1. 单层感知机的数学定义

    • 基本结构:输入 x=[x1,x2,,xd],权重 w=[w1,w2,,wd],偏置 w0,线性组合 a=wjxj+w0,通过激活函数 σ(a) 输出。

    • 用途:回归(y=wx+w0)和分类(y=sign(wx+w0)),分类时通过阈值函数划分决策边界。

  2. 单层感知机的局限性

    • Minsky 和 Papert 在 1969 年证明:单层感知机无法解决 XOR(异或)问题,因为 XOR 数据非线性可分。

    • 例子:AND 和 OR 问题线性可分,而 XOR 需要非线性边界。

MLP 的结构与原理

隐藏层的作用

6.2 激活函数

常用激活函数

激活函数的作用

6.3 MLP 中的优化算法:反向传播

参见另一份笔记。需要训练计算。

6.4 深度学习与 MLP

  1. 深度学习的定义与特点

    • 核心:通过多层神经网络自动学习数据的层次化表示,从底层特征(如像素)到高层抽象(如物体、语义)。

    • 与传统机器学习的区别:传统方法依赖手工设计特征,而深度学习通过端到端训练自动提取特征。

  2. 深度网络的优势

    • 模块化:底层特征可共享(如边缘检测),高层特征针对具体任务(如 “猫” 的耳朵、尾巴)。

    • 数据效率:深层网络用更少参数实现更高复杂度,适合大数据场景。

  3. MLP 的局限性与后续模型

    • 不足:参数过多易过拟合,无法处理序列数据(如语音)和空间结构(如图像)。

    • 进化模型:卷积神经网络(CNN)处理图像,循环神经网络(RNN)处理序列,Transformer 成为当前主流。

6.5 总结

  1. MLP 的核心价值

    • 作为深度学习的基础模型,证明了多层非线性网络的强大表达能力,为 CNN、RNN 等奠定理论基础。

  2. 实践要点

    • 激活函数选择:优先 ReLU,避免 Sigmoid 在深层网络中的梯度消失;

    • 训练技巧:使用批量归一化(BatchNorm)、dropout 等缓解过拟合;

    • 工具推荐:PyTorch、TensorFlow 实现 MLP 与反向传播。

 

Chapter 7. Language Model

7.1 词的表示方法:从离散符号到向量表示

  1. 传统词表示方法

    • 离散符号表示:早期计算机用 ASCII、ID 等离散符号表示单词(如 “hotel”=11,“motel”=1203),这种 “局部表示”(Localist Representation)无法捕捉语义关系。

    • One-Hot 编码:将单词表示为高维 0-1 向量(如 “tree”=[0,0,0,1,0,...]),向量维度等于词汇表大小(如 50 万维)。但该方法存在两个问题:

      • 维度灾难:向量稀疏且维度极高;

      • 无法表示语义相似性:任意两个 One-Hot 向量的余弦相似度为 0(如 “hotel” 和 “motel” 语义相近,但向量无关)。

  2. 词嵌入(Word Embeddings)的提出

    • 定义:将单词映射为低维稠密向量(如 50-300 维),向量距离反映语义相似性(如 “hotel” 和 “motel” 的向量接近)。

    • 优势:能捕捉词汇的语义结构,例如:

      • 性别关系:man - woman 与 king - queen 类似;

      • 时态关系:walked - walking 与 swam - swimming 类似;

      • 国家 - 首都关系:Spain-Madrid 与 Italy-Rome 类似。

7.2 Word2Vec:词嵌入 (Word Embeddings) 的经典框架

核心思想:“词由上下文定义”(J. R. Firth 1957)。通过上下文预测中心词(或反之)来学习词向量。例如,根据 “a bottle of tesgüino is on the table” 等句子,可推断 “tesgüino” 是类似啤酒的酒精饮料。

于是 Word2Vec 框架(Mikolov et al. 2013)的思想就出来了:Two words are similar if they have similar word contexts

我们有一个庞大的文本语料库。

  • 词汇表中的每个词都有一个可学习的向量;

  • 查看文本中的每个位置 t,其中有中心词 w 和上下文词 c

  • 利用它们的向量相似性计算出 w 给定 c 的概率;

  • 不断更新词向量,以最大限度地提高这一概率。

Word2Vec 框架下的著名模型就是 CBOW(Continuous-Bag-of-Words,连续词袋模型)了。

7.3 LM Basics

定义与目标

数学建模

补充:语言模型的评估。除了概率计算,常用困惑度(Perplexity)衡量模型对语料的拟合能力,值越低表示模型越好

7.4 神经网络语言模型与循环神经网络(RNN)

之前的 Word2Vec 有不少缺陷。如何使用神经网络进行改进?

7.4.1 基本概念

神经网络的改进

RNN 的结构与原理

7.4.2 训练方法

和一般的神经网络一样,借助反向传播计算损失值和整体梯度下降,以此改进模型参数,不过 forward pass 和 backward pass 需要和时间相关,这被称为 Backpropagation Through Time(BPTT)如下图所示:

7.4.3 总结

RNN 架构总结

RNN 的优势和局限

优势

局限

 

Chapter 8. Transformer & Attention

NLP(自然语言处理)核心任务:涵盖机器翻译、情感分析、信息检索、问答系统、文档摘要等序列到序列(Seq2Seq)问题。例如,将 “机器学习” 译为 “Machine Learning”,或根据对话历史生成回复。

8.1 从 RNN Encoder-Decoder 到 Attention 机制

8.1.1 基本概念

RNN Encoder-Decoder 是序列到序列(Seq2Seq)学习的基础模型,其设计核心是解决序列映射问题(如机器翻译、问答生成等)。

它的设计结构如下:

直观理解:以机器翻译为例(如 “我到了”->“have arrived”):

8.1.2 训练方法

使用交叉熵作为损失函数。仍然是梯度下降方法对目标函数进行优化。

对于训练数据集 D={(x(1),y(1)),,(x(N),y(N))},其中 x(l)=(x1,x2,,xTx)y(l)=(y1,y2,,yTx)

l(θ|x,y)=t=1Tlogpθ(yt|y1,y2,,yt1,x)L(θ|D)=1Nl=1Nl(θ|x(l),y(l))

8.1.3 思考与总结

Tip

为什么设计成 Encoder-Decoder 结构

  1. 解决序列映射的通用性需求:自然语言处理中,大量任务(如机器翻译、对话生成、文本摘要)本质是序列到序列的转换。例如:

    • 输入 “如何学习机器学习?”(问题序列),输出 “学习机器学习需要掌握数学基础和编程技能”(回答序列); Encoder-Decoder 通过 “编码 - 解码” 的抽象框架,将这类问题统一为 “输入序列→语义向量→输出序列” 的流程,具有通用性;

  2. 利用 RNN 处理序列依赖的能力:RNN 的特点是隐藏状态可捕捉序列中的时间依赖(如前一个词影响后一个词的含义)。Encoder 用 RNN 处理输入序列,将时序信息编码到 c 中;Decoder 用 RNN 生成输出序列,确保生成的词符合语义和语法顺序;

  3. 固定向量的语义压缩:将变长序列压缩为定长向量 c,本质是对输入语义的抽象。例如,无论输入句子长短,Encoder 都能将其核心语义 “浓缩” 到 c 中,便于 Decoder 统一处理。

Tip

为什么这种设计是有效的?

  1. 数学上的合理性:概率建模

    模型通过最大化条件概率 p(y|x) 来学习,即给定输入 x,生成目标 y 的概率。Decoder 的每一步预测符合链式法则:p(y|x)=i=1Typ(yi|y1,,yi1,c)。通过交叉熵损失函数优化参数,确保预测序列与真实序列的概率分布一致;

  2. 实验验证:机器翻译的突破

    2014 年 Cho 等人提出的 Encoder-Decoder 模型,实验数据发现模型能通过 c 捕捉语义,生成正确语序的译文;

  3. 结构上的灵活性

    • Encoder 和 Decoder 可独立设计:如 Encoder 用双向 RNN 增强语义捕捉,Decoder 用单向 RNN 保证生成顺序。

    • 可扩展为更复杂模型:后续添加 Attention 机制(如文档中提到的动态上下文向量 ci),解决长序列信息丢失问题,进一步提升效果。

RNN Encoder-Decoder 的地位和总结:

RNN Encoder-Decoder 模型的局限性:

总而言之,RNN Encoder-Decoder 的本质是用 RNN 的序列处理能力实现语义的压缩与重建,其有效性源于对序列任务本质的抽象(语义映射)和数学上的概率建模。尽管存在长序列缺陷,但其 “编码 - 解码” 框架至今仍是许多复杂模型(如 Transformer)的设计基础,推动了 NLP 从规则系统向数据驱动的深度学习转型。

8.1.4 改进:Cross Attention (Encoder-Decoder Attention)

如何克服 RNN Encoder-Decoder 的长序列缺陷?人们曾认为,可以通过动态计算序列上下文压缩向量 ci,来打破信息稀释的问题。这就是 Cross Attention 机制。

它的目标是: 在解码器生成目标序列的第 t 个词时,动态地、有选择性地关注输入序列的所有编码状态(而非原先只关注 Encoder 最后一个隐藏状态),以获取与当前解码步骤最相关的上下文信息。

 

输入:

计算过程:

  1. 计算对齐分数: 对于输入序列的每一个位置 j (对应 Encoder 隐藏状态 hj),计算它与当前 Decoder 状态 st 的“相关性”或“匹配度”;

    常用方法:

    • 点积: etj=stThj

    • 加性: etj=vTtanh(Wsst+Whhj+b),其中 v, Ws, Wh, b 是可学习参数;

    • 缩放点积: etj=stThjdk,类似 Transformer,但在原始 RNN-Attention 中不常见;

  2. 计算注意力权重: 将对齐分数 etj 通过 Softmax 函数归一化,得到注意力权重 αtj。这表示在生成第 t 个目标词时,模型应该多关注输入序列第 j 个位置

    αtj=softmax(etj), j[1,Tx]

    权重满足:(αtj)=1

  3. 动态计算上下文向量: 用注意力权重 αtj所有 Encoder 隐藏状态 hj 进行加权求和,得到一个动态的上下文向量 ct。这个向量捕获了输入序列中与当前 Decoder 步骤 t 最相关的信息。

    ct=j=1Txαtjhj
  4. 整合上下文: 将计算出的上下文向量 ct 与解码器当前的隐藏状态 st 拼接 (concat) 或者相加 (add),形成一个新的、富含输入信息的表示 st st=concat([st;ct])st=st+ct (或其他组合方式);

  5. 预测输出: 使用 st (而不是原始的 st) 来预测当前步的输出 yt (通常通过一个 Softmax 层):yt=softmax(Wyst+by)

 

8.2 Self-Attention: Transformer 的核心组件

现在仍然有 RNN Encoder-Decoder With Attention 解决不了的问题,也就是对于多层 RNN 而言,每个位置上的 hidden states 总是要依赖于前一个位置上的 hidden states(回顾 Encoder 和 Decoder 的多层 RNN 结构),这导致模型难以并行计算。

因此人们引入了 self-attention,让每个词同时关注所有词,实现并行计算。例如,处理句子 “The animal didn't cross the street because it was too tired” 时,“it” 可直接关联到 “animal”,无需依赖中间隐藏状态。

self-attention 的目标是: 让序列中的每一个元素(词/Token)都能直接与序列中的所有其他元素(包括它自己)进行交互,计算一个基于“全局”上下文的新的表示。它捕捉的是序列内部的依赖关系

输入序列的每个元素 xi 被线性投影到三个不同的向量空间:

计算过程(对于一个序列而言):

  1. 计算注意力分数: 对于序列中的每一个位置 i (Query),计算它与序列中每一个位置 j (Key) 的相似度分数。通常使用缩放点积

    eij=qiTkjdk

    dk 是 Key 向量的维度,缩放是为了防止点积结果过大导致 Softmax 梯度消失。

    根据 “Attention is all you need” 论文内容,当 dk 较大时,点积的方差会增大,缩放可使梯度稳定。

  2. (可选) 掩码:Decoder 的 Self-Attention 中,为了避免模型在预测位置 i 时“偷看”到未来位置 j>i 的信息,需要将 j>i 位置的分数 eij 设置为一个非常大的负数(如 -1e9),这样在 Softmax 后其权重几乎为 0。Encoder 的 Self-Attention 不需要掩码。

  3. 计算注意力权重: 对每一行 i 的分数 ei1,ei2,,eiN 进行 Softmax 归一化,得到位置 i 对所有位置 j 的注意力权重 αij

    αij=softmax(eij), j[1,N]

    权重满足 i(αij)=1

  4. 计算加权和输出: 对于位置 i,用其注意力权重 αij 对所有位置的 Value 向量 vj 进行加权求和,得到位置 i 的 Self-Attention 输出 zizi 是融合了序列中所有其他位置相关信息的新表示。

    zi=j=1Nαijvj

Tip

核心类比:Q(Query)是 “查询条件”,K(Key)是 “索引标签”,V(Value)是 “存储内容”。三者构成 “检索 - 匹配 - 取值” 的信息处理链,类似数据库通过索引查找数据的过程。

那么多头注意力(Multi-Head Attention)呢?

Transformer 使用它的目的是来增强模型捕捉不同子空间信息的能力

  1. Q, K, V 投影 h 次到不同的子空间(使用不同的投影矩阵)。

  2. 在每个头上独立进行上述 Self-Attention 计算,得到 h 个输出向量 head1,,headh

  3. h 个输出向量拼接 (concat) 起来。

  4. 将拼接后的结果通过一个线性投影层 Wo 得到最终的 Multi-Head Attention 输出:

    MultiHead(Q,K,V)=concat(head1,,headh)Wowhere headi=Attention(QWqi, KWki, VWvi)

通俗理解:每个头独立计算注意力,再拼接结果,相当于从不同视角捕捉语义关联

补充:矩阵运算优化 q,k,v 堆叠为矩阵 Q,K,V,可利用 GPU 加速,通过矩阵乘法并行计算所有注意力权重:

Attention(Q,K,V)=softmax(QKTd)V
场景Q 来源K/V 来源核心作用
Cross-Attention解码器状态(如 si1编码器输出(如 hj跨序列信息对齐(如翻译中的原文 - 译文映射)
Self-Attention同一序列的词嵌入同一序列的词嵌入序列内语义关联建模(如 “it” 指代 “animal”)
Multi-Head Attention分割后的子空间 Query分割后的子空间 Key/Value多视角捕捉语义(如语法 / 语义并行处理)

对比:


位置编码(Positional Encoding)

8.3 Transformer 架构

训练方法、损失函数、优化算法,与 RNN Encoder-Decoder 完全一致。

8.4 总结

训练流程

应用场景

优点

缺点

后续技术演进

总而言之,Transformer 通过 Self-Attention 机制彻底重构了序列建模方式,其核心贡献在于:

  1. 摒弃循环结构,实现全并行计算,推动 NLP 模型效率飞跃;

  2. 用注意力机制显式建模全局依赖,突破 RNN 的长序列瓶颈;

  3. 统一的架构设计为跨领域任务(如语言、视觉、语音)提供了通用框架。

 

Chapter 9. Large Language Model (LLM)

LLM 的核心目标

预训练与微调的比较参见 9.2;

9.1 预训练语言模型:从 BERT 到 GPT

9.1.1 BERT: Bidirectional Encoder Representations from Transformers

BERT 架构特点

也就是说,它是一个满足下列条件的 Transformer Encoder:

  • 可以学习单词和句子的不同表示。

  • 在大型文本库上进行预训练,然后在小型特定任务数据集(如分类、质量保证)上进行微调;

再次强调:BERT 完全基于 Transformer 模型Encoder(编码器) 部分构建。Transformer 由 Encoder 和 Decoder 堆叠而成,BERT 只使用了 Encoder 堆叠。

预训练任务

微调应用场景

补充知识

总结:BERT 是一个基于 Transformer Encoder 堆叠的预训练语言模型。它通过 MLM 任务实现了深度双向的上下文理解,并通过 NSP 任务学习句子间关系。预训练后的模型通过简单的微调即可在多种 NLP 任务上取得优异表现。

9.1.2 自回归架构

什么是自回归架构?

自回归模型的核心在于其序列生成的方式。它假设序列中的每个元素(例如文本中的一个词)都依赖于它之前生成的所有元素

工作原理:

  1. 顺序生成: 模型一次生成序列中的一个 token(词或子词)。

  2. 依赖历史: 在生成第 t 个 token 时,模型只能访问它之前已经生成的 token (1, 2, ..., t-1) 作为上下文信息。它无法利用“未来”的 token(第 t+1, t+2, ... 个 token)。

  3. 概率建模: 模型学习的是整个序列的联合概率分布 P(x1, x2, ..., xT)。这个联合概率被分解为一系列条件概率的乘积: P(x1, x2, ..., xT) = P(x1) * P(x2|x1) * P(x3|x1, x2) * ... * P(xT|x1, x2, ..., xT-1) 模型的核心任务就是学习这些条件概率 P(xt | x1, ..., xt-1)

架构基础: 现代 NLP 中的自回归模型几乎都基于 Transformer 的 Decoder(解码器) 部分构建。Transformer Decoder 的特点:

训练目标: 自回归模型的训练目标通常是最大似然估计。给定一个真实的序列 (x1, x2, ..., xT),模型的目标是最大化其自身预测的条件概率的乘积(或等价地,最小化负对数似然)。具体来说,在训练时:

应用场景: 自回归架构天生适合文本生成任务,因为文本生成就是一个从左到右、逐个 token 预测的过程。典型应用包括:

关键特性:

总结自回归架构: 自回归架构是一种序列建模和生成的方法。它假设序列元素按顺序生成,每个元素严格依赖其之前的所有元素。在现代 NLP 中,它主要通过带掩码自注意力Transformer Decoder 实现。这种架构是生成式任务(如 GPT 系列)的首选,其训练目标是预测下一个 token(语言模型任务),训练可并行但推理生成是串行的。

9.1.3 GPT: Generative Pre-Trained Transformer

架构与预训练

补充知识

比较:

模型架构预训练任务核心能力
BERT编码器MLM + NSP文本理解
GPT解码器自回归语言模型文本生成

 

9.2 微调 Fine-Tuning

9.2.1 微调的核心逻辑

9.2.2 参数高效微调(PEFT)技术

Prompt Tuning(提示微调)

LoRA(低秩适应)

补充知识

 

9.3 提示工程(Prompt Engineering):解锁 LLM 的关键

1. 基础提示技巧

2. 进阶推理提示

补充知识

 

9.4 检索增强生成(RAG):弥补 LLM 知识局限

1. RAG 的核心逻辑

2. RAG 架构三要素(Framework)

3. 工作流程(Pipeline)

  1. 索引阶段:将文档分块,生成向量存入数据库。

  2. 检索阶段:查询转换为向量,匹配最相关的文档块。

  3. 生成阶段:将检索结果加入提示,LLM 基于上下文回答。

 

Chapter 10. CNN & CV

CNN 和一般的神经网络比较:

参见另一份笔记。

案例补充:

AlexNet:

注意到,为什么使用小的 Kernels(filters)?

网络一定越深越好吗?事实上不一定,过深的网络也会导致表现较差。假说:the problem is an optimization problem, deeper models are harder to optimize

更深的优化案例:ResNet

为什么用残差连接?

 

Chapter 11. Computer Vision

计算机视觉的 5 大任务:

图像分类(Image Classification)

语义分割(Semantic Segmentation)

目标检测(Object Detection)

图像字幕生成(Image Captioning)

图像生成(Image Generation)

11.1 语义分割

  1. 核心挑战与朴素思路

    • 直接对每个像素独立分类不可行,因缺乏上下文信息(如单个像素无法判断是 “猫毛” 还是 “草地”)。

    • 滑动窗口法:用 CNN 提取图像块特征,预测中心像素类别,但重叠块特征重复计算,效率极低。

  2. 全卷积网络(Fully Convolutional Networks, FCN)

    • 架构创新:

      • 去掉传统 CNN 的全连接层,仅用卷积层实现端到端像素级预测。

      • 引入下采样(池化 / 步长卷积)和上采样(反卷积 / 转置卷积),平衡语义信息(高层)与空间细节(低层)。

    • 问题:原始分辨率下卷积计算量极大,需通过多尺度特征融合优化。

  3. U-Net:编码器 - 解码器的经典范式

    • 结构特点:

      • 编码器(左半部分)下采样提取语义特征,解码器(右半部分)上采样恢复空间分辨率。

      • 跳跃连接(Skip Connections)直接传递低层空间信息,解决 FCN 中细节丢失问题。

    • 应用:生物医学图像分割(如细胞边界提取),因对小目标(如微小病灶)检测效果优异。

    • 扩展:后续出现的 DeepLab 系列引入空洞卷积(Atrous Convolution),在不降低分辨率的前提下扩大感受野。

11.2 目标检测

对于 single object 而言,就是 Classification + Localization;

但是对于 multiple objects 而言,问题是 each image (CNN) needs a different number of outputs!

简单的想法是,枚举图像的不同裁剪,应用 CNN 将每个裁剪分类为对象或背景。

还有问题:需要对大量位置、比例和长宽比应用 CNN,计算成本非常高!

11.2.1 两阶段检测:R-CNN 系列的演进

11.2.2 端到端检测:YOLO(You Only Look Once)

11.2.3 图像字幕生成:从编码器 - 解码器到注意力机制

基础框架:编码器 - 解码器(Encoder-Decoder)

引入注意力机制(Attention Mechanism)

Transformer 的应用

扔掉 CNN,直接上 Transformers,端到端地学!

 

11.2.4 视觉语言模型(VLMs):多模态融合的前沿

  1. CLIP(Contrastive Language-Image Pretraining)

    • 核心思想:通过对比学习,将图像和文本映射到同一嵌入空间,使语义相近的图像 - 文本对在空间中距离更近。

    • 零样本学习能力:训练时不接触具体任务标签,推理时通过文本提示(如 “A photo of a dog”)实现目标检测、分类。

  2. LLaVA:大语言模型与视觉的结合

    • 架构:

      • 视觉编码器:CLIP 或 ViT 提取图像特征。

      • 语言模型:基于 LLaMa,将视觉特征投影后与文本嵌入拼接,实现多模态理解。

    • 应用:视觉问答(如 “图中猫的品种是什么”)、图像描述生成,支持双语(中英)交互。

其他 VLMs:

模型特点
CogVLM支持图像接地(定位文本提及的物体)和对话交互
Qwen-VL零样本目标检测能力,图像分辨率 448×448
PaLM-E具身智能(Embodied AI),结合视觉与机器人控制,可规划抓取动作

11.2.5 扩展知识

实例分割(Instance Segmentation)

三维视觉

无监督学习在 CV 中的应用

11.2.6 总结:计算机视觉的演进脉络

从 CNN 到 Transformer,从单模态到多模态,CV 技术始终围绕 “如何更高效地理解视觉世界” 发展。未来趋势将聚焦于:

  1. 多模态融合:视觉与语言、音频、传感器数据的深度结合(如具身智能)。

  2. 无监督 / 自监督学习:降低对大规模标注数据的依赖。

  3. 实时性与轻量化:边缘设备(如手机、机器人)上的高效推理。

  4. 通用智能:从单一任务(如图像分类)到通用视觉理解,向人类级视觉认知靠近。

 

Chapter 12. 无监督学习

大致有几个类别:

 

无监督学习 vs 监督学习:

12.1 Clustering & K-Means

12.1.1 基本定义

聚类是无监督学习的典型任务,其定义为:将无标签数据组织成相似的组(簇),簇内数据 “相似”,簇间数据 “相异”。

12.1.2 K-means 算法的原理与步骤

K-means 是最经典的聚类算法之一,其目标是将数据划分为 K 个簇,使簇内平方和(SSE)最小。

算法核心步骤

  1. 初始化质心:随机选择 K 个数据点作为初始簇中心。

  2. 分配数据点:对每个数据点,计算其到所有质心的 L2 距离,分配到最近的簇。 L2 距离公式:L2(x,μk)=||xμk||=m=1d(xiμmk)2

  3. 更新质心:根据当前簇分配,重新计算每个簇的质心(均值)。

    质心公式:μk=1CkxCkx,其中 Ck 为第 k 簇的数据点数量。

  4. 迭代收敛:重复步骤 2-3,直到质心不再显著变化或 SSE 收敛。

收敛条件

12.1.3 K-means 的关键问题与优化

时间复杂度:设计算两点间距离复杂度为 O(d),其中 d 是向量维数;

局部最优与初始质心敏感性

什么导致了 K-Means 算法的不确定性?

  1. 初始质心选择的随机性:算法初始质心(种子点)的随机选择会直接影响最终聚类结果。不同的初始质心可能导致算法收敛到不同的局部最优解,甚至出现收敛缓慢或簇结构次优的情况。例如,若初始质心集中在数据的某一区域,可能导致簇划分失衡。

  2. 算法本身只能收敛到局部最优:k-means 算法的优化目标(最小化簇内平方和)属于 NP 难问题,理论上无法保证找到全局最优解,只能收敛到局部最优。这种特性使得结果对初始条件敏感,不同运行过程可能产生不同的聚类结构。

  3. K 值预先指定的主观性:用户需要手动指定簇的数量 K,但真实数据的最佳簇数往往未知。错误的 K 值会导致聚类结果偏离数据的真实结构,例如 K 过大可能分裂合理簇,K 过小可能合并不同类别的数据。

如何选择簇数 K?

12.1.4 K-means 的优缺点与应用场景

优点

缺点

典型应用

 

12.1.5 K-means 与其他聚类算法的对比

 

12.2 Dimensionality Reduction

降维的核心问题:“除了数据聚类,是否存在其他数据模式”。降维试图通过挖掘 “隐藏特征” 来简化高维数据

12.2.1 背景:维度灾难(The Curse of Dimensionality)

理论挑战

实际痛点

降维的定义:减少数据维度(属性数),同时保留数据的内在特征,找到决定数据特性的 “隐藏维度”。

直观示例:3D 数据可投影到最佳 2D 或 1D 空间,保留主要变化趋势。

12.2.2 线性降维算法:PCA 主成分分析

除了 PCA,线性降维算法还有:Linear discriminate analysis (LDA)、Factor analysis 等等;

核心思想:找到方差最大的投影方向(主成分),使降维后数据信息损失最小。

数学推导

主成分数量 k 的选择

应用案例

PCA 的优缺点

为什么说 PCA 可以看成神经网络?

 

12.2.3 非线性降维:自动编码器(Auto-encoder)

除了 Auto-encoder,非线性降维算法还有:KPCA, KLDA、Multidimensional scaling (MDS)、t-SNE 等等;

  • KPCA(核 PCA):通过核函数将数据映射到高维,再用 PCA 降维,处理非线性关系;

  • t-SNE:将高维数据映射到 2D/3D,保持局部相似性,常用于可视化;

  • 多维缩放(MDS):保持数据点间距离关系,用于可视化。

基本结构

与 PCA 的联系(与上一节 “为什么说 PCA 可以看成神经网络?” 连起来看)

扩展:深度自动编码器

对比总结:

方法线性 / 非线性监督性核心优势典型应用
PCA线性无监督计算高效、可解释性强图像压缩、数据预处理
自动编码器非线性无监督灵活处理非线性、可定制网络结构图像去噪、特征学习
t-SNE非线性无监督优秀的高维数据可视化能力单细胞数据可视化、图像检索
LDA(线性判别分析)线性有监督利用标签信息,注重分类区分性人脸识别、文本分类

12.2.4 降维算法的延伸与前沿

  1. 生成模型与降维的结合

    • 降维可视为生成模型的预处理步骤,如 VAE 通过隐变量空间(低维)生成新数据;

    • Diffusion 模型通过逐步去噪学习数据分布,本质上是高维到低维(噪声空间)的映射逆过程。

  2. 实际挑战

    • 如何平衡维度压缩与信息保留;

    • 非线性降维方法的计算复杂度较高;

    • 高维数据中 “有效特征” 与 “噪声” 的区分。

 

12.3 深度生成网络

生成模型的本质:通过建模数据分布 pdata(x),得到 pmodel(x),用以生成符合真实数据规律的新样本。例如,NVIDIA 用 GAN 生成的 “深度伪造”(Deep Fake)视频、AI 对老照片的上色与修复,以及 DALL-E3 的文本生成图像功能,都是生成模型的典型应用。

12.3.1 生成对抗网络(GAN)

核心原理:生成器与判别器的对抗训练

典型架构与变种

应用与局限

12.3.2 变分自编码器(VAE):概率视角下的生成与压缩

核心思想:潜码的概率约束
L(θ,ϕ|x)=Ezqϕ(z|x)[logpθ(x|z)]+KL(qϕ(z|x) || p(z))

前项为重构损失(确保生成图像与原图相似),后项为正则化项(确保潜空间连续可采样)。

为什么要正则化?正则化后有什么性质?

  1. 连续性:潜空间中相近的点->解码后内容相似;

  2. 完整性:从潜空间取样->解码后总是 “有意义 ”的内容;

总结:

12.3.3 扩散模型(Diffusion Models):从噪声到真实的逆向生成

双向过程:前向扩散与反向去噪

模型架构与算法

突破与挑战

对比:

模型核心机制生成质量训练难度典型应用
GAN对抗博弈高(清晰)高(易崩溃)图像生成、深度伪造
VAE变分推断与潜码约束中(模糊)数据压缩、特征提取
Diffusion渐进去噪极高高分辨率图像、文本生成

 

Chapter 13. 强化学习

13.1 机器学习分类与强化学习定位

  1. 机器学习三大范式对比

    • 监督学习:基于带标签数据(x,y)学习映射x->y,目标是预测具体标签,例如图像分类(“这是苹果”)、回归分析等。

    • 无监督学习:处理无标签数据x,学习数据内在结构,例如聚类(“这个和那个相似”)、降维等。

    • 强化学习:核心是 “智能体与环境交互”,通过状态 - 动作对和奖励信号,学习最大化长期奖励的策略,例如机器人控制、游戏 AI 等。

  2. 强化学习的独特性

    • 数据类型:非独立同分布(状态转移具有时序依赖)。

    • 学习目标:优化长期累积奖励,而非即时预测准确性。

    • 典型场景:Atari 游戏(如打砖块)、AlphaGo、自动驾驶等。

13.2 强化学习基础框架:马尔可夫决策过程(MDP)

13.2.1 核心概念

  1. MDP 的数学定义

    • 五元组 (S,A,P,R,γ)

      • S:状态空间(如游戏画面、机器人位置)。

      • A:动作空间(如上下左右移动)。

      • P:状态转移概率 P(st+1|st,at)

      • R:奖励函数 R(st,at)

      • γ[0,1]:折扣因子,衡量未来奖励的重要性。

    • 目标:学习一种能使长期收益最大化的政策(即状态-行动映射)。

  2. MDP 的动态过程

    1. 智能体从状态 s0 出发,选择动作 a0

    2. 环境反馈奖励 r0,并转移到新状态 s1

    3. 重复上述过程,形成轨迹 s0,a0,r0,s1,a1,r1,

    4. 长期回报定义为 Rt=i=tγitri,折扣因子使近期奖励更重要。

  3. 核心问题:策略与值函数

    • 策略 π:状态到动作的映射 π(a|s),决定智能体行为。

    • Q 函数(动作值函数)Q(s,a)=E[Rt|st=s,at=a],衡量在状态 s 执行动作 a 的长期回报期望。

    • 最优策略π(s)=argmaxaQ(s,a),即选择 Q 值最大的动作。

13.2.2 值函数方法 (Value Learning):Q-learning 与深度 Q 网络(DQN)

  1. Q-learning 算法核心

    • 表格法:直接存储所有状态 - 动作对的 Q 值,通过迭代更新:Q(s,a)Q(s,a)+α[r+γmaxaQ(s,a)Q(s,a)] 其中 α 为学习率,r+γmaxaQ(s,a) 为目标值。

    • 案例演示:在 “格子世界” 中,智能体通过不断试错更新 Q 表,最终找到最优路径(如从起点到 + 1 奖励格,避开 - 1 惩罚格)。

    如何估计 Q-Score?

    • Monte-Carlo: Use Real Return;

    • Time-Difference: Use the value from the next state;

  2. DQN:解决维度灾难的突破

    • 核心创新:用深度神经网络(如 CNN)近似 Q 函数 Qθ(s,a),避免存储大规模 Q 表。

    • 关键技巧:

      • 经验回放:存储历史轨迹 (s,a,r,s),随机采样训练,打破数据相关性。

      • 目标网络:使用固定参数的 “目标网络” 计算目标 Q 值,缓解训练不稳定。

    • 网络结构:输入状态(如图像),输出各动作的 Q 值。

    • 训练目标:最小化 MSE 损失 L(θ)=||r+γmaxaQ(s,a;θold)Q(s,a;θ)||

    • 应用:在 Atari 游戏中,DQN 通过图像输入直接学习控制策略,如打砖块游戏中自动决策跳跃时机。

13.2.3 策略梯度方法 (Policy Learning):直接优化行为策略

  1. 策略梯度的核心思想

    • 与值函数的区别:不通过 Q 值间接推导策略,而是直接用神经网络参数化策略 πθ(a|s),如输出动作概率分布。

    • 优化目标:最大化期望回报 Rθ=Eτπθ[R(τ)],其中 τ 为轨迹。

    • 梯度公式θRθ1Ni=1NR(τi)θlogπθ(at|st),即对高回报轨迹的动作增加选择概率,低回报轨迹的动作减少概率。

  2. REINFORCE 算法(策略梯度的经典实现)

    1. 采样轨迹 τ,计算总回报 R(τ)

    2. 对每个动作 at,计算 logπθ(at|st)并乘以 R(τ)

    3. 沿梯度方向更新参数:θθ+ηθRθ

  3. 策略梯度的优缺点

    • 优点:适合连续动作空间(如机器人关节角度控制),可学习随机策略。

    • 缺点:样本效率低,需要大量轨迹才能收敛,且可能陷入局部最优。

13.2.4 案例解析:AlphaGo 的混合智能框架

  1. AlphaGo 的核心组件

    • 策略网络(Policy Network):预测落子位置的概率p(a∣s),减少搜索空间。

    • 价值网络(Value Network):评估棋盘状态的胜负概率V(s),替代蒙特卡洛树搜索的随机模拟。

    • 蒙特卡洛树搜索(MCTS):结合策略网络的先验概率和价值网络的评估,选择最优落子。

  2. 训练流程

    1. 监督学习阶段:用人类专家棋谱训练策略网络,准确率达 57%。

    2. 强化学习阶段:通过自我对弈优化策略,胜率提升至 80%,并训练价值网络评估状态。

    3. MCTS 集成:策略网络缩小搜索范围,价值网络评估节点价值,实现 “精准搜索”。

  3. 意义与扩展

    • 突破点:解决了围棋的巨大状态空间问题(约10700种局面),证明 RL 在复杂博弈中的可行性。

    • 进化:AlphaGo Zero 进一步抛弃人类数据,完全通过自我对弈从零学习,超越之前所有版本。

13.2.5 强化学习在自然语言处理中的应用

  1. 序列生成:SeqGAN 与对话系统

    • 问题:传统监督学习(如 Teacher-forcing)生成的文本可能缺乏多样性或逻辑性(如重复回答 “I don't know”)。

    • RL 方案:

      • 状态:编码器隐藏状态 + 已生成的文本序列。

        • 动作:生成下一个词。

        • 奖励:结合 BLEU、ROUGE 等指标,或自定义奖励(如避免单调回答、促进信息流动)。

  2. 大语言模型优化:RLHF(人类反馈强化学习)

    • 三步流程:

      1. 监督微调(SFT):用人类标注的(prompt, response)对微调 LLM。

      2. 奖励模型(RM):训练模型预测人类对不同回答的偏好排名。

      3. RL 优化:用 PPO 算法基于 RM 的奖励信号进一步微调 LLM,使其输出更符合人类预期。

    • 作用:解决 LLM “胡说八道”“社会偏见” 等问题,如 ChatGPT 通过 RLHF 提升对话安全性和相关性。

概念定义 / 特点应用场景
监督学习基于标签数据学习映射图像分类、回归
无监督学习学习无标签数据的内在结构聚类、降维
强化学习通过交互学习最大化长期奖励的策略游戏 AI、机器人控制
Q-learning用表格存储 Q 值,迭代更新小状态空间问题(格子世界)
DQN用神经网络近似 Q 函数,解决维度灾难Atari 游戏、图像控制
策略梯度直接优化策略的概率分布连续动作空间(机器人)
AlphaGo策略网络 + 价值网络 + MCTS 的混合框架围棋博弈
RLHF用人类反馈微调 LLM,提升回答质量对话系统(如 ChatGPT)

强化学习的挑战与扩展(补充知识点)

  1. 核心挑战

    • 样本效率低:RL 需大量交互数据,尤其在真实环境中成本高昂(如机器人训练)。

    • 探索 - 利用权衡:智能体需平衡 “探索新动作” 与 “利用已知高回报动作”。

    • 稳定性问题:参数更新可能导致策略崩塌,如 DQN 中的目标网络即为缓解该问题。

  2. 前沿方向

    • 多智能体 RL:研究智能体在竞争或合作环境中的学习,如星际争霸 AI AlphaStar。

    • 离线 RL(Off-Policy RL):利用历史数据训练,无需在线交互,适合医疗、金融等敏感领域。

    • 分层 RL:将复杂任务分解为子任务,提升学习效率,如机器人分阶段完成组装任务。

  3. 应用扩展

    • 推荐系统:根据用户反馈动态调整推荐策略,提升点击率和留存率。

    • 资源管理:数据中心服务器调度、通信网络带宽分配等。

    • 医疗决策:制定个性化治疗方案,优化用药顺序和剂量。