优化与梯度下降:从临界点到 SGD/Adam 的机器学习数学内核(Maths, CS AI Compendium 优化篇)

📅 发布时间:2026/9/16 17:16:46
优化与梯度下降:从临界点到 SGD/Adam 的机器学习数学内核(Maths, CS  AI Compendium 优化篇)
优化与梯度下降从临界点到 SGD/Adam 的机器学习数学内核Maths, CS AI Compendium 优化篇【免费下载链接】maths-cs-ai-compendiumBecome a cracked AI/ML researcher/engineer with this unconventional textbook covering maths, computing, and ML with intuition.项目地址: https://gitcode.com/GitHub_Trending/mat/maths-cs-ai-compendium优化是模型训练最核心的数学环节从求解损失函数的极小值出发逐步走向临界点、凸性、牛顿法与拉格朗日乘子最终落地为驱动现代深度学习的 SGD 与 Adam 等一阶优化器。本指南以《Maths, CS AI Compendium》开源教材README第三章微积分最后一节 05. optimisation.md 为骨架结合仓库内 多元微积分、函数逼近 与 梯度机器学习 等章节以及 pyodide-runner.js 提供的浏览器内 JAX 执行环境完整还原从理论到代码的优化知识链条。读完你将掌握零点与临界点的判定、凸性为何保证全局最优、牛顿法的二次收敛原理与失效场景、拉格朗日乘子与 KKT 条件处理约束优化以及一阶/二阶优化算法族与 SGD/Adam 的完整推导并能在浏览器里直接运行 JAX 实验验证每一步。训练神经网络、拟合回归线、调超参数……几乎所有机器学习算法的核心都是一个**优化optimisation**问题我们有一个函数损失、代价或目标函数希望在它的输入空间中找出使函数值尽可能小或大的点。本文按教材脉络依次展开先建立零点与临界点的直觉再引入凸性这一可全局求解的关键结构随后用牛顿法连接二阶信息用拉格朗日乘子处理约束最后落回现代深度学习实际使用的优化器家族。一、起点函数的零点与临界点1.1 零点Roots / Zeros符号分区的标记优化的起点是理解函数的零点zero满足 $f(x) 0$ 的 $x$ 值图像上即 x 轴交点。教材给出的例子是$$f(x) x^2 - 3x 2 (x-1)(x-2)$$零点在 $x 1$ 与 $x 2$。零点把数轴划分成符号恒定的区间零点之间函数为负$f(1.5) -0.25$零点之外为正。这一符号分区性质在不等式求解、函数单调性分析与数值方法设计中反复出现。**重数multiplicity**刻画零点处因式出现的次数单零点重数 1处图像穿过 x 轴双重零点重数 2处图像触碰 x 轴后反弹而不穿越局部呈现平坦外观。1.2 临界点导数零点与极值候选寻找零点之所以重要是因为导数的零点正是函数的临界点critical points——极大值与极小值的候选。在极大或极小点处切线水平斜率 0因此 $f(x) 0$。但并非每个临界点都是极值。$f(x) x^3$ 在 $x 0$ 处 $f(0) 0$该点却是拐点inflection point函数短暂变平但并未改变方向。此时需要**二阶导数检验second derivative test**来裁决设临界点 $x c$ 满足 $f(c) 0$$f(c)$ 取值几何含义判定结论$f(c) 0$曲线向上凹碗状局部极小值$f(c) 0$曲线向下凹山丘状局部极大值$f(c) 0$检验失效需更高阶导数或其他方法教材示例$f(x) x^3 - 3x$其导数 $f(x) 3x^2 - 3 3(x-1)(x1)$临界点为 $x -1$ 与 $x 1$二阶导数 $f(x) 6x$于是 $f(-1) -6 0$局部极大$f(1) 6 0$局部极小。这正是多元场景下 Hessian 正定/负定判据的一维特例详见仓库 03. multivariate calculus.md 中关于 Hessian 特征值判定局部极小、局部极大与鞍点的论述。二、凸性唯一全局最小的保证**凸函数convex function**的定义是图形上任意两点间的线段位于图形之上或恰在其上形如处处上凹的碗。数学上$f$ 凸当且仅当对光滑的一元函数有 $f(x) \geq 0$ 对所有 $x$ 成立。凸性的威力在于其非凡性质每个局部极小值同时也是全局最小值不存在迷惑性的局部低谷陷阱——把球滚进凸碗它总会到达碗底。这对优化算法的设计具有决定性意义对凸目标如线性回归的 MSE见 梯度机器学习 中的正常方程 $w^{*} (X^TX)^{-1}X^Ty$一阶方法理论上有明确的收敛保证对非凸目标如神经网络损失面我们只能寄望于找到足够好的局部解这也解释了实践中为何学习率调度、初始化与随机性如此重要。相应地凹函数concave定义为 $-f$ 为凸向下弯曲函数在凹凸之间切换的点为拐点出现在 $f(x) 0$ 处。三、牛顿法用切线逼近根用二次模型逼近极值3.1 求根切线与二次收敛**牛顿法Newtons method**利用切线求函数零点。从初始猜测 $x_0$ 出发迭代$$x_{n1} x_n - \frac{f(x_n)}{f(x_n)}$$思想是在 $x_n$ 处画切线找到它与 x 轴的交点作为 $x_{n1}$。对性质良好、起点得当的函数牛顿法收敛极快——**二次收敛quadratic convergence**意味着有效数字每步大致翻倍。教材示例求 $\sqrt{5}$即 $f(x) x^2 - 5$ 的零点$f(x) 2x$迭代式 $x_{n1} x_n - \frac{x_n^2 - 5}{2x_n}$从 $x_0 2$ 出发得 $x_1 2.25$、$x_2 2.2361\ldots$两步即精确到四位小数。牛顿法的失效条件同样必须牢记初始猜测离根太远根附近 $f(x) 0$切线近乎水平交点被抛向无穷函数附近存在拐点需要计算导数代价可能昂贵。3.2 用于优化求 $f(x) 0$ 与 Hessian把牛顿法用于优化求极小而非求零即对 $f(x) 0$ 应用迭代$$x_{n1} x_n - \frac{f(x_n)}{f(x_n)}$$多维情形下写作 $\mathbf{x}_{n1} \mathbf{x}_n - H^{-1}\nabla f(\mathbf{x}_n)$其中 $H$ 为Hessian 矩阵。这正是 04. function approximation.md 中多元二阶 Taylor 近似的直接应用把函数近似为二次型跳到该二次型的极小值再重复。注意这里的链式依赖关系——多元微积分提供梯度与 Hessian 的定义03. multivariate calculus.md函数逼近提供二阶展开04. function approximation.md优化把两者组合成迭代算法。四、约束优化拉格朗日乘子与 KKT 条件现实中的优化往往带约束。**拉格朗日乘子法Lagrange multipliers**求解如下问题在约束 $g(x, y) c$ 下求 $f(x, y)$ 的最优值。此时搜索空间从整个 $\mathbb{R}^n$ 收缩为约束定义的曲线或曲面。关键几何洞见约束最优点处$\nabla f$ 必须平行于 $\nabla g$。若二者不平行我们就能沿约束方向移动以继续改善 $f$说明尚未到达最优点。据此引入新变量 $\lambda$拉格朗日乘子并构造拉格朗日函数Lagrangian$$\mathcal{L}(x, y, \lambda) f(x, y) - \lambda(g(x, y) - c)$$令所有偏导数为零得到方程组其解即约束最优点$$\frac{\partial \mathcal{L}}{\partial x} 0, \quad \frac{\partial \mathcal{L}}{\partial y} 0, \quad \frac{\partial \mathcal{L}}{\partial \lambda} 0$$教材完整示例在 $x^2 y^2 1$ 约束下最大化 $f(x,y) x^2y$。拉格朗日函数为 $\mathcal{L} x^2 y - \lambda(x^2 y^2 - 1)$取偏导得$$2xy - 2\lambda x 0, \quad x^2 - 2\lambda y 0, \quad x^2 y^2 1$$由第一式假设 $x \neq 0$得 $\lambda y$代入第二式得 $x^2 2y^2$结合约束 $2y^2 y^2 1$ 得 $y \frac{1}{\sqrt{3}}$最大值为 $f \frac{2}{3\sqrt{3}}$。对于不等式约束$g(x,y) \leq c$Karush-Kuhn-TuckerKKT条件推广了拉格朗日乘子法约束要么活跃binding按等式处理要么非活跃inactive解在内部、约束无关紧要。KKT 是 SVM 对偶理论、凸优化内点法等大量现代算法的数学地基。五、优化算法家族一阶、二阶与专用方法实践中极少手算优化教材按信息使用量对算法家族做了系统分类家族使用的信息代表算法特点一阶方法仅梯度梯度下降、SGD、Adam每步便宜病态问题上可能收敛慢二阶方法梯度 Hessian牛顿法收敛快但 $n$ 个参数时计算并求逆 Hessian 为 $O(n^3)$拟牛顿法梯度近似 HessianBFGS、L-BFGS只用梯度信息逼近 Hessian比一阶快且无全量二阶代价共轭梯度矩阵-向量积CG适合大型稀疏系统无需存储完整 Hessian最小二乘专用通过 Jacobian 逼近 HessianGauss-Newton、Levenberg-Marquardt回归等最小二乘问题首选几何自适应Fisher 信息矩阵自然梯度下降考虑参数空间的几何结构对概率模型更有效优化器的选择取决于问题形态深度学习参数规模达百万到十亿级Hessian 计算不切实际因此一阶方法尤其 Adam占统治地位小规模光滑目标上二阶方法可能快一个量级。关于 SGD/动量/Adagrad/RMSprop/Adam/AdamW 等优化器的完整递进推导与代码实现见仓库 梯度机器学习 一节——那里的 optimizer_trajectories.svg 直观展示了 SGD 锯齿形路径、Momentum 平滑路径与 Adam 最直接路径的差异与本节的算法家族分类互为印证。六、可运行实验在浏览器中用 JAX 验证优化理论教材为每个主题配套了 Coding Tasks全部基于 JAXjax、jax.numpy编写可直接在 CoLab 或 notebook 中运行。值得强调的是本仓库的 javascripts/pyodide-runner.js 为这些代码提供了浏览器内执行环境该脚本通过 Pyodidev0.27.7CDN 加载在页面中注入 Python 运行时预装 numpy、matplotlib 与 micropip 等包见脚本第 34-35 行并用纯 Python 实现了 JAX 核心 API 的数值替代第 62-182 行包括jax.grad数值差分实现第 72-89 行、jax.jit、jax.vmap、jax.numpy等模块级 shim配合 stylesheets/pyodide-runner.css 渲染的代码运行器把复制-运行-观察的动手环节直接搬进了网页。也就是说你在文档站点上阅读本节的三个任务时可以点击代码块直接执行无需本地安装 Python。任务 1实现牛顿法求 $\sqrt{7}$目标是求解 $f(x) x^2 - 7$ 的零点观察快速收敛import jax.numpy as jnp f lambda x: x**2 - 7 df lambda x: 2*x x 3.0 # initial guess for i in range(6): x x - f(x) / df(x) print(fstep {i1}: x {x:.10f} (error: {abs(x - jnp.sqrt(7.0)):.2e}))对照 3.1 节的理论误差项abs(x - jnp.sqrt(7.0))以二次速度收缩6 步即可达到浮点精度极限这就是二次收敛的实际体现。任务 2梯度下降最小化 $f(x, y) (x - 3)^2 (y 1)^2$该目标是一个标准凸二次型最小值在 $(3, -1)$。实验重点是不同的学习率 $\eta$过大则发散振荡过小则收敛缓慢这正对应 梯度机器学习 中学习率控制步长的论述import jax import jax.numpy as jnp def f(params): x, y params return (x - 3)**2 (y 1)**2 grad_f jax.grad(f) params jnp.array([0.0, 0.0]) lr 0.1 for i in range(20): g grad_f(params) params params - lr * g if i % 5 0 or i 19: print(fstep {i:2d}: ({params[0]:.4f}, {params[1]:.4f}) loss{f(params):.6f})值得留意的细节jax.grad(f)默认对第一个参数求梯度这里f接受单个向量参数params是长度为 2 的数组梯度更新params - lr * g一次性作用于两个分量——这正是梯度下降 $\mathbf{w} \leftarrow \mathbf{w} - \eta \nabla \mathcal{L}(\mathbf{w})$ 的向量形式。可自行对比lr 0.01收敛过慢与lr 1.0振荡两种取值。任务 3参数化法数值求解约束优化最大化 $f(x,y) xy$约束 $x y 10$。经典做法是代入约束消元$y 10 - x$把问题降为一元函数 $f(x) x(10-x) 10x - x^2$再用梯度上升求最大值import jax import jax.numpy as jnp # Substitute constraint: y 10 - x, so f x(10 - x) 10x - x² f lambda x: x * (10 - x) df jax.grad(f) # Gradient ascent (we want maximum, so add gradient) x 1.0 lr 0.1 for i in range(20): x x lr * df(x) print(fx{x:.4f}, y{10-x:.4f}, f{f(x):.4f}) # should be x5, y5, f25注意此例使用梯度上升更新加号因为目标是最大化。解析解 $x y 5$、$f 25$ 与迭代结果一致与第四节拉格朗日乘子给出的几何结论最优点处 $\nabla f \parallel \nabla g$殊途同归——参数化消元与乘子法是同一约束优化问题的两种求解视角。七、进阶阅读与仓库延伸优化并非孤立主题本仓库围绕它形成了完整的知识闭环可按以下路径继续深入前置基础微分学 提供导数的极限定义与链式法则多元微积分 定义梯度、Jacobian、Hessian 与多维链式法则反向传播的数学底座函数逼近 给出牛顿法依赖的多元二阶 Taylor 展开机器学习落地梯度机器学习 完整呈现从线性回归正常方程、逻辑回归 BCE 到 SGD/动量/Adagrad/RMSprop/Adam/AdamW/LION/Muon 的优化器演进并给出对比实验代码可直接在本节实验环境或 CoLab 中运行动手环境pyodide-runner.js 与 pyodide-runner.css 实现了浏览器内 JAX 代码执行器本文全部代码块均可直接点击运行mkdocs.yml 的markdown_extensions配置pymdownx.arithmatex保证了文中 $\LaTeX$ 公式的渲染知识检索llms.txt 对本节做了精炼索引Critical points, convexity, Newtons method, gradient descent, Lagrange multipliers, KKT而 mcp/src/index.ts 中的 MCP 服务器正则解析章节结构CHAPTER_RE与SECTION_RE让 AI 助手可以把整本教材作为知识库进行问答式检索。从导数的零点是极值候选这一朴素观察出发到牛顿法的二次收敛、拉格朗日乘子的几何直觉再到支配现代深度学习的 Adam——优化这条主线贯穿了数学、机器学习工程与推理部署的全部层级。理解它就是理解模型训练的内核。【免费下载链接】maths-cs-ai-compendiumBecome a cracked AI/ML researcher/engineer with this unconventional textbook covering maths, computing, and ML with intuition.项目地址: https://gitcode.com/GitHub_Trending/mat/maths-cs-ai-compendium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考