人工智能导论:模型与算法(核心技术)
4 机器学习:监督学习
4.1 机器学习基本概念
机器学习是智能体从数据中自动学习知识的一种人工智能方法。其目标是从原始数据中提取特征,学习一个映射函数fff将特征映射到语义空间,寻找数据和任务目标之间的关系。
4.1.1 机器学习的种类
机器学习通常分为三大类:
- 监督学习:给定带标签信息的数据集 D={(xi,yi)}i=1N\mathcal{D} = \{(\boldsymbol{x}_i, \boldsymbol{y}_i)\}_{i=1}^{N}D={(xi,yi)}i=1N,学习从输入 xxx 到输出 yyy 的映射。常用于回归(输出为连续值)和分类(输出为离散类别)。
- 无监督学习:数据无标签,给定 D={xi}i=1N\mathcal{D} = \{\boldsymbol{x}_i\}_{i=1}^{N}D={xi}i=1N,目标是挖掘数据内在结构。常用于聚类和降维。
- 强化学习:一种序列决策学习方法,智能体通过与环境的交互,根据奖励/惩罚来学习在不同状态下如何选择最优行动。
此外,介于监督学习和无监督学习之间还有半监督学习,它依赖于少量标注数据和大量未标注数据。
4.1.2 监督学习的基本概念
监督学习从标注数据出发,学习一个映射函数 fff。模型的预测结果 f(xi)f(x_i)f(xi) 与真实值 yiy_iyi 之间的差异由损失函数衡量,训练目标是使所有样本的“损失和”最小。
常见损失函数
| 损失函数名称 | 定义 |
|---|---|
| 0-1损失 | Loss(yi,f(xi))={1,f(xi)≠yi0,f(xi)=yiLoss(y_i, f(x_i)) = \begin{cases} 1, & f(x_i) \neq y_i \\ 0, & f(x_i) = y_i \end{cases}Loss(yi,f(xi))={1,0,f(xi)=yif(xi)=yi |
| 平方损失 | Loss(yi,f(xi))=(yi−f(xi))2Loss(y_i, f(x_i)) = (y_i - f(x_i))^2Loss(yi,f(xi))=(yi−f(xi))2 |
| 绝对损失 | Loss(yi,f(xi))=∣yi−f(xi)∣Loss(y_i, f(x_i)) = \vert y_i - f(x_i)\vertLoss(yi,f(xi))=∣yi−f(xi)∣ |
| 对数损失 | Loss(yi,P(yi∣xi))=−logP(yi∣xi)Loss(y_i, P(y_i\vert x_i)) = -\log P(y_i\vert x_i)Loss(yi,P(yi∣xi))=−logP(yi∣xi) |
风险与泛化
-
经验风险:模型在训练集上的平均损失。 1n∑i=1nLoss(yi,f(xi))\frac{1}{n}\sum_{i=1}^{n}Loss(y_i, f(x_i))n1∑i=1nLoss(yi,f(xi))
-
期望风险:模型在真实数据分布上的平均损失。 ∫x,yLoss(y,f(x))P(x,y)dxdy\int_{x,y}Loss(y, f(x))P(x,y)dxdy∫x,yLoss(y,f(x))P(x,y)dxdy
-
目标:机器学习的目标是最小化期望风险,但现实中只能通过最小化经验风险来近似。
-
结构风险最小化:为防止过拟合,在经验风险上加入表示模型复杂度的正则化项(惩罚项): 1n∑i=1nLoss(yi,f(xi))+λJ(f)\frac{1}{n}\sum_{i=1}^{n}Loss(y_i, f(x_i)) + \lambda J(f)n1∑i=1nLoss(yi,f(xi))+λJ(f)
- J(f)J(f)J(f) 为模型复杂度,λ\lambdaλ 为惩罚系数,用于平衡经验风险与模型复杂度。
-
模型泛化能力关系
| 经验风险 | 期望风险 | 泛化能力 |
|---|---|---|
| 小 | 小 | 强 |
| 小 | 大 | 过学习 (过拟合) |
| 大 | 大 | 欠学习 (欠拟合) |
| 大 | 小 | “神仙算法” |
判别方法与生成方法
- 判别方法:直接学习决策函数 f(X)f(X)f(X) 或条件概率分布 P(Y∣X)P(Y\vert X)P(Y∣X)。典型模型:回归、SVM、AdaBoost。
- 生成方法:学习数据和类别的联合概率分布 P(X,Y)P(X, Y)P(X,Y),再通过贝叶斯公式求取后验概率 P(Y∣X)P(Y\vert X)P(Y∣X)。典型模型:贝叶斯方法、隐马尔可夫模型。
4.2 回归分析
分析不同变量之间存在的依赖关系的方法。线性回归模型假设关系是线性的。
4.2.1 一元线性回归
- 模型假设:y=ax+by = ax + by=ax+b
- 核心思想:寻找一条直线,使得所有样本点到该直线的残差平方和(RSS) 最小。
- 优化目标:mina,bL(a,b)=∑i=1n(yi−axi−b)2\min_{a,b} L(a,b) = \sum_{i=1}^{n}(y_i - ax_i - b)^2mina,bL(a,b)=∑i=1n(yi−axi−b)2
- 求解方法(最小二乘法):分别对 aaa 和 bbb 求偏导并令其为0,解得参数。
- b=yˉ−axˉb = \bar{y} - a\bar{x}b=yˉ−axˉ
- a=∑i=1nxiyi−nxˉyˉ∑i=1nxi2−nxˉ2a = \frac{\sum_{i=1}^{n}x_iy_i - n\bar{x}\bar{y}}{\sum_{i=1}^{n}x_i^2 - n\bar{x}^2}a=∑i=1nxi2−nxˉ2∑i=1nxiyi−nxˉyˉ
4.2.2 多元线性回归
- 模型假设:f(xi)=a0+∑j=1Dajxi,j=aTxif(x_i) = a_0 + \sum_{j=1}^{D}a_j x_{i,j} = \pmb{a}^T\pmb{x}_if(xi)=a0+∑j=1Dajxi,j=aTxi (将 a0a_0a0 视为 xi,0=1x_{i,0}=1xi,0=1 的系数)
- 优化目标:最小化均方误差 J(a)=(y−XTa)T(y−XTa)J(\pmb{a}) = (\pmb{y} - \pmb{X}^T\pmb{a})^T(\pmb{y} - \pmb{X}^T\pmb{a})J(a)=(y−XTa)T(y−XTa)
- 闭式解:a=(XXT)−1Xya = (\pmb{X}\pmb{X}^T)^{-1}\pmb{X}\pmb{y}a=(XXT)−1Xy
4.2.3 逻辑斯蒂回归 (对数几率回归)
-
目的:解决线性回归对离群点敏感的问题,并用于二分类任务。
-
模型:在线性回归基础上套上 Sigmoid 函数将输出压缩到 (0,1)(0,1)(0,1) 之间,产生概率意义。
- y=11+e−(wTx+b)=P(y=1∣x)y = \frac{1}{1 + e^{-(\pmb{w}^T\pmb{x} + b)}} = P(y=1\vert x)y=1+e−(wTx+b)1=P(y=1∣x)
-
Sigmoid 函数性质:单调递增,值域 (0,1)(0,1)(0,1),z=0z=0z=0 时输出为 0.50.50.5。
-
损失函数:基于极大似然估计推导出对数损失函数 (交叉熵)。
J(θ)=−∑i=1n[yilog(hθ(xi))+(1−yi)log(1−hθ(xi))]J(\theta) = -\sum_{i=1}^{n}[y_i\log(h_\theta(x_i)) + (1-y_i)\log(1-h_\theta(x_i))]J(θ)=−i=1∑n[yilog(hθ(xi))+(1−yi)log(1−hθ(xi))]
-
求解方法(梯度下降):通过迭代调整参数,沿梯度负方向寻找最小损失。
迭代公式:θj=θj−η∂J(θ)∂θj\theta_j = \theta_j - \eta\frac{\partial J(\theta)}{\partial \theta_j}θj=θj−η∂θj∂J(θ)
求偏导并代入后得:θj=θj−η∑i=1n(yi−hθ(xi))xi\theta_j = \theta_j - \eta\sum_{i=1}^{n}(y_i - h_\theta(x_i))x_iθj=θj−η∑i=1n(yi−hθ(xi))xi- η\etaη 为学习率。
4.3 决策树
一种通过树形结构进行分类的方法。每个非叶子结点代表对一个属性的判断,每个分支代表一个判断结果,每个叶结点代表一种分类结果。
4.3.2 构建决策树
决策树构建的关键是选择划分属性的顺序,目的是使分支结点的“纯度”越来越高。
纯度度量指标
-
信息熵:衡量样本集合的不确定性。熵越小,纯度越高。
E(D)=−∑k=1Kpklog2pkE(D) = -\sum_{k=1}^{K}p_k\log_2 p_kE(D)=−k=1∑Kpklog2pk -
信息增益:使用某个属性 AAA 划分前后,信息熵减少的量。信息增益越大,意味着使用属性 AAA 划分所得到的“纯度提升”越大。
Gain(D,A)=Ent(D)−∑i=1n∣Di∣∣D∣Ent(Di)Gain(D, A) = Ent(D) - \sum_{i=1}^{n}\frac{\vert D_i\vert}{\vert D\vert}Ent(D_i)Gain(D,A)=Ent(D)−i=1∑n∣D∣∣Di∣Ent(Di)
缺点:偏向于选择取值数目较多的属性。 -
信息增益率:对信息增益进行改进,对取值数目多的属性增加惩罚项。
Gain_ratio=Gain(D,A)IV(a),IV(a)=−∑i=1n∣Di∣∣D∣log2∣Di∣∣D∣Gain\_ratio = \frac{Gain(D, A)}{IV(a)}, \quad IV(a) = -\sum_{i=1}^{n}\frac{\vert D_i\vert}{\vert D\vert}\log_2\frac{\vert D_i\vert}{\vert D\vert}Gain_ratio=IV(a)Gain(D,A),IV(a)=−i=1∑n∣D∣∣Di∣log2∣D∣∣Di∣ -
基尼系数:另一种衡量纯度的指标,计算更简便。
Gini(D)=1−∑k=1Kpk2Gini(D) = 1 - \sum_{k=1}^{K}p_k^2Gini(D)=1−k=1∑Kpk2
4.4 线性判别分析 (LDA)
一种监督学习的降维方法。核心思想是,将数据投影到一个低维空间,使得同类样本尽可能靠近(类内方差小),不同类样本尽可能远离(类间间隔大)。
- 二分类问题优化目标:J(w)=∥m2−m1∥22s1+s2=wTSbwwTSwwJ(w) = \frac{\Vert m_2 - m_1\Vert_2^2}{s_1 + s_2} = \frac{w^T S_b w}{w^T S_w w}J(w)=s1+s2∥m2−m1∥22=wTSwwwTSbw
- Sb=(m2−m1)(m2−m1)TS_b = (\pmb{m}_2 - \pmb{m}_1)(\pmb{m}_2 - \pmb{m}_1)^TSb=(m2−m1)(m2−m1)T 为类间散度矩阵。
- Sw=Σ1+Σ2S_w = \Sigma_1 + \Sigma_2Sw=Σ1+Σ2 为类内散度矩阵。
- 求解:通过拉格朗日乘子法求解,得到最佳投影方向 w=Sw−1(m2−m1)w = S_w^{-1}(\pmb{m}_2 - \pmb{m}_1)w=Sw−1(m2−m1)。
- 降维维度:LDA 降维后的维度最多为 min(K−1,d)\min(K-1, d)min(K−1,d)。
- 与 PCA 的区别:PCA 是无监督的,目标是让投影后方差最大;LDA 是有监督的,目标是让投影后类内聚合、类间分离。
4.5 Ada Boosting (自适应提升)
核心思想:将一个复杂的分类任务分解为若干个子任务,通过集成多个弱分类器(精度略高于随机猜测)来构建一个强分类器。
- 理论基础:PAC (概率近似正确) 可学习理论,证明了强可学习与弱可学习是等价的。
4.5.2 Ada Boosting 算法
算法通过序列化迭代,每一轮都根据上一轮的结果调整样本权重,最终将各轮弱分类器加权组合成强分类器。
- 初始化样本权重:每个样本的权重相等,w1,i=1Nw_{1,i} = \frac{1}{N}w1,i=N1。
- 迭代训练 MMM 个弱分类器:
- 训练:基于当前样本权重 DmD_mDm 训练一个弱分类器 Gm(x)G_m(x)Gm(x)。
- 计算误差:errm=∑i=1Nwm,iI(Gm(xi)≠yi)err_m = \sum_{i=1}^{N}w_{m,i}I(G_m(x_i) \neq y_i)errm=∑i=1Nwm,iI(Gm(xi)=yi)
- 计算权重:为当前分类器 GmG_mGm 计算在最终强分类器中的权重 αm=12ln1−errmerrm\alpha_m = \frac{1}{2}\ln\frac{1-err_m}{err_m}αm=21lnerrm1−errm。误差越小,权重越大。
- 更新样本权重:增加被 GmG_mGm 错误分类的样本的权重,减小被正确分类样本的权重。
wm+1,i=wm,iZmexp(−αmyiGm(xi))w_{m+1,i} = \frac{w_{m,i}}{Z_m}\exp(-\alpha_m y_i G_m(x_i))wm+1,i=Zmwm,iexp(−αmyiGm(xi))
- 组合强分类器:G(x)=sign(∑m=1MαmGm(x))G(x) = sign\left(\sum_{m=1}^{M}\alpha_m G_m(x)\right)G(x)=sign(∑m=1MαmGm(x))
- 本质:AdaBoost 算法是在以指数损失函数为优化目标,采用分步优化的方式,不断拟合前向阶梯模型的加法模型。
4.6 支持向量机 (SVM)
核心思想:寻找一个超平面,使得其不仅能分开两类样本,而且分类间隔最大。基于结构风险最小化原则,旨在平衡经验风险和置信风险。
4.6.1 VC维与结构风险最小化
- 期望风险 ≤\le≤ 经验风险 +++ 置信风险。
- VC维:衡量假设空间复杂度的指标。VC维越高,模型越复杂,置信风险越大。
- 结构风险最小化:在保证分类精度(经验风险小)的同时,尽量增大分类间隔(从而降低VC维),以控制期望风险。
4.6.2 线性可分支持向量机
- 目标:最大化分类间隔 γ=2∥w∥\gamma = \frac{2}{\Vert w\Vert}γ=∥w∥2。
- 优化问题:
minw,b12wTw\min_{w,b}\frac{1}{2}w^Tww,bmin21wTw
s.t. yi(wTxi+b)≥1,i=1,2,...,n\text{s.t. } y_i(w^Tx_i + b) \ge 1, i=1,2,...,ns.t. yi(wTxi+b)≥1,i=1,2,...,n - 支持向量:距离超平面最近的,使 yi(wTxi+b)=1y_i(w^Tx_i + b) = 1yi(wTxi+b)=1 成立的样本点。最终模型只与支持向量有关。
4.6.3 松弛变量与软间隔
若数据不完全线性可分,可引入“软间隔”,允许部分样本被分错。
- 引入松弛变量 ξi≥0\xi_i \ge 0ξi≥0:表示第 iii 个样本被分类错误所付出的代价。
- 优化目标:
minw,b12wTw+C∑i=1nξi\min_{w,b}\frac{1}{2}w^Tw + C\sum_{i=1}^{n}\xi_iw,bmin21wTw+Ci=1∑nξi
s.t. yi(wTxi+b)≥1−ξi, ξi≥0\text{s.t. } y_i(w^Tx_i + b) \ge 1 - \xi_i, \ \ \xi_i\ge 0s.t. yi(wTxi+b)≥1−ξi, ξi≥0 - C>0C > 0C>0 为惩罚参数,用于平衡间隔最大化和误分类点个数。
4.6.4 核函数
若数据在原始空间线性不可分,可将样本映射到一个高维特征空间,使其在此空间内线性可分。
- 核函数 κ(xi,xj)\kappa(x_i, x_j)κ(xi,xj):定义在原始空间中,其计算结果等于两个样本在某个高维特征空间中的内积,即 κ(xi,xj)=ϕ(xi)Tϕ(xj)\kappa(x_i, x_j) = \phi(x_i)^T\phi(x_j)κ(xi,xj)=ϕ(xi)Tϕ(xj)。
- 这样,无需显式计算高维特征向量的 ϕ(x)\phi(x)ϕ(x),避免了“维数灾难”。
- 常见核函数:线性核、多项式核、径向基函数(RBF)核、Sigmoid 核。
4.7 生成学习模型
与判别式方法不同,生成式方法学习联合概率分布 P(X,C)P(X, C)P(X,C)。
- 核心公式:根据贝叶斯公式,后验概率 P(ci∣x)=P(x∣ci)P(ci)P(x)P(c_i\vert x) = \frac{P(x\vert c_i)P(c_i)}{P(x)}P(ci∣x)=P(x)P(x∣ci)P(ci),分类时选择后验概率最大的类别。
- 关键思想:模型“学会”了数据是如何生成的,即学习到了似然概率 P(x∣ci)P(x\vert c_i)P(x∣ci) 和先验概率 P(ci)P(c_i)P(ci)。
- 典型模型:隐马尔可夫模型(HMM)、隐狄利克雷分布(LDA)。
- 与判别式模型对比:
- 判别模型:直接学习决策边界,渐近误差更小。
- 生成模型:对数据分布的建模更充分,收敛到自身渐近误差的速度更快,在训练样本较少时可能表现更好。
4.8 小结
监督学习从标注数据中学习从输入到输出的映射函数。本章介绍了多种经典模型:回归分析拟合变量关系;决策树通过树状规则分类;线性判别分析实现有监督的降维;Ada Boosting集成多个弱分类器;支持向量机寻找最大间隔超平面;生成模型则从概率角度建模数据分布。这些方法共同构成了监督学习的基础。
5 统计机器学习:无监督学习
无监督学习从无标注数据出发,学习数据中蕴含的模式。由于数据是内容的载体,刻画相同内容的数据具有相似模式,因此可从无标注数据中挖掘其固有模式。
常用算法包括:
- 聚类:K均值聚类、层次聚类
- 降维:主成分分析(PCA)、特征人脸
- 隐变量学习:期望最大化(EM)算法
- 其他:自编码器、生成对抗网络(GAN)
5.1 K均值聚类(K-means)
K-means是一种将 nnn 个 ddd 维数据划分为 KKK 个聚簇的聚类算法,目标是最小化簇内方差。
算法流程
算法 5.1 K-means 聚类
- 输入:nnn 个 ddd 维数据,聚簇数目 KKK
- 输出:每个数据所属聚簇标签
| 步骤 | 操作 |
|---|---|
| 1. 初始化 | 初始化 KKK 个聚类质心 c={c1,c2,…,cK}c = \{c_1, c_2, \dots, c_K\}c={c1,c2,…,cK} |
| 2. 聚类 | 计算每个数据与各质心的欧氏距离,将其划入距离最近的质心所在聚簇:dist(xi,cj)=∑o=1d(xi,o−cj,o)2dist(x_i, c_j) = \sqrt{\sum_{o=1}^{d}(x_{i,o} - c_{j,o})^2}dist(xi,cj)=∑o=1d(xi,o−cj,o)2 |
| 3. 更新质心 | 根据当前聚类结果,重新计算每个聚簇的质心(均值):cj=1∣Gj∣∑xi∈Gjxic_j = \frac{1}{\vert G_j\vert}\sum_{x_i\in G_j}x_icj=∣Gj∣1∑xi∈Gjxi |
| 4. 迭代终止 | 重复步骤2和3,直到质心不再变化或达到最大迭代次数 |
目标函数
K-means本质上是在最小化每个聚簇的方差:
argminG∑i=1K∑x∈Gi∥x−ci∥2=argminG∑i=1K∣Gi∣varGiargmin_{G}\sum_{i=1}^{K}\sum_{x\in G_i}\Vert x - c_i\Vert^2 = argmin_{G}\sum_{i=1}^{K}\vert G_i\vert \operatorname{var}G_iargminGi=1∑Kx∈Gi∑∥x−ci∥2=argminGi=1∑K∣Gi∣varGi
特点与局限性
| 特点 | 说明 |
|---|---|
| 优点 | 算法简单高效,收敛速度快(通常为 O(ndK+1)O(n^{dK+1})O(ndK+1)) |
| 对离群点敏感 | 均值操作易受离群点影响,可用 KKK-medoids 算法替代 |
| 需预设 KKK 值 | 需要事先确定聚类数目,但实际中往往未知 |
| 对数据尺度敏感 | 不同特征的量纲会影响欧氏距离,导致结果偏差 |
| 硬聚类 | 每个数据只能完全属于一个聚簇,不存在“模糊归属”(可被高斯混合模型解决) |
常见初始化方法
- Forgy:随机选取 KKK 个样本点作为初始质心
- Random Partition:随机分配每个样本到一个类,然后计算初始质心
应用举例
- 图像压缩:将图像像素颜色聚类为 KKK 种,用质心颜色替代簇内像素,减少存储空间(KKK 越小压缩率越高,但失真越严重)
- 文本聚类、入侵检测、客户细分等
5.2 主成分分析(PCA)
PCA是一种特征降维方法,通过找到数据的主要成分来代替原始数据,可消除噪声和冗余,并加深对数据本身的理解。其核心要求是:降维后的结果要最大程度保持原始数据的方差结构。
PCA也被称为 KL变换(Karhunen-Loeve Transform)、霍特林变换(Hotelling Transform)或本征正交分解(POD)。
5.2.1 方差、协方差与相关系数
方差
描述样本数据的波动程度:
var(X)=1n−1∑i=1n(xi−μ)2,μ=1n∑i=1nxi\operatorname{var}(X) = \frac{1}{n-1}\sum_{i=1}^{n}(x_i - \mu)^2, \quad \mu = \frac{1}{n}\sum_{i=1}^{n}x_ivar(X)=n−11i=1∑n(xi−μ)2,μ=n1i=1∑nxi
【注】分母为 n−1n-1n−1 是为了使方差估计为无偏估计。
协方差
衡量两个变量之间的相关度:
cov(X,Y)=1n−1∑i=1n(xi−E(X))(yi−E(Y))\operatorname{cov}(X,Y) = \frac{1}{n-1}\sum_{i=1}^{n}(x_i - E(X))(y_i - E(Y))cov(X,Y)=n−11i=1∑n(xi−E(X))(yi−E(Y))
| 取值 | 含义 |
|---|---|
| cov(X,Y)>0\operatorname{cov}(X,Y) > 0cov(X,Y)>0 | XXX 与 YYY 正相关 |
| cov(X,Y)<0\operatorname{cov}(X,Y) < 0cov(X,Y)<0 | XXX 与 YYY 负相关 |
| cov(X,Y)=0\operatorname{cov}(X,Y) = 0cov(X,Y)=0 | XXX 与 YYY 不相关 |
皮尔逊相关系数
将协方差规整到 [−1,1][-1, 1][−1,1] 范围内,消除量纲影响:
corr(X,Y)=cov(X,Y)σXσY\operatorname{corr}(X,Y) = \frac{\operatorname{cov}(X,Y)}{\sigma_X\sigma_Y}corr(X,Y)=σXσYcov(X,Y)
性质:
- ∣corr(X,Y)∣≤1\vert\operatorname{corr}(X,Y)\vert \le 1∣corr(X,Y)∣≤1
- corr(X,Y)=1 ⟺ \operatorname{corr}(X,Y) = 1 \iffcorr(X,Y)=1⟺ 存在 a,ba, ba,b 使得 Y=aX+bY = aX + bY=aX+b
- 刻画的是变量间的线性相关程度
- 线性无关 ≠\neq= 独立:独立必然线性无关,但线性无关不一定独立
5.2.2 主成分分析
基本思想
将 ddd 维数据映射到 lll 维空间(l≪dl \ll dl≪d),使得投影后数据的方差尽可能大。
算法推导
算法 5.2 主成分分析
- 输入:nnn 个 ddd 维样本数据构成的矩阵 XXX,降维后维度 lll
- 输出:映射矩阵 W={w1,w2,…,wl}W = \{w_1, w_2, \dots, w_l\}W={w1,w2,…,wl}
| 步骤 | 操作 |
|---|---|
| 1. 中心化 | 对每个样本 xi=xi−μx_i = x_i - \muxi=xi−μ,其中 μ=1n∑j=1nxj\mu = \frac{1}{n}\sum_{j=1}^{n}x_jμ=n1∑j=1nxj |
| 2. 计算协方差矩阵 | Σ=1n−1XTX\Sigma = \frac{1}{n-1}X^TXΣ=n−11XTX |
| 3. 特征值分解 | 对 Σ\SigmaΣ 进行特征值分解,按特征值从大到小排序 λ1≥λ2≥⋯≥λd\lambda_1 \ge \lambda_2 \ge \dots \ge \lambda_dλ1≥λ2≥⋯≥λd |
| 4. 取前 lll 个特征向量 | 取前 lll 个最大特征值对应的特征向量组成映射矩阵 WWW |
数学原理
- 降维后数据 Y=XWY = XWY=XW(Y∈Rn×lY \in \mathbb{R}^{n \times l}Y∈Rn×l)
- 降维后方差:var(Y)=tr(WTΣW)\operatorname{var}(Y) = tr(W^T\Sigma W)var(Y)=tr(WTΣW)
- 优化目标:maxWtr(WTΣW),s.t. wiTwi=1\max_W tr(W^T\Sigma W), \quad s.t.\ w_i^Tw_i = 1maxWtr(WTΣW),s.t. wiTwi=1
- 使用拉格朗日乘子法求解,得 Σwi=λiwi\Sigma w_i = \lambda_i w_iΣwi=λiwi
- 每一个 wiw_iwi 是协方差矩阵 Σ\SigmaΣ 的特征向量,λi\lambda_iλi 是对应特征值
- 最优化方差等于所有选取特征值之和:tr(WTΣW)=∑i=1lλitr(W^T\Sigma W) = \sum_{i=1}^{l}\lambda_itr(WTΣW)=∑i=1lλi
5.2.3 其他常用降维方法
1. 非负矩阵分解(NMF)
- 将非负大矩阵 D∈Rn×dD \in \mathbb{R}^{n\times d}D∈Rn×d 分解为两个非负小矩阵 W∈Rn×lW \in \mathbb{R}^{n\times l}W∈Rn×l 和 H∈Rl×dH \in \mathbb{R}^{l\times d}H∈Rl×d
- D≈WHD \approx WHD≈WH,所有元素均非负
- 体现了**“部分组成整体”**的思想(纯加性描述)
- 两种常用代价函数:
- 欧式距离平方:∥D−WH∥F2\Vert D - WH\Vert_F^2∥D−WH∥F2
- KL散度:DKL(D∥WH)=∑i,j(Di,jlogDi,j(WH)i,j−Di,j+(WH)i,j)D_{KL}(D\Vert WH) = \sum_{i,j}(D_{i,j}\log\frac{D_{i,j}}{(WH)_{i,j}} - D_{i,j} + (WH)_{i,j})DKL(D∥WH)=∑i,j(Di,jlog(WH)i,jDi,j−Di,j+(WH)i,j)
2. 多维尺度法(MDS)
- 思想:保持原始数据的两两距离不变
- 步骤:计算原始数据的距离矩阵 A→A \toA→ 中心化得 B=−12HAH→B = -\frac{1}{2}HAH \toB=−21HAH→ 对 BBB 做奇异值分解得降维结果
- 缺点:存在 out-of-sample 问题,无法对新数据降维
3. 局部线性嵌入(LLE)
- 一种非线性降维方法
- 基本假设:一个流形的局部可近似于欧式空间,每个样本可由其近邻线性重构
- 利用局部线性逼近全局非线性,通过重叠的局部邻域提供全局结构信息
5.3 特征人脸方法
一种基于外观的人脸识别方法,使用 PCA 的手段提取人脸图像集合中的特征信息,用少量特征脸有效表示原始面部图像。核心思想是:使用一组特征向量(特征人脸)线性组合来表示原始人脸。
5.3.1 奇异值分解(SVD)
在特征维度较高时,暴力求解协方差矩阵的特征向量耗时很大。SVD 提供了一种更高效的计算方式。
-
分解形式:A=UDVTA = UDV^TA=UDVT
- A∈Rn×dA \in \mathbb{R}^{n\times d}A∈Rn×d:原始数据矩阵
- U∈Rn×nU \in \mathbb{R}^{n\times n}U∈Rn×n,V∈Rd×dV \in \mathbb{R}^{d\times d}V∈Rd×d 均为酉矩阵(UTU=I,VTV=IU^TU = I, V^TV = IUTU=I,VTV=I)
- D∈Rn×dD \in \mathbb{R}^{n\times d}D∈Rn×d:对角矩阵,对角元素为奇异值
-
与 PCA 的关系:
- AAT=UD2UT ⟹ UAA^T = UD^2U^T \implies UAAT=UD2UT⟹U 是 AATAA^TAAT 的特征向量矩阵
- ATA=VD2VT ⟹ VA^TA = VD^2V^T \implies VATA=VD2VT⟹V 是 ATAA^TAATA 的特征向量矩阵
- 从 UUU 选取前 lll 个奇异向量可压缩矩阵的行数;从 VVV 选取前 lll 个奇异向量可压缩特征维度(PCA 的目标)
-
高效计算技巧:当 d2≫nd^2 \gg nd2≫n 时,先求 n×nn\times nn×n 的 ΦΦT\Phi\Phi^TΦΦT 特征向量,再利用关系 vi=ΦTuiv_i = \Phi^Tu_ivi=ΦTui 得到特征人脸,避免直接求解巨大的 d2×d2d^2 \times d^2d2×d2 矩阵。
5.3.2 特征人脸方法流程
- 计算均值人脸:Ψ=1n∑i=1nΓi\Psi = \frac{1}{n}\sum_{i=1}^{n}\Gamma_iΨ=n1∑i=1nΓi
- 中心化:ϕi=Γi−Ψ\phi_i = \Gamma_i - \Psiϕi=Γi−Ψ
- SVD求解:利用 SVD 高效计算中心化矩阵 Φ\PhiΦ 的特征向量(即特征人脸)
- 投影:将每个人脸图像映射到特征人脸空间:Ωi=(ϕi)1×d2Vd2×n\Omega_i = (\phi_i)_{1\times d^2}V_{d^2\times n}Ωi=(ϕi)1×d2Vd2×n
- 识别比较:通过比较两个人脸图像在特征人脸空间的表示 Ωi\Omega_iΩi 和 Ωj\Omega_jΩj 判断是否相似
【注】
- 选取的特征人脸数量 lll 是对重建质量和算法复杂度(时间、空间)的权衡
- 特征人脸能较好表达人脸的全局信息,但无法凸显局部特性(如眼睛、嘴巴细节),这与非负矩阵分解形成对比
5.4 潜在语义分析(LSA)
一种从海量文本中学习单词与单词、单词与文档、文档与文档之间隐性语义关系的方法。基本思想是综合考虑单词在哪些文档中同时出现,以此判断词语含义的相似度。
5.4.1 潜在语义分析思想
- 构建单词-文档矩阵 AAA:尺寸 M×NM\times NM×N,MMM 为单词数目,NNN 为文档数目。矩阵元素表示某单词在某文档中出现次数(也可用 TF-IDF 等加权)。
- SVD分解:A=UDVTA = UDV^TA=UDVT
- U∈RM×RU \in \mathbb{R}^{M\times R}U∈RM×R:LSI单词向量,每行是一个单词在隐空间中的表示
- V∈RN×RV \in \mathbb{R}^{N\times R}V∈RN×R:LSI文档向量,每行是一个文档在隐空间中的表示
- D∈RR×RD \in \mathbb{R}^{R\times R}D∈RR×R:对角矩阵,对角线上按从大到小排列的奇异值
- RRR 为矩阵 AAA 的秩
- 低秩近似:取前 kkk 个最大奇异值及其对应向量,重构矩阵 Ak=∑i=1kuiσiviTA_k = \sum_{i=1}^{k}u_i\sigma_i v_i^TAk=∑i=1kuiσiviT
- AkA_kAk 是对原始矩阵 AAA 的近似,但两者不完全相同
5.4.2 潜在语义分析的效果
通过对重建后的矩阵分析,可以发现:
- 同一类别文档之间的相关性显著提升
- 同一类别内单词之间的语义相似度被明确刻画
- 揭示了在原始矩阵中未被显式表达出来的隐性语义关联
应用场景
- 自动文档分类
- 文本摘要
- 信息检索中的同义词处理
- 关系发现
5.5 期望最大化算法(EM算法)
当模型含有隐变量(未观测变量) 时,无法直接使用最大似然估计求解参数。EM算法通过迭代方式,逐步优化模型参数以最佳“拟合”观测数据。
EM算法分为两步,不断交替直至收敛:
- E步骤(Expectation):基于当前参数,估计隐变量的取值或分布
- M步骤(Maximization):基于观测数据和E步骤得到的隐变量,最大化似然函数,更新模型参数
【注】EM算法不能保证找到全局最优解,可能收敛到鞍点或局部最优。结果受初始值影响。
5.5.1 二硬币投掷例子
问题设定:有A和B两枚硬币,进行5轮实验。每轮先随机选一个硬币,然后掷10次记录正反面(H / T),但不记录所选硬币是A还是B。观测结果仅知道每次投掷的正反面,所选硬币是隐变量。
目标:估计硬币A和B各自的正面概率 θ={θA,θB}\theta = \{\theta_A, \theta_B\}θ={θA,θB}。
EM算法迭代过程:
- 初始化 θ^A(0)=0.60,θ^B(0)=0.50\hat{\theta}_A^{(0)} = 0.60, \hat{\theta}_B^{(0)} = 0.50θ^A(0)=0.60,θ^B(0)=0.50
- E步骤:计算在当前参数下,每轮实验选择硬币A或B的概率
- M步骤:根据E步骤计算的期望,重新估计 θA\theta_AθA 和 θB\theta_BθB
- 重复E、M步骤直至收敛
【注】经过多次迭代后,算法收敛于 θA=0.797,θB=0.520\theta_A = 0.797, \theta_B = 0.520θA=0.797,θB=0.520(该结果与初始值有关)
5.5.3 EM算法一般形式
- 观测数据 X={x1,…,xn}X = \{x_1, \dots, x_n\}X={x1,…,xn},隐变量 Z={z1,…,zn}Z = \{z_1, \dots, z_n\}Z={z1,…,zn}
- 优化目标:最大化对数似然函数 L(Θ,Z)=∑i=1nlog∑ziP(xi,zi∣Θ)L(\Theta, Z) = \sum_{i=1}^{n}\log\sum_{z_i}P(x_i, z_i\vert\Theta)L(Θ,Z)=∑i=1nlog∑ziP(xi,zi∣Θ)
- 核心思想:不断构造对数似然函数的一个下界(E步骤),然后最大化这个下界(M步骤)
数学推导:
L(Θ)=∑i=1nlog∑ziP(xi,zi∣Θ)=∑i=1nlog∑ziQi(zi)P(xi,zi∣Θ)Qi(zi)L(\Theta) = \sum_{i=1}^{n}\log\sum_{z_i}P(x_i, z_i\vert\Theta) = \sum_{i=1}^{n}\log\sum_{z_i}Q_i(z_i)\frac{P(x_i, z_i\vert\Theta)}{Q_i(z_i)}L(Θ)=i=1∑nlogzi∑P(xi,zi∣Θ)=i=1∑nlogzi∑Qi(zi)Qi(zi)P(xi,zi∣Θ)
由 Jensen 不等式,得到下界:
L(Θ)≥∑i=1n∑ziQi(zi)logP(xi,zi∣Θ)Qi(zi)L(\Theta) \ge \sum_{i=1}^{n}\sum_{z_i}Q_i(z_i)\log\frac{P(x_i, z_i\vert\Theta)}{Q_i(z_i)}L(Θ)≥i=1∑nzi∑Qi(zi)logQi(zi)P(xi,zi∣Θ)
等号成立条件为 P(xi,zi∣Θ)Qi(zi)=c\frac{P(x_i, z_i\vert\Theta)}{Q_i(z_i)} = cQi(zi)P(xi,zi∣Θ)=c(常数)。取 Qi(zi)=P(zi∣xi,Θ)Q_i(z_i) = P(z_i\vert x_i, \Theta)Qi(zi)=P(zi∣xi,Θ) 时等号成立。
最终迭代公式:
Θ(t+1)=argmaxΘ∑i=1n∑ziP(zi∣xi,Θ(t))logP(xi,zi∣Θ)\Theta^{(t+1)} = argmax_{\Theta}\sum_{i=1}^{n}\sum_{z_i}P(z_i\vert x_i, \Theta^{(t)})\log P(x_i, z_i\vert\Theta)Θ(t+1)=argmaxΘi=1∑nzi∑P(zi∣xi,Θ(t))logP(xi,zi∣Θ)
5.6 小结
本章从聚类、特征降维和模型学习三个角度介绍了无监督学习的核心方法:
- K-means聚类:通过最小化簇内方差将数据划分为 KKK 类
- 主成分分析(PCA):提取数据方差最大的方向实现降维
- 特征人脸:PCA在人脸识别中的具体应用,通过SVD高效计算
- 潜在语义分析(LSA):利用SVD挖掘单词与文档间的隐性语义
- 期望最大化(EM)算法:解决含隐变量模型的参数估计问题
这些方法共同构成了在无标注数据中“透过数据看本质”的理论和算法基础。
6 深度学习
深度学习是近期在诸多领域取得显著效果的一种方法。与传统监督学习依赖手工构造特征不同,深度学习通过构造**“端到端”**的多层网络结构,自动学习隐含在数据内部的层级化特征表达。
6.1 深度学习的历史发展
深度学习的思想源于对人脑神经系统的模拟。其发展历程中经历了多次起伏,最终在海量数据、强大算力和算法改进的共同推动下,成为当前人工智能的核心技术。
6.2 前馈神经网络
前馈神经网络是深度学习的基础架构。信息从输入层开始,逐层向前传播,经过若干隐藏层,最终到达输出层,网络中没有反馈回路。
6.2.1 若干概念
M-P神经元模型
神经网络的基本计算单元。一个神经元接收来自 nnn 个其他神经元的输入信号 (x1,…,xn)(x_1, \dots, x_n)(x1,…,xn),通过带权重的连接进行传递,总输入与阈值 θ\thetaθ 比较后,经过激活函数 fff 处理产生输出:
y=f(∑i=1nwixi−θ)y = f\left(\sum_{i=1}^{n}w_i x_i - \theta\right)y=f(i=1∑nwixi−θ)
常见激活函数
激活函数的作用是为神经网络引入非线性表达能力。若无激活函数,多层网络将退化为单一的线性映射。
| 激活函数 | 表达式 | 特点 |
|---|---|---|
| Sigmoid | σ(z)=11+e−z\sigma(z) = \frac{1}{1+e^{-z}}σ(z)=1+e−z1 | 输出范围 (0,1)(0,1)(0,1),常用于二分类输出层;易产生梯度消失 |
| Tanh | tanh(z)=ez−e−zez+e−z\tanh(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}tanh(z)=ez+e−zez−e−z | 输出范围 (−1,1)(-1,1)(−1,1),零中心化;仍存在梯度消失 |
| ReLU | ReLU(z)=max(0,z)\text{ReLU}(z) = \max(0, z)ReLU(z)=max(0,z) | 计算简单,缓解梯度消失;输出非零中心;可能出现神经元“死亡” |
| Leaky ReLU | Leaky ReLU(z)=max(αz,z)\text{Leaky ReLU}(z) = \max(\alpha z, z)Leaky ReLU(z)=max(αz,z) | 解决ReLU神经元死亡问题,给负区间一个微小斜率 |
| Softmax | Softmax(zi)=ezi∑jezj\text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_{j}e^{z_j}}Softmax(zi)=∑jezjezi | 将输出转换为概率分布,常用于多分类输出层 |
多层前馈网络结构
- 输入层:接收原始数据,神经元数量等于特征维度
- 隐藏层:位于输入层和输出层之间,对数据进行特征变换和提取。可以有多个隐藏层
- 输出层:产生最终预测结果
- 全连接:相邻层之间的神经元两两连接,每条连接有一个权重
万能近似定理
具有至少一个隐藏层、且隐藏层使用“挤压”性质激活函数(如Sigmoid)的前馈网络,只要隐藏层神经元数量足够多,可以以任意精度逼近任意连续函数。但定理并未说明需要多少神经元,也未保证实际训练能收敛到该函数。
6.2.2 感知机模型
感知机是由两层神经元组成的最简单前馈网络(输入层 + 输出层),只能解决线性可分问题。
- 模型:y=sign(wTx+b)y = sign(\boldsymbol{w}^T\boldsymbol{x} + b)y=sign(wTx+b)
- 学习策略:误分类驱动。对误分类样本 (xi,yi)(x_i, y_i)(xi,yi),更新权重:w←w+ηyixiw \leftarrow w + \eta y_i x_iw←w+ηyixi
- 收敛性:若数据线性可分,感知机算法必收敛
- 局限:无法解决异或(XOR)等线性不可分问题,这直接导致了神经网络研究的第一次低潮
6.2.3 参数优化与学习
多层网络的学习远比感知机复杂,需借助误差反向传播算法与梯度下降进行参数优化。
误差反向传播(Backpropagation, BP)
BP算法的核心思想是:利用链式法则,将输出层的误差从后向前逐层传递,从而高效计算出损失函数对网络中每个参数的梯度。
算法流程:
- 前向传播:将输入样本送入网络,逐层计算各神经元的输出,最终得到预测值
- 计算输出层误差:根据损失函数,计算预测值与真实值之间的误差
- 反向传播:从输出层开始,利用链式法则将误差逐层向前反向传播,计算每层神经元权重的梯度
- 更新参数:利用梯度下降法更新各层权重和偏置
批量梯度下降 vs 随机梯度下降 vs 小批量梯度下降
| 方法 | 描述 | 特点 |
|---|---|---|
| 批量梯度下降(BGD) | 使用全部训练数据计算梯度 | 收敛稳定但速度慢,内存开销大 |
| 随机梯度下降(SGD) | 每次使用一个样本计算梯度 | 更新快,但收敛过程波动大 |
| 小批量梯度下降(Mini-batch SGD) | 每次使用一小批样本计算梯度 | 最常用,兼顾稳定性和效率 |
6.3 卷积神经网络(CNN)
卷积神经网络是专门为处理网格化结构数据(如图像)而设计的深度学习架构。其核心组件包括卷积层、池化层和全连接层。
CNN的主要特点:
- 局部连接:每个神经元只与上一层的局部区域连接,减少参数数量
- 权值共享:同一卷积核在整个输入上滑动,共享权重参数
- 层次化特征提取:低层提取边缘、纹理等简单特征,高层组合成复杂语义特征
6.3.1 卷积计算
卷积核(滤波器)在输入特征图上滑动,每次与对应位置的局部区域做逐元素乘积后求和,生成输出特征图。多个卷积核可提取多种不同特征。
卷积操作的核心参数:
| 参数 | 说明 |
|---|---|
| 卷积核大小 | 感受野的大小,如 3×33\times33×3、5×55\times55×5 |
| 步长(Stride) | 卷积核每次移动的像素数 |
| 零填充(Padding) | 在输入特征图边缘补零,控制输出尺寸 |
输出尺寸计算公式:
假设输入尺寸为 Win×HinW_{in}\times H_{in}Win×Hin,卷积核大小为 F×FF\times FF×F,步长为 SSS,填充为 PPP,则输出尺寸为:
Wout=Win−F+2PS+1,Hout=Hin−F+2PS+1W_{out} = \frac{W_{in} - F + 2P}{S} + 1, \quad H_{out} = \frac{H_{in} - F + 2P}{S} + 1Wout=SWin−F+2P+1,Hout=SHin−F+2P+1
6.3.2 池化(Pooling)
池化层对特征图进行下采样,减少特征图尺寸,从而降低计算量和参数量,同时增加感受野,具有一定的不变性(如平移不变性)。
| 池化类型 | 操作 | 特点 |
|---|---|---|
| 最大池化 | 取局部区域的最大值 | 最常用,保留最显著特征 |
| 平均池化 | 取局部区域的平均值 | 保留整体信息,更平滑 |
6.3.3 神经网络正则化
为防止过拟合,常用以下正则化技术:
| 方法 | 核心思想 |
|---|---|
| L1/L2正则化 | 在损失函数中加入权重的 L1 或 L2 范数惩罚项,限制权重大小 |
| Dropout | 训练时随机“丢弃”一部分神经元,相当于每次训练一个子网络,有效防止过拟合。测试时使用全部神经元 |
| 数据增强 | 通过旋转、翻转、裁剪、色彩变换等手段生成更多训练样本 |
| 批归一化(Batch Normalization) | 对每层输入进行归一化,加速训练,减少对初始化的敏感度 |
6.4 循环神经网络(RNN)
循环神经网络专门用于处理序列数据(如文本、语音、时间序列),其核心特点是具有记忆能力,当前时刻的输出不仅依赖当前输入,还依赖之前时刻的隐藏状态。
6.4.1 循环神经网络模型
核心思想:在每个时间步 ttt,RNN 接收当前输入 xtx_txt 和上一时刻的隐藏状态 ht−1h_{t-1}ht−1,计算当前隐藏状态 hth_tht 和输出 yty_tyt:
ht=f(Wxhxt+Whhht−1+bh)h_t = f(W_{xh}x_t + W_{hh}h_{t-1} + b_h)ht=f(Wxhxt+Whhht−1+bh)
yt=g(Whyht+by)y_t = g(W_{hy}h_t + b_y)yt=g(Whyht+by)
- Wxh,Whh,WhyW_{xh}, W_{hh}, W_{hy}Wxh,Whh,Why 在所有时间步共享,大大减少参数数量。
- 通过沿时间的反向传播(Backpropagation Through Time, BPTT)进行训练。
RNN的局限性:
- 梯度消失/爆炸:序列较长时,梯度在反向传播中呈指数级衰减或增长,导致难以学习长期依赖关系。
- 短时记忆问题:标准RNN仅能有效记住较短时间步之前的信息。
6.4.2 长短时记忆网络(LSTM)
LSTM 是为解决标准RNN的长期依赖问题而设计的改进模型。它引入门控机制和细胞状态,可以学习何时记住、何时遗忘信息。
LSTM的核心组件:
| 组件 | 功能 |
|---|---|
| 遗忘门 | 决定从细胞状态中丢弃哪些信息:ft=σ(Wf⋅[ht−1,xt]+bf)f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)ft=σ(Wf⋅[ht−1,xt]+bf) |
| 输入门 | 决定将哪些新信息存入细胞状态:it=σ(Wi⋅[ht−1,xt]+bi)i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)it=σ(Wi⋅[ht−1,xt]+bi) |
| 候选细胞状态 | 生成候选的新信息:C~t=tanh(WC⋅[ht−1,xt]+bC)\tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C)C~t=tanh(WC⋅[ht−1,xt]+bC) |
| 更新细胞状态 | 整合遗忘门和输入门:Ct=ft⊙Ct−1+it⊙C~tC_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_tCt=ft⊙Ct−1+it⊙C~t |
| 输出门 | 决定输出什么信息:ot=σ(Wo⋅[ht−1,xt]+bo)o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o)ot=σ(Wo⋅[ht−1,xt]+bo) |
| 隐藏状态 | ht=ot⊙tanh(Ct)h_t = o_t \odot \tanh(C_t)ht=ot⊙tanh(Ct) |
6.4.3 门控循环单元(GRU)
GRU 是 LSTM 的简化变体,将遗忘门和输入门合并为更新门,将细胞状态和隐藏状态合并。参数更少,计算效率更高,在很多任务上效果与 LSTM 相当。
- 更新门 ztz_tzt:控制保留多少过去信息,以及接收多少新信息
- 重置门 rtr_trt:控制忽略多少过去信息
6.5 深度生成学习
深度生成模型旨在学习数据的概率分布,从而能够生成新的、与训练数据相似的样本。
6.5.1 生成对抗网络(GAN)
GAN 由 Goodfellow 于 2014 年提出,由两个网络组成,通过对抗训练共同优化:
- 生成器(Generator, G):接收随机噪声 zzz,生成伪造样本 G(z)G(z)G(z),目标是“骗过”判别器
- 判别器(Discriminator, D):接收真实样本或生成样本,判断输入是真实的还是伪造的
核心思想:两个网络间进行极小极大博弈(Minimax Game)。
6.5.2 生成对抗网络算法
优化目标函数:
minGmaxDV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]\min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_z(z)}[\log(1 - D(G(z)))]GminDmaxV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]
- 判别器优化:最大化 VVV,即正确分类真实样本和生成样本
- 生成器优化:最小化 VVV,即最小化 log(1−D(G(z)))\log(1 - D(G(z)))log(1−D(G(z))),等价于最大化 logD(G(z))\log D(G(z))logD(G(z)),让判别器将生成样本判为真
训练过程:交替训练判别器和生成器,二者在对抗中共同提升。理论上,当 pG=pdatap_G = p_{data}pG=pdata 时,博弈达到纳什均衡,此时 D(x)=12D(x) = \frac{1}{2}D(x)=21。
6.5.3 条件生成对抗网络(CGAN)
原始 GAN 无法控制生成样本的类别。CGAN 通过向生成器和判别器额外输入条件变量 ccc(如类别标签),使生成过程可控,可生成指定类别的样本。
- 生成器:G(z,c)G(z, c)G(z,c),根据随机噪声和条件生成样本
- 判别器:D(x,c)D(x, c)D(x,c),不仅判断样本真假,还判断样本与条件是否匹配
- 优化目标:
minGmaxDV(D,G)=Ex∼pdata[logD(x,c)]+Ez∼pz[log(1−D(G(z,c),c))]\min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}}[\log D(x, c)] + \mathbb{E}_{z \sim p_z}[\log(1 - D(G(z, c), c))]GminDmaxV(D,G)=Ex∼pdata[logD(x,c)]+Ez∼pz[log(1−D(G(z,c),c))]
6.5.4 用生成对抗网络抵御对抗样本攻击
对抗样本:在原始输入上添加微小、人眼不可察觉的扰动后,会导致深度学习模型以高置信度做出错误预测。这种现象揭示了深度学习模型的脆弱性。
防御思路:利用GAN生成对抗样本,将其加入训练数据,使模型“见过”对抗样本后获得鲁棒性,从而抵御对抗攻击。
6.6 深度学习在自然语言和计算机视觉上的应用
6.6.1 词向量模型(Word2Vec)
- 目的:将单词从离散的独热编码(One-hot)映射到低维稠密的连续向量空间,使语义相似的词在向量空间中距离也相近。
- 核心假设:分布假说——“一个词的含义可由其上下文推断”
- 主要模型:
- Skip-gram:用中心词预测周围上下文词
- CBOW(Continuous Bag of Words):用上下文词预测中心词
- 著名特性:词向量能捕获语义关系,如“国王 - 男人 + 女人 = 王后”
6.6.2 图像分类与目标定位
CNN 在计算机视觉领域取得了突破性进展,典型网络架构包括:
| 模型 | 特点 |
|---|---|
| AlexNet | 2012年 ImageNet 冠军,首次展示深度学习潜力(ReLU + Dropout) |
| VGGNet | 使用堆叠的小卷积核(3×33\times33×3),网络结构规整 |
| GoogLeNet(Inception) | 引入 Inception 模块,并行使用多种大小卷积核提取多尺度特征 |
| ResNet | 引入残差连接(跳层连接),解决深层网络退化问题,可训练上百层网络 |
除图像分类外,CNN 还广泛用于目标检测(Faster R-CNN、YOLO)、语义分割(FCN、U-Net)等视觉任务。
6.7 小结
深度学习通过构建多层神经网络,实现端到端的特征学习和任务求解。
- 前馈神经网络是网络基础,通过反向传播算法进行参数优化
- CNN 利用卷积、池化等操作,极大推动了计算机视觉的发展
- RNN/LSTM/GRU 的循环结构和门控机制,为处理序列数据提供了有效方案
- GAN 开创了对抗训练范式,使模型具备生成逼真数据的能力
7 强化学习
强化学习解决的是序贯决策优化问题。智能体通过与环境的不断交互,根据环境反馈的奖励或惩罚来学习在不同状态下应采取的最优动作,目标是最大化累积奖励。
与监督学习、无监督学习的核心区别:
- 数据在序列交互中产生,非一次性给定
- 决策是序列决策,而非单步静态决策
- 学习依据是评价性反馈(奖励值),而非明确的正确标签
7.1 强化学习问题定义
7.1.1 强化学习基本概念
强化学习的基本框架包含以下要素:
| 要素 | 说明 |
|---|---|
| 智能体(Agent) | 执行动作并与环境交互的学习主体 |
| 环境(Environment) | 智能体所处的外部世界,对动作做出响应 |
| 状态 sss | 智能体在某一时刻对环境的观察描述 |
| 动作 aaa | 智能体在某一状态下可采取的行为 |
| 奖励 rrr | 环境对智能体执行某动作后给出的即时反馈(正数为奖励,负数为惩罚) |
| 策略 π\piπ | 智能体选择动作的规则,π(a∣s)\pi(a\vert s)π(a∣s) 表示在状态 sss 下选择动作 aaa 的概率 |
| 轨迹(Trajectory) | 智能体与环境交互产生的一系列状态-动作-奖励序列 |
交互过程:在时间步 ttt,智能体观察到状态 sts_tst,执行动作 ata_tat,环境返回奖励 rtr_trt,智能体进入新状态 st+1s_{t+1}st+1。
学习目标:找到最优策略 π∗\pi^*π∗,使得累计奖励的期望最大。累计奖励通常定义为回报(Return):
Gt=rt+γrt+1+γ2rt+2+⋯=∑k=0∞γkrt+kG_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \dots = \sum_{k=0}^{\infty}\gamma^k r_{t+k}Gt=rt+γrt+1+γ2rt+2+⋯=k=0∑∞γkrt+k
其中 γ∈[0,1]\gamma \in [0, 1]γ∈[0,1] 为折扣因子,用于调节当前奖励与未来奖励的相对重要性。
7.1.2 马尔可夫决策过程(MDP)
强化学习问题通常被建模为马尔可夫决策过程。
定义:一个MDP由五元组 (S,A,P,R,γ)(S, A, P, R, \gamma)(S,A,P,R,γ) 组成:
| 符号 | 含义 |
|---|---|
| SSS | 有限的状态集合 |
| AAA | 有限的动作集合 |
| PPP | 状态转移概率:P(st+1∣st,at)P(s_{t+1}\vert s_t, a_t)P(st+1∣st,at) |
| RRR | 奖励函数:R(st,at,st+1)R(s_t, a_t, s_{t+1})R(st,at,st+1) |
| γ\gammaγ | 折扣因子 |
马尔可夫性质:下一状态只依赖于当前状态和当前动作,与历史状态无关:
P(st+1∣st,at)=P(st+1∣s0,a0,s1,a1,…,st,at)P(s_{t+1}\vert s_t, a_t) = P(s_{t+1}\vert s_0, a_0, s_1, a_1, \dots, s_t, a_t)P(st+1∣st,at)=P(st+1∣s0,a0,s1,a1,…,st,at)
7.1.3 强化学习问题定义要素
强化学习在MDP框架下,需定义以下要素:
- 状态空间 SSS:所有可能状态的集合
- 动作空间 AAA:所有可能动作的集合
- 状态转移函数 P(s′∣s,a)P(s'\vert s, a)P(s′∣s,a):在状态 sss 执行动作 aaa 后转移到状态 s′s's′ 的概率
- 奖励函数 R(s,a,s′)R(s, a, s')R(s,a,s′):在状态 sss 执行动作 aaa 转移到 s′s's′ 后获得的奖励
- 折扣因子 γ\gammaγ:权衡短期和长期奖励
7.1.4 贝尔曼方程
贝尔曼方程是强化学习的理论基石,它将状态价值函数进行递归分解。
状态价值函数 Vπ(s)V^\pi(s)Vπ(s)
在策略 π\piπ 下,从状态 sss 出发所能获得的期望累计回报:
Vπ(s)=Eπ[∑k=0∞γkrt+k+1∣st=s]V^\pi(s) = \mathbb{E}_\pi\left[\sum_{k=0}^{\infty}\gamma^k r_{t+k+1} \vert s_t = s\right]Vπ(s)=Eπ[k=0∑∞γkrt+k+1∣st=s]
动作价值函数 Qπ(s,a)Q^\pi(s, a)Qπ(s,a)
在策略 π\piπ 下,从状态 sss 出发、执行动作 aaa 后所能获得的期望累计回报:
Qπ(s,a)=Eπ[∑k=0∞γkrt+k+1∣st=s,at=a]Q^\pi(s, a) = \mathbb{E}_\pi\left[\sum_{k=0}^{\infty}\gamma^k r_{t+k+1} \vert s_t = s, a_t = a\right]Qπ(s,a)=Eπ[k=0∑∞γkrt+k+1∣st=s,at=a]
贝尔曼期望方程
将价值函数分解为即时奖励与后续状态价值之和:
Vπ(s)=∑a∈Aπ(a∣s)∑s′∈SP(s′∣s,a)[R(s,a,s′)+γVπ(s′)]V^\pi(s) = \sum_{a\in A}\pi(a\vert s)\sum_{s'\in S}P(s'\vert s, a)\left[R(s, a, s') + \gamma V^\pi(s')\right]Vπ(s)=a∈A∑π(a∣s)s′∈S∑P(s′∣s,a)[R(s,a,s′)+γVπ(s′)]
Qπ(s,a)=∑s′∈SP(s′∣s,a)[R(s,a,s′)+γ∑a′∈Aπ(a′∣s′)Qπ(s′,a′)]Q^\pi(s, a) = \sum_{s'\in S}P(s'\vert s, a)\left[R(s, a, s') + \gamma\sum_{a'\in A}\pi(a'\vert s')Q^\pi(s', a')\right]Qπ(s,a)=s′∈S∑P(s′∣s,a)[R(s,a,s′)+γa′∈A∑π(a′∣s′)Qπ(s′,a′)]
贝尔曼最优方程
最优策略 π∗\pi^*π∗ 下的价值函数满足:
V∗(s)=maxa∈A∑s′∈SP(s′∣s,a)[R(s,a,s′)+γV∗(s′)]V^*(s) = \max_{a\in A}\sum_{s'\in S}P(s'\vert s, a)\left[R(s, a, s') + \gamma V^*(s')\right]V∗(s)=a∈Amaxs′∈S∑P(s′∣s,a)[R(s,a,s′)+γV∗(s′)]
Q∗(s,a)=∑s′∈SP(s′∣s,a)[R(s,a,s′)+γmaxa′∈AQ∗(s′,a′)]Q^*(s, a) = \sum_{s'\in S}P(s'\vert s, a)\left[R(s, a, s') + \gamma\max_{a'\in A}Q^*(s', a')\right]Q∗(s,a)=s′∈S∑P(s′∣s,a)[R(s,a,s′)+γa′∈AmaxQ∗(s′,a′)]
7.2 基于价值的强化学习
基于价值的方法通过估计状态价值函数或动作价值函数,隐式地确定最优策略(通常为贪心策略)。
7.2.1 策略迭代的基本模式
策略迭代是求解MDP的经典方法,交替执行以下两步直至收敛:
- 策略评估:基于当前策略 π\piπ,计算其价值函数 VπV^\piVπ
- 策略改进:根据 VπV^\piVπ 更新策略,使用贪心策略 π′(s)=argmaxa∑s′P(s′∣s,a)[R+γVπ(s′)]\pi'(s) = argmax_a \sum_{s'}P(s'\vert s,a)[R + \gamma V^\pi(s')]π′(s)=argmaxa∑s′P(s′∣s,a)[R+γVπ(s′)]
7.2.2 策略优化定理
定理:如果 π′\pi'π′ 是对 π\piπ 的贪心改进,即 Qπ(s,π′(s))≥Vπ(s)Q^\pi(s, \pi'(s)) \ge V^\pi(s)Qπ(s,π′(s))≥Vπ(s) 对所有 sss 成立,则 π′\pi'π′ 一定不比 π\piπ 差,即 Vπ′(s)≥Vπ(s)V^{\pi'}(s) \ge V^\pi(s)Vπ′(s)≥Vπ(s)。
这保证了策略迭代过程单调改善,最终收敛到最优策略。
7.2.3 策略评估方法
当状态转移概率已知时,可采用迭代方法进行策略评估。
迭代策略评估
从任意的初始价值函数 V0V_0V0 开始,使用贝尔曼方程迭代更新,直到收敛:
Vk+1(s)=∑a∈Aπ(a∣s)∑s′∈SP(s′∣s,a)[R(s,a,s′)+γVk(s′)]V_{k+1}(s) = \sum_{a\in A}\pi(a\vert s)\sum_{s'\in S}P(s'\vert s, a)\left[R(s, a, s') + \gamma V_k(s')\right]Vk+1(s)=a∈A∑π(a∣s)s′∈S∑P(s′∣s,a)[R(s,a,s′)+γVk(s′)]
当 k→∞k \to \inftyk→∞ 时,Vk→VπV_k \to V^\piVk→Vπ。
7.2.4 基于价值的强化学习算法
Q-learning(Q学习)
Q学习是一种无模型、离策略的强化学习算法,直接学习最优动作价值函数 Q∗(s,a)Q^*(s, a)Q∗(s,a)。
核心更新公式(时间差分更新):
Q(st,at)←Q(st,at)+α[rt+γmaxa′Q(st+1,a′)−Q(st,at)]Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha\left[r_t + \gamma\max_{a'}Q(s_{t+1}, a') - Q(s_t, a_t)\right]Q(st,at)←Q(st,at)+α[rt+γa′maxQ(st+1,a′)−Q(st,at)]
- α\alphaα:学习率,控制新信息对Q值的影响程度
- rt+γmaxa′Q(st+1,a′)r_t + \gamma\max_{a'}Q(s_{t+1}, a')rt+γmaxa′Q(st+1,a′):TD目标(Temporal Difference Target)
- rt+γmaxa′Q(st+1,a′)−Q(st,at)r_t + \gamma\max_{a'}Q(s_{t+1}, a') - Q(s_t, a_t)rt+γmaxa′Q(st+1,a′)−Q(st,at):TD误差
Q表格:为每个状态-动作对维护一个Q值,最终策略为 π(s)=argmaxaQ(s,a)\pi(s) = argmax_a Q(s, a)π(s)=argmaxaQ(s,a)。
特点:
- 离策略:学习最优Q值时采用的行为策略(如 ϵ\epsilonϵ-贪心)与学习的目标策略(贪心策略)可以不同
- 局限性:Q表格无法处理大规模或连续状态空间
SARSA(状态-动作-奖励-状态-动作)
SARSA是一种同策略算法,更新公式中使用实际执行的动作:
Q(st,at)←Q(st,at)+α[rt+γQ(st+1,at+1)−Q(st,at)]Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha\left[r_t + \gamma Q(s_{t+1}, a_{t+1}) - Q(s_t, a_t)\right]Q(st,at)←Q(st,at)+α[rt+γQ(st+1,at+1)−Q(st,at)]
与Q-learning的区别:SARSA的更新依赖于实际采取的下一个动作 at+1a_{t+1}at+1,而Q-learning使用 maxa′Q(st+1,a′)\max_{a'}Q(s_{t+1}, a')maxa′Q(st+1,a′)。
7.2.5 探索与利用
强化学习中的核心矛盾:探索(Exploration)与利用(Exploitation)。
| 策略 | 说明 |
|---|---|
| 贪心策略 | 总是选择Q值最大的动作,只利用不探索 |
| ϵ\epsilonϵ-贪心策略 | 以概率 ϵ\epsilonϵ 随机选择动作(探索),以 1−ϵ1-\epsilon1−ϵ 选择最优动作(利用)。ϵ\epsilonϵ 通常随时间衰减 |
| Softmax策略 | 根据Q值使用Boltzmann分布选择动作,Q值越高的动作被选中的概率越大 |
- 探索:尝试未执行过的动作,获取更多环境信息
- 利用:根据已有经验,选择已知最佳的动作
- 目标:在探索和利用之间找到平衡,以获得最大的长期回报
7.2.6 参数化与深度强化学习
参数化Q函数(DQN)
当状态空间巨大或连续时,无法用Q表格存储。Deep Q-Network(DQN)使用深度神经网络逼近Q函数:Q(s,a;θ)≈Q∗(s,a)Q(s, a; \theta) \approx Q^*(s, a)Q(s,a;θ)≈Q∗(s,a)。
DQN的关键技术
| 技术 | 作用 |
|---|---|
| 经验回放 | 将交互经验 (st,at,rt,st+1)(s_t, a_t, r_t, s_{t+1})(st,at,rt,st+1) 存入回放池,训练时随机采样小批量数据,打破数据相关性,提高样本利用率 |
| 目标网络 | 使用独立的、定期更新的目标网络计算TD目标,缓解训练中的震荡和不稳定 |
DQN的损失函数:
L(θ)=E(s,a,r,s′)∼D[(r+γmaxa′Q(s′,a′;θ−)−Q(s,a;θ))2]L(\theta) = \mathbb{E}_{(s,a,r,s')\sim \mathcal{D}}\left[\left(r + \gamma\max_{a'}Q(s', a'; \theta^-) - Q(s, a; \theta)\right)^2\right]L(θ)=E(s,a,r,s′)∼D[(r+γa′maxQ(s′,a′;θ−)−Q(s,a;θ))2]
- θ\thetaθ:当前Q网络参数
- θ−\theta^-θ−:目标Q网络参数(定期从 θ\thetaθ 复制)
- D\mathcal{D}D:经验回放池
7.3 基于策略的强化学习
基于价值的方法隐式推导策略(贪心),但在连续动作空间或随机策略场景下存在局限。基于策略的方法直接对策略进行参数化和优化。
7.3.1 策略梯度定理
目标函数:J(θ)=Eτ∼πθ[G(τ)]J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}[G(\tau)]J(θ)=Eτ∼πθ[G(τ)],其中 τ\tauτ 为一条轨迹,πθ\pi_\thetaπθ 为参数化的策略。
策略梯度定理给出了目标函数关于策略参数 θ\thetaθ 的梯度:
∇θJ(θ)=Eπθ[∇θlogπθ(a∣s)Qπθ(s,a)]\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\left[\nabla_\theta \log\pi_\theta(a\vert s)Q^{\pi_\theta}(s, a)\right]∇θJ(θ)=Eπθ[∇θlogπθ(a∣s)Qπθ(s,a)]
- 梯度方向使“好动作”(高Q值)的概率增大,“坏动作”(低Q值)的概率减小
7.3.2 基于蒙特卡洛采样的策略梯度法(REINFORCE)
REINFORCE 是最基本的策略梯度算法,使用蒙特卡洛采样估计梯度。
算法流程:
- 使用当前策略 πθ\pi_\thetaπθ 采样完整的轨迹
- 对轨迹中的每一步,计算回报 GtG_tGt
- 更新参数:θ←θ+α∇θlogπθ(at∣st)Gt\theta \leftarrow \theta + \alpha\nabla_\theta\log\pi_\theta(a_t\vert s_t)G_tθ←θ+α∇θlogπθ(at∣st)Gt
特点:
- 无偏但高方差:使用真实回报 GtG_tGt 无偏估计梯度的幅值
- 需要等待轨迹结束才能更新(回合更新,非单步更新)
7.3.3 Actor-Critic算法
Actor-Critic结合了基于策略的方法(Actor) 和基于价值的方法(Critic):
| 组件 | 角色 | 功能 |
|---|---|---|
| Actor(演员) | 策略网络 πθ(a∣s)\pi_\theta(a\vert s)πθ(a∣s) | 决定在状态下该做什么动作 |
| Critic(评论家) | 价值网络 Vϕ(s)V_\phi(s)Vϕ(s) 或 Qϕ(s,a)Q_\phi(s, a)Qϕ(s,a) | 评价Actor的动作好坏,提供梯度更新信号 |
- Critic 使用TD误差代替REINFORCE中的回报 GtG_tGt 来估计梯度,显著降低方差
- Actor 根据Critic的评估信号更新策略参数
优势函数 A(s,a)=Q(s,a)−V(s)A(s, a) = Q(s, a) - V(s)A(s,a)=Q(s,a)−V(s),衡量动作 aaa 比平均表现好多少。使用优势函数可以进一步降低方差:
∇θJ(θ)=Eπθ[∇θlogπθ(a∣s)Aπθ(s,a)]\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\left[\nabla_\theta\log\pi_\theta(a\vert s)A^{\pi_\theta}(s, a)\right]∇θJ(θ)=Eπθ[∇θlogπθ(a∣s)Aπθ(s,a)]
7.4 深度强化学习的应用
7.4.1 深度强化学习在围棋游戏中的应用
AlphaGo 是深度强化学习的里程碑式应用,结合了以下技术:
| 技术 | 作用 |
|---|---|
| 监督学习(策略网络) | 从人类棋谱学习初始走棋策略 |
| 强化学习(策略提升) | 通过自我博弈提高棋力 |
| 价值网络 | 估计当前棋盘局面的胜率 |
| 蒙特卡洛树搜索(MCTS) | 在落子时进行前瞻搜索,选择最佳走法 |
AlphaGo在2016年击败了围棋世界冠军李世石,展示了深度强化学习的巨大潜力。
7.4.2 深度强化学习在实际应用中的问题
| 问题 | 说明 |
|---|---|
| 样本效率低 | 需要大量交互数据才能学到有效策略,在真实环境中成本高昂 |
| 奖励设计困难 | 复杂任务中,设计合适的奖励函数很困难;稀疏奖励导致学习缓慢 |
| 泛化能力差 | 训练环境和测试环境稍有不同,策略可能失效 |
| 稳定性问题 | 训练过程可能不稳定,收敛性难以保证 |
| 安全与伦理 | 探索过程中可能做出危险动作,部署前需在模拟器充分验证 |
7.5 小结
强化学习为智能体在环境中自主学习序列决策提供了理论框架和算法支持。
- MDP 是对序列决策问题的形式化建模
- 贝尔曼方程 将价值函数进行递归分解,奠定了求解基础
- 基于价值的算法(如Q-learning)通过学习最优Q函数导出策略
- 基于策略的算法(如REINFORCE、Actor-Critic)直接优化策略参数
- 深度强化学习(如DQN)利用神经网络处理高维状态空间,使得强化学习在围棋、游戏、机器人控制等领域取得了突破性进展
8 人工智能博弈
博弈论是研究多个智能体在竞争或合作环境中如何进行策略性决策的数学理论。传统博弈论与人工智能的深度融合,推动机器学习从“求取最优解”向“求取均衡解”转变。
8.1 博弈论的相关概念
8.1.1 博弈论的诞生
现代博弈论思想起源于1944年冯·诺依曼与摩根斯特恩合著的《博弈论与经济行为》,首次用数学形式阐述了博弈论及其应用。
约翰·纳什于1950年在其博士论文中提出非合作博弈及其均衡解一定存在的纳什均衡思想,将博弈论发扬光大,也因此获得1994年诺贝尔经济学奖。
博弈行为是多个带有相互竞争性质的主体,为达到各自目标和利益,采取的带有对抗性质的行为,即 “两害相权取其轻,两利相权取其重”。
8.1.2 博弈论术语与囚徒困境
基本术语
| 术语 | 说明 |
|---|---|
| 玩家(Player) | 博弈的参与者 |
| 策略(Strategy) | 玩家在每种可能情况下采取的行动方案 |
| 收益(Payoff) | 玩家在博弈结束后获得的效用值 |
| 均衡(Equilibrium) | 所有玩家策略达到稳定、无人愿单方面改变的状态 |
囚徒困境
两个共谋罪犯被捕,单独审讯。每人可选择坦白或抵赖。
| 甲\乙 | 乙抵赖 | 乙坦白 |
|---|---|---|
| 甲抵赖 | 各判1年 | 甲判10年,乙释放 |
| 甲坦白 | 甲释放,乙判10年 | 各判5年 |
- 个体理性:无论对方如何选择,坦白对自己更有利(严格占优策略)
- 均衡结果:双方都坦白,各判5年
- 集体最优:双方都抵赖,各判1年
- 困境本质:个体理性导致集体非最优的结果
8.1.3 博弈的分类
| 分类标准 | 类型 | 说明 |
|---|---|---|
| 是否合作 | 合作博弈 / 非合作博弈 | 玩家之间能否达成有约束力的协议 |
| 行动顺序 | 静态博弈 / 动态博弈 | 玩家是同时行动还是先后行动 |
| 信息完备性 | 完全信息 / 非完全信息 | 玩家是否知道其他玩家的收益函数 |
| 收益关系 | 零和博弈 / 非零和博弈 | 玩家收益之和是否恒为零 |
| 博弈次数 | 单次博弈 / 重复博弈 | 博弈是一次性还是多次重复进行 |
8.1.4 纳什均衡
定义:在一个策略组合中,每个玩家的策略都是对其他玩家策略的最优反应。没有任何玩家可以通过单方面改变自己的策略来获得更高的收益。
数学表达:
对于 nnn 个玩家的博弈,策略组合 s∗=(s1∗,s2∗,…,sn∗)s^* = (s_1^*, s_2^*, \dots, s_n^*)s∗=(s1∗,s2∗,…,sn∗) 是纳什均衡,当且仅当对每个玩家 iii:
ui(si∗,s−i∗)≥ui(si,s−i∗),∀si∈Siu_i(s_i^*, s_{-i}^*) \ge u_i(s_i, s_{-i}^*), \quad \forall s_i \in S_iui(si∗,s−i∗)≥ui(si,s−i∗),∀si∈Si
- uiu_iui:玩家 iii 的收益函数
- s−i∗s_{-i}^*s−i∗:除玩家 iii 外其他玩家的策略
纳什存在定理:任何具有有限玩家的有限策略博弈,至少存在一个纳什均衡(可能包含混合策略)。
| 策略类型 | 说明 |
|---|---|
| 纯策略 | 玩家确定性地选择某个具体动作 |
| 混合策略 | 玩家以一定的概率分布随机选择动作 |
8.1.5 人工智能与博弈论
人工智能与博弈论深度融合的研究方向:
- 博弈策略求解:寻找博弈中的均衡策略(如虚拟遗憾最小化算法)
- 博弈规则设计:设计机制使得个体理性行为导向合意的全局结果
- 多智能体学习:多个AI智能体在博弈环境中学习和进化
8.2 博弈策略求解
8.2.1 研究问题
在非完全信息博弈中,玩家不知道其他玩家的私有信息(如手牌),这大大增加了求解难度。核心目标是计算博弈中的纳什均衡策略或近似均衡策略。
挑战:
- 非完全信息博弈的状态空间极大(如德州扑克的博弈树规模约为 1016110^{161}10161)
- 需要考虑信息的不对称性和对手行为的不可预测性
8.2.2 虚拟遗憾最小化算法(Counterfactual Regret Minimization, CFR)
CFR 是求解大规模非完全信息博弈的里程碑算法,通过迭代自我博弈,使每个信息集上的虚拟遗憾值最小化,最终收敛到纳什均衡。
遗憾值(Regret)
- 遗憾值:实际采取某动作后,与事后知道的最佳动作相比,所遭受的损失
- 虚拟遗憾值(Counterfactual Regret):在特定信息集上,对“如果采取了某动作”而“实际采取了另一动作”的遗憾进行虚拟计算,同时考虑对手到达该信息集的概率
CFR算法核心流程
CFR 使用反事实遗憾最小化来独立地最小化每个信息集上的遗憾:
-
计算反事实价值:对每个信息集,计算采取每种动作所能获得的期望价值
-
计算即时遗憾:RimmT(I,a)=v(I,a)−v(I)R^T_{imm}(I, a) = v(I, a) - v(I)RimmT(I,a)=v(I,a)−v(I),即采取动作 aaa 的价值与信息集平均价值的差值
-
累积遗憾:RT(I,a)=RT−1(I,a)+RimmT(I,a)R^T(I, a) = R^{T-1}(I, a) + R^T_{imm}(I, a)RT(I,a)=RT−1(I,a)+RimmT(I,a)
-
更新策略:使用遗憾匹配算法更新当前策略,使得正遗憾值的动作获得更高的选择概率:
σT+1(I,a)={max(RT(I,a),0)∑a′max(RT(I,a′),0),if ∑a′max(RT(I,a′),0)>01∣A(I)∣,otherwise\sigma^{T+1}(I, a) = \begin{cases} \frac{\max(R^T(I, a), 0)}{\sum_{a'}\max(R^T(I, a'), 0)}, & \text{if } \sum_{a'}\max(R^T(I, a'), 0) > 0 \\ \frac{1}{\vert A(I)\vert}, & \text{otherwise} \end{cases}σT+1(I,a)={∑a′max(RT(I,a′),0)max(RT(I,a),0),∣A(I)∣1,if ∑a′max(RT(I,a′),0)>0otherwise -
迭代:重复上述过程,最终平均策略收敛到纳什均衡
数学保证:CFR 算法保证在无限次迭代后,平均策略的遗憾上界趋近于零,即策略收敛到近似纳什均衡。
8.2.3 安全子博弈
在实际博弈求解中,常将完整的博弈分解为若干子博弈进行处理:
- 子博弈:从某个决策点开始的博弈子树
- 安全子博弈求解:在求解子博弈时,需要保留父博弈中对手可能策略的全部信息,避免信息丢失导致策略“不安全”
安全子博弈求解技术使 CFR 可以在博弈树的各个局部进行独立优化,同时保证全局策略的质量。
8.3 博弈规则设计
8.3.1 研究问题
博弈规则设计(机制设计)研究:如何在给定社会目标的前提下,设计博弈规则(机制),使得自利的个体在追求自身利益最大化的过程中,恰好实现设计者所期望的全局目标。
应用场景:
- 拍卖机制设计
- 匹配市场设计(如学生入学分配、器官移植匹配)
- 交通流量调度
8.3.2 双边匹配算法
问题描述:存在两类参与者(如申请者和接收者),需要在两类之间进行一一匹配,每个参与者对另一类参与者有严格的偏好排序。
延迟接受算法(Gale-Shapley算法)是求解稳定匹配的经典算法。
稳定匹配:不存在这样一对参与者,他们互相认为对方优于自己当前的匹配对象。
算法流程(以申请者主动为例):
- 每轮,每位未匹配的申请者向其偏好列表中尚未拒绝自己的最靠前接收者发出申请
- 每个接收者保留当前最佳申请者(含上一轮暂留的),拒绝其余的
- 重复直到没有新的申请发出
性质:
- 算法必然终止,且一定能找到稳定匹配
- 对主动方(申请者)是最优的,对被动方(接收者)是最劣的
8.3.3 单边匹配算法
问题描述:只有一类参与者(如室友分配),参与者之间相互匹配,每个参与者对所有其他参与者有偏好排序。
顶部交易循环算法(Top Trading Cycle, TTC)是求解单边匹配的经典方法,用于初始物品分配后的再交换等场景。
算法流程:
- 每个参与者指向自己最喜欢(尚未被占有)的物品
- 必然形成至少一个环路
- 环路中的参与者互相交换物品,并离开市场
- 重复以上步骤直到所有参与者离开
8.4 非完全信息博弈的实际应用
人工智能博弈的里程碑成果集中在非完全信息博弈领域:
| AI系统 | 研发机构 | 博弈类型 | 成就 |
|---|---|---|---|
| Libratus | 卡内基梅隆大学 | 两人无限注德州扑克 | 2017年击败世界顶级人类玩家 |
| Pluribus | 卡内基梅隆大学 / Facebook | 六人无限注德州扑克 | 2019年击败人类职业玩家 |
| DeepStack | 阿尔伯塔大学 | 两人无限注德州扑克 | 2017年达到职业玩家水平 |
这些系统综合运用了 CFR 算法、安全子博弈求解、蒙特卡洛采样、深度学习等技术,标志着人工智能在非完全信息博弈领域的重大突破。
8.5 小结
本章介绍了人工智能博弈的核心内容:
- 博弈论基础:博弈的要素、分类,以及核心概念纳什均衡
- 囚徒困境:经典的博弈模型,揭示了“个体理性并非总是导致集体最优”的现象
- 博弈策略求解:虚拟遗憾最小化(CFR)算法是求解大规模非完全信息博弈的关键方法,通过最小化累积遗憾使平均策略收敛到纳什均衡
- 博弈规则设计:通过设计匹配算法(如延迟接受算法、顶部交易循环算法),引导自利个体实现全局合意的结果
- 实际应用:在德州扑克等非完全信息博弈中,AI系统已达到甚至超越人类顶级玩家的水平
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)