2026/5/21 10:37:04
网站建设
项目流程
网站目录做跳转,wordpress主题外贸网站,运营和营销有什么区别,石家庄网站推广专家#x1f4fa; B站视频讲解#xff08;Bilibili#xff09;#xff1a;博主个人介绍
#x1f4d8; 《Yocto项目实战教程》京东购买链接#xff1a;Yocto项目实战教程
#x1f4d8; 加博主微信#xff0c;进技术交流群#xff1a; jerrydev 把微积分讲成深度学习的“方…B站视频讲解Bilibili博主个人介绍《Yocto项目实战教程》京东购买链接Yocto项目实战教程加博主微信进技术交流群jerrydev把微积分讲成深度学习的“方向盘”导数、偏导、梯度与链式法则一篇打通D2L 2.4 学习笔记目标用新手也能跟上的方式把本章出现的核心概念一次讲清楚你到底在求什么变化率 / 斜率 / 方向关键符号怎么读f′、dy/dx、∂、∇、nabla深度学习里它们怎么用损失函数、优化、反向传播的“数学底座”阅读建议先把「工具箱地图」看完再逐节看例子最后用「记忆卡片」做复习。1. 为什么深度学习离不开微积分微积分有两条主线积分从“把很多小块加起来”得到面积/总量历史上用逼近法逼近圆面积就是经典出发点。微分研究“变化的速度”和“如何把事情做得更好”。在深度学习里你每天都在做一件事定义一个模型给它一个损失函数loss function衡量“模型有多糟糕”。通过训练让损失变小这本质就是一个**优化optimization**问题。而优化的核心动作只有一个沿着让损失下降最快的方向走一小步。这个“下降最快的方向”怎么来的——靠导数/偏导/梯度。所以这一章可以把它当成深度学习的“方向盘与油门”导数 / 梯度告诉你方向往哪走会下降。学习率后面章节决定你每次走多远。2. 本章的最小工具箱地图先建立全局你只需要抓住四个关键词导数Derivative单变量函数的变化率。偏导数Partial derivative多变量函数里只看某一个变量的变化率。梯度Gradient把所有偏导数拼成一个向量——它直接给出“最陡方向”。链式法则Chain rule处理复合函数的求导规则——神经网络的结构几乎全是复合。如果把函数看作一个“系统”那么导数系统对一个输入旋钮的敏感度偏导系统对某一个输入旋钮的敏感度其他旋钮先固定梯度系统对所有输入旋钮的敏感度集合链式法则系统由多个模块串起来时敏感度如何“沿着模块链条传递”后面你会发现反向传播 链式法则 计算图的有序传播。3. 2.4.1 导数与微分从“割线”走向“切线”3.1 变化率为什么会有“导数”先从直觉开始。假设你有一个函数 (yf(x))。你想知道(x) 增加一点点时(y) 会变化多少如果我们只看两个点(x) 和 (xh)那么“平均变化率”割线斜率是[\frac{f(xh)-f(x)}{h}]当 (h) 越来越小这个“平均变化率”就越来越接近某个极限——这就是瞬时变化率。3.2 导数的定义你要背下来的第一条公式在点 (a) 处的导数定义为[f’(a)\lim_{h\to 0}\frac{f(ah)-f(a)}{h}]这句话可以翻译成让 (x) 往右挪一个很小的 (h)看输出变化除以输入变化当 (h) 逼近 0 时得到极限。3.3 导数的“读法”和“符号大全”同一个导数经常会看到很多写法。你至少要认得它们(f’(x))读作“f prime of x”f 的撇或“f 在 x 的导数”(y’)读作“y prime”(\frac{dy}{dx})读作“d y d x”也常被中文口语读成“dy 比 dx”(\frac{df}{dx})读作“d f d x”(\frac{d}{dx} f(x))读作“对 x 求导的算子作用在 f(x) 上”(Df(x))、(D_x f(x))读作“D f”或“D sub x f”更偏线性代数/算子风格记忆技巧看到prime撇多半是导数。看到d/dx明确“对谁求导”。看到D把导数当作“一个操作”。3.4 常用求导规则背核心不背废话下面这几条就是本章“单变量求导”的工具箱常数导数为 0[\frac{d}{dx}C0]幂函数幂律[\frac{d}{dx}x^n n x^{n-1}]指数函数[\frac{d}{dx}exex]对数函数[\frac{d}{dx}\ln x\frac{1}{x}]线性性质常数倍 加法[\frac{d}{dx}[C f(x)] C f’(x)][\frac{d}{dx}[f(x)g(x)] f’(x)g’(x)]乘法法则[\frac{d}{dx}[f(x)g(x)] f(x)g’(x) g(x)f’(x)]除法法则[\frac{d}{dx}\left[\frac{f(x)}{g(x)}\right]\frac{g(x)f’(x)-f(x)g’(x)}{[g(x)]^2}]记忆技巧乘法“前不动导后 后不动导前”。除法“下乘上导 - 上乘下导 / 下平方”上、下指分子/分母。3.5 一个贯穿示例(f(x)3x^2-4x)先求导[f’(x) 3\cdot 2x - 4 6x-4]在 (x1) 处[f’(1)6\cdot1-42]用数值逼近理解“极限”你可以用差商((f(1h)-f(1))/h)让 (h) 一直缩小看它趋近于 2。importnumpyasnpdeff(x):return3*x**2-4*xdefnumerical_lim(f,x,h):return(f(xh)-f(x))/h h0.1for_inrange(5):print(h,numerical_lim(f,1.0,h))h*0.1你会看到(h) 从 0.1 缩小到 0.00001 时数值会越来越接近 2。这件事的意义导数不是“玄学符号”它是“把变化率压到极限”得到的量。3.6 导数的几何意义切线斜率与局部线性导数在点 (a) 的另一个解释它是曲线在该点的切线斜率。更实用的是“局部线性近似”[f(x) \approx f(a) f’(a)(x-a)]这句话非常重要因为它解释了为什么很多优化算法可以靠“线性近似”一步步逼近最优。4. 2.4.2 偏导数多变量函数怎么“只对一个变量求导”深度学习里常见的函数不是 (yf(x))而是[yf(x_1, x_2, \dots, x_n)]比如损失 (L) 可能同时依赖成千上万个参数。4.1 偏导数的核心思想偏导就是“只让 (x_i) 变一下其他变量先当常数。”定义你要认得的第二条公式[\frac{\partial y}{\partial x_i}\lim_{h\to 0}\frac{f(x_1,\dots,x_ih,\dots,x_n)-f(x_1,\dots,x_i,\dots,x_n)}{h}]4.2 偏导数的符号与读法(\frac{\partial y}{\partial x_i})读作“partial y partial x i”偏 y 偏 x_i(\frac{\partial f}{\partial x_i})读作“partial f partial x i”(f_{x_i}) 或 (f_i)读作“f sub x_i”或 “f sub i”简写(D_i f)、(D_{x_i}f)算子写法记忆技巧看到(\partial)弯弯的 d就是偏导。很多新手混淆 d 与 ∂d通常用于单变量/全微分语境。∂明确告诉你“多变量只对其中一个变量求”。4.3 一个例子(f(x_1,x_2)3x_125e{x_2})对 (x_1) 的偏导[\frac{\partial f}{\partial x_1}6x_1]对 (x_2) 的偏导[\frac{\partial f}{\partial x_2}5e^{x_2}]注意观察求 (\partial/\partial x_1) 时(x_2) 被当作常数。求 (\partial/\partial x_2) 时(x_1) 被当作常数。5. 2.4.3 梯度把“所有偏导”拼成一个向量偏导告诉你“某个方向”的变化率但在优化里你想要的是所有方向里往哪走下降最快这需要一个向量——梯度。5.1 梯度的定义第三条必须熟悉的公式设 (f:\mathbb{R}^n\to\mathbb{R})输入 (\mathbf{x}[x_1,\dots,x_n]^\top)输出是一个标量。梯度定义为[\nabla_{\mathbf{x}} f(\mathbf{x})\Big[\frac{\partial f}{\partial x_1},\frac{\partial f}{\partial x_2},\dots,\frac{\partial f}{\partial x_n}\Big]^\top]5.2 梯度符号怎么读(\nabla)读作“nabla”也有人读“del”但深度学习里常用 nabla(\nabla f)读作“nabla f”或 “f 的梯度”(\nabla_{\mathbf{x}} f)读作 “对 x 的梯度”记忆技巧(\nabla) 像一个“倒三角”可以记成“方向箭头的集合”。5.3 梯度的意义最陡上升与最陡下降一个非常关键的事实梯度方向是函数上升最快的方向。负梯度方向是函数下降最快的方向。所以你会在优化里反复看到更新[\mathbf{x} \leftarrow \mathbf{x} - \eta \nabla f(\mathbf{x})]其中 (\eta) 是学习率步长。5.4 你在深度学习里会常见的梯度结果下面三条在推导里经常出现先认识即可二次型[\nabla_{\mathbf{x}}, \mathbf{x}^\top\mathbf{A}\mathbf{x} (\mathbf{A}\mathbf{A}^\top)\mathbf{x}]特别地如果 (\mathbf{A}) 是对称矩阵(\mathbf{A}\mathbf{A}^\top)那就变成 (2\mathbf{A}\mathbf{x})。向量二范数平方[\nabla_{\mathbf{x}}|\mathbf{x}|^2 2\mathbf{x}]矩阵的 Frobenius 范数平方[\nabla_{\mathbf{X}}|\mathbf{X}|_F^2 2\mathbf{X}]5.5 一个最小 PyTorch 体验梯度不是“算出来”是“传出来”下面这段代码让你感受框架会帮你自动算梯度下一节 2.5 会系统讲自动微分。importtorch xtorch.tensor([1.0,2.0,3.0],requires_gradTrue)# f(x) ||x||^2 x1^2 x2^2 x3^2f(x*x).sum()f.backward()# 触发反向传播print(x.grad)# 期望是 2x输出会是 ([2,4,6])对应 (2\mathbf{x})。6. 2.4.4 链式法则复合函数的“梯度传递公式”你在神经网络里看到的结构大多是[\text{输入} \rightarrow \text{线性变换} \rightarrow \text{激活函数} \rightarrow \text{再线性} \rightarrow \dots \rightarrow \text{损失}]这是一串复合函数。只靠“幂律、加法法则”会很痛苦。链式法则就是解决方案。6.1 单变量链式法则第四条必须熟悉的公式若 (yf(u))(ug(x))则[\frac{dy}{dx}\frac{dy}{du}\frac{du}{dx}]直觉x 变一点点 → u 变多少 → y 再跟着变多少。记忆技巧非常好用“上游梯度 × 局部梯度”。6.2 多变量链式法则深度学习更常用假设(y) 依赖 (u_1,\dots,u_m)每个 (u_j) 又依赖 (x_1,\dots,x_n)那么对任意 (x_i)[\frac{\partial y}{\partial x_i}\sum_{j1}^{m}\frac{\partial y}{\partial u_j}\frac{\partial u_j}{\partial x_i}]这就是反向传播里“把梯度从后往前累加”的数学原因。6.3 一个新手必练的链式法则例子令(u 3x^2-4x)(y u^2)求 (dy/dx)。步骤(dy/du 2u)(du/dx 6x-4)所以[\frac{dy}{dx}\frac{dy}{du}\frac{du}{dx}2u(6x-4)2(3x^2-4x)(6x-4)]这就是“模块串联梯度相乘”。6.4 一个更贴近深度学习的“多变量”链式例子令(u_1 x_1^2 x_2)(u_2 e^{x_2})(y u_1\cdot u_2)你要算 (\partial y/\partial x_1) 与 (\partial y/\partial x_2)。先算局部偏导(\partial y/\partial u_1 u_2)(\partial y/\partial u_2 u_1)(\partial u_1/\partial x_1 2x_1)(\partial u_1/\partial x_2 1)(\partial u_2/\partial x_2 e^{x_2}u_2)(\partial u_2/\partial x_1 0)然后套多变量链式[\frac{\partial y}{\partial x_1}\frac{\partial y}{\partial u_1}\frac{\partial u_1}{\partial x_1}\frac{\partial y}{\partial u_2}\frac{\partial u_2}{\partial x_1}u_2\cdot 2x_1 u_1\cdot 02x_1 e^{x_2}][\frac{\partial y}{\partial x_2}\frac{\partial y}{\partial u_1}\frac{\partial u_1}{\partial x_2}\frac{\partial y}{\partial u_2}\frac{\partial u_2}{\partial x_2}u_2\cdot 1 u_1\cdot u_2 e{x_2}(1x_12x_2)]你会发现(x_2) 会通过两条路径影响 y影响 u1也影响 u2所以要“相加”。(x_1) 只通过 u1 影响 y所以路径更简单。这就是计算图里“多条路径的梯度要相加”的根源。7. 小结你现在应该能一口气说清楚什么学完这一章你至少要能做到看到导数定义知道它是“极限下的变化率”。看到偏导符号 (\partial)知道“只对一个变量求导”。看到梯度 (\nabla)知道它是“所有偏导组成的向量”并能说出“负梯度下降最快”。看到链式法则知道它是“复合函数的梯度传递规则”并理解它支撑了反向传播。8. 本章练习给你一份“可直接对照”的解题版提示以下解答是根据题意进行推导与讲解重点是训练你把“公式→操作流程”串起来。练习 1画 (yx^3-\frac{1}{x}) 以及 (x1) 处切线先求导[y’ 3x^2 \frac{1}{x^2}]在 (x1) 处(y(1)1-10)(y’(1)314)切线公式[y \approx y(1) y’(1)(x-1) 0 4(x-1)4x-4]画图Pythonimportnumpyasnpimportmatplotlib.pyplotasplt xnp.linspace(0.2,2.5,400)yx**3-1/x tnp.linspace(0.2,2.5,400)line4*t-4plt.plot(x,y,labely x^3 - 1/x)plt.plot(t,line,labeltangent at x1)plt.scatter([1],[0])plt.legend()plt.grid(True)plt.show()练习 2(f(\mathbf{x})3x_125e{x_2}) 的梯度df/dx1(6x_1)df/dx2(5e^{x_2})所以[\nabla f [6x_1,\ 5e{x_2}]\top]练习 3(f(\mathbf{x})|\mathbf{x}|_2) 的梯度设 (\mathbf{x}\neq 0)。[|\mathbf{x}|_2 \sqrt{x_12\cdotsx_n2}]对每个分量[\frac{\partial}{\partial x_i}|\mathbf{x}|_2 \frac{x_i}{|\mathbf{x}|_2}]所以[\nabla |\mathbf{x}|_2 \frac{\mathbf{x}}{|\mathbf{x}|_2}]注意在 (\mathbf{x}0) 处不可导严格意义上梯度不存在这在优化里会引出“次梯度”等概念后面优化章节会遇到类似思想。练习 4写出 (uf(x,y,z))且 (xx(a,b))、(yy(a,b))、(zz(a,b)) 的链式法则目标(u) 最终是 (a,b) 的函数。对 (a)[\frac{\partial u}{\partial a}\frac{\partial u}{\partial x}\frac{\partial x}{\partial a}\frac{\partial u}{\partial y}\frac{\partial y}{\partial a}\frac{\partial u}{\partial z}\frac{\partial z}{\partial a}]对 (b)[\frac{\partial u}{\partial b}\frac{\partial u}{\partial x}\frac{\partial x}{\partial b}\frac{\partial u}{\partial y}\frac{\partial y}{\partial b}\frac{\partial u}{\partial z}\frac{\partial z}{\partial b}]这就是“多条路径影响同一个输出 → 梯度相加”的标准形式。9. 记忆卡片把这一章变成“随手能背的公式组”9.1 四件套最小闭环导数定义(f’(a)\lim_{h\to 0}\frac{f(ah)-f(a)}{h})偏导定义(\frac{\partial y}{\partial x_i}\lim_{h\to 0}\frac{f(\dots,x_ih,\dots)-f(\dots,x_i,\dots)}{h})梯度定义(\nabla f[\partial f/\partial x_1,\dots,\partial f/\partial x_n]^\top)链式法则单变量(dy/dx(dy/du)(du/dx))多变量(\partial y/\partial x_i\sum_j (\partial y/\partial u_j)(\partial u_j/\partial x_i))9.2 常用求导规则单变量(dC/dx0)(d(x^n)/dx n x^{n-1})(d(e^x)/dx e^x)(d(\ln x)/dx 1/x)(d(Cf)/dx C f’)(d(fg)/dx f’g’)(d(fg)/dx f g’ g f’)(d(f/g)/dx (g f’ - f g’)/g^2)9.3 一句“深度学习翻译”梯度损失对参数的敏感度向量。负梯度损失下降最快方向。链式法则梯度在网络层之间传播的规则。10. 前瞻下一章“自动微分”你会学到什么当网络很深、函数很复杂时手推梯度会非常痛苦。下一章你会看到框架把函数拆成很多“基本算子”加、乘、exp、matmul…给每个算子准备“局部梯度”用链式法则在计算图上把梯度从输出一路传回输入反向传播所以你现在学的这一章等价于在给自动微分“打地基”你不需要每次都手算但你必须看得懂梯度到底在表达什么。结语本章你最该获得的能力如果你只记住一句话导数/偏导/梯度负责告诉你“怎么变会变好”链式法则负责让你在“复杂结构”里仍然能算出这个方向。当你真正把这句话消化掉后面的优化算法、反向传播、自动微分会顺很多。B站视频讲解Bilibili博主个人介绍《Yocto项目实战教程》京东购买链接Yocto项目实战教程加博主微信进技术交流群jerrydev