尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
一元函数微分学:机器学习梯度下降与链式法则的数学根基
参加这次组队学习Task 03 刚好轮到一元函数微分学。说实话报名之前我以为这部分只是“复习一下高中导数”等真正看完讲义、做完作业才发现机器学习里那些看起来高深的概念往回追根溯源全在这一章里埋着。这篇文章就把我完成 Task 03 时梳理的知识脉络、实操心得和踩过的坑整理出来给同样在这个学习社区里推进度的同学也适合所有想补数学底子再入门机器学习的朋友。1. 为什么机器学习要学一元函数微分学很多人会有疑问机器学习动不动就是高维数据、矩阵运算我一个“一元函数”的导数学了有什么用这个想法我在刚开始也冒出来过直到组队学习里老师点了一句——“梯度下降里的梯度本质上就是导数在多维空间的推广”我一下子反应过来如果连一元导数都没吃透后面看梯度、雅可比矩阵纯粹是在看符号天书。1.1 损失函数与梯度下降的数学根源机器学习的核心逻辑其实很朴素定义一个损失函数衡量模型预测值与真实值的差距然后不断调整模型参数让这个差距越来越小。这个“不断调整”的过程就是优化。以最简单的线性回归举例。假设模型是 ŷ wx b我们常用均方误差作为损失函数L(w) (1/n) * Σ (wx_i b - y_i)²如果只看 w 这一个参数把其他东西看成常数那么 L(w) 就是关于 w 的一元函数。我们的目标是找到让 L(w) 最小的 w。怎么找高中就知道函数在极值点处导数为 0。所以我们求 L(w)令它等于 0解出 w——这就是最小二乘法的解析解。但现实里很多损失函数复杂到没办法直接解方程于是我们改用迭代法每次朝“让损失下降最快的方向”走一小步。这个方向恰恰就是导数梯度的负方向。参数更新公式w ← w - η · L(w)整个式子核心就是 L(w)也就是一元函数的导数。如果这个基础不牢后面不管是逻辑回归、神经网络还是各种正则化项理解起来都像在沙地上盖楼。1.2 从一元到多元本Task是机器学习数学的脚手架组队学习把一元函数微分学放在 Task 03逻辑上非常讲究。一元函数是理解“变化率”“局部线性逼近”“极值判定”的最简载体一旦搞明白这套思想后面的多元函数微分学、梯度向量、Hessian 矩阵都是在“一元导数”骨架上长出来的。举个例子神经网络的反向传播算法核心是链式法则。虽然网络动辄几百万参数但每次计算梯度时都是一层层地做导数乘法。你会看到∂L/∂w ∂L/∂a · ∂a/∂z · ∂z/∂w这就是链式法则的反复应用。如果你在 Task 03 里把一元复合函数求导练熟了看到这个式子只会觉得亲切如果没练熟那后面就是在不断查公式、背结论非常痛苦。所以这个 Task 表面是在学数学实际上是在给整个机器学习课程打地基。地基稳不稳直接决定后面能走多远。2. 本次Task的核心知识点拆解Task 03 的内容可以分成四块导数与微分的定义、求导法则、中值定理与泰勒公式、极值与凸性。每一块都不是孤立的它们在后续课程里的用途完全不同。2.1 导数定义与几何意义别只看公式要理解“瞬时变化率”导数的定义式是f(x) lim_{h→0} [f(xh) - f(x)] / h这个式子看起来简单但它其实在描述一个非常直观的场景函数 f(x) 在 x 这一点附近的平均变化率当 h 无限缩小时就变成瞬时变化率。几何上它对应的是曲线在 (x, f(x)) 处的切线斜率。这一点千万别只背结论一定要动手画图。我在学习时用代码画了 y x² 在 x 1 处的切线看到那条切线确实贴近曲线的一小段才真正理解“导数就是局部线性近似”这个说法。机器学习里到处都在用这个思想。比如梯度下降的每一步都是把损失函数在当前参数附近近似成一条直线或一个平面然后沿着这条直线往下走。如果导数都没弄明白后面理解“学习率太大导致 overshooting”这类现象时就只能靠死记硬背。还有个小细节很容易被忽略函数在某一点可导前提是左导数等于右导数。比如 y |x| 在 x 0 处是连续的但不可导。这个例子在组队学习群里被反复提起就是因为后面有些算法对不可导点特别敏感比如 ReLU 激活函数在原点附近的行为分析。2.2 基本求导法则与复合函数链式法则怎么也逃不掉这个 Task 里求导法则算是“基本功中的基本功”。我整理了一张自测表推荐你也试试能不能不看资料默写出来幂函数f(x) x^nf(x) n x^(n-1)指数函数f(x) e^xf(x) e^x对数函数f(x) ln xf(x) 1/x三角函数(sin x) cos x(cos x) -sin x这些公式看起来简单真正容易翻车的是复合函数求导。链式法则的内容是如果 y g(f(x))则 dy/dx g(f(x)) · f(x)我在做作业时反复错在一个地方求 e^(x²) 的导数时总是写着写着忘了把 2x 乘上去。后来我给自己定了一个机械化流程先看外层函数是什么对外层求导再把内层原样抄在括号里最后乘内层导数。比如d/dx e^(x²) e^(x²) · 2x这个口诀听起来笨但真的管用。尤其是机器学习里经常出现嵌套很深的复合函数比如 sigmoid 函数 σ(z) 1/(1e^(-z)) 的求导化简之后得到 σ(z) σ(z)(1-σ(z))。这个结论如果你直接从复合函数一步一步推会理解得非常透彻如果只是背结论后面推导交叉熵损失时会觉得很突兀。2.3 中值定理与泰勒展开机器学习的“近似工具”中值定理听起来像纯数学理论但它其实是机器学习里很多推导的理论基石。拉格朗日中值定理说如果 f(x) 在 [a, b] 连续在 (a, b) 可导那么存在 ξ ∈ (a, b)使得 f(ξ) [f(b) - f(a)] / (b - a)翻译成人话一段连续曲线上总有一个点的切线斜率等于整段曲线的平均变化率。这个定理我们在组队学习里没有要求会严格证明但它引出的泰勒展开才是真正高频使用的工具。泰勒公式是这么写的f(x) ≈ f(a) f(a)(x-a) (1/2!)·f(a)(x-a)² ...这个式子告诉你任何一个足够光滑的函数都可以用多项式来逼近。机器学习里这是个“万能近似器”的理论基础逻辑——你不需要完美还原函数只要能用简单的数学形式拟合到足够好。更直接的应用是梯度下降的收敛性分析。有时候我们能证明一个优化算法在某个条件下能收敛到局部最优靠的就是对损失函数做泰勒展开然后分析高阶项的影响。我在学习这里时觉得有点枯燥但后来看优化算法的论文发现满屏都是泰勒展开的影子。所以 Task 03 这部分一定要耐着性子啃完。2.4 极值与凸性判断为什么“局部最优”和“全局最优”差这么远极值问题在高中就学过求导、令 f(x)0、判断驻点附近单调性。但组队学习的讲义里专门强调了一个容易忽略的点——驻点不一定是极值点。y x³ 在 x 0 处导数为 0但既不是极小值也不是极大值而是拐点。判定极值必须看二阶导数f(x) 0极小值点f(x) 0极大值点f(x) 0需进一步判断这个知识点放到机器学习里对应的就是“局部最优和全局最优的问题”。深度学习里的损失函数往往是非凸的存在大量局部极小值和鞍点优化算法很容易困在里面。虽然现在有很多工程手段去缓解但理解“为什么会有这个问题”根源就在这一章。凸优化与凸函数也需要在这里建立直觉。凸函数满足f(λx₁ (1-λ)x₂) ≤ λf(x₁) (1-λ)f(x₂)意思是函数图像上的任意两点连线都在函数图像上方。凸函数的极大优势是局部极小值一定等于全局最小值。所以传统机器学习里很多模型都刻意设计成凸优化问题就是为了避免陷入局部极值。这个“设计模型时先看凸不凸”的思维早在一元函数微分学阶段就该养成。3. 实操过程与学习建议组队学习最大的好处是“有人带着有节奏有伙伴”。但这个节奏是双刃剑——跟不上就容易被甩开。我这次给自己定了个规矩每天动手推公式 跑一小段可视化代码而不是只看不练。3.1 组队学习节奏安排与任务拆解Task 03 我拆分成了差不多 7 天的量每天投入一到两小时第 1 天看视频和讲义理解导数定义与几何意义做对应的选择题和基础计算题。第 2 天练习求导法则重点练复合函数链式法则。这一天不用快但必须保证每种题型都至少亲手推一遍。第 3 天学习微分概念理解“以直代曲”的思想配合图像理解切线的意义。第 4 天深入中值定理和泰勒公式尝试自己推导第 2 阶泰勒展开并对比原始函数和泰勒近似的差异。第 5 天极值、最值、凹凸性与渐近线结合画图工具仔细观察曲线行为。第 6 天做作业的时候强迫自己每道题除了写答案还要在空白处写一句“这道题对应机器学习的哪个概念”。第 7 天整理错题回看讨论区的重点回复找一个小伙伴互相讲一遍核心知识点。这个节奏不一定适合所有人如果你本身在职、时间紧张至少保证第 2 天和第 6 天不能省。链式法则是理解后面一切梯度计算的基础而“联系机器学习场景”决定了你学的数学是活知识还是死公式。3.2 用可视化代码辅助理解光看公式很容易走神我强烈建议至少在学导数几何意义和泰勒展开这两个地方动手画一下图。下面是我在完成 Task 03 时写的一个小可视化脚本展示 f(x) x² 在 x1 处的切线import numpy as np import matplotlib.pyplot as plt def f(x): return x ** 2 def df(x): return 2 * x x np.linspace(-2, 2, 400) y f(x) x0 1.0 y0 f(x0) slope df(x0) tangent y0 slope * (x - x0) plt.figure(figsize(8, 5)) plt.plot(x, y, labelf(x) x^2, linewidth2) plt.plot(x, tangent, labelftangent at x{x0}, linestyle--) plt.scatter([x0], [y0], colorred, zorder5) plt.xlim(-2, 2) plt.ylim(-1, 4) plt.grid(True) plt.legend() plt.show()跑完这张图你可以清楚看到切线只在 x1 附近和曲线贴合离远一点就分开了。这就是“导数代表着局部信息”的直观体现——你用一个线性函数去近似非线性函数只能在“附近”成立。后面学习正则化、学习率衰减脑子里如果有这张切线图很多抽象描述都会变得具体。3.3 把作业题和机器学习场景一一对应组队学习的作业里有一道题让求 f(x) (x-3)² 2 的最小值。这道题看似基础我特意做了一张梯度下降迭代表验证自己是否真的理解了“沿负梯度方向更新”初始设 x 0学习率 η 0.1。f(x) 2(x-3)所以每一步更新x ← x - 0.1 · 2(x-3) x - 0.2(x-3)我手动迭代了 5 步迭代次数当前 x导数 f(x)更新后 x00.0-6.01.211.2-3.61.9221.92-2.162.35232.352-1.2962.611242.6112-0.77762.7667252.76672-0.466562.860032可以看到 x 在逐步逼近最优解 3。这个过程虽然简单但它就是机器学习中“梯度下降”的完整缩影。如果你愿意还可以换一个更大的学习率比如 η 0.5就会发现 x 开始在最优解附近震荡。这个小小的变换能把“学习率太大导致不收敛”这个现象提前暴露出来比单纯背理论印象深刻得多。我还尝试过用 SymPy 做符号求导来对答案比自己反复笔算高效很多。但注意工具只能帮你验证结果不能帮你练“手动拆复合函数”的肌肉记忆。import sympy as sp x sp.symbols(x) expr sp.exp(x ** 2) * sp.sin(x) print(sp.diff(expr, x))任务是用它来对照手算结果而不是替代手算。一旦发现结果不一致一定要回头重新拆解这个过程才是最涨功力的地方。4. 常见问题与避坑指南这一节把我在组队学习讨论区、以及自己做题过程中遇到的高频问题整理成速查表。每个问题背后都有人踩过坑提前看到就能省下不少时间。4.1 概念混淆速查表经常混淆的点区别要点典型例子导函数 vs 微分导数 f(x) 是变化率微分 dy f(x)dx 是变化量的线性近似yx² 的导数 2x在 x1 处 dx0.1 时 dy≈0.2极值点 vs 驻点驻点只是 f(x)0 的点不一定是极值点yx³ 在 x0 处是驻点但不是极值极大值 vs 最大值极大值是局部概念最大值是全局概念波浪函数有很多局部峰但只有一个全局最高点可导 vs 连续可导一定连续连续不一定可导y凹函数 vs 凸函数国内高数教材和国际教材对“凹凸”的定义经常相反组队学习按“f(x)0 为凸convex”f(x)x² 是凸函数最后一条“凹凸性定义”特别坑。因为你以后看国外资料convex function 就是国内有些教材说的“凹函数”。我在组队学习群里见过好几次因为这个争论而耽误进度的同学。建议你直接按“f(x) 的符号”来记忆别用中文的“凹”“凸”两个字自己脑补图像。4.2 计算中的细节失误我在批改自己练习时反复出现三类低级错误第一复合函数求导漏乘内层导数。比如求 sin(2x) 的导数很容易只写 cos(2x)忘了再乘一个 2。这个错误在练链式法则的前三天里几乎每个人都犯过解决方法只有一个——每一步先把内外层结构写清楚再开始求导。第二对商求导时符号和顺序出错。商法则公式是(u/v) (uv - uv) / v²注意是 uv 减 uv不是反过来。这个公式你用多了会发现只要中间有一步紧张很容易把减号写成加号。我自己的习惯是每次都把分子拆成“上导下不导减去下导上不导”这句话默念一遍。第三忽略函数的定义域。比如 ln(x²) 的导数按链式法则是 2x / x² 2/x这个结果在 x0 和 x0 时都成立但很多人因为盯着 ln 的定义域忽略了最终结果定义域的变化。这类问题不影响考试但在后面理解损失函数时会限制你对“模型输出范围”的敏感度。4.3 学习节奏与心态问题组队学习里最常见的挫败感是“老师讲完我都懂一做题就废”。我第二次做 Task 03 题目时仍然有这种感觉。后来发现问题出在“看答案太早”上。如果一道题看了 5 分钟没有思路不要急着点开答案先去翻讲义把相关例子抄一遍再合上笔记本重新写。这个“先输入再输出”的过程比直接背答案有效得多。另外组队学习时一定要参与讨论区的提问。我在群里看过一个特别好的提问方式把卡住的步骤截图标注“我按链式法则求到了这里接下来符号不知道怎么处理”。这种提问方式让回答的人能精准定位问题围观的人也跟着复习了一遍。相反那种直接拍题目说“这道题怎么做”的提问往往得不到高质量回复。4.4 关于“刷题”和“理解”的平衡其实 Task 03 的题量并不算多如果你只求做完可能三天就完成了。但我想提醒你这一章值得多花点时间“咀嚼”不要赶进度。组队学习后面还有多元函数微分、线性代数、概率论每一章都建立在前面章节的直觉上。我在完成一元函数微分学时额外做了一件事把每个核心概念尝试用自己的话解释一遍然后发给同组的小伙伴听。能讲明白的知识才是真正属于你的知识。这个习惯后来在 Task 04 里救了我一命——当我看到偏导数和梯度的定义时因为已经建立好“导数就是变化率”的直觉多元推广几乎没有任何认知负担。所以如果你现在正卡在这个 Task别急。慢慢把导数定义、链式法则、泰勒展开这三块吃透往后的路会越走越顺。我个人在学习中最深刻的体会是数学基础这个东西你欠下的每一笔债后面都会以“看不懂代码细节”或“公式推不出来”的方式连本带利地还回来。反过来每一分扎实投入都会在后续某个模型原理彻底想通的那一刻给你巨大的正反馈。最后分享一个小技巧学完这章后回去翻翻机器学习入门教材里的线性回归部分尝试用你刚学到的导数知识自己推导一遍均方误差损失对参数 w 的梯度。如果你能顺利推出来那 Task 03 就算真正学透了。这比多做十道求导题都管用。
RELATED

相关推荐

AI编程批量改造翻车实录:5分钟烧光5小时额度的惨痛教训

AI编程批量改造翻车实录:5分钟烧光5小时额度的惨痛教训

上周我干了一件特别蠢的事:拿Kimi Code去做一次大规模批量代码改造,结果5分钟烧光了699套餐里5小时的使用限额。更刺眼的是,我原计划处理的798个文件里,有745个是失败的,成功率不到7%。这745次失败不是在报错之后安静停…

📅 2026/10/22 22:20:49
STL vector内存管理:扩容、迭代器失效与性能优化

STL vector内存管理:扩容、迭代器失效与性能优化

说起STL vector,很多人的第一反应是“动态数组嘛,无非就是 push_back、size、capacity 那点事”。我以前也这么想,直到有一次调一个服务进程,眼看着内存曲线越走越高,查了两天才发现根因不在业务逻辑,而是一…

📅 2026/10/22 22:15:48
考虑老化的修正EKF电池SOC估计:Simulink复现与踩坑记录

考虑老化的修正EKF电池SOC估计:Simulink复现与踩坑记录

先提醒一句:这篇帖子标题里的“修正EKF”,如果读论文不够细,很容易被当成“改进的扩展卡尔曼滤波”这种泛泛的说法带过去。但真正动手复现之后你会发现,整篇论文的核心其实落在“考虑老化”四个字上——SOC估计的难点从来不是滤波…

📅 2026/10/22 22:15:48
MORE NEWS

更多资讯

📰

AI岗位暴涨12倍!小白程序员必备:收藏这份2026年高薪跳槽指南

2026年新经济行业招聘市场回温,AI岗位量同比增长12倍,成为招聘主角,平均月薪达60738元。职场门槛提升,岗位“去初级化”,AI能力成为标配。近六成职场人想跳槽,近半数期望涨薪超20%。大模型算法、产品经理等…

📰

具身智能协同演化动力学(120):TVA-World 协同架构虚实域适应机理研究

前沿技术探索:FRA核心定义与设计理念 FRA(Factorized Robotic Agent, FRA,亦称:因式分解机器人智能体)是一套因式化数实融合一体化新型智能系统,核心设计理念是全链路系统解耦,将机器人作业的感…

📰

服务器买了一台又一台?虚拟化到云计算的演进一次讲清

业务每上一个新项目就采购一批服务器,机器越堆越多,利用率却始终上不去——这是传统 IT 最典型的困境。本文沿「传统架构 → 虚拟化 → 云化」这条演进主线,讲清云计算的定义与五大特征,分清 IaaS / PaaS / SaaS 与公有云 / 私有云…

📰

2026年大模型AI校招薪资狂飙!顶尖年薪高达154万,非AI专业也能入行!

2026年AI校招薪资火爆,顶尖大模型算法岗月薪可达5.2万元,年薪最高达154万元。大厂抢人大战激烈,股票期权占比提升。学历不再是关键因素,实际项目经验和技能更受重视。非AI专业人士可通过AI产品、数据工程等方向入行,AI…

📰

企业小白程序员必看:AI 模型如何真正“懂业务”实现落地?

本文深入探讨了企业 AI 发展中普遍存在的“模型不懂业务”问题,指出传统数字化流程只是将企业信息翻译给软件,而 AI 时代需要模型理解现实世界。文章通过一个企业安全 Agent 案例,拆解了 AI 真正进入业务所需理解的五个关键层面:身…

📰

OpenAI 挨个通知了 100 多家组织:给 Agent 补一张出站责任清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬