Back


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

机器学习系统#

机器学习系统

机器学习系统可以粗略地分为三个要素:

  • 模型 - 函数集合 / 假设空间;
  • 学习准则 - 结构 / 经验风险最小化;
  • 优化算法 - 梯度下降。

深度学习解决了 如何找到一个好的假设空间的问题,不同的假设空间具有不同的拟合能力和复杂度,用于解决不同的现实问题以及选用不同的学习算法。

泛化误差和模型容量:

ϵtestϵ^train+complexityn\epsilon_{\text{test}}\leq \hat{\epsilon}_{\text{train}}+\sqrt{ \frac{\text{complexity}}{\text{n}} }
  • 使用一个好的假设空间,使得训练误差低;
  • 使用正则化技术,使得模型复杂度低;
  • 使用大量的训练数据,使得数据容量大。

最小二乘法#

最小二乘法(Least Square Method) 是一种利用极值来求解线性回归参数的方法。为简单起见,将 bias 合并到权重参数 ww 当中:

y^(n)=wx\hat{y}^{(n)}=w^{\top}x

采用 均方误差损失函数,根据经验风险最小化原则(省去了 1N\frac{1}{N}):

L(w)=n=1N(y(n)y^(n))2=yXw2\begin{aligned} \mathcal{L}(w)&=\sum_{n=1}^{N}(y^{(n)}-\hat{y}^{(n)})^{2} \\&=\|y-X^{\top}w\|^2 \end{aligned}

令其对 ww 的偏导数为 0 求出最优的参数 ww^* 为:

w=(XX)1Xyw^*=(XX^\top)^{-1}Xy

该解也被称为 解析解。但是当特征维度过高的时候,计算 XXXX^{\top} 的逆会 非常耗时且不稳定,实践中通常使用梯度下降等迭代方法。

最大似然估计#

最大似然估计(Maximum Likelihood Estimation) 的目标是找到一组参数,使得观测数据出现的概率(似然)最大。具体流程为:

  • 定义概率模型,假设数据服从某个分布;
  • 构建似然函数,并转换为对数似然函数;
  • 由于优化问题倾向于求最小值,因此从 最大化对数似然 -> 最小化负对数似然。

下面根据这个流程来估计线性回归的参数。假设标签 yywxw^{\top}x 加上一个随机噪声 ϵ\epsilon 决定:

y=wx+ϵy=w^{\top}x+\epsilon

其中 ϵ\epsilon 服从均值为 00、方差为 σ2\sigma^{2} 的高斯分布。这样,yy 就服从均值为 wxw^{\top}x、方差为 σ2\sigma^{2} 的高斯分布:

p(Dw,σ2)=12πσexp((ywx)22σ2)p(\mathcal{D}|w,\sigma^{2})=\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y-w^\top x)^2}{2\sigma^2})

那么参数 ww 在训练集 D\mathcal{D} 上的似然函数为:

p(Dw,σ2)=n=1N12πσexp((ywx)22σ2)p(\mathcal{D}|\boldsymbol{w},\sigma^{2})=\prod_{n=1}^N\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y-w^\top x)^2}{2\sigma^2})

取负对数得到:

logp(Dw,σ2)=12log(2πσ2)+12σ2n=1N(ywx)2-\log p(\mathcal{D}|w,\sigma^{2})=\frac{1}{2}\log ({2\pi\sigma^{2}})+\frac{1}{2\sigma^{2}}\sum_{n=1}^N (y-w^\top x)^{2}

由于第一项不依赖于参数 ww,第二项去除 1/σ2 1 / \sigma^{2} 后就等于均方误差,因此最优参数就由最小化负对数似然得到:

w=argminn=1N(ywx)2w^{*}=\arg\min\sum_{n=1}^N(y-w^{\top}x)^2

若是通过矩阵求导的方式,就可以得到与最小二乘法一样的解析解。

最大后验估计#

MLE 的一个缺点是当训练数据比较少的时候会发生过拟合,估计的参数可能不准确。因此可以给参数加上 先验知识 以适应小样本的数据集,这一过程相当于在优化目标中添加正则项。

最大后验估计(Maximum a Posteriori Estimation) 指找到一组参数 ww 使得 后验概率最大,而后验概率正比于 似然函数与先验概率的乘积 (贝叶斯公式)。因此我们可以得到下述公式:

maxwp(Dw)p(w)=maxw[logp(Dw)+logp(w)]w=argmaxw[logp({(x(n),y(n))}n=1Nw,σ2)loglikelihood+logp(w)logprior]\begin{aligned} \max_{w}p(\mathcal{D}|w)p(w)=\max_{w}\left[\log p(\mathcal{D}|w)+ \log p(w)\right] \\ w^{*}=\arg\max_w\left[\underbrace {\log p\left(\{(x^{(n)},y^{(n)})\}_{n=1}^N\mid w,\sigma^2\right)}_{\log\text{likelihood}}+\underbrace{\log p\left(w\right)}_{\log\mathrm{prior}}\right] \end{aligned}
  • log(Dw)\log(\mathcal{D}|w) 为似然函数,表示在给定参数 ww 的情况下,数据 D\mathcal{D} 的概率分布;
  • logp(w)\log p(w) 为先验概率分布,当选取不同先验的时候,对应的正则化也不同。

假设参数遵循高斯分布,即 wN(0,τ2I)w\sim N(0,\tau^2I),这代表:

  • 模型使用 L2L_2 正则化;
  • 参数遵循均值为 0, 方差为 τ2\tau^2 的多元高斯分布;
  • τ2I\tau^2I 是指协方差矩阵为 τ2\tau^{2} 的对角矩阵,即参数 ww 的每个维度都是独立同分布的。

多元高斯分布的解析可以阅读 钱默吟/多元高斯分布完全解析 ,讲得十分详细。

代入复杂的数学推导之后,我们可以得到:

w=argminn=1N(ywx)2+λw2w^{*}=\arg\min\sum_{n=1}^N(y-w^{\top}x)^2+\lambda\Vert w \Vert^2

这就等价于最大似然估计中求解参数的方法了,区别在于添加了正则项:

  • 若先验选择 高斯分布,则代表 2\ell_2 正则化(2 - 范数 / 岭回归);
  • 若先验选择 拉普拉斯分布,则代表 1\ell_1 正则化(1 - 范数 / 套索回归)。

对于这两个正则化的区别,我们需要知道的是 1\ell_{1} 正则化的约束通常会得到稀疏解。

Logistic 回归#

为了解决连续线形函数不适合进行分类的问题,引入 单调可微的非线性函数 g:RD(0,1)g: \mathbb{R}^D\to(0,1) 来预测标签的后验概率:

y^(n)=σ(wx)=11+exp(wx)\hat{y}^{(n)}=\sigma(w^{\top}x)=\frac{1}{1+\exp(-w^{\top}x)}

这里激活函数用的是 sigmoid 函数 σ(z)=11+ez\sigma(z)=\frac{1}{1+e^{-z}},其中 z=wxz=w^{\top}x。它是单位阶跃函数的连续版本(可微)。

采用 交叉熵损失函数,那么它的学习准则为:

argminwL(w)=1Nn=1N(y(n)logy^(n)+(1y(n))log(1y^(n)))\arg\min_w\mathcal{L}(w)=-\frac{1}{N}\sum_{n=1}^N\left(y^{(n)}\log\hat{y}^{(n)}+(1-y^{(n)})\log(1-\hat{y}^{(n)})\right)

参数学习#

有了模型和学习准则,我们就需要计算损失函数对参数的偏导数从而使用梯度下降算法。根据链式法则,这里面就涉及损失函数对 sigmoid 函数的偏导数 Ly^\frac{\partial\mathcal{L}}{\partial \hat{y}}、 sigmoid 函数对 zz 的偏导数 y^z\frac{\partial\hat{y}}{\partial z} 以及 zz 对参数 ww 的偏导数 zw\frac{\partial z}{\partial w}

首先求 zz 对参数 ww 的偏导数:

zw=(wx)w=x\frac{\partial z}{\partial w}=\frac{\partial (w^{\intercal}x)}{\partial w}=x

然后求 sigmoid 函数对 zz 的偏导数,我们对其进行变形:

(1+ez)σ(z)=1ez(1)σ(z)+σ(x)(1+ez)=0σ(z)(1+ez)=exσ(z)σ(z)=(1σ(z))σ(z)\begin{aligned}(1+e^{-z})\cdotp\sigma(z)&=1\\e^{-z}\cdotp(-1)\cdotp σ(z)+σ^{\prime}(x)\cdotp(1+e^{-z})&=0\\\sigma^{\prime}(z)\cdotp(1+e^{-z})&=e^{-x}\cdot\sigma(z)\\\sigma^{\prime}(z)&=(1-\sigma(z))\cdotp\sigma(z) \end{aligned}

最后计算损失函数对 sigmoid 函数的偏导数,即对 y^(n)\hat{y}^{(n)} 的偏导数:

Ly^=yy^11y1y^(1)=yy^+1y1y^\begin{aligned} \frac{\partial\mathcal{L}}{\partial\hat{y}}&=-\frac{y}{\hat{y}}\cdot1-\frac{1-y}{1-\hat{y}}\cdot(-1)\\&=-\frac{y}{\hat{y}}+\frac{1-y}{1-\hat{y}} \end{aligned}

将得到的偏导数乘起来:

Lw=Ly^y^zzw=[yy^+1y1y^][(1y^)(y^)]x=(y^y)x\begin{aligned} \frac{\partial \mathcal{L}}{\partial w}&=\frac{\partial \mathcal{L}}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z} \cdot \frac{\partial z}{\partial w} \\ &=\left[-\frac{y}{\hat{y}}+\frac{1-y}{1-\hat{y}}\right]\cdot\left[(1-\hat{y})\cdot(\hat{y})\right]\cdot x \\ &=(\hat{y}-y)\cdot x \end{aligned}

采用梯度下降的学习准则,初始化 w00w_0 \leftarrow 0,然后使用下面的公式进行迭代:

wt+1wtη1Nn=1N(y^(n)y(n))x(n)w_{t+1}\leftarrow w_t - \eta \frac{1}{N} \sum_{n=1}^{N}\left( \hat{y}^{(n)} - y ^{(n)} \right)\cdot x^{(n)}

机器学习分类#

监督学习#

使用 标注好 的训练数据来寻找输入与输出对应的 函数关系

  • 线性回归 - 输出为连续,例如预测房价;
  • 逻辑回归 - 输出为离散,例如判断邮件是否是垃圾邮件。

无监督学习#

使用 未标注 的数据来寻找数据集中的 模式和规律。

  • K - 均值聚类 - 根据特征将数据分成不同的簇。用于市场划分;
  • 主成分分析 - 数据降维。用于数据可视化(t-SNE 也用于数据可视化);
  • 自编码器 - 通过编解码器 压缩 -> 重构 数据学习数据特征;
  • 词嵌入 - 将 token 映射到低维稠密向量,代表模型为 word2vec。用于 NLP;
  • 密度估计 - 估计数据的概率密度函数。用于异常检测。

学习理论#

  • PAC 学习理论 - 在多项式时间内从合理的训练数据学习到一个近似的假设;
  • 没有免费午餐定理 - 不存在一种机器学习算法适用于所有任务;
  • 奥卡姆剃刀原理 - 简单的模型泛化能力更好;
  • 归纳偏置 - 模型的先验知识。

损失函数总结#

首先定义熵、相对熵(KL 散度)和交叉熵:

  • - H(q)=j=1kqjlogqj\text{H}(q)=-\sum_{j=1}^{k}q_j\log q_j,描述分布 pp 的混乱程度。熵的值越大,分布越均匀;

  • 相对熵 - KL(q,p)=j=1kqjlogpjH(q)\text{KL}(q,p)=-\sum_{j=1}^kq_j\log p_j -\text{H}(q) ,描述用分布 pp 来近似 qq 时造成的信息损失;

  • 交叉熵 - H(q,p)=KL(q,p)+H(q)=j=1kqjlogpj\text{H}(q,p)=\text{KL}(q,p)+\text{H}(q)=-\sum_{j=1}^kq_j\log p_j,描述两个概率分布的差异程度。

交叉熵损失(Cross-Entropy Loss) - 适用于 二分类 问题,衡量预测概率与真实标签之间的差异。

L=1Nn=1N[y(n)log(y^(n))+(1y(n))log(1y^(n))]\mathcal{L}=-\frac{1}{N}\sum_{n=1}^N\left[y^{(n)}\cdot\log(\hat{y}^{(n)})+(1-y^{(n)})\cdot\log(1-\hat{y}^{(n)})\right]
  • 当真实标签 y(n)y^{(n)} 为独热编码的时候,损失为 log(y^(n))-log(\hat{y}^{(n)}),鼓励模型提高正类的预测概率。

针对多分类问题

L=1Nn=1Nc=1Cyc(n)log(y^c(n))\mathcal{L}=-\frac{1}{N}\sum_{n=1}^N\sum_{c=1}^Cy^{(n)}_c\cdot\log(\hat{y}^{(n)}_c)
  • y(n)y^{(n)} 表示第 nn 个样本在类别 cc 上的真实标签,通常采用独热编码;
  • y^c(n)\hat{y}^{(n)}_c 表示模型预测第 nn 个样本属于类别 cc 的概率,采用 softmax 函数。

均方误差损失(Mean Squared Error Loss) - 适用于 回归 问题,衡量预测值和真实值之间的差异。

L=1Nn=1N(y(n)y^(n))2\mathcal{L}=\frac{1}{N}\sum_{n=1}^N(y^{(n)}-\hat{y}^{(n)})^2

Credit#

深度学习简介
https://k1tyoo.ink/blog/dl/intro
Author K1tyoo
Published at January 7, 2025