
Maths, CS AI Compendium 梯度机器学习精讲从线性回归、反向传播到 AdamW、Muon 与无调度学习【免费下载链接】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本篇技术指南基于开源教材 Maths, CS AI Compendium 第 06 章机器学习分册的第 02 节 Gradient Machine Learning系统讲解基于梯度的参数优化线性回归与正规方程、逻辑回归与二分类交叉熵、梯度下降的批量/随机/小批量变体、反向传播、从动量到 AdamW/LION/Muon 的优化器演进、正则化与偏差-方差权衡、学习率调度与超参调优并完整给出 4 个可运行的 JAX 编码任务帮助读者建立起损失面—梯度—参数更新这条贯穿从线性模型到大神经网络的完整技术主线。1. 文档定位梯度学习在整个教材中的坐标本教材仓库根目录 README.md是一本直觉优先的开源数学/计算/AI 教材按 20 章组织。第 06 章机器学习分为 5 个分节01. classical machine learning.md 讲的是不依赖梯度的经典方法Naive Bayes、k-NN、决策树、随机森林、SVM、k-means、PCA它们依靠巧妙启发式或闭式解而 02. gradient machine learning.md 覆盖的才是另一条主线——通过反复沿损失面的斜率下行来学习参数。原文的开场定位即从线性回归到最大规模神经网络梯度学习是背后的统一引擎。与它直接构成对照或前置关系的仓库文档有chapter 02 - matrices/05. decompositions.md正规方程用到矩阵求逆Muon 优化器用 Newton-Schulz 迭代逼近极分解都依赖这一章的 LU/QR/SVD 基础chapter 03 - calculus/01. differential calculus.md 与 chapter 03 - calculus/03. multivariate calculus.md链式法则chain rule是反向传播的全部数学本质chapter 03 - calculus/05. optimisation.md该分节同样覆盖梯度下降、SGD、Adam 以及一阶/二阶方法分类其 L83-L91 给出一阶方法只用梯度、每步便宜但收敛慢的分类框架第 06 章则是这些优化方法在机器学习任务上的落地chapter 05 - probability/04. bayesian.mdMSE 的高斯似然解释、BCE 的伯努利似然解释、L1/L2 正则的先验解释都来自这一章。阅读方式上从 mkdocs.yml 的配置可以看到仓库使用 Material 主题站点构建并启用pymdownx.arithmatex配合 javascripts/mathjax.js 加载 MathJax来渲染文中的 LaTeX 公式启用pymdownx.superfences支持代码高亮与复制仓库还附带一个 MCP 服务器mcp/src/index.ts让 AI 助手把整本教材当作知识库检索。因此本文章中的所有$$...$$公式均可以直接在仓库站点或任何 MathJax 环境中渲染所有 Python 代码可直接复制到 notebook 运行。2. 线性回归最简单的梯度模型也是完美的起点线性回归是最简单的梯度学习模型同时拥有闭式解因此是理想的起点。模型就是一条直线高维时是超平面$$\hat{y} w \cdot x b \sum_{i1}^{d} w_i x_i b$$用矩阵记号来自第 02 章把所有训练样本的输入堆叠成矩阵 $X$ 的行并把偏置吸收进 $w$追加一列 1模型简化为 $\hat{y} Xw$。2.1 为什么用均方误差MSE目标是极小化均方误差——预测与真实值平差的平均$$\mathcal{L}(w) \frac{1}{n} \sum_{i1}^{n} (y_i - \hat{y}_i)^2 \frac{1}{n} |y - Xw|^2$$为什么用平方误差它有严格的概率论依据如果假设目标是按 $y Xw \epsilon$、其中 $\epsilon \sim \mathcal{N}(0, \sigma^2)$ 生成的那么最大化数据的高斯似然第 05 章与最小化 MSE 完全等价。平方误差还天然地对大错误施加比小错误更重的惩罚这通常是期望的行为。2.2 正规方程解析解及其失效条件由于 MSE 关于 $w$ 是二次函数它只有一个全局极小点可以解析求出。对 $w$ 求导、令其为零、解方程得到正规方程normal equation$$w^{*} (X^T X)^{-1} X^T y$$这里直接使用了第 02 章的矩阵求逆$X^T X$ 是 $d \times d$ 矩阵$d$ 为特征数$X^T y$ 是 $d$ 维向量。正规方程一次性给出精确最优权重。正规方程何时失效当 $X^T X$ 奇异不可逆时——特征线性相关或特征数多于样本数$d n$。此时需要正则化见第 7 节或退而使用梯度下降。3. 逻辑回归把线性模型改造成概率分类器逻辑回归把线性模型适配到二分类不预测连续值而是预测 0 到 1 之间的概率。sigmoid 函数把任意实数压缩进这个区间$$\sigma(z) \frac{1}{1 e^{-z}}$$模型先计算线性得分 $z w \cdot x b$与线性回归完全相同再送入 sigmoid$\hat{y} \sigma(w \cdot x b)$输出 $\hat{y}$ 被解释为 $P(y 1 \mid x)$。sigmoid 有几个好性质$\sigma(0) 0.5$$z \to \infty$ 时 $\sigma(z) \to 1$$z \to -\infty$ 时 $\sigma(z) \to 0$导数有优雅的形式 $\sigma(z) \sigma(z)(1 - \sigma(z))$——这一性质让第 5 节推导 BCE 梯度时可以大幅简化。逻辑回归的损失函数是二分类交叉熵BCE直接来自伯努利似然第 05 章见 chapter 05 - probability/03. distributions.md$$\mathcal{L} -\frac{1}{n} \sum_{i1}^{n} \left[ y_i \log(\hat{y}_i) (1 - y_i) \log(1 - \hat{y}_i) \right]$$当真实标签为 1 时只有第一项起作用惩罚偏低的预测当真实标签为 0 时只有第二项起作用惩罚偏高的预测。对数让高置信度犯错的惩罚极其陡峭真实标签为 1 却预测 0.01比预测 0.4 的代价大得多。与线性回归的 MSE 不同最小化 BCE 的权重没有闭式解——这正是引出梯度下降的转折点。4. 梯度下降雾中下山的迭代法则梯度下降的直觉很简单想象你站在多丘陵地形损失面上、四周大雾弥漫。你看不见全局最优点但能感受脚底的坡度。朝下坡方向迈一步、再感受坡度、再迈一步反复进行最终抵达谷底。$$w \leftarrow w - \eta \frac{\partial \mathcal{L}}{\partial w}$$学习率 $\eta$ 控制步长。过大越过谷底来回弹跳、无法收敛。过小痛苦地寸步前行甚至卡进局部极小值。梯度 $\frac{\partial \mathcal{L}}{\partial w}$ 是向量指向最速上升方向之所以要减去它是因为我们要向下走。这一步骤本质上就是第 03 章的链式法则应用于损失函数。4.1 三种批量策略Batch gradient descent批量每一步都用整个训练集计算梯度。梯度精确但 $n$ 很大时开销昂贵。Stochastic gradient descent随机SGD每步只用一个随机样本。梯度带噪声从单样本估计真实梯度但每步极快噪声反而有助于逃离浅局部极小值。Mini-batch gradient descent小批量折中方案——每步使用 $B$ 个样本的批次典型取 32、64 或 256在计算效率批次上的向量化运算与梯度质量之间取得平衡。几乎所有深度学习都使用小批量 SGD。5. 反向传播计算图上的系统性链式法则反向传播backpropagation是我们实际计算多参数模型如神经网络梯度的方法。它是第 03 章链式法则在计算图上的系统化应用。任何模型都可以表示为一张操作的有向无环图DAG输入流入图中经过权重相乘、求和、非线性函数最终产出一个损失值。前向传播forward pass沿图从输入到输出计算输出与损失。反向传播backward pass让梯度反向流动从损失出发用链式法则在每个节点计算损失对每个中间量如何变化。若 $L$ 依赖 $z$、$z$ 依赖 $w$则$$\frac{\partial L}{\partial w} \frac{\partial L}{\partial z} \cdot \frac{\partial z}{\partial w}$$每个节点只需要知道自己的局部导数和从上游流下来的梯度。这让反向传播既模块化又高效总开销约为前向传播的两倍一次正向、一次反向。6. 优化器家族从动量到 Muon 的演化朴素 SGD 有一个问题在曲率陡峭的方向上左右震荡而在平坦方向上进展缓慢。优化器optimisers通过基于梯度历史自适应地调整步长来改进这一点。6.1 SGD with Momentum动量保持过去梯度的滑动平均指数移动平均来自第 04 章参见 chapter 04 - statistics/02. measures.md 一类的统计量背景。它平滑震荡、加速在一致方向上的进展$$v_t \beta v_{t-1} (1 - \beta) \nabla \mathcal{L}$$ $$w \leftarrow w - \eta , v_t$$可以想象一个小球滚下山坡动量让它在一贯方向上加速、抑制左右抖动。典型取值 $\beta 0.9$。6.2 Nesterov 加速梯度NAG一个精巧的小改动不在当前位置计算梯度而是在前瞻位置 $w - \eta \beta v_{t-1}$ 处计算梯度。这个校正步减少了过冲$$v_t \beta , v_{t-1} \nabla \mathcal{L}(w - \eta \beta , v_{t-1})$$ $$w \leftarrow w - \eta , v_t$$6.3 Adagrad 与 RMSprop逐参数自适应学习率Adagrad为每个参数单独调整学习率接受大梯度的参数获得更小学习率反之亦然。它累加平方梯度$$G_t G_{t-1} g_t^2, \quad w \leftarrow w - \frac{\eta}{\sqrt{G_t \epsilon}} g_t$$问题在于$G_t$ 只增不减有效学习率单调递减最终小到无法再学习。RMSprop的修复用平方梯度的指数移动平均代替累加和使近期梯度比远古梯度更重要$$s_t \beta , s_{t-1} (1 - \beta) g_t^2, \quad w \leftarrow w - \frac{\eta}{\sqrt{s_t \epsilon}} g_t$$6.4 Adam 与偏置校正AdamAdaptive Moment Estimation把动量和 RMSprop 合二为一同时维护一阶矩估计梯度均值类动量和二阶矩估计平方梯度均值类 RMSprop$$m_t \beta_1 m_{t-1} (1 - \beta_1) g_t$$ $$v_t \beta_2 v_{t-1} (1 - \beta_2) g_t^2$$由于 $m_t$ 和 $v_t$ 初始为零在早期步骤它们偏向零。偏置校正bias correction修正这一点$$\hat{m}_t \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t \frac{v_t}{1 - \beta_2^t}$$$$w \leftarrow w - \frac{\eta}{\sqrt{\hat{v}_t} \epsilon} \hat{m}_t$$默认超参数$\beta_1 0.9$$\beta_2 0.999$$\epsilon 10^{-8}$在广泛的问题上都表现良好——这正是 Adam 成为大多数深度学习工作默认优化器的原因。6.5 AdamW解耦权重衰减标准 L2 正则与权重衰减在 SGD 下等价但在 Adam 下不等价。AdamW把权重衰减从梯度更新中解耦——直接对参数施加衰减而不是把 $\lambda w$ 加到梯度上。这带来更好的泛化性如今已是 Transformer 训练的标准做法$$w \leftarrow w - \eta \left( \frac{\hat{m}_t}{\sqrt{\hat{v}_t} \epsilon} \lambda , w \right)$$6.6 LION 与 Muon更省内存的新兴优化器LIONEvoLved Sign Momentum是通过程序搜索发现的新优化器。它只使用动量更新的符号sign而非幅度使每次更新在尺度上均匀。LION 比 Adam 更省内存没有二阶矩缓冲在许多任务上可匹敌甚至超过 Adam$$w \leftarrow w - \eta \cdot \text{sign}(\beta_1 , m_{t-1} (1 - \beta_1) , g_t)$$ $$m_t \beta_2 , m_{t-1} (1 - \beta_2) , g_t$$MuonMomentum Orthogonalisation先施加 Nesterov 动量再用 Newton-Schulz 迭代对更新矩阵做正交化该迭代逼近极分解。得到的更新方向落在 Stiefel 流形上在所有奇异方向上幅度大致相等防止任何单一方向主导更新。这去除了对二阶矩自适应估计的需求没有 Adam 那样的 $v_t$ 缓冲从而降低内存。Muon 在 Transformer 训练上表现出强劲结果通常以更快的收敛达到与 AdamW 相当的质量尤其适用于 attention 与 MLP 权重矩阵embedding 与输出层通常仍交由 AdamW 处理$$G_t \text{NesterovMomentum}(\nabla \mathcal{L})$$ $$U_t \text{NewtonSchulz}(G_t) \approx G_t (G_t^T G_t)^{-1/2}$$ $$W \leftarrow W - \eta , U_t$$Newton-Schulz 迭代重复 $X_{k1} \frac{1}{2} X_k (3I - X_k^T X_k)$ 若干步通常 5–10 步即可计算正交因子避免了完整 SVD 的开销而仍给出好的近似——SVD 本身正是 chapter 02 - matrices/05. decompositions.md 所覆盖的内容。从内存占用角度看各优化器SGD 不存任何缓冲0 份参数副本Momentum、Adagrad、RMSprop、LION 各存 1 份Adam 存 2 份$m_t$ 与 $v_t$Muon 不存二阶矩缓冲只保留动量状态。在大规模训练中这份每参数额外内存是决定性的约束也是 Muon、LION 这类新优化器被关注的核心原因。7. 更多损失函数与正则化7.1 常用损失函数一览除 MSE 与 BCE 外常见的损失函数还有损失函数公式/定义关键性质MAEL1 损失$\frac{1}{n}\sum\lvert y_i - \hat{y}_i\rvert$不平方大误差对离群点比 MSE 稳健Huber 损失小误差段类 MSE大误差段类 MAE平滑与稳健兼得阈值 $\delta$ 控制切换点CCE类别交叉熵$\mathcal{L} -\log(\hat{y}_c)$$c$ 为真实类BCE 的多类推广最小化交叉熵 最大化似然衔接第 05 章信息论交叉熵衡量用预测分布代替真实分布需要多付多少比特Hinge 损失$\mathcal{L} \max(0,, 1 - y \cdot f(x))$SVM 使用只惩罚错侧或落在间隔内的预测分类正确且足够自信时损失为 07.2 L1 / L2 / Elastic Net 正则化正则化regularisation通过惩罚复杂模型来防止过拟合。正则化损失为$$\mathcal{L}{\text{reg}} \mathcal{L}{\text{data}} \lambda , R(w)$$L2 正则化Ridge、权重衰减惩罚权重平方和 $R(w) |w|^2 \sum w_i^2$。阻止任何单个权重变得过大把所有权重向零收缩但很少恰好收缩到零。L1 正则化Lasso惩罚权重绝对值和 $R(w) |w|_1 \sum |w_i|$。鼓励稀疏性把许多权重压到精确的零实现自动特征选择。Elastic Net两者混合$R(w) \alpha |w|_1 (1 - \alpha) |w|^2$兼顾稀疏与收缩。一个优美的贝叶斯解释来自第 05 章 chapter 05 - probability/04. bayesian.mdL2 正则等价于对权重施加高斯先验并求 MAP最大后验估计L1 正则对应 Laplace 先验。正则强度 $\lambda$ 控制相对数据而言你有多信任先验。这也解释了 6.5 节中 AdamW 的必要性L2 与权重衰减在自适应优化器下不再等价。8. 评估指标模型到底有没有用8.1 混淆矩阵与派生指标混淆矩阵confusion matrix是二分类下的四格计数表TP真阳预测为正实际为正FP假阳预测为正实际为负TN真阴预测为负实际为负FN假阴预测为负实际为正由此派生Accuracy准确率$ \frac{TP TN}{TP TN FP FN}$类别不平衡时会误导。若 99% 的邮件不是垃圾邮件永远预测非垃圾的模型也有 99% 准确率却毫无用处。Precision精确率$ \frac{TP}{TP FP}$在所有预测为正的样本中多少真的为正高精确率意味着误报少。Recall召回率敏感性$ \frac{TP}{TP FN}$在所有真实正样本中抓住了多少高召回意味着漏检少。F1 分数$ \frac{2 \cdot \text{precision} \cdot \text{recall}}{\text{precision} \text{recall}}$精确率与召回率的调和平均二者平衡。8.2 ROC 曲线与 AUCROC 曲线让分类阈值从 0 扫到 1把真正例率召回率画在假正例率$\frac{FP}{FPTN}$上。完美分类器贴着左上角。曲线下的面积AUC把性能压缩成单个数字1.0 是完美0.5 是随机猜测。8.3 交叉验证$k$ 折交叉验证把数据切成 $k$ 份用 $k-1$ 份训练、留 1 份测试轮转一次。$k$ 个折的平均测试性能即为泛化估计。它让全部数据都既参与训练又参与测试只是从不同时数据稀缺时尤为宝贵。8.4 偏差-方差权衡承接第 04 章 chapter 04 - statistics/01. fundamentals.md这是机器学习的根本张力。模型期望误差可分解为$$\text{Error} \text{Bias}^2 \text{Variance} \text{Irreducible Noise}$$偏差Bias是错误假设带来的系统性误差例如对弯曲数据拟合直线方差Variance是对训练数据波动的敏感度例如 20 次多项式去拟合噪声。简单模型高偏差低方差复杂模型低偏差高方差。甜点位使总误差最小。9. 训练工程学习率调度、超参调优与无调度学习9.1 学习率调度学习率调度在训练过程中调整 $\eta$。常见策略Step decay阶梯衰减每 $N$ 个 epoch 把 $\eta$ 乘一个因子如 0.1Cosine annealing余弦退火沿余弦曲线从初始值平滑降到接近零Warmup预热先用极小的 $\eta$在前几千步线性增长之后再衰减——防止初始大梯度使训练失稳1cycle一个先升后降的余弦周期可带来更快收敛。9.2 超参调优学习率、批量大小、正则强度等不被梯度下降学习的取值需要超参调优Grid search网格搜索遍历预定义网格的所有组合穷举但昂贵Random search随机搜索随机采样组合——因为并非所有超参同等重要常常更高效Bayesian optimisation贝叶斯优化为目标函数建模型智能选择下一个要尝试的超参ASHAAsynchronous Successive Halving Algorithm并行启动许多小预算试验逐轮提升最有希望的一批、提前砍掉其余——结合早停效率与大规模并行与其跑 100 次完整训练不如先让 100 次都廉价起跑每层保留前四分之一最终只有寥寥数次跑满全程。它是 Ray Tune 这类现代大规模调优框架的骨架。9.3 Schedule-free learning把学习率调度变成非超参无调度学习schedule-free learning直接消灭对学习率调度的需求。它不再按固定曲线衰减 $\eta$而是维护两条序列缓慢移动的迭代点平均 $z_t$收敛到最优点和快速探索迭代点 $y_t$梯度在其上求值。最终输出取平均序列——可证明达到事后看最佳调度的收敛速率。这把调度彻底从超参中移除你只需设置基础学习率其余交给优化器。SGD 与 Adam 的 schedule-free 变体都已被证明可匹敌甚至超过配合调优调度的对应版本。10. 编码任务四个 JAX 实战练习原文档给出 4 个可运行的编码任务use CoLab or notebook全部基于 JAX matplotlib其中第 2 题额外用到 scikit-learn 的make_moons。以下完整保留原始代码并补充关键参数说明可直接复制运行。10.1 任务一正规方程 vs 梯度下降用两种方法求解线性回归并绘制梯度下降的损失收敛曲线。数据生成为 $y 3x 2 \text{噪声}$$n100$$x \in [0,10]$噪声尺度 1.5梯度下降取学习率 $0.005$、共 500 步梯度公式为 $\nabla_w \mathcal{L} \frac{2}{n} X_b^T (Xw - y)$。import jax import jax.numpy as jnp import matplotlib.pyplot as plt # Generate synthetic data: y 3x 2 noise key jax.random.PRNGKey(42) n 100 X jax.random.uniform(key, (n, 1), minval0, maxval10) y 3 * X[:, 0] 2 jax.random.normal(key, (n,)) * 1.5 # Add bias column X_b jnp.column_stack([X, jnp.ones(n)]) # Normal equation w_exact jnp.linalg.solve(X_b.T X_b, X_b.T y) print(fNormal equation: w{w_exact[0]:.4f}, b{w_exact[1]:.4f}) # Gradient descent w_gd jnp.zeros(2) lr 0.005 losses [] for step in range(500): pred X_b w_gd error pred - y loss jnp.mean(error ** 2) losses.append(float(loss)) grad (2 / n) * X_b.T error w_gd w_gd - lr * grad print(fGradient descent: w{w_gd[0]:.4f}, b{w_gd[1]:.4f}) fig, axes plt.subplots(1, 2, figsize(12, 4)) axes[0].scatter(X[:, 0], y, s15, alpha0.5, color#3498db) axes[0].plot([0, 10], [w_exact[1], w_exact[0]*10 w_exact[1]], color#e74c3c, linewidth2) axes[0].set_title(Linear Regression Fit) axes[0].set_xlabel(x); axes[0].set_ylabel(y) axes[1].plot(losses, color#27ae60, linewidth1.5) axes[1].set_title(GD Loss Convergence) axes[1].set_xlabel(Step); axes[1].set_ylabel(MSE) axes[1].set_yscale(log) plt.tight_layout() plt.show()注意两点实现细节正规方程用jnp.linalg.solve而非显式求逆数值上更稳定GD 循环中每步记录损失绘图时用对数纵轴展示收敛——这正是第 2 节二次损失面存在唯一全局极小的实证。10.2 任务二从零实现逻辑回归并可视化决策边界在make_moons两个月形交错分布二分类数据上从零训练逻辑回归sigmoid、BCE 损失含 $10^{-8}$ 数值稳定项、梯度 $\nabla_w \mathcal{L} \frac{1}{n} X_b^T (\hat{y} - y)$——推导中正是 3 节给出的 sigmoid 导数性质 $\sigma(z) \sigma(z)(1-\sigma(z))$ 在起作用。学习率 0.5、训练 2000 步最后用 200×200 网格重画概率场与 0.5 阈值决策边界。import jax import jax.numpy as jnp import matplotlib.pyplot as plt from sklearn.datasets import make_moons # Generate data X, y make_moons(n_samples300, noise0.2, random_state42) X, y jnp.array(X), jnp.array(y, dtypejnp.float32) def sigmoid(z): return 1 / (1 jnp.exp(-z)) # Add bias column X_b jnp.column_stack([X, jnp.ones(len(X))]) w jnp.zeros(3) lr 0.5 losses [] for step in range(2000): z X_b w pred sigmoid(z) # BCE loss loss -jnp.mean(y * jnp.log(pred 1e-8) (1 - y) * jnp.log(1 - pred 1e-8)) losses.append(float(loss)) # Gradient grad X_b.T (pred - y) / len(y) w w - lr * grad # Decision boundary xx, yy jnp.meshgrid(jnp.linspace(-2, 3, 200), jnp.linspace(-1.5, 2, 200)) grid jnp.column_stack([xx.ravel(), yy.ravel(), jnp.ones(xx.size)]) zz sigmoid(grid w).reshape(xx.shape) plt.figure(figsize(8, 6)) plt.contourf(xx, yy, zz, levels[0, 0.5, 1], alpha0.3, colors[#e74c3c, #3498db]) plt.contour(xx, yy, zz, levels[0.5], colors#9b59b6, linewidths2) plt.scatter(X[y0, 0], X[y0, 1], c#e74c3c, s15, labelClass 0) plt.scatter(X[y1, 0], X[y1, 1], c#3498db, s15, labelClass 1) plt.title(Logistic Regression Decision Boundary) plt.legend() plt.grid(alpha0.3) plt.show()10.3 任务三优化器轨迹对比实验在拉长的二次曲面 $\mathcal{L}(w_1, w_2) 0.5w_1^2 10w_2^2$条件数差异极大上从同一起点 $(8, 3)$ 分别运行 SGD、SGDMomentum$\beta0.9$与 Adam$\beta_10.9, \beta_20.999, \epsilon10^{-8}$各 80 步、学习率 0.05绘制三条路径。这是 6 节各优化器理论行为的可视化验证SGD 在陡方向锯齿、Momentum 走更平滑的路径、Adam 以最短路径直达最优点。import jax import jax.numpy as jnp import matplotlib.pyplot as plt # Elongated quadratic: L(w1, w2) 0.5*w1^2 10*w2^2 def loss_fn(w): return 0.5 * w[0]**2 10 * w[1]**2 grad_fn jax.grad(loss_fn) def run_sgd(w0, lr0.05, steps80): w w0.copy() path [w.copy()] for _ in range(steps): g grad_fn(w) w w - lr * g path.append(w.copy()) return jnp.stack(path) def run_momentum(w0, lr0.05, beta0.9, steps80): w, v w0.copy(), jnp.zeros(2) path [w.copy()] for _ in range(steps): g grad_fn(w) v beta * v (1 - beta) * g w w - lr * v path.append(w.copy()) return jnp.stack(path) def run_adam(w0, lr0.05, b10.9, b20.999, eps1e-8, steps80): w, m, v w0.copy(), jnp.zeros(2), jnp.zeros(2) path [w.copy()] for t in range(1, steps 1): g grad_fn(w) m b1 * m (1 - b1) * g v b2 * v (1 - b2) * g**2 m_hat m / (1 - b1**t) v_hat v / (1 - b2**t) w w - lr * m_hat / (jnp.sqrt(v_hat) eps) path.append(w.copy()) return jnp.stack(path) w0 jnp.array([8.0, 3.0]) sgd_path run_sgd(w0) mom_path run_momentum(w0) adam_path run_adam(w0) # Plot fig, ax plt.subplots(figsize(8, 6)) w1 jnp.linspace(-10, 10, 100) w2 jnp.linspace(-4, 4, 100) W1, W2 jnp.meshgrid(w1, w2) L 0.5 * W1**2 10 * W2**2 ax.contour(W1, W2, L, levels20, cmapGreys, alpha0.4) ax.plot(sgd_path[:,0], sgd_path[:,1], o-, color#3498db, markersize2, linewidth1, labelSGD) ax.plot(mom_path[:,0], mom_path[:,1], o-, color#27ae60, markersize2, linewidth1, labelMomentum) ax.plot(adam_path[:,0], adam_path[:,1], o-, color#e74c3c, markersize2, linewidth1, labelAdam) ax.plot(0, 0, k*, markersize15, labelMinimum) ax.set_xlabel(w₁); ax.set_ylabel(w₂) ax.set_title(Optimizer Trajectories on Elongated Quadratic) ax.legend() plt.grid(alpha0.3) plt.show()10.4 任务四L1 vs L2 正则化的稀疏性对照构造 20 维数据其中只有前 3 个特征真实有效权重 $[3.0, -2.0, 1.5]$用梯度下降分别训练 RidgeL2直接在梯度中加 $2\lambda w$与 LassoL1梯度下降后接soft-thresholding 近端算子$w \leftarrow \text{sign}(w)\max(|w| - \eta\lambda, 0)$这就是 7.2 节L1 惩罚不可微、用近端算子处理的标准做法再统计两种方案的非零权重数量直观验证L2 收缩一切、L1 置零无关特征的差别。import jax import jax.numpy as jnp import matplotlib.pyplot as plt # Synthetic data: only first 3 of 20 features are relevant key jax.random.PRNGKey(0) n, d 200, 20 w_true jnp.zeros(d).at[:3].set(jnp.array([3.0, -2.0, 1.5])) X jax.random.normal(key, (n, d)) y X w_true 0.5 * jax.random.normal(key, (n,)) def train_ridge(X, y, lam1.0, lr0.01, steps2000): L2 regularised linear regression via GD. w jnp.zeros(X.shape[1]) for _ in range(steps): pred X w grad (2/len(y)) * X.T (pred - y) 2 * lam * w w w - lr * grad return w def train_lasso(X, y, lam1.0, lr0.01, steps2000): L1 regularised linear regression via proximal GD. w jnp.zeros(X.shape[1]) for _ in range(steps): pred X w grad (2/len(y)) * X.T (pred - y) w w - lr * grad # Soft thresholding (proximal operator for L1) w jnp.sign(w) * jnp.maximum(jnp.abs(w) - lr * lam, 0) return w w_l2 train_ridge(X, y, lam0.1) w_l1 train_lasso(X, y, lam0.1) fig, axes plt.subplots(1, 3, figsize(14, 4)) axes[0].bar(range(d), w_true, color#333, alpha0.7) axes[0].set_title(True Weights); axes[0].set_xlabel(Feature) axes[1].bar(range(d), w_l2, color#3498db, alpha0.7) axes[1].set_title(L2 (Ridge): shrinks all); axes[1].set_xlabel(Feature) axes[2].bar(range(d), w_l1, color#e74c3c, alpha0.7) axes[2].set_title(L1 (Lasso): zeros out irrelevant); axes[2].set_xlabel(Feature) plt.tight_layout() plt.show() print(fL2 non-zero weights: {int(jnp.sum(jnp.abs(w_l2) 0.01))}/{d}) print(fL1 non-zero weights: {int(jnp.sum(jnp.abs(w_l1) 0.01))}/{d})两个实现均取 $\lambda 0.1$、学习率 0.01、2000 步Lasso 的非零计数以 $0.01$ 为阈值与 L1驱动权重到精确零的稀疏性预期形成可验证对照。11. 小结本篇完整继承了 02. gradient machine learning.md 的全部核心脉络线性回归的 MSE 目标与正规方程 → 逻辑回归的 sigmoid 与 BCE → 梯度下降与三种批量策略 → 反向传播 → 动量/NAG/Adagrad/RMSprop/Adam/AdamW/LION/Muon 优化器谱系 → MAE/Huber/CCE/Hinge 损失函数与 L1/L2/Elastic Net 正则化 → 混淆矩阵、精确率/召回率/F1、ROC/AUC、$k$ 折交叉验证 → 偏差-方差权衡 → 学习率调度step decay/cosine/warmup/1cycle、超参调优grid/random/Bayesian/ASHA与 schedule-free learning。结合仓库上下文可以把它放进更大的知识版图数学基础在 chapter 02 - matrices/矩阵与分解与 chapter 03 - calculus/导数与优化概率与贝叶斯解释在 chapter 05 - probability/统计与评估方法在 chapter 04 - statistics/下一节 03. deep learning.md 将把本文的梯度机制扩展到多层非线性网络——反向传播与 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),仅供参考