第2章 导数
Tip
实际问题中人们经常会考虑某个函数的极值, 函数的切线方向是分析函数极值的有力工具:
切线斜率为正时函数单调递增
切线斜率为负时函数单调递减
切线斜率为零时函数取到极值
那么怎么求函数在某处切线的斜率呢? 这个问题困扰了数学家好多年, 直到后来有人发现切线斜率可以看作是一个极限, 这个极限就叫做导数.
Tip
思维导图
导数是一种通过极限定义的运算, 由此可见极限的重要性, 在后面的章节中, 我们还将从极限出发引出积分的概念. 本课程各部分内容之间的关系如图.

2.1 导数和导函数
Tip
导数是函数某处的切线斜率, 是研究函数性质的重要工具.
问题: 求使得函数 最大的的 的值.
求解: 的图像如图, 问题要求我们找到图像的最高点, 从图像上看函数的最高点处的切线是水平的(即斜率为0), 为了计算斜率我们可以对函数求导, 得到:
再令 ,解得切线水平的地方位于:
所使得函数 最大的 .

2.1.1 导数的定义
Important
导数的定义
导数是切线的斜率,而切线的斜率可以定义为割线在割距趋于 0 的斜率的极限。
设函数 在点 附近有定义,则过点 和 的割线斜率为
当 时,这个割线斜率的极限(若存在)就是切线的斜率,也即导数:
这样,切线的斜率和导数都通过极限的方式被严格定义。

[!extension]
切线的数学定义
早期,古希腊数学家如欧几里得和阿波罗尼斯主要用几何方法描述切线,把切线看作“只与曲线在一点相交且不过该点的直线”。但这种定义对复杂曲线(如圆外的曲线)不适用。
直到17世纪,笛卡尔和费马等人提出了代数方法,尝试用斜率和代数方程描述切线。牛顿和莱布尼茨发明微积分后,才用“割线的极限”来严格定义切线斜率,也就是现代导数的定义。
所以,现代切线的定义必须依靠极限,因为只有极限才能精确描述“割线趋近于切线”的过程,从而适用于所有光滑曲线。没有极限,切线的定义就不够一般和严密。
Note
由定义计算导数
例1: 求 在 处的导数.
解: 根据导数的定义:
Note
例2: 求 在 处的导数.
解:根据导数的定义:
2.1.2 导函数
Important
对函数 定义域上的每一点都求导 (假设每一点的导数都存在), 得到一个新的函数, 称为导函数, 记作 . 导函数是由 衍生出来的, 正好和 Derivative (导数) 的意思一致.
Caution
Derivative(金融衍生品)
数学中的“导数”(Derivative)是由原函数“衍生”出来的新函数,反映原函数的变化率。
金融中的“衍生品”(Derivative)是指价值依赖于其他基础资产(如股票、债券等)的金融工具。期权(Option)是一种金融衍生品,允许持有者以指定价格来购买股票。
类比:
Note
例3: 求函数 的导函数.
解:

Note
例4: 求函数 的导数.
解:

2.1.3 幂函数, 对数函数和指数函数的导数
Note
幂函数的导数
例5: 求正整数次幂函数 的导数.
解:
当 时:
当 时:
考虑到 , 上面两种情况可以统一为
Warning
我们不加证明的指出, 上述公式对任意的 都成立, 即
Note
先导结论
在计算指数函数和对数函数的导数时我们需要用到下面的结论. 我们可以把他们当作求极限的练习题.
先导结论1:
证明: 利用重要极限的结论,
先导结论2:
证明: 利用对数换底公式,
Important
对数函数的导数
求对数函数 的导数, 其中 是大于 0 且不等于 1 的常数.
解:
利用换底公式 ,
令 ,当 时 ,则:
注: 最后一步用到了上面的先导结论.
由此我们得到对数函数的导数为:
Warning
特别的, 当 时, , 此时
Important
指数函数的导数
求指数函数 的导数,其中底数 是大于 0 且不等于 1 的常数.
解:
我们注意到当 时,
而 , 于是我们把 看作一个新的变量 , 故此时有当 时 .
于是根据极限运算的换元法
上式中的最后一个等式用到了前面的先导结论.
因此,
这就是指数函数的导数公式。
Warning
特别的, 当 时,有
也就是说, 以欧拉数 为底数的指数函数的导数正是它自己, 由此也可以看出 在数学上的特殊性.
2.1.4 可导函数与连续函数
Caution
连续与可导的关系
处处可导的函数称为可导函数, 处处连续的函数称为连续函数. 函数在一点可导则在该点也必连续, 但函数在一点连续并不保证在该点可导.
Note
连续但不可导的反例1
绝对值函数 在 0 点连续但不可导.
绝对值函数在 处是连续的. 在 处,
当 时, ;
当 时, ,
左右极限不相等,故极限不存在, 因此,函数 在 处不可导.

连续但不可导的反例2
函数 在 0 点处连续但不可导.
函数在 处连续. 下面我们来计算该函数在 处的导数.
当 时,极限趋于无穷大,故函数在 处不可导.
根据幂函数的求导公式可以得到
当 时, 导函数 趋于无穷大, 提示 可能不存在. 需要特别指出, 上述对导数取极限的做法主要提供一个感性认识(直觉), 要严格证明导数在 0 点不存在还是需要根据定义计算.
注意:
上述两种方法都涉及到极限, 但是取极限的对象不同, 方法一中是对 取极限, 而方法二中是对 取极限, 尽管都趋于无穷大(而且指数项都是 ), 但两者的意义是不一样的, 请注意体会.

2.1.5 单侧导数
Important
单侧导数
在计算绝对值函数在 0 点的导数时, 我们注意到 在 0 点左右两侧的切线斜率都存在, 为了更加细致的分析函数的行为, 我们可以引入单侧导数的概念.
我们定义函数 在 处的左导数
和右导数
左导数和右导数统称为单侧导数, 函数 在点 处可导的条件是左导数和右导数都存在且相等.
对绝对值函数在 点处而言, 其单侧导数都存在, 但是不相等, 因此在该点并不可导.
2.2 导数的计算
Tip
求给定函数的导数的操作称为求导运算。本节将介绍常见函数的求导公式与导数的四则运算法则。熟练运用这些法则,将能显著简化求导过程,提高运算效率。
2.2.1 初等函数求导公式
Important
常见初等函数的求导公式
幂函数
指数函数
对数函数
三角函数
反三角函数 (不要求)
如果 ,则:
如果 ,则:
如果 ,则:
2.2.2 导数的四则运算
Tip
下面的导数四则法则都可以根据导数的定义加以证明.
Important
导数的四则运算法则
证明:
根据导数的定义:
该性质的证明跟导数的加法运算完全类似.
证明:
根据导数的定义:
证明: 可以看作 与 的乘积, 而 可以看成是函数 与 的复合. 于是我们可以联合复合函数求导和上面的乘法求导法则来推导上述除法求导公式.
Note
例1: 求函数 的导数.
解:
Note
例2: 求函数 的导数.
解:
Note
例3: 求函数 的导数 及
解:
Note
例4: 求函数 的导数.
解:
2.2.3 高阶导数
Tip
导函数也是函数, 所以可以继续对导函数求导, 也就是二阶导数. 二阶导数反应了导函数的变化率. 依次可以继续到三阶导数, 四阶导数, ...
Important
二阶导数
高阶导数
, , , , .
Note
例1: 设 ,求
解:
一阶导数:
二阶导数:
Note
例2: 求幂函数 ( 是任意常数) 的 阶导数
解:
一般的,
特别的, 当 为整数时,
Warning
导数与物体运动
在物理中, 给定位移关于时间的函数 , 物体的速度 便是 的导数.
我们来看两个例子.
自由落体运动

从静止开始的自由落体物体, 其位移随时间的函数为
该物体的速度对应 的导数, 即
其加速度对应 的导数, 或 的二阶导数,
所以自由落体为加速度等于 的匀加速直线运动. 这与自由下落物体的牛顿第二定律 是吻合的.

简谐振动

连结弹簧的小球在光滑水平面上围绕平衡位置做震荡运动, 其位移随时间的函数为
其瞬时速度为 的导数, 即
其加速度对应 的导数, 或 的二阶导数,
对 , , 小球的位移, 速度和加速度如下图.

注意, 加速度和位移满足关系
其中常数 . 而另一方面, 由胡克定律和牛顿第二定律, 我们可以得到小球的运动方程为
可见我们刚才从运动方程中的到的加速度与位移的关系与牛顿定律的结论是吻合的(在相差一个可约化的常数 的意义下).
2.3 利用导数来研究函数的性质
2.3.1 单调性
Important
导数, 单调递增;
导数, 单调递减;
导数, 无法判断.
Note
例1: 讨论函数 在 上的单调性
解: 函数在 上连续,在 内可导. 求导得
故函数 在 上单调递增
Note
例2: 讨论函数 的单调性
解: 对函数求导得
当 时, , 故函数在 上单调递减;
当 时, , 故函数在 上单调递增.
2.3.2 极值
Important
导数为 的点也称为驻点或临界点, 在临界点处:
二阶导数 极小
二阶导数 极大
二阶导数 无法判断.
Note
例1: 求函数 的极值
解:令一阶导数等于0, 得到方程
其根(临界点)为
的二阶导数为
下面计算临界点处的二阶导数值:
, 为极大值,此时 .
, 为极小值,此时 .
, 为极小值,此时 .
[!important]
闭区间上连续函数最值的求解步骤
设 在 上连续,则其最大值和最小值可按以下步骤求解:
确定临界点:
计算候选值:
计算驻点、不可导点处的函数值 ;
计算端点值 和 .
比较结果:选出最大值和最小值
Warning
光路最短原理与微积分应用
例1:饮马路径问题(均匀速度)
问题:假设马以均匀速度行进, 现需骑马从点 到点 , 但必须先去河边(直线)喝一次水. 已知点 和点 在河的同侧, 求耗时最短的路径.
建立坐标系:
设河边为 轴.
点 坐标为 , 点 坐标为 , 其中 .
设饮水点为 ,其中 .

解法一
路径总长度 为:
对 求导:
令 , 得:
不难解出
解法二
将点 关于 轴(河边)反射到点 , 坐标为 .
连接点 和点 , 与 轴的交点即为饮水点 , 根据三角形相似, 同样可得
这个方法利用了镜面反射原理, 基于直线最短得到了快速直观的解法.

例2:饮马路径问题 (不同速度)
问题:现需骑马从点 到点 , 但必须先去河边(直线)喝一次水. 已知点 和点 在河的同侧, 且马在喝水前速度为 , 喝水后速度为 , 求耗时最短的路径.
注意: 对这个题目而言, 镜面反射原理就不适用了, 但微积分方法仍然适用.
解:总时间等于:
对 求导得:
令 , 得:
这个方程并不好解, 在这里我们不去直接解这个方程, 而是计算下图中 和 这两个角度之间的关系. 从公式(1)我们得到

这是个很有意思的结果, 事实上, 上述变速度的路径问题与光的折射路径问题是等价的: 考虑一束光线从空气中的点 出发, 经过水面折射后到达水中的点 . 已知光在空气中和水中的传播速度分别为 和 , 根据斯涅耳定律(Snell's Law), 光线的入射角和出射角恰好满足公式(2)! 它精确地描述了光线在两种介质交界面上发生折射时的行为.
可见, 运用微积分中通过导数来求极值的方法, 我们实际上再次发现了光路最短原理(费马原理,Fermat's Principle), 它是几何光学中最基本、最重要的原理之一, 它指出光在两点之间传播时, 所走的路径是光程最短的路径, 而非距离最短的路径. 这个例子很好地说明了如何利用微积分来证明光学中的基本定律, 体现了数学工具在物理学中的强大应用.

2.3.3 凸性
Important
凸函数的定义
如果函数 满足: 对于定义域内任意的 ,都有
则称函数 是凸函数。
更一般地,对于任意 ,都有:
这称为Jensen不等式,是凸函数的等价定义。
与凸函数相对的, 我们还有凹函数的概念. 如果在上面的定义中把不等号反向, 我们就得到了凹函数的定义. 不难发现, 讨论函数 的凹性等价于讨论函数 的凸性, 所以我们有凸性的定义就够用了.
注意:这里采用的是国际通用的凸函数定义("凸"对应英文的"convex"),与某些国内教材的定义可能相反。
Warning
凸函数的几何意义

弦在图像上方:凸函数图像上任意两点间的弦(连接这两点的线段)始终位于函数图像之上或与之重合。
切线在图像下方:对于可导的凸函数,其图像上任意一点的切线都位于函数图像之下。
局部极小即全局极小:凸函数的任何局部极小值点都是全局极小值点,这一性质在优化问题中极为重要。
Important
根据二阶导数判定函数的凸凹性
对于二阶可导的函数 :
若在区间 上 ,则 在 上是凸函数
若在区间 上 ,则 在 上是凹函数
若在区间 上 ,则 在 上是严格凸函数
若在区间 上 ,则 在 上是严格凹函数
Warning
凸函数的性质
凸函数的局部极小值就是全局极小值.
严格凸函数若有极小值,则极小值点唯一.
凸函数的良好性质使其在优化理论中占据核心地位:
Note
例1: 判断函数 的凹凸性
解:函数的一阶导数和二阶导数分别为
在函数定义域 内 ,故 为凹函数。
Note
例2: 判断函数 的凹凸性
解:计算二阶导数:,故 为凸函数。
Note
例3: 判断函数 的凹凸性
解:计算二阶导数:,故 为凹函数。
Warning
保凸运算
定理: 若 都是凸函数,且 ,则函数
也是凸函数。
几何解释:见下面的例子。
定理:若 都是凸函数,则函数
也是凸函数。
几何解释:见下面的例子。
定理:若 是凸函数,则对于任意 和任意 ,函数
也是凸函数。
几何解释:仿射变换 对应于坐标轴的缩放和平移,这些操作不会改变函数的凸性。
Note
考虑两个凸函数:
取非负权重 ,则
也是凸函数,因为

Note
考虑两个凸函数:,
则它们的逐点最大值
也是凸函数。

Note
考虑凸函数 ,取 ,则
也是凸函数,因为

Caution
支持向量机中的优化问题
支持向量机(SVM)是机器学习中的重要算法. SVM的优化问题利用了保凸运算的性质, 其待优化的目标函数可以表示为:
其中向量 和标量 是待优化的自变量. 这里:
因此,SVM的优化问题是凸优化问题,保证了全局最优解的存在性和高效求解的可能性。
Caution
神经网络的损失函数并非凸函数
与支持向量机(SVM)等凸优化问题不同,神经网络的损失函数通常是高度非凸的. 神经网络的非凸性不是缺陷,而是其特征的一部分。理解这一性质不仅帮助我们设计更好的优化算法,也促使我们重新思考机器学习中的基本概念。
上机实验
2.4 导数在人工智能中的应用: 梯度下降法
Tip
数据拟合问题

我们考虑一个简化的数据拟合问题, 如图所示, 假设我们有一组数据点 . 根据图中数据点的分布情况, 我们猜想这组数据大致符合正比例关系, 即
其中 为噪声, 为待定常数. 我们希望从数据中估计出 的具体取值.
为了评判在给定的参数 下模型(3)对数据的拟合程度, 我们引入损失函数
这是一个关于 的函数, 也叫做均方误差(MSE, Mean Square Error). 的值越小表示 所对应得直线与数据点符合得越好. 因此我们的目标是找到是的 最小的 , 也就是求解函数 的极值问题.

的导数为
满足 的 就是函数 的极值点. 不难验证 是一个凸函数(比如利用凸函数的正加权求和还是凸函数的性质), 因此这个极值点是唯一的, 而且一定是极小值点. 对这个简单的例子而言, 极小值点所对应的 是可以显示解出来的, 但是对于更加复杂的函数, 求极值点的任务很可能需要借助数值的方法, 例如下面所介绍的梯度下降法.
Important
梯度下降法(Gradient Descent)
梯度下降法是一种利用导数信息来寻找函数极小值点的数值算法. 这个过程就好像你在调一台老式收音机,它只有一个旋钮 用来调频道。你转动旋钮时,耳朵会立刻听到声音的变化:有时候,往一个方向轻轻一转,会发现杂音立刻变小了,但也有时候,刚一转动旋钮,嗞嗞的噪声突然变大。整个过程就像是在黑暗中摸索,只能凭耳朵判断该往哪边走,一边转旋钮,一边听声音的变化,一步步靠近那个最清晰的频道。
损失函数 就表示收音机的杂音强度, 我们通过旋钮的微调和耳朵的感受就能够大致估计导数 , 而导数值能够为我们提供了修正 的方向信息: 表示噪声 随着 增大而增大, 所以应该减小 来减小噪声 ; 反过来, 表示噪声 随着 增大而减小, 所以应该增大 来减小噪声 , 最终如果找到 的点就找到了噪声最小也就是最清晰的频道.

我们把上述调节收音机的过程写成算法, 就得到了梯度下降法:
梯度下降法算法步骤:
输入:初始参数 ,学习率 ,收敛阈值
过程:
初始化:,
while :
(1) 计算梯度:
(2) 更新参数:
(3)
end while
输出:最优参数
收敛
当导数很接近 时(),更新步长会非常小,参数 的变化几乎停下来,这时我们就找到了让 最小的 ,参数就收敛到了最优点。
学习速率
需要特别注意算法中的参数 , 我们称它为学习速率, 因为它决定了 的更新步幅, 的值是需要根据具体问题人为给定的:

在上面的数据点拟合的例子中, 运用梯度下降法求解上述问题得到的 的拟合值如下图. 由于随机误差的存在, 在算法看来对数据拟合得最好的 , 与我们生成数据时所采用的 略有偏差, 在统计意义上这是完全合理的, 而且随着样本点个数 的增大, 随机误差的整体效果会逐渐减弱, 算法得到的 也会越来越接近真实值.

Caution
上机实例
梯度下降法实例: nonconvex_landscape.ipynb