第2章 导数

Tip

实际问题中人们经常会考虑某个函数的极值, 函数的切线方向是分析函数极值的有力工具:

  • 切线斜率为正时函数单调递增

  • 切线斜率为负时函数单调递减

  • 切线斜率为零时函数取到极值

那么怎么求函数在某处切线的斜率呢? 这个问题困扰了数学家好多年, 直到后来有人发现切线斜率可以看作是一个极限, 这个极限就叫做导数.

Tip

思维导图

导数是一种通过极限定义的运算, 由此可见极限的重要性, 在后面的章节中, 我们还将从极限出发引出积分的概念. 本课程各部分内容之间的关系如图.

微积分思维导图

2.1 导数和导函数

Tip

导数是函数某处的切线斜率, 是研究函数性质的重要工具.

问题: 求使得函数 f(x)=sin(x)2xπ 最大的的 x (0xπ) 的值.

求解: f(x) 的图像如图, 问题要求我们找到图像的最高点, 从图像上看函数的最高点处的切线是水平的(即斜率为0), 为了计算斜率我们可以对函数求导, 得到:

f(x)=cos(x)2π.

再令 f(x)=0,解得切线水平的地方位于:

x=arccos(2π),

所使得函数 f(x) 最大的 x.

导数的作用

2.1.1 导数的定义

Important

导数的定义

导数是切线的斜率,而切线的斜率可以定义为割线在割距趋于 0 的斜率的极限。

设函数 f(x) 在点 x0 附近有定义,则过点 (x0,f(x0))(x0+Δx,f(x0+Δx)) 的割线斜率为

f(x0+Δx)f(x0)Δx

Δx0 时,这个割线斜率的极限(若存在)就是切线的斜率,也即导数

f(x0)=limΔx0f(x0+Δx)f(x0)Δx=limΔx0ΔyΔx

这样,切线的斜率和导数都通过极限的方式被严格定义。

导数的几何意义

[!extension]

切线的数学定义

早期,古希腊数学家如欧几里得和阿波罗尼斯主要用几何方法描述切线,把切线看作“只与曲线在一点相交且不过该点的直线”。但这种定义对复杂曲线(如圆外的曲线)不适用。

直到17世纪,笛卡尔和费马等人提出了代数方法,尝试用斜率和代数方程描述切线。牛顿和莱布尼茨发明微积分后,才用“割线的极限”来严格定义切线斜率,也就是现代导数的定义。

所以,现代切线的定义必须依靠极限,因为只有极限才能精确描述“割线趋近于切线”的过程,从而适用于所有光滑曲线。没有极限,切线的定义就不够一般和严密。

Note

由定义计算导数

例1: 求 f(x)=cx0=1 处的导数.

: 根据导数的定义:

f(1)=limΔx0f(1+Δx)f(1)Δx=limΔx0CCΔx=0.

Note

例2: 求 f(x)=x2x0=2 处的导数.

:根据导数的定义:

 f(2)=limΔx0(2+Δx)222Δx=limΔx04+4Δx+(Δx)24Δx=limΔx0(4+Δx)=4.

2.1.2 导函数

Important

对函数 f(x) 定义域上的每一点都求导 (假设每一点的导数都存在), 得到一个新的函数, 称为导函数, 记作 f(x). 导函数是由 f(x) 衍生出来的, 正好和 Derivative (导数) 的意思一致.

Caution

Derivative(金融衍生品)

数学中的“导数”(Derivative)是由原函数“衍生”出来的新函数,反映原函数的变化率。

金融中的“衍生品”(Derivative)是指价值依赖于其他基础资产(如股票、债券等)的金融工具。期权(Option)是一种金融衍生品,允许持有者以指定价格来购买股票。

  • 如果股票价格上涨(函数递增),看涨期权的价值增加(导数为正)。

  • 如果股票价格下跌(函数递减),看涨期权的价值减少(导数为负)。

类比:

  • 数学导数:f(x) 依赖于 f(x),描述 f(x) 的变化率,是由 f(x) “衍生”出来的。

  • 金融期权:期权的价格依赖于股票价格,是由股票“衍生”出来的金融产品。

Note

例3: 求函数 f(x)=x2 的导函数.

f(x)=limΔx0(x+Δx)2x2Δx=limΔx02xΔx+Δx2Δx=limΔx02x+Δx=x.

函数与导函数

Note

例4: 求函数 f(x)=cosx 的导数.

f(x)=limΔx0cos(x+Δx)cosxΔx=limΔx02sin(x+Δx2)sin(Δx2)Δx=limΔx0sin(x+Δx2)limΔx0sinΔx2Δx2=sinx.

函数与导函数

2.1.3 幂函数, 对数函数和指数函数的导数

Note

幂函数的导数

例5: 求正整数次幂函数 f(x)=xm 的导数.

m=1 时:

 f(x)=limΔx0(x+Δx)xΔx=limΔx0ΔxΔx=1

m>1 时:

 f(x)=limΔx0(x+Δx)mxmΔx=limΔx0[xm+mxm1Δx+m(m1)2xm2(Δx)2++(Δx)mxmΔx]=limΔx0[mxm1+m(m1)2xm2Δx++(Δx)m1]=mxm1

考虑到 x0=1, 上面两种情况可以统一为

(xm)=mxm1, m=1,2,

Warning
我们不加证明的指出, 上述公式对任意的 mR 都成立, 即

(xm)=mxm1, mR.

Note

先导结论

在计算指数函数对数函数的导数时我们需要用到下面的结论. 我们可以把他们当作求极限的练习题.

先导结论1: limx0ln(1+x)x=1

证明: 利用重要极限的结论,

limx0ln(1+x)x=limx0ln(1+x)1x=lne=1

先导结论2: limx0loga(1+x)x=1lna

证明: 利用对数换底公式,

limx0loga(1+x)x=limx0ln(1+x)lnax=1lnalimx0ln(1+x)x=1lna

Important

对数函数的导数

求对数函数 f(x)=logux 的导数, 其中 u 是大于 0 且不等于 1 的常数.

f(x)=limΔx0logu(x+Δx)loguxΔx

利用换底公式 logua=lnalnu,

f(x)=limΔx0ln(x+Δx)lnulnxlnuΔx=1lnulimΔx0ln(x+Δx)lnxΔx=1lnulimΔx0ln(1+Δxx)Δx=1xlnulimΔx0ln(1+Δxx)Δxx

h=Δxx,当 Δx0h0,则:

f(x)=1xlnulimh0ln(1+h)h=1xlnu

注: 最后一步用到了上面的先导结论.

由此我们得到对数函数的导数为:

(logux)=1xlnu

Warning

特别的, 当 u=e 时, logux=lnx, 此时

(lnx)=1x

Important

指数函数的导数

求指数函数 f(x)=qx 的导数,其中底数 q 是大于 0 且不等于 1 的常数.

解:

f(x)=limΔx0qx+ΔxqxΔx=limΔx0qxqΔxqxΔx=qxlimΔx0qΔx1Δx

我们注意到当 Δx0 时, qΔx1

qΔx10, 于是我们把 qΔx1 看作一个新的变量 h, 故此时有当 Δx0h0.

于是根据极限运算的换元法

limΔx0qΔx1Δx=limh0hlogq(1+h)=lnq

上式中的最后一个等式用到了前面的先导结论.

因此,

(qx)=qxlnq

这就是指数函数的导数公式。

Warning

特别的, 当 q=e 时,有

(ex)=ex

也就是说, 以欧拉数 e 为底数的指数函数的导数正是它自己, 由此也可以看出 e 在数学上的特殊性.

2.1.4 可导函数与连续函数

Caution

连续与可导的关系

处处可导的函数称为可导函数, 处处连续的函数称为连续函数. 函数在一点可导则在该点也必连续, 但函数在一点连续并不保证在该点可导.

Note

连续但不可导的反例1

绝对值函数 f(x)=|x| 在 0 点连续但不可导.

绝对值函数在 x=0 处是连续的. 在 x=0 处,

limΔx0f(0+Δx)f(0)Δx=limΔx0|Δx|Δx

Δx<0 时, |Δx|Δx=1;

Δx>0 时, |Δx|Δx=1,

左右极限不相等,故极限不存在, 因此,函数 f(x)=|x|x=0 处不可导.

连续但不可导示例

连续但不可导的反例2

函数 f(x)=x13 在 0 点处连续但不可导.

函数在 x=0 处连续. 下面我们来计算该函数在 x=0 处的导数.

  • 方法一: 根据定义计算

f(0+Δx)f(0)Δx=(0+Δx)13013Δx=(Δx)23.

Δx0 时,极限趋于无穷大,故函数在 x=0不可导.

  • 方法二: 对导函数取极限

根据幂函数的求导公式可以得到

f(x)=13x23, x0.

x0 时, 导函数 f(x) 趋于无穷大, 提示 f(0) 可能不存在. 需要特别指出, 上述对导数取极限的做法主要提供一个感性认识(直觉), 要严格证明导数在 0 点不存在还是需要根据定义计算.

注意:

上述两种方法都涉及到极限, 但是取极限的对象不同, 方法一中是对 Δx 取极限, 而方法二中是对 x 取极限, 尽管都趋于无穷大(而且指数项都是 23), 但两者的意义是不一样的, 请注意体会.

连续但不可导示例

2.1.5 单侧导数

Important

单侧导数

在计算绝对值函数在 0 点的导数时, 我们注意到 f(x)=|x| 在 0 点左右两侧的切线斜率都存在, 为了更加细致的分析函数的行为, 我们可以引入单侧导数的概念.

我们定义函数 f(x)x0 处的左导数

f(x0)=limΔx0f(x0+Δx)f(x0)Δx,

右导数

f+(x0)=limΔx0+f(x0+Δx)f(x0)Δx.

左导数和右导数统称为单侧导数, 函数 f(x) 在点 x0 处可导的条件是左导数和右导数都存在且相等.

对绝对值函数在 x0=0 点处而言, 其单侧导数都存在, 但是不相等, 因此在该点并不可导.

 

2.2 导数的计算

Tip

求给定函数的导数的操作称为求导运算。本节将介绍常见函数的求导公式与导数的四则运算法则。熟练运用这些法则,将能显著简化求导过程,提高运算效率。

2.2.1 初等函数求导公式

Important

常见初等函数的求导公式

  1. 幂函数

  • 如果 f(x)=xn,则: f(x)=nxn1

  1. 指数函数

  • 如果 f(x)=ex,则: f(x)=ex

  • 如果 f(x)=ax,则: f(x)=axln(a)

  1. 对数函数

  • 如果 f(x)=ln(x),则: f(x)=1x

  • 如果 f(x)=loga(x),则: f(x)=1xln(a)

  1. 三角函数

  • 如果 f(x)=sin(x),则: f(x)=cos(x)

  • 如果 f(x)=cos(x),则: f(x)=sin(x)

  1. 反三角函数 (不要求)

  • 如果 f(x)=arcsin(x),则: f(x)=11x2

  • 如果 f(x)=arccos(x),则: f(x)=11x2

  • 如果 f(x)=arctan(x),则: f(x)=11+x2

2.2.2 导数的四则运算

Tip

下面的导数四则法则都可以根据导数的定义加以证明.

Important

导数的四则运算法则

  • 加法: 若函数 f(x)g(x) 在点 x 处可导,则:

[f(x)+g(x)]=f(x)+g(x)

证明: 根据导数的定义:

[f(x)+g(x)]=limh0[f(x+h)+g(x+h)][f(x)+g(x)]h=limh0[f(x+h)f(x)h+g(x+h)g(x)h]=limh0f(x+h)f(x)h+limh0g(x+h)g(x)h=f(x)+g(x)
  • 减法: 若函数 f(x)g(x) 在点 x 处可导,则:

[f(x)g(x)]=f(x)g(x)

该性质的证明跟导数的加法运算完全类似.

  • 乘法: 若函数 f(x)g(x) 在点 x 处可导,则:

[f(x)g(x)]=f(x)g(x)+f(x)g(x)

证明: 根据导数的定义:

[f(x)g(x)]=limh0f(x+h)g(x+h)f(x)g(x)h=limh0f(x+h)g(x+h)f(x+h)g(x)+f(x+h)g(x)f(x)g(x)h=limh0(f(x+h)g(x+h)g(x)h+g(x)f(x+h)f(x)h)=limh0f(x+h)limh0g(x+h)g(x)h+g(x)limh0f(x+h)f(x)h=f(x)g(x)+g(x)f(x)
  • 除法 若函数 f(x)g(x) 在点 x 处可导,且 g(x)0,则:

[f(x)g(x)]=f(x)g(x)f(x)g(x)[g(x)]2

证明: f(x)g(x) 可以看作 f(x)1g(x) 的乘积, 而 1g(x) 可以看成是函数 1xg(x) 的复合. 于是我们可以联合复合函数求导和上面的乘法求导法则来推导上述除法求导公式.

[f(x)g(x)]=f(x)[1g(x)]+f(x)[1g(x)]=f(x)g(x)f(x)g(x)[g(x)]2=f(x)g(x)f(x)g(x)[g(x)]2

Note

例1: 求函数 y=3x34x2+5x9 的导数.

y=(3x3)(4x2)+(5x)(9)=33x3142x21+51x110=9x28x+5

Note

例2: 求函数 y=2ex(sinx+2cosx) 的导数.

y=(2ex)(sinx+2cosx)+2ex(sinx+2cosx)=2ex(sinx+2cosx)+2ex(cosx2sinx)=2exsinx+4excosx+2excosx4exsinx=6excosx2exsinx=2ex(3cosxsinx)

Note

例3: 求函数 f(x)=x3+3sinx+52 的导数 f(x)f(π4)

f(x)=(x3)+(3sinx)+(52)=3x2+3cosxf(π4)=3π216+322

Note

例4: 求函数 y=tanx 的导数.

y=(sinxcosx)=(sinx)cosxsinx(cosx)cos2x=cos2x+sin2xcos2x=1cos2x

2.2.3 高阶导数

Tip

导函数也是函数, 所以可以继续对导函数求导, 也就是二阶导数. 二阶导数反应了导函数的变化率. 依次可以继续到三阶导数, 四阶导数, ...

Important

二阶导数

f(x)=(f(x))

高阶导数

  • f(x), f(x), f(x), f(n)(x), .

Note

例1: 设 y=ax2+bx+c,求 y

一阶导数:

y=2ax+b

二阶导数:

y=2a

Note

例2: 求幂函数 y=xa (a 是任意常数) 的 n 阶导数

:

y=axa1y=a(a1)xa2y=a(a1)(a2)xa3

一般的,

y(n)=a(a1)(a2)(an+1)xan

特别的, 当 a=n 为整数时,

(xn)(m)={Cnmxnm,mn,0,m>n.

Warning

导数与物体运动

在物理中, 给定位移关于时间的函数 s(t), 物体的速度 v(t) 便是 s(t) 的导数.

我们来看两个例子.

自由落体运动

自由落体

从静止开始的自由落体物体, 其位移随时间的函数为

s(t)=12gt2.

该物体的速度对应 s(t)导数, 即

v(t)=s(t)=gt.

其加速度对应 v(t) 的导数, 或 s(t)二阶导数,

a(t)=v(t)=s(t)=g.

所以自由落体为加速度等于 g匀加速直线运动. 这与自由下落物体的牛顿第二定律 F=mg=ma 是吻合的.

自由落体

简谐振动

简谐振动

连结弹簧的小球在光滑水平面上围绕平衡位置做震荡运动, 其位移随时间的函数为

x(t)=Asin(ωt).

其瞬时速度为 x(t)导数, 即

v(t)=x(t)=Aωcos(ωt).

其加速度对应 v(t) 的导数, 或 x(t)二阶导数,

a(t)=v(t)=x(t)=Aω2sin(ωt).

A=2, ω=2π3, 小球的位移, 速度和加速度如下图.

自由落体

注意, 加速度和位移满足关系

a(t)=kx(t)

其中常数 k=ω2. 而另一方面, 由胡克定律牛顿第二定律, 我们可以得到小球的运动方程为

F=ma(t)=kx(t)

可见我们刚才从运动方程中的到的加速度与位移的关系与牛顿定律的结论是吻合的(在相差一个可约化的常数 m 的意义下).

2.3 利用导数来研究函数的性质

Tip

导数是用来研究函数性质的直观工具.

2.3.1 单调性

Important

  • 导数>0, 单调递增;

  • 导数<0, 单调递减;

  • 导数=0, 无法判断.

Note

例1: 讨论函数 y=x+cosx[0,2π] 上的单调性

: 函数在 [0,2π] 上连续,在 (0,2π) 内可导. 求导得

y=1sinx0.

故函数 y=x+cosx[0,2π] 上单调递增

Note

例2: 讨论函数 y=exx+3 的单调性

: 对函数求导得

y=ex1.

x<0 时, y<0, 故函数在 (,0] 上单调递减; x0 时, y0, 故函数在 [0,+) 上单调递增.

2.3.2 极值

Important

导数为 0 的点也称为驻点临界点, 在临界点处:

  • 二阶导数 >0 极小

  • 二阶导数 <0 极大

  • 二阶导数 =0 无法判断.

Note

例1: 求函数 f(x)=x44x2 的极值

:令一阶导数等于0, 得到方程

f(x)=4x38x=4x(x22)=0

其根(临界点)为

x1=0,x2=2,x3=2

f(x) 的二阶导数为

f(x)=(4x38x)=12x28

下面计算临界点处的二阶导数值:

  • x1:f(x1)=8<0, 为极大值,此时 f(x1)=0.

  • x2:f(x2)=16>0, 为极小值,此时 f(x2)=4.

  • x3:f(x3)=16>0, 为极小值,此时 f(x3)=4.

[!important]

闭区间上连续函数最值的求解步骤

f(x)[a,b] 上连续,则其最大值和最小值可按以下步骤求解:

  1. 确定临界点

  • f(x)(a,b) 内的 驻点 (即 f(x)=0 的解);

  • 找出 f(x)不可导点 (如间断点、无穷大点等).

  1. 计算候选值

  • 计算驻点、不可导点处的函数值 f(xi)

  • 计算端点值 f(a)f(b).

  1. 比较结果:选出最大值和最小值

Warning

光路最短原理与微积分应用

例1:饮马路径问题(均匀速度)

问题:假设马以均匀速度行进, 现需骑马从点 A 到点 B, 但必须先去河边(直线)喝一次水. 已知点 A 和点 B 在河的同侧, 求耗时最短的路径.

建立坐标系:

  • 设河边为 x 轴.

  • A 坐标为 (0,h1), 点 B 坐标为 (l,h2), 其中 h1>0,h2>0.

  • 设饮水点为 P(x,0),其中 x[0,l].

问题1

解法一

路径总长度 S(x) 为:

S(x)=h12+x2+h22+(lx)2

S(x) 求导:

S(x)=xh12+x2lxh22+(lx)2

S(x)=0, 得:

xh12+x2=lxh22+(lx)2

不难解出

x=lh1h1+h2.

解法二

  • 将点 B 关于 x 轴(河边)反射到点 B, 坐标为 (l,h2).

  • 连接点 A(0,h1) 和点 B(l,h2), 与 x 轴的交点即为饮水点 P, 根据三角形相似, 同样可得 x=lh1h1+h2.

这个方法利用了镜面反射原理, 基于直线最短得到了快速直观的解法.

镜面反射原理

例2:饮马路径问题 (不同速度)

问题:现需骑马从点 A 到点 B, 但必须先去河边(直线)喝一次水. 已知点 A 和点 B 在河的同侧, 且马在喝水前速度为 v1, 喝水后速度为 v2<v1, 求耗时最短的路径.

注意: 对这个题目而言, 镜面反射原理就不适用了, 但微积分方法仍然适用.

:总时间等于:

T(x)=h12+x2v1+h22+>(lx)2v2

T(x) 求导得:

T(x)=1v1xh12+x2>1v2lxh22+(lx)2

T(x)=0, 得:

(1)1v1xh12+x2=1>v2lxh22+(lx)2

这个方程并不好解, 在这里我们不去直接解这个方程, 而是计算下图中 θ1θ2 这两个角度之间的关系. 从公式(1)我们得到

(2)sinθ1v1=sinθ2v2

问题2

这是个很有意思的结果, 事实上, 上述变速度的路径问题与光的折射路径问题是等价的: 考虑一束光线从空气中的点 A 出发, 经过水面折射后到达水中的点 B . 已知光在空气中和水中的传播速度分别为 v1v2, 根据斯涅耳定律(Snell's Law), 光线的入射角和出射角恰好满足公式(2)! 它精确地描述了光线在两种介质交界面上发生折射时的行为.

可见, 运用微积分中通过导数来求极值的方法, 我们实际上再次发现了光路最短原理(费马原理,Fermat's Principle), 它是几何光学中最基本、最重要的原理之一, 它指出光在两点之间传播时, 所走的路径是光程最短的路径, 而非距离最短的路径. 这个例子很好地说明了如何利用微积分来证明光学中的基本定律, 体现了数学工具在物理学中的强大应用.

光路最短

2.3.3 凸性

Important

凸函数的定义

如果函数 f(x) 满足: 对于定义域内任意x1,x2,都有

f(x1+x22)f(x1)+f(x2)2

则称函数 f(x)凸函数

更一般地,对于任意 t[0,1],都有:

f(tx1+(1t)x2)tf(x1)+(1t)f(x2)

这称为Jensen不等式,是凸函数的等价定义。

与凸函数相对的, 我们还有凹函数的概念. 如果在上面的定义中把不等号反向, 我们就得到了凹函数的定义. 不难发现, 讨论函数 f(x) 的凹性等价于讨论函数 f(x) 的凸性, 所以我们有凸性的定义就够用了.

注意:这里采用的是国际通用的凸函数定义("凸"对应英文的"convex"),与某些国内教材的定义可能相反。

Warning

凸函数的几何意义

凸函数

  1. 弦在图像上方:凸函数图像上任意两点间的弦(连接这两点的线段)始终位于函数图像之上或与之重合。

  2. 切线在图像下方:对于可导的凸函数,其图像上任意一点的切线都位于函数图像之下。

  3. 局部极小即全局极小:凸函数的任何局部极小值点都是全局极小值点,这一性质在优化问题中极为重要。

Important

根据二阶导数判定函数的凸凹性

对于二阶可导的函数 f(x)

  • 若在区间 If(x)0,则 f(x)I 上是凸函数

  • 若在区间 If(x)0,则 f(x)I 上是凹函数

  • 若在区间 If(x)>0,则 f(x)I 上是严格凸函数

  • 若在区间 If(x)<0,则 f(x)I 上是严格凹函数

Warning

凸函数的性质

  • 凸函数的局部极小值就是全局极小值.

  • 严格凸函数若有极小值,则极小值点唯一.

凸函数的良好性质使其在优化理论中占据核心地位

  • 全局最优性:凸优化问题的任何局部最优解都是全局最优解.

  • 高效算法:存在多种高效算法(如梯度下降法内点法等)求解凸优化问题.

Note

例1: 判断函数 y=x(x0) 的凹凸性

:函数的一阶导数和二阶导数分别为

y=12xy=14x3/2

在函数定义域 (0,+)y<0,故 y=x 为凹函数。

Note

例2: 判断函数 y=x2 的凹凸性

:计算二阶导数:y=2>0,故 y=x2 为凸函数。

Note

例3: 判断函数 y=ln(x)(x>0) 的凹凸性

:计算二阶导数:y=1x2<0,故 y=ln(x) 为凹函数。

Warning

保凸运算

  • 凸函数的非负加权和仍是凸函数

定理: 若 f1(x),f2(x),,fn(x) 都是凸函数,且 α1,α2,,αn0,则函数

g(x)=α1f1(x)+α2f2(x)++αnfn(x)

也是凸函数。

几何解释:见下面的例子。

  • 凸函数的逐点最大值仍是凸函数

定理:若 f1(x),f2(x),,fn(x) 都是凸函数,则函数

h(x)=max{f1(x),f2(x),,fn(x)}

也是凸函数。

几何解释:见下面的例子。

  • 凸函数的仿射变换仍是凸函数

定理:若 f(x) 是凸函数,则对于任意 a0 和任意 b,函数

k(x)=f(ax+b)

也是凸函数。

几何解释:仿射变换 ax+b 对应于坐标轴的缩放和平移,这些操作不会改变函数的凸性。

Note

考虑两个凸函数:

  • f1(x)=x2(凸函数,因为 f1(x)=2>0

  • f2(x)=ex(凸函数,因为 f2(x)=ex>0

取非负权重 α1=2,α2=1,则

g(x)=2x2+ex

也是凸函数,因为

g(x)=4+ex>0

凸函数的非负加权

Note

考虑两个凸函数:f1(x)=x2, f2(x)=(x1)2+1 则它们的逐点最大值

h(x)=max{x2,(x1)2+1}

也是凸函数。

凸函数的逐点最大值

Note
考虑凸函数 f(x)=x2,取 a=2,b=1,则

k(x)=f(2x+1)=(2x+1)2=4x2+4x+1

也是凸函数,因为

k(x)=8>0

凸函数的仿射变换

Caution

支持向量机中的优化问题

支持向量机(SVM)是机器学习中的重要算法. SVM的优化问题利用了保凸运算的性质, 其待优化的目标函数可以表示为:

minw,b12w2+Ci=1nmax(0,1yi(wTxi+b))

其中向量 w 和标量 b 是待优化的自变量. 这里:

  • 12w2 是凸函数(二次函数的叠加)

  • max(0,1yi(wTxi+b)) 是凸函数(凸函数的逐点最大值)

  • 它们的非负加权和(C>0)仍然是凸函数

因此,SVM的优化问题是凸优化问题,保证了全局最优解的存在性和高效求解的可能性。

Caution

神经网络的损失函数并非凸函数

与支持向量机(SVM)等凸优化问题不同,神经网络的损失函数通常是高度非凸的. 神经网络的非凸性不是缺陷,而是其特征的一部分。理解这一性质不仅帮助我们设计更好的优化算法,也促使我们重新思考机器学习中的基本概念。

上机实验

  • nonconvex_landscape.ipynb: .

2.4 导数在人工智能中的应用: 梯度下降法

Tip

数据拟合问题

数据拟合问题

我们考虑一个简化的数据拟合问题, 如图所示, 假设我们有一组数据点 {(xi,yi)},i=1,2,,N. 根据图中数据点的分布情况, 我们猜想这组数据大致符合正比例关系, 即

(3)yi=kxi+ni

其中 ni 为噪声, k 为待定常数. 我们希望从数据中估计出 k 的具体取值.

为了评判在给定的参数 k 下模型(3)对数据的拟合程度, 我们引入损失函数

L(k)=1Ni=1N(yikxi)2

这是一个关于 k 的函数, 也叫做均方误差(MSE, Mean Square Error). L(k) 的值越小表示 k 所对应得直线与数据点符合得越好. 因此我们的目标是找到是的 L(k) 最小的 k, 也就是求解函数 L(k) 的极值问题.

损失函数

L(k) 的导数为

L(k)=2Ni=1Nxi(yikxi)

满足 L(k)=0k 就是函数 L(k) 的极值点. 不难验证 L(k) 是一个凸函数(比如利用凸函数的正加权求和还是凸函数的性质), 因此这个极值点是唯一的, 而且一定是极小值点. 对这个简单的例子而言, 极小值点所对应的 k 是可以显示解出来的, 但是对于更加复杂的函数, 求极值点的任务很可能需要借助数值的方法, 例如下面所介绍的梯度下降法.

Important

梯度下降法(Gradient Descent)

梯度下降法是一种利用导数信息来寻找函数极小值点的数值算法. 这个过程就好像你在调一台老式收音机,它只有一个旋钮 k 用来调频道。你转动旋钮时,耳朵会立刻听到声音的变化:有时候,往一个方向轻轻一转,会发现杂音立刻变小了,但也有时候,刚一转动旋钮,嗞嗞的噪声突然变大。整个过程就像是在黑暗中摸索,只能凭耳朵判断该往哪边走,一边转旋钮,一边听声音的变化,一步步靠近那个最清晰的频道。

损失函数 L(k) 就表示收音机的杂音强度, 我们通过旋钮的微调和耳朵的感受就能够大致估计导数 L(k), 而导数值能够为我们提供了修正 k 的方向信息: L(k)>0 表示噪声 L(k) 随着 k 增大而增大, 所以应该减小 k 来减小噪声 L(k); 反过来, L(k)<0 表示噪声 L(k) 随着 k 增大而减小, 所以应该增大 k 来减小噪声 L(k), 最终如果找到 L(k)=0 的点就找到了噪声最小也就是最清晰的频道.

收音机

我们把上述调节收音机的过程写成算法, 就得到了梯度下降法: 梯度下降法算法步骤:

输入:初始参数 k0,学习率 η,收敛阈值 ϵ

过程

  1. 初始化:t0kk0

  2. while |L(k)|>ϵ

    (1) 计算梯度:gL(k)=2i=1Nxi(yikxi)

    (2) 更新参数:kkηg

    (3) tt+1

  3. end while

输出:最优参数 k

收敛

当导数很接近 0 时(|L(k)|ϵ),更新步长会非常小,参数 k 的变化几乎停下来,这时我们就找到了让 L(k) 最小的 k,参数就收敛到了最优点。

学习速率

需要特别注意算法中的参数 η, 我们称它为学习速率, 因为它决定了 k 的更新步幅, η 的值是需要根据具体问题人为给定的:

  • 如果 η 太大 → 你猛地把旋钮转过头,直接跨过谷底,来回震荡,甚至跑到更高的山上

  • 如果 η 太小 → 你像用牙签拨旋钮,一次几乎没动,走到谷底需要很久

学习率

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

梯度下降法结果

Caution

上机实例

梯度下降法实例: nonconvex_landscape.ipynb