恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
《Probabilistic Machine Learning》第 8 章“优化“配套资源与实践指南:JAX/Flax/TensorFlow/PyTorch 自动微分与优化器全景
首页
资讯中心
/
《Probabilistic Machine Learning》第 8 章“优化“配套资源与实践指南:JAX/Flax/TensorFlow/PyTorch 自动微分与优化器全景
《Probabilistic Machine Learning》第 8 章“优化“配套资源与实践指南:JAX/Flax/TensorFlow/PyTorch 自动微分与优化器全景
发布时间:2026/10/14 21:19:38
文档教程机器学习【免费下载链接】pml-bookProbabilistic Machine Learning - a book series by Kevin Murphy项目地址https://gitcode.com/gh_mirrors/pm/pml-book点击查看免费下载《Probabilistic Machine Learning: An Introduction》Kevin Murphy 著PML1第 8 章系统讲解了机器学习中的**优化Optimization**问题是全书后续一切模型训练的理论基石。本章配套补充资料见 deprecated/supplements/chap8.md 及其结构化数据 deprecated/supplements/chap8.csv围绕两大主线组织学习资源自动微分Automatic Differentiation与优化实践Optimization覆盖 JAX、Flax、TensorFlow 2、PyTorch 四大主流框架。读完本篇你将掌握第 8 章优化核心概念凸性、次梯度、一阶/二阶方法、学习率调度、约束优化、EM 算法与补充 Notebook 的对应关系各框架自动微分与优化工具链的选用思路以及如何在仓库提供的 chapter8_optimization_figures.ipynb 中复现书中全部 8.x 插图。一、补充资料总览六份核心学习资源chap8.md以表格形式给出了第 8 章的六份补充资源全部围绕优化这一主题展开。下表完整保留原文档的条目结构标题、软件栈、资源类型并将链接信息整理为资源标识与用途说明以下 Notebook 名称为原文档与chap8.csv中记录的规范文件名| 标题Title | 软件栈Software | 类型Type | 资源标识与主题 | |-|-|-|-| | Optimization using JAX | JAX | Notebook |opt_jax.ipynb在 JAX 生态中实现并运行优化算法 | | Optimization using Flax | JAX, Flax | Notebook |opt_flax.ipynb在 Flax基于 JAX 的神经网络库中完成优化实验 | | Automatic differentiation with tensorflow | TF2 | Notebook |autodiff_tf.ipynbTensorFlow 2 的自动微分实践 | | Automatic differentiation with JAX | JAX | Notebook |autodiff_jax.ipynbJAX 的自动微分实践 | | Automatic differentiation with PyTorch | PyTorch | Notebook |autodiff_pytorch.ipynbPyTorch 的自动微分实践 | | Comparison of different optimizers | PyTorch | External |optimization-toolkit基于 PyTorch 的不同优化器行为对比工具 |从资源分布可以看出三个规律其一自动微分与优化器是第 8 章两大实操重点各配三个主流框架的平行 Notebook方便读者同一概念、多种实现对照学习其二JAX 生态被安排了两份资源纯 JAX 一份、Flax 一份说明 JAX 是本书尤其书末深度学习各章的主推工具链其三优化器对比单独以外部工具形式提供用于把不同优化算法的收敛行为放在同一任务上做系统性比较。二、自动微分三种主流框架的实践要点自动微分是第 8 章所有梯度类优化算法最速下降、牛顿法、LMS 等得以在软件中落地的前提——它让程序自动计算目标函数对参数的梯度替代手推导数。本章配了 TF2、JAX、PyTorch 三份平行的自动微分 Notebook分别对应三种典型的编程范式TensorFlow 2autodiff_tf.ipynb以命令式tf.GradientTape为核心在with块内记录前向计算随后对目标量调用tape.gradient()获得梯度。其典型场景是先建模、后求导适合与tf.keras训练循环配合。JAXautodiff_jax.ipynbJAX 以函数式变换为设计核心通过jax.grad(f)直接得到原函数f的梯度函数再配合jit即时编译与vmap向量化等变换组合使用写出的求导代码天然可编译、可向量化是本书后续章节大量采用的范式。PyTorchautodiff_pytorch.ipynb基于动态计算图 张量反向传播前向计算时在需要求导的张量上自动记录计算历史调用loss.backward()后梯度即被填充进各参数的.grad属性随后即可被任意优化器消费。三份 Notebook 对照学习时重点应放在同一个梯度语义在不同框架下的表达差异上TF2 用磁带记录JAX 用函数变换PyTorch 用自动图记录。理解了这一差异就能在任意框架中快速定位梯度计算入口从而为第 8 章各类优化算法的实验搭建求导基础。三、用 JAX 与 Flax 进行优化实践两份优化主题 Notebook 均落在 JAX 生态opt_jax.ipynbOptimization using JAX聚焦如何在纯 JAX 环境中实现和运行优化流程。JAX 的gradjit组合可以把每轮迭代的梯度计算编译成高效的 XLA 算子再配合自定义的更新循环即可实现梯度下降、动量法等第 8 章介绍的基础算法而 JAX 的纯函数式约束也天然适合把目标函数、梯度函数、更新规则拆解为无副作用的高阶函数便于模块化地试验不同算法。opt_flax.ipynbOptimization using FlaxFlax 是 JAX 生态中的高层神经网络库其优化实践面向带参数的深度模型这一场景——第 8 章的理论算法在真实模型训练中往往需要配合 Flax 这类框架来管理参数集合如参数树、随机数流、模块状态。该 Notebook 演示了如何把优化器接入 JAX 生态的训练管线。提示这两份资源适合在掌握第 8 章梯度下降及其变体的理论后使用。若目标是快速验证书中公式可先看opt_jax.ipynb若目标是训练一个实际的神经网络模型则opt_flax.ipynb更贴近生产形态。四、优化器对比工具PyTorchchap8.md中唯一标注为 External 的资源是 Comparison of different optimizers基于 PyTorch 的optimization-toolkit。它的定位是在同一任务上系统对比不同优化器的收敛行为——例如学习率对各类优化器的影响、动量项的作用、不同调度策略下的损失曲线差异等。它和第 8 章正文中关于优化器选择会影响训练稳定性与收敛速度的论述直接呼应适合作为学完理论后做横向对比实验的扩展工具。从chap8.csv的记录看它与前五份 Notebook 共同构成先逐框架掌握求导Notebook 2–4→ 再逐框架练习优化Notebook 1–2→ 最后横向对比优化器External的完整学习链路。五、第 8 章优化核心概念图谱结合图 8.1–8.27 复现脚本仓库中的 chapter8_optimization_figures.ipynb 逐图列出了第 8 章全部 27 幅插图的主题与生成脚本脚本位于 pyprobml 项目是把补充资源与书中理论衔接起来的最佳索引。按主题可划分为六组5.1 凸性与最优性条件图 8.1–8.10这一组回答什么样的优化问题是好解的、解长什么样图 8.11D 函数中局部最小与全局最小的示意以及鞍点extrema_fig_1d.py、saddle.py——鞍点梯度为零但既非极大也非极小是深度学习优化的核心障碍。图 8.2非凸 1D 函数的约束最大化展示可行集两条虚线之间内唯一全局最大、两个边界全局最大、以及无约束下无界无全局最大三种情形。图 8.3凸集与非凸集的直观对比。图 8.4函数epigraph上境图与共轭函数凸函数的 epigraph 可表示为由线性下界由共轭函数导出定义的半空间之交。图 8.5凸函数弦在函数上方与既非凸也非凹的函数A 为局部最小、B 为全局最小。图 8.6二次型 $f(\mathbf{x}) \mathbf{x}^\top \mathbf{A} \mathbf{x}$ 的凸性由 $\mathbf{A}$ 决定正定→严格凸负定→凹半正定奇异→凸但不严格存在恒定高度山谷不定→既非凸也非凹中间驻点为鞍点。图 8.7光滑 vs 非光滑1D 函数原点处不连续smooth-vs-nonsmooth-1d.py。图 8.8Lipschitz 连续——存在一个可沿函数图像滑动的双锥使图像始终位于锥外这是许多收敛性证明的假设。图 8.9次梯度可微点处次梯度唯一即导数不可微拐点处存在多条次梯度源于 Stephen Boyd 讲义。图 8.10绝对值函数及其次微分——经典的非光滑函数例子。5.2 一阶方法从最速下降到 Nesterov图 8.11–8.13图 8.11固定步长的最速下降steepestDescentDemo.py从 $(0,0)$ 出发 20 步逼近 $(1,1)$步长 $\rho0.1$ 收敛极慢、$\rho0.6$ 出现震荡但更快直观展示步长-收敛权衡。图 8.12条件数 $\kappa$ 对收敛速度的影响lineSearchConditionNum.py即使采用精确线搜索大 $\kappa$病态 Hessian仍使最速下降剧烈之字形慢收敛。图 8.13Nesterov 加速更新示意在动量方向上先外推一步再计算梯度从而显著改善条件数带来的收敛瓶颈。5.3 二阶方法牛顿法与信赖域图 8.14–8.15图 8.14牛顿法用目标函数在当前点 $\theta_t$ 处的二阶近似 $\mathcal{L}_{\mathrm{quad}}(\theta)$虚线求极小牛顿步 $d_t$ 直达该二次近似的极小点newtonsMethodMinQuad.py、newtonsMethodNonConvex.py。图 8.15trust region信赖域方法在非凸目标上以一系列圆域内的二次近似虚线圆逐步逼近规避牛顿法在非凸区域的发散风险。5.4 学习率与调度图 8.16–8.19图 8.16LMS最小均方算法lms_demo.py从 $(-0.5, 2)$ 出发缓慢收敛到最小二乘解 $(1.45, 0.93)$红叉且目标函数随迭代非单调下降。图 8.17学习率查找learning rate finder对 FashionMNIST 上的小型 MLP 用 vanilla SGD 训练绘制 Loss–学习率曲线蓝原始损失橙EWMA 平滑用于挑选合理的初始学习率区间。图 8.18常见学习率调度learning_rate_plot.py(a) 分段常数、(b) 指数衰减、(c) 多项式衰减。图 8.19进阶调度(a)线性 warm-up 后接余弦 cool-downTransformer 类模型标配(b)循环学习率cyclical LR。5.5 约束优化图 8.20–8.22图 8.20约束优化示意红色等高线为目标函数 level set黑点为约束最优解(a) 蓝色直线为等式约束 $h(\theta)0$(b) 蓝色菱形为不等式约束 $|\theta_1||\theta_2|\le 1$即 L1 范数约束的可行集对应稀疏解。图 8.212D凸多面体线性约束之交定义可行集线性目标的最优解落在某个顶点上——线性规划LP的理论基石。图 8.22投影梯度下降projected gradient descent梯度步得到 $\mathbf{w}$ 后通过投影算子 $P_{\mathcal{C}}(\mathbf{w})$ 将其拉回约束集 $\mathcal{C}$从而在约束域内持续下降。5.6 EM 与 bound optimization图 8.23–8.27图 8.23bound optimization界限优化算法示意——迭代地构造目标函数的下界并最大化它EM 算法是其中最著名的实例。图 8.24MM 算法 vs 牛顿法emLogLikelihoodMax.pyMM 的二次下界实线保证单调上升而牛顿法的二次近似虚线可能越过全局最大a或使目标下降b——直观对比稳健单调与快速但不稳。图 8.25GMM 的 EM应用于 Old Faithful 数据mix_gauss_demo_faithful.py点颜色深浅表示其属于红/蓝簇的 responsibility紫色点约 50/50 归属两簇。图 8.26GMM 似然的奇异点当某混合分量 $\sigma_1\approx0$ 钉住单个数据点 $x_1$ 时似然趋于无穷——MLE 病态需要 MAP 或正则化解救mix_gauss_singularity.py、mix_gauss_mle_vs_map.py。图 8.27GMM 似然面与不可辨识性gmm_lik_surface_plot.py$N200$ 点、两分量参数对称时似然面 $p(\mathcal{D}|\mu_1,\mu_2)$ 出现两个对称峰对应参数交换的不确定性。六、如何复现书中插图环境与运行方式若要亲自动手复现上述 27 幅图可直接使用 chapter8_optimization_figures.ipynb。其工作流各图的 setup cell 完全一致如下克隆 pyprobml 脚本仓库Notebook 内以git clone方式拉取到/pyprobml并切换到其中的scripts目录安装运行辅助库superimport与deimport前者统一处理脚本的导入依赖后者用于隔离不同脚本间的环境对每幅图执行%run -n script.py即可按需生成对应插图例如图 8.1局部/全局最小、鞍点extrema_fig_1d.py、saddle.py图 8.11最速下降steepestDescentDemo.py图 8.12条件数影响lineSearchConditionNum.py图 8.16LMSlms_demo.py图 8.18学习率调度learning_rate_plot.py图 8.23EM/界限优化emLogLikelihoodMax.py图 8.25/8.26/8.27GMMmix_gauss_demo_faithful.py、mix_gauss_singularity.py、mix_gauss_mle_vs_map.py、gmm_lik_surface_plot.py图 8.17学习率查找与图 8.19warm-up/余弦调度、循环学习率则对应另一组 Notebooklrschedule_tf.ipynb等中的实验用于在真实数据集上观察调度策略的效果。建议的学习顺序是先对照 5.1–5.3 节的概念图建立直觉再运行 5.4–5.6 节的数值演示脚本最后回到第一节的六份补充资源在 JAX/Flax/TF2/PyTorch 中亲手实现自动微分与优化循环完成从看懂理论到写出代码的闭环。赞分享文档教程机器学习【免费下载链接】pml-bookProbabilistic Machine Learning - a book series by Kevin Murphy项目地址https://gitcode.com/gh_mirrors/pm/pml-book点击查看免费下载相关推荐pyprobml 线性代数实践指南Probabilistic Machine Learning 第 7 章的 JAX 数值计算全解pyprobml 线性代数实践指南Probabilistic Machine Learning 第 7 章的 JAX 数值计算全解 导读 本篇技术指南围绕 p机器学习深度学习PandasGUI如何通过可视化界面提升数据分析效率PandasGUI如何通过可视化界面提升数据分析效率 面对复杂的数据分析任务你是否厌倦了反复编写Pandas查询代码PandasGUI正是为解决这一痛点数据分析桌面应用NYU-DLSP20 第 5 周精讲梯度下降、动量与 ADAM 优化全景及 PyTorch 卷积与自动微分实战NYU DLSP20 第 5 周精讲梯度下降、动量与 ADAM 优化全景及 PyTorch 卷积与自动微分实战 本文以 NYU DLSP20NYU Dee示例工程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考