花书选摘

实践指南、表示学习、参数推断、生成模型

内容概要

  • 基础概念
    • 线性代数、概率与信息论、数值计算、机器学习概述
  • 深度学习
    • 结构:前馈网络FFN、卷积网络CNN、循环网络RNN
    • 实践:正则化、优化算法、实战方法论(超参, 调试)
    • 应用:视觉、语音、语言、推荐、规模化实现
  • 前沿课题
    • 基础:蒙特卡洛方法MC、配分函数
    • 模型:线性因子ICA, PCA、自编码器AE, VAE、图神经网络GNN
    • 主题:表示学习、近似推断VI、深度生成

NFL定理

没有免费午餐定理(no free lunch theorem):对所有可能的数据分布平均后,任意分类算法在未事先观测的点上都有相同的错误率。

这意味理论上没有所谓的最优算法,不同算法在所有可能的任务上有着相同的平均性能。这很反直觉,问题的关键在于这里的前提是要考虑所有可能的数据分布,而现实数据是具有特定分布或者说“规律”的。机器学习的目标不是找到在理论上绝对的最优算法,而在于理解“真实世界”的数据分布,以及探索在这些我们所关注的分布上效果最佳的算法。而作为只关注特定分布的具体表现,人们通常会根据经验在模型中引入参数的先验分布,即所谓的正则化:L1正则对应于均值为0的Laplace分布,L2正则对应均值为0的Gaussian分布,值得注意的,模型预训练(表示学习)也可视为一种正则化手段。

损失函数

统计学中最常见的目标函数是似然函数或者后验概率(贝叶斯统计):

L(θ)=p(datamodel)=p(Xθ)=ip(x(i)θ)\mathcal{L}(\bm{\theta}) = p(\text{data}|\text{model}) = p(\bm{X}|\bm{\theta}) = \prod_i p(\bm{x}^{(i)}|\bm{\theta})

P(θ)=p(modeldata)=p(θX)=p(Xθ)p(θ)\mathcal{P}(\bm{\theta})= p(\text{model}|\text{data}) = p(\bm{\theta}|\bm{X}) = p(\bm{X}|\bm{\theta})p(\bm{\theta})

而深度学习神经网络中最常见的目标函数则是交叉熵损失:

J(w)=Ex,yp^datalogp(yx;w)   or   Exp^dataxr(x;w)22\mathcal{J}(\bm{w}) = - \mathbb{E}_{\bm{x}, y\sim\hat{p}_\text{data}} \log p(y|\bm{x}; \bm{w}) ~~~ \text{or} ~~~ \mathbb{E}_{\bm{x}\sim\hat{p}_\text{data}} \| \bm{x} - r(\bm{x}; \bm{w})\|_2^2

其中p^data\hat{p}_\text{data}为观测数据的经验分布,前后两者分别对应有监督学习和无监督学习。
统计学中的最大似然(后验)与深度学习的最小化损失都是找到使得目标函数最大(小)化的参数 θ\bm{\theta} / w\bm{w},即 arg max\argmax / arg min\argmin 操作,而两者在本质上是一致的,最大似然等价于最小化交叉熵。

  • 最大似然与交叉熵
    小量相乘在数值计算时容易溢出,因此通常会对似然函数取对数,同时还可对样本总量求平均,这些操作都不影响arg max\argmax,最终:

    θML=arg maxθ1mi=1mlogp(x(i)θ)=arg maxθExp^datalogp(xθ)\bm{\theta}_\text{ML} = \argmax_\bm{\theta} \frac{1}{m}\sum_{i=1}^m \log p(\bm{x}^{(i)}|\bm{\theta}) = \argmax_\bm{\theta} \mathbb{E}_{\bm{x}\sim\hat{p}_\text{data}} \log p(\bm{x}|\bm{\theta})

    这其实就是数据经验分布p^data(x)\hat{p}_\text{data}(\bm{x}) 与模型预测分布 p(xθ)p(\bm{x}|\bm{\theta}) 间的交叉熵(相差一个负号),即神经网络最常见的交叉熵损失本质上就是最大似然。
  • 最大似然与KL散度
    数据经验分布为p^data(x)\hat{p}_\text{data}(\bm{x}),将模型预测的数据分布p(xθ)p(\bm{x}|\bm{\theta})记为pmodel(x)p_\text{model}(\bm{x}),则:

    DKL(p^datapmodel)=Exp^data[logp^data(x)logpmodel(x)]D_\text{KL}(\hat{p}_\text{data}\|p_\text{model}) = \mathbb{E}_{\bm{x}\sim\hat{p}_\text{data}} \Big[ \log \hat{p}_\text{data}(\bm{x}) - \log p_\text{model}(\bm{x})\Big]

    考虑到数据经验分布 p^data\hat{p}_\text{data} 与模型参数θ\bm{\theta}无关:

    arg minθDKL(p^datapmodel)=arg maxθExp^datalogpmodel(x)=θML\argmin_\bm{\theta} D_\text{KL}(\hat{p}_\text{data}\|p_\text{model}) = \argmax_\bm{\theta} \mathbb{E}_{\bm{x}\sim\hat{p}_\text{data}} \log p_\text{model}(\bm{x}) = \theta_\text{ML}

    即最大似然与最小化KL散度是等价的,而KL散度是分布间差异程度的度量。因此最大似然是在寻找使数据概率最大化的模型参数,同时也是在使模型预测分布尽可能与数据经验分布 p^data\hat{p}_\text{data} 相一致。
    需要注意的是,KL散度是不对称的,DKL(p^datapmodel)DKL(pmodelp^data)D_\text{KL}(\hat{p}_\text{data}\|p_\text{model}) \neq D_\text{KL}(p_\text{model}\|\hat{p}_\text{data}),只有前者是与似然函数等价的。
  • 最大后验与正则化

    θMAP=arg maxθ[logp(Xθ)+logp(θ)]\bm{\theta}_\text{MAP} = \argmax_\bm{\theta} \Big[\log p(\bm{X}|\bm{\theta}) + \log p(\bm{\theta})\Big]

    p(θ)N(0,I)p(\bm{\theta})\sim \mathcal{N}(0, I),则logp(θ)\log p(\bm{\theta})就对应12θTθ-\frac{1}{2}\bm{\theta}^T\bm{\theta}项。反过来,神经网络中常见的L2正则λwTw-\lambda\bm{w}^T\bm{w},相当于网络参数先验取为N(0,12λI)\mathcal{N}(0, \frac{1}{2\lambda}I)。即最大后验就对应于加了正则项的交叉熵损失。
    需要注意,最大后验对应引入正则项,但反过来,并非所有正则都对应最大后验,有些正则项无法表示为概率取对数的形式,也就无法作为参数先验分布来理解。

实践指南

优化算法

  • 凸优化
    • 无约束:梯度下降
    • 有约束:阿格朗日乘子
  • 非凸优化
    • 可微分:随机梯度下降
    • 不可微:暴力搜寻(网格搜索/随机搜索);启发类算法、贝叶斯优化

正则化方法

超参数调优

前沿主题

表示学习

无监督学习对于神经网络的复兴至关重要,在GPU尚未普及的时期,以Hinton等人为代表提出的贪心逐层无监督预训练,为深层网络的训练带来了希望。曾经监督或半监督的预训练在计算机视觉中占据重要位置,本书中就更推崇半监督学习,而如今随着网络参数量和深度的进一步增加,大模型+无监督/自监督预训练已成为事实上的标准。

因果理解
什么原因能够使一个表示比另一个表示更好?
理想表示中的特征对应到观测数据的潜在成因,特征空间中不同的特征或方向对应着不同的原因
分布式表示
数据xx的某种隐表示p(xh)p(x|h),可视为数据的某种成因,
p(x|h)对p(h)的变化是鲁棒的

许多深度学习算法基于的假设是,隐藏单元能够学习表示出解释数据的潜在因果因子,这对于分布式表示是很自然的
分布式表示
具有多个隐藏单元的神经网络和具有多个潜变量的概率模型都利用了分布式表示的策略。

非分布式表示学习:聚类k-means、k近邻k-NN、决策树DT、高斯混合GMM、局部核的SVM、n-gram语言模型

参数推断

生成模型

参阅 dgm.md