两个有用的东西:Awesome things ↗ 和 Machine Learning Summer School ↗。
会议:1)理论 - COLT;2)方法论 - ICML、NIPS、ICLR;3)应用 - CVPR、ICCV、ACL;
机器学习系统#
深度学习指利用 多层非线性变化 的架构来 建模数据的高维特征;而机器学习指通过 非显示编程 在某些任务 T 上通过经验 E 来提升性能 P,即任务可用 <T,P,E> 三元组表示。

机器学习系统可以粗略地分为三个要素:1)模型 - 函数集合/假设空间;2)学习准则 - 结构/经验风险最小化;3)优化算法 - GD/Adam。
深度学习解决了 如何找到一个好的假设空间的问题,不同的假设空间具有不同的拟合能力和复杂度,用于解决不同的现实问题以及选用不同的学习算法。
学习准则#
θ∗=学习准则argminN1n=1∑NL(y(n),假设空间f(x(n);θ))+正则项λ∥θ∥2
一个好的模型应当拥有较小的期望错误,但由于不知道真实的数据分布和映射函数,因此通过计算经验风险来近似期望错误。加入正则项的目的是减少参数空间,避免过拟合。
θt+1←θt−η∇θL(D;θt),∇θL(D;θt)=∂θ1∂L(D;θt)∂θ2∂L(D;θt)⋮
采用梯度下降来更新参数,即计算当前参数 θt 在训练集 D 上的梯度 η∇θL(D;θt),然后根据学习率 η 沿着 “负梯度” 的方向移动,从而降低损失优化参数。
泛化误差#

优化指南:1)使用一个好的假设空间,使得训练误差低;2)使用正则化技术,使得模型复杂度低;3)使用大量的训练数据,使得数据容量大;4)只在需要的时候使用复杂模型。
线性回归#
采用最小二乘法(Least Square Method)进行参数估计,其是一种利用极值来求解参数的方法。首先将偏置 b 合并到权重参数 w 当中:
y^(n)=w⊤x(n)
采用 均方误差损失函数,根据结构风险最小化原则:
L(D;w)=n=1∑N(y(n)−y^(n))2+λ∥w∥2=∥Y−X⊤w∥2+λ∥w∥2←将样本转换为向量并写成范数
损失函数对参数 w 求偏导数并置 0 得到最优的参数 w 为:
∂w∂L⟹(X⊤X+λI)ww=∂w∂[(Y−Xw)⊤(Y−Xw)]+∂w∂[λw⊤w]=−2X⊤(Y−Xw)+2λw=0=X⊤Y=(X⊤X+λI)−1X⊤Y
通过该方法得到的参数被称为 解析解。但是当特征维度过高的时候,计算 XX⊤ 的逆会 非常耗时且不稳定,实践中通常使用梯度下降等迭代方法。
Logistic 回归#
为了解决连续线形函数不适合进行分类的问题,引入 单调可微的非线性函数 g:RD→(0,1) 来预测标签的后验概率:
y^(n)=σ(w⊤x)=1+exp(−w⊤x)1
使用 Sigmoid 激活函数,其是单位阶跃函数的连续可微版本。采用 交叉熵损失函数,那么学习准则为:
argmin−N1n=1∑N[y(n)logy^(n)+(1−y(n))log(1−y^(n))]
有两种视角来理解该学习准则:1)采用最大似然的 概率模型 - 假设每个样本的标签在给定特征和参数的情况下服从伯努利分布,那么整个数据集的对数似然就等于方括号中的内容;2)采用交叉熵的 分类模型 - 交叉熵 度量了真实标签分布和预测标签分布之间的 “距离”,当这个距离越大的时候,对应的 −log 项就会越大,对模型的惩罚就越严重。
参数更新#
有了对应的模型和学习准则,我们就可以根据链式法则来进行参数更新了(忽略了聚合项),具体过程为:
∂w∂L(⋅)=∂y^(n)∂L(⋅)×∂z∂y^(n)×∂w∂z
首先计算 z 对参数 w 的偏导数:
∂w∂z=∂w∂(w⊤x(n))=x(n)
然后计算 y^(n) 函数对 z 的偏导数,其中 z=w⊤x。对其进行变形:
(1+e−z)σ(z)e−z(−1)σ(z)+σ′(z)(1+e−z)σ′(z)(1+e−z)σ′(z)=1=0=e−zσ(z)=[1−σ(z)]σ(z)←两边分别对 z 求导←移位←两边同除 1+e−z
最后计算 L(⋅) 对 y^(n) 偏导数:
∂y^(n)∂L(⋅)=−y(n)^y(n)×[1−1−y^(n)1−y(n)]×(−1)=−y^(n)y(n)+1−y^(n)1−y(n)
将得到的偏导数乘起来:
∂w∂L(⋅)=∂y^(n)∂L(⋅)×∂z∂y^(n)×∂w∂z=[−y^(n)y(n)+1−y^(n)1−y(n)]×[(1−y^(n))×y^(n)]×x=[y^(n)−y(n)]×x(n)
采用梯度下降得到的参数更新过程为:
wt+1←wt−η[y^(n)−y(n)]×x(n)
最大似然估计#
最大似然估计(MLE)的目标是找到一组参数,使得观测数据 D 出现的概率(似然)最大。具体流程为:1)定义概率模型并假设数据服从某个分布;2)构建似然函数,并转换为对数似然函数;3)由于优化问题倾向于求最小值,因此从最大化对数似然 -> 最小化负对数似然。
假设标签 y 由 w⊤x 加上一个高斯噪声 ϵ 决定:
y=w⊤x+ϵ
那么 y 就服从均值为 w⊤x、方差为 σ2 的高斯分布:
p(D∣w,σ2)p(D∣w,σ2)−logp(D∣w,σ2)=2πσ1exp(−2σ2(y−w⊤x)2)=n=1∏N2πσ1exp(−2σ2(y−w⊤x)2)=21log(2πσ2)+2σ21n=1∑N(y−w⊤x)2←←在训练集 D 上的似然函数取负对数
第一项不依赖于参数 w,第二项去除 1/σ2 后就等于均方误差,因此最优参数就由最小化负对数似然得到:
w∗=argmin21n=1∑N(y−w⊤x)2
最大后验估计#
MLE 的缺点是当数据比较少的时候会发生过拟合,估计的参数不准确。因此可以给参数加上 先验知识 以适应小样本的数据集,这一过程相当于在优化目标中添加正则项。
最大后验估计(MAP)的目标是最大化参数 w 的后验概率。即看到了这组数据之后,什么样的参数看起来最可信。根据贝叶斯公式,后验概率正比于 似然函数与先验概率的乘积。
wmaxp(D∣w)p(w)=wmax[logp(D∣w)+logp(w)]w∗=argwmaxloglikelihoodlogp({(x(n),y(n))}n=1N∣w,σ2)+logpriorlogp(w)
- logp(D∣w) 为似然函数,表示在给定参数 w 的情况下,数据 D 的概率分布;
- logp(w) 为先验概率分布,当选取不同先验的时候,对应的正则化也不同。
假设参数遵循高斯分布,即 w∼N(0,τ2I),这代表:
- 模型使用 ℓ2 正则化,且参数遵循均值为 0, 方差为 τ2 的多元高斯分布;
- τ2I 是指协方差矩阵为 τ2 的对角矩阵,即参数 w 的每个维度都是独立同分布的。
代入复杂的数学推导之后,我们可以得到:
w∗=argminn=1∑N(y−w⊤x)2+λ∥w∥2
这就等价于最大似然估计中求解参数的方法了,区别在于添加了正则项:
- 若先验选择 高斯分布,则代表 ℓ2 正则化(2 - 范数 / 岭回归);
- 若先验选择 拉普拉斯分布,则代表 ℓ1 正则化(1 - 范数 / 套索回归),会得到稀疏解。
机器学习分类#
监督学习#
使用 标注好 的训练数据来寻找输入与输出对应的 函数关系。
- 分类(Classification) - 预测输入样本所属的预定义类别,包括二分类、多分类;
- 回归(Regression) - 预测与输入样本相关联的一个或多个连续数值;
- 序列标注(Sequence Labeling) - 为序列数据中的每一个元素分配一个特定的标签,包括命名实体识别(NER)、词性标注(POS)等,常用的模型为 BiLSTM-CRF, BERT, Transformer;
- 目标检测(Object Detection) - 在图像中使用 BBox 定位一个或多个目标的位置,并识别出其类别,常用的模型为 YOLO、DETR、EfficientDet;
- 语义分割(Semantic Segmentation) - 为输入图像中的每一个像素分配一个类别标签,常用的模型为FCN、U-Net、DeepLab;
- 实例分割(Instance Segmentation) - 对输入图像中的每个实例进行轮廓划分,进一步区分同一类别的不同实例,常用的模型为 Mask R-CNN。
无监督学习#
使用 未标注 的数据来寻找数据集中的 模式和规律。
- K 均值聚类(K-Means) - 通过将每个数据点分配给最近的聚类中心/均值来将数据划分为多个不同的簇;
- 主成分分析(PAC) - 找到数据中方差最大的方向(主成分),将数据投影到这些方向上以实现降维;
- 生成对抗网络(GAN) - 让 “伪造者/生成器” 和 “侦探/判别器” 相互博弈,从而学习创造出逼真的数据;
- 扩散概率模型(DPM) - 通过学习如何逐步地从纯噪声中恢复出清晰的数据,来掌握生成新数据的能力;
- 基于流的生成模型(FGM) - 学习一个精确可逆的数学变换,将随机噪声分布 “扭曲” 成真实的数据分布;
- 变分自编码器(VAE) - 将数据压缩到 “潜在空间” 中,再从这个空间中采样来生成多样化的数据;
- 对比学习(CL) - 通过 “拉近相似的,推开不同的” 方式,让模型在没有标签的情况下学习数据的表示。
强化学习#
强化学习的核心思想是让智能体(Agent)在一个复杂的环境(Environment)中不断 “试错” 学习,从而学习一个最优的策略(Policy),该策略能让智能体采取最优的动作(Action),从而 最大化长期累积奖励(Reward)。其不依赖 “正确答案” 的数据集,而是在与环境的不断交互中,通过奖励信号自我优化,最终达成目标。

学习理论#
- PAC 学习理论 - 在多项式时间内从合理的训练数据学习到一个近似的假设;
- 没有免费午餐定理 - 不存在一种机器学习算法适用于所有任务;
- 奥卡姆剃刀原理 - 简单的模型泛化能力更好;
- 归纳偏置 - 模型的先验知识。
损失函数总结#
交叉熵#
熵指的是一个概率分布本身所包含的不确定性的期望,即一个事件的发生概率低,当他真的发生的时候,带来的信息量就越大。
H(p)=−x∑p(x)logp(x)
相对熵/KL 散度指的是用一个 “猜测” 的概率分布 q 来表示 “真实” 的概率分布 q 时,所产生的信息损失。
DKL=x∑p(x)q(x)p(x)
交叉熵指的是用一个 “猜测” 的概率分布 q 去编码 “真实” 的概率分布 p 的事件,所需要的平均编码长度。当编码长度越短,代表预测分布与真实分别越接近。
H(p,q)=−x∑p(x)logq(x)
它们三者之间的关系为 交叉熵=熵+相对熵,指的是预测分布等于真实分布加上二者之间的差异。
二分类交叉熵#
L=−N1n=1∑N[y(n)log(y^(n))+(1−y(n))log(1−y^(n))]
- 当真实标签 y(n) 为独热编码的时候,损失为 −log(y^(n)),鼓励模型提高正类的预测概率。
多分类交叉熵#
L=−N1n=1∑Nc=1∑Cyc(n)⋅log(y^c(n))
- y(n) 表示第 n 个样本在类别 c 上的真实标签,通常采用独热编码;
- y^c(n) 表示模型预测第 n 个样本属于类别 c 的概率,采用 Softmax 函数。
Focal Loss#
Focal Loss 指的是动态地降低大量简单样本在损失函数中的权重,从而让模型能够更 “专注” 于学习那些难以分类的样本。
L=−(1−p)γlog(p)
调制因子 (1−p)γ 的作用:
- 对于简单的样本 - 此时 p→1,那么调制因子就会趋近于 0,从而降低了简单样本对总损失的贡献;
- 对于困难的样本 - 此时 p→0,那么调制因子就会趋近于 1,从而保持了困难样本对总损失的贡献。
Credit#