Chapter 06

微分与导函数

微分表示某一点的瞬时变化率(斜率)。导函数是将其视为函数的形式,是深度学习梯度下降与反向传播的基础。

home.mathDiagramTitle

home.mathDiagramDescription

左:切线 — 在曲线上一点处仅接触一条的直线。其斜率就是该点处的导数。右:两点连线 — 过曲线上两点的直线。两点趋近时这条线趋近于切线,该极限就是导数。

在曲线 y=x2y=x^2 上取一点 (2, 4)。我们想量这一点的「斜率」。

导数就是切线的斜率。「两点连线斜率」在两点重合时的极限就是切线斜率。

什么是微分与导函数

一句话:微分就是曲线上某一点有多陡(斜率)的度量。在图像上取一点,过该点作切线,这条切线的斜率就是该点处的微分。横动一点时纵坐标变化有多快。
用式子写:这个斜率是「很近两点间的平均斜率」的极限。极限存在时就说在该点可微,记成导数(如 f(a)f'(a))。上面图示里切线的斜率就是这个导数。
导函数是把「每个点处的斜率」收集起来得到的函数。每个点有一个斜率,按位置排起来就是导函数。求导函数叫做求导
区分说明
下面常用的微分公式
'表示求导(导函数)。
公式说明
常数求导为 0
xnx^n前面乘 nn,指数变为 n1n-1
指数 exe^x求导仍为 exe^x
指数 axa^xaxlnaa^x \ln a
自然对数 lnx\ln x1/x1/x
对数 (底 a)1/(xlna)1/(x \ln a)
sin求导为 cos
cos求导为 sin-\sin
tan求导为 1/cos21/\cos^2
和/差各自求导后相加或相减
常数倍常数保留,只对里面求导
乘积法则(第一个的导数)×第二个 + 第一个×(第二个的导数)
商的法则(上导数×下 − 上×下导数) / 下的平方
直观(积)「第一个的导数×第二个」+「第一个×第二个的导数」。极限里拆开,两个变化相加就得到这两项。
直观(商)把商看成「上×(1/下)」用乘积法则。(1/下)的导数代入整理即得上面公式。
公式数值例子解题步骤
常数(5)'=0、(-3)'=0求导为 0
xnx^n(x3)=3x2(x^3)'=3x^2x=2x=2 时为 12指数乘到前面,指数变为 n1n-1
exe^xx=0x=0 时为 1,x=1x=1 时为 ee求导不变
axa^x(2x)=2xln2(2^x)'=2^x \ln 2乘以 lna\ln a
lnx\ln xx=5x=5 时为 1/51/5求导为 1/x1/x
sinx=0x=0 时为 1sin → cos
cosx=0x=0 时为 0cos → sin-\sin
(x2+x3)=2x+3x2(x^2+x^3)'=2x+3x^2逐项求导再相加
常数倍(5x2)=10x(5x^2)'=10x常数保留,只对 x2x^2 求导
(xex)=ex(1+x)(x\cdot e^x)'=e^x(1+x)(第一个的导数)×第二个 + 第一个×(第二个的导数)
x/(x2+1)x/(x^2+1)x=1x=1 时为 0(上导数×下−上×下导数)/下的平方 代入
日常生活中「斜率」表示「朝哪边、多快地变化」。比如下山时,最陡的方向就是「斜率最大的方向」。反过来,在谷底(最小值)山顶(最大值)处,既不算往上也不算往下,所以那里的斜率是零。所以找「最低点」「最高点」其实就是找「斜率为零的地方」。导数就是把这种「斜率」用式子精确写出来的东西。懂了导数,不仅能算「哪里最低、哪里最高」,还能算「往哪个方向走能最快下山」。
深度学习里会先定一个分数(损失)——比如预测离正确答案有多远——希望把它变小。分数越低说明模型越准。然后一点点调整模型里的很多数字(权重)来降低这个分数。但数字太多,没法一个一个试「这个加大、那个减小」。所以要用梯度。梯度能告诉我们:对每个数字来说,稍微增大它会让分数下降还是上升,稍微减小它又会怎样——和导数是同一个概念。根据这个再决定「要降分数,这个权重加大、那个减小」。懂导数就能解释「AI为什么会这样改这些数字」。
反向传播是从「答案(输出)」往输入方向倒着一步一步走,对每个权重算「损失会变多少」(即导数)的方法。模型有很多层(输入→第一层→…→输出),所以改一个权重,后面几层会依次变,最后损失才变。要沿着这种「一环扣一环」的变化做求导,就要用复合函数求导(链式法则)。本章学的导函数和公式会原样用上,这里学扎实了后面会轻松很多。
一般说来,导数衡量的是「把这个值稍微改一点,结果会变多少、往哪边变(变大还是变小)」。所以凡是要决定「这个数该加大还是减小」时都会用到。比如:气温升高时销量会升还是降?涨价时需求会降多少?多投广告费时营收会多多少?——这类「改一点某一项时,另一项会多少、往哪边变」都可以用导数来量。
AI训练时,「每个权重该改多少、往哪边改」由损失对这个权重的导数决定。我们想降低损失(分数),但权重有成千上万个,没法一个一个试。所以用导数来算「这个权重稍微加大一点,损失会下降还是上升」。掌握本章的微分法则(和、积、商、链式),就能看懂反向传播的式子,后面再扩展到偏导数与梯度(Ch08)。
求导时,先看适用哪些法则(幂、指数、对数、三角、积、商、链式),再按法则写并化简。
例题解答见下表。
问题解答
例1. f(x)=x32xf(x)=x^3-2x 的导函数幂与和:f(x)=3x22f'(x)=3x^2-2
例2. g(x)=exlnxg(x)=e^x \ln x 的导函数乘积法则:exlnx+ex1xe^x \ln x + e^x \cdot \frac{1}{x}
例3. h(x)=sinxxh(x)=\frac{\sin x}{x} 的导函数商的法则:cosxxsinxx2\frac{\cos x \cdot x - \sin x}{x^2}