- 深度学习指利用 多层非线性变化 的架构来 建模数据的高维特征 (端到端的学习系统);
- 机器学习指在 非显示编程 的情况下给予计算机 从数据中学习规律 的能力。
机器学习系统#

机器学习系统可以粗略地分为三个要素:
- 模型 - 函数集合 / 假设空间;
- 学习准则 - 结构 / 经验风险最小化;
- 优化算法 - 梯度下降。
深度学习解决了 如何找到一个好的假设空间的问题,不同的假设空间具有不同的拟合能力和复杂度,用于解决不同的现实问题以及选用不同的学习算法。
泛化误差和模型容量:
ϵtest≤ϵ^train+ncomplexity
- 使用一个好的假设空间,使得训练误差低;
- 使用正则化技术,使得模型复杂度低;
- 使用大量的训练数据,使得数据容量大。
最小二乘法#
最小二乘法(Least Square Method) 是一种利用极值来求解线性回归参数的方法。为简单起见,将 bias 合并到权重参数 w 当中:
y^(n)=w⊤x
采用 均方误差损失函数,根据经验风险最小化原则(省去了 N1):
L(w)=n=1∑N(y(n)−y^(n))2=∥y−X⊤w∥2
令其对 w 的偏导数为 0 求出最优的参数 w∗ 为:
w∗=(XX⊤)−1Xy
该解也被称为 解析解。但是当特征维度过高的时候,计算 XX⊤ 的逆会 非常耗时且不稳定,实践中通常使用梯度下降等迭代方法。
最大似然估计#
最大似然估计(Maximum Likelihood Estimation) 的目标是找到一组参数,使得观测数据出现的概率(似然)最大。具体流程为:
- 定义概率模型,假设数据服从某个分布;
- 构建似然函数,并转换为对数似然函数;
- 由于优化问题倾向于求最小值,因此从 最大化对数似然 -> 最小化负对数似然。
下面根据这个流程来估计线性回归的参数。假设标签 y 由 w⊤x 加上一个随机噪声 ϵ 决定:
y=w⊤x+ϵ
其中 ϵ 服从均值为 0、方差为 σ2 的高斯分布。这样,y 就服从均值为 w⊤x、方差为 σ2 的高斯分布:
p(D∣w,σ2)=2πσ1exp(−2σ2(y−w⊤x)2)
那么参数 w 在训练集 D 上的似然函数为:
p(D∣w,σ2)=n=1∏N2πσ1exp(−2σ2(y−w⊤x)2)
取负对数得到:
−logp(D∣w,σ2)=21log(2πσ2)+2σ21n=1∑N(y−w⊤x)2
由于第一项不依赖于参数 w,第二项去除 1/σ2 后就等于均方误差,因此最优参数就由最小化负对数似然得到:
w∗=argminn=1∑N(y−w⊤x)2
若是通过矩阵求导的方式,就可以得到与最小二乘法一样的解析解。
最大后验估计#
MLE 的一个缺点是当训练数据比较少的时候会发生过拟合,估计的参数可能不准确。因此可以给参数加上 先验知识 以适应小样本的数据集,这一过程相当于在优化目标中添加正则项。
最大后验估计(Maximum a Posteriori Estimation) 指找到一组参数 w 使得 后验概率最大,而后验概率正比于 似然函数与先验概率的乘积 (贝叶斯公式)。因此我们可以得到下述公式:
wmaxp(D∣w)p(w)=wmax[logp(D∣w)+logp(w)]w∗=argwmaxloglikelihoodlogp({(x(n),y(n))}n=1N∣w,σ2)+logpriorlogp(w)
- log(D∣w) 为似然函数,表示在给定参数 w 的情况下,数据 D 的概率分布;
- logp(w) 为先验概率分布,当选取不同先验的时候,对应的正则化也不同。
假设参数遵循高斯分布,即 w∼N(0,τ2I),这代表:
- 模型使用 L2 正则化;
- 参数遵循均值为 0, 方差为 τ2 的多元高斯分布;
- τ2I 是指协方差矩阵为 τ2 的对角矩阵,即参数 w 的每个维度都是独立同分布的。
多元高斯分布的解析可以阅读 钱默吟/多元高斯分布完全解析 ↗ ,讲得十分详细。
代入复杂的数学推导之后,我们可以得到:
w∗=argminn=1∑N(y−w⊤x)2+λ∥w∥2
这就等价于最大似然估计中求解参数的方法了,区别在于添加了正则项:
- 若先验选择 高斯分布,则代表 ℓ2 正则化(2 - 范数 / 岭回归);
- 若先验选择 拉普拉斯分布,则代表 ℓ1 正则化(1 - 范数 / 套索回归)。
对于这两个正则化的区别,我们需要知道的是 ℓ1 正则化的约束通常会得到稀疏解。
Logistic 回归#
为了解决连续线形函数不适合进行分类的问题,引入 单调可微的非线性函数 g:RD→(0,1) 来预测标签的后验概率:
y^(n)=σ(w⊤x)=1+exp(−w⊤x)1
这里激活函数用的是 sigmoid 函数 σ(z)=1+e−z1,其中 z=w⊤x。它是单位阶跃函数的连续版本(可微)。
采用 交叉熵损失函数,那么它的学习准则为:
argwminL(w)=−N1n=1∑N(y(n)logy^(n)+(1−y(n))log(1−y^(n)))
参数学习#
有了模型和学习准则,我们就需要计算损失函数对参数的偏导数从而使用梯度下降算法。根据链式法则,这里面就涉及损失函数对 sigmoid 函数的偏导数 ∂y^∂L、 sigmoid 函数对 z 的偏导数 ∂z∂y^ 以及 z 对参数 w 的偏导数 ∂w∂z。
首先求 z 对参数 w 的偏导数:
∂w∂z=∂w∂(w⊺x)=x
然后求 sigmoid 函数对 z 的偏导数,我们对其进行变形:
(1+e−z)⋅σ(z)e−z⋅(−1)⋅σ(z)+σ′(x)⋅(1+e−z)σ′(z)⋅(1+e−z)σ′(z)=1=0=e−x⋅σ(z)=(1−σ(z))⋅σ(z)
最后计算损失函数对 sigmoid 函数的偏导数,即对 y^(n) 的偏导数:
∂y^∂L=−y^y⋅1−1−y^1−y⋅(−1)=−y^y+1−y^1−y
将得到的偏导数乘起来:
∂w∂L=∂y^∂L⋅∂z∂y^⋅∂w∂z=[−y^y+1−y^1−y]⋅[(1−y^)⋅(y^)]⋅x=(y^−y)⋅x
采用梯度下降的学习准则,初始化 w0←0,然后使用下面的公式进行迭代:
wt+1←wt−ηN1n=1∑N(y^(n)−y(n))⋅x(n)
机器学习分类#
监督学习#
使用 标注好 的训练数据来寻找输入与输出对应的 函数关系。
- 线性回归 - 输出为连续,例如预测房价;
- 逻辑回归 - 输出为离散,例如判断邮件是否是垃圾邮件。
无监督学习#
使用 未标注 的数据来寻找数据集中的 模式和规律。
- K - 均值聚类 - 根据特征将数据分成不同的簇。用于市场划分;
- 主成分分析 - 数据降维。用于数据可视化(t-SNE 也用于数据可视化);
- 自编码器 - 通过编解码器 压缩 -> 重构 数据学习数据特征;
- 词嵌入 - 将 token 映射到低维稠密向量,代表模型为 word2vec。用于 NLP;
- 密度估计 - 估计数据的概率密度函数。用于异常检测。
学习理论#
- PAC 学习理论 - 在多项式时间内从合理的训练数据学习到一个近似的假设;
- 没有免费午餐定理 - 不存在一种机器学习算法适用于所有任务;
- 奥卡姆剃刀原理 - 简单的模型泛化能力更好;
- 归纳偏置 - 模型的先验知识。
损失函数总结#
首先定义熵、相对熵(KL 散度)和交叉熵:
-
熵 - H(q)=−∑j=1kqjlogqj,描述分布 p 的混乱程度。熵的值越大,分布越均匀;
-
相对熵 - KL(q,p)=−∑j=1kqjlogpj−H(q) ,描述用分布 p 来近似 q 时造成的信息损失;
-
交叉熵 - H(q,p)=KL(q,p)+H(q)=−∑j=1kqjlogpj,描述两个概率分布的差异程度。
交叉熵损失(Cross-Entropy Loss) - 适用于 二分类 问题,衡量预测概率与真实标签之间的差异。
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 函数。
均方误差损失(Mean Squared Error Loss) - 适用于 回归 问题,衡量预测值和真实值之间的差异。
L=N1n=1∑N(y(n)−y^(n))2
Credit#