深度学习之PyTorch实战计算机视觉
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 导数求解

导数是微积分中非常核心的概念,它又包括一阶导数、二阶导数和高阶导数(或者说多阶导数),不过阶层不同的导数不仅在导数求解使用的运算方式和方法上存在诸多差异,其几何意义也完全不同,所以我们很难掌握各阶导数的求解方法和几何意义。

本节重点介绍一阶导数的求解方法和其对应的几何意义,因为一阶导数的求解相对于高阶导数会简单很多,而且几何意义比较直观,所以掌握这些内容会有助于我们理解后续要讲的深度学习中后向传播的内容。

2.2.1 一阶导数的几何意义

我们先来了解一阶导数的几何意义。假设存在函数y=f(x),该函数在点x0处可导,则点x0处的导数的几何意义就是该函数曲线在点p(x0,f(x0))处的切线的斜率,在几何图中显示的效果如图2-1所示。

图2-1

因此,如果想知道在函数曲线上某点的导数,则只需计算该函数在该点的切线的斜率。如图2-1所示的函数曲线特征还不是非常明显,下面我们来看看特征更明显的函数曲线,如图2-2所示。

图2-2

在图2-2中,左图中的函数曲线呈现一个很明显的凹型,而右图中的函数曲线呈现一个很明显的凸型,我们将左图中的函数曲线叫作凹函数,将右图中的函数曲线叫作凸函数。这两类曲线除这个特征外,还有一个重要的属性,就是在凹函数中一定存在一个该函数的最低点,相对应地,在凸函数中一定存在一个该函数的最高点。凸函数的最高点和凹函数的最低点的斜率均为0,即这两点的导数的求解结果为0,所以在凸函数中如果某点的导数求解结果为零,那么该点就是该函数曲线上的最大值点;在凹函数中如果某点的导数求解结果为零,那么该点就是该函数曲线上的最小值点。

在实际应用中一些函数曲线会同时存在多个点的斜率都是0的情况,这种类型的曲线不是完全的凸函数,也不是完全的凹函数,更像是由凹凸函数混合而成的,如图2-3所示。

图2-3

在该函数曲线中既有一部分凸曲线,又有一部分凹曲线,其中的凸曲线最高点的斜率为0,但是我们不把该点叫作最大值点,而把它叫作极大值点,同理,凹曲线的最低点是极小值点。我们需要明白的是,极大值点和极小值点只代表整个函数局部的最大和最小,在该类函数中极大值点不一定就是最大值点,极小值点也不一定就是最小值点,所以我们又可以将最大值点叫作函数全局最大值,将最小值点叫作函数全局最小值,除此之外,我们可以将其他极值点都叫作函数局部最大值或者函数局部最小值。

通过计算,我们可以得到图2-3中斜率为0的点有三个,有一个是极大值点,有两个是极小值点,很容易看出极大值点并不是最大值点,但是两个极小值点中的一个是最小值点。

2.2.2 初等函数的求导公式

我们在理解了导数的几何意义之后,就可以进一步学习导数的求解方法了。这里不对导数的求解过程进行详细论证,而是直接讲解如何使用初等函数的导数求导公式,这样更便于理解导数计算的相关方法。

在学习导数的相关计算之前,我们需要知道几种常用的导数表示方法,比如存在函数y=f(x),那么我们可以将函数f(x)的导数表示成y′或者。多元函数导数的表示方法不太一样,比如对于一个二元函数h=f(x,y),对其中的x求导时表示成,对其中的y求导时表示成,这两个计算过程分别叫作对x求偏导和对y求偏导。

常用的初等函数求导公式如下。

(1)y=C,y′=0(C表示实数)

(2)y=xn,y′=nxn-1n表示整数)

(3)y=sinx,y′=cosx

(4)y=cosx,y′=-sinx

(5)y=tanx,

(6)y=cotx,

(7)y=lnx,

(8)y=logax,

(9)y=ex,y′=ex

(10)y=ax,y′=axlna(a>0,a≠1)

在掌握了初等函数求导的计算公式后,现在看几个具体的实例。

例1:已知y=5,求解y的导数y′的值是多少。

解答:使用y=C,y′=0初等函数求导公式进行求解,因为y是实数,所以可以得到y的导数y′=0。

例2:已知y=x5,求解y的导数y′的值是多少。

解答:使用y=xn,y′=nxn-1初等函数求导公式进行求解,此时在函数中n的值等于5,代入公式中得到y′=5x4

例3:已知y=log10x,求解y的导数y′的值是多少。

解答:使用y=logax,初等函数求导公式进行求解,此时在函数中a的值等于10,代入公式中得到

例4:已知y=5x,求解y的导数y′的值是多少。

解答:使用y=ax,y′=axlna(a>0,a≠1)初等函数求导公式进行求解,此时在函数中a的值等于5,代入公式中得到y′=5xln 5。

2.2.3 初等函数的和、差、积、商求导

只掌握初等函数的导数求解方法还远远不够,我们在函数计算的过程中经常会遇到在进行算术运算后需要求导的情况,在这种情况下,函数求导计算的内容较之前更复杂,不过可以直接套用初等函数的算数运算求导公式。假设存在函数u=u(x),v=v(x),其中函数u=u(x),v=v(x)均可导,那么有如下算术运算求导公式:

(1)(u±v)′=u′±v

(2)(Cu)′=Cu′(其中C为实数)

(3)(uv)′=uv+uv

(4)

我们依旧通过几个实例来看看如何运用初等函数的算术运算求导公式。

例1:已知u=2x,v=x2,求解(u±v)的导数值(u±v)′是多少。

解答:使用(u±v)′=u′±v′初等函数算术运算求导公式进行求解,代入公式中,得到(u±v)′=u′±v′=(2x)′±(x2)′=2±2x

例2:已知u=2x,求解(5u)的导数值(5u)′是多少。

解答:使用(Cu)′=Cu′初等函数算术运算求导公式进行求解,代入公式中,得到(5u)′=5u′=5×(2x)′=5×2=10。

例3:已知u=2x,v=x2,求解(uv)的导数值(uv)′是多少。

解答:使用(uv)=uv+uv′初等函数算术运算求导公式进行求解,代入公式中,得到(uv)′=uv+uv′=(2x)′×x2+2x×(x2)′=2x2+4x2=6x2

例4:已知u=2x,v=x2,求解的导数值′是多少。

解答:使用初等函数算术运算求导公式进行求解,代入公式中,得到

2.2.4 复合函数的链式法则

在介绍复合函数的链式法则之前,我们先回顾一下初等函数的算术运算求导过程。如果把初等函数的和、差、积、商运算改写成一个函数,那么上面的4个实例就变成了一个复合函数的求导过程。复合函数其实就是有限个函数使用不同的运算方法嵌套而成的,那么复合函数的导数就是有限个函数在相应的点的导数的乘积,就像锁链一样一环套一环,故将复合函数的求导方法称为链式法则。

在实际应用中,复合函数的求导更复杂:因为复合函数嵌套的函数数量会相对较多,而且在嵌套的函数中用到的不仅有简单的加减乘除运算,还有复杂的幂运算、正弦余弦运算等高级运算。

若在一个复合函数中只嵌套一个函数,则通用的公式可以写成:

f(g(x))

而这个复合函数的相应求导结果如下:

(f(g(x)))′=f′(g(x))gx( )。

这个公式比较简单,针对的是只有两个函数复合的情况,如果复合函数嵌套两个及以上的函数,则计算方法和过程会变得复杂很多。下面通过几个实例来看看几种类型的复合函数求导的具体求解思路。

例1:假设有函数y=sin(x3+1),求函数的导数y′。

解答:首先观察原函数y=sin(x3+1),可以知道它是由两个函数复合而成的,这两个函数分别是f(x)=sinxg(x)=x3+1,那么根据复合函数的链式法则 (f(g(x)))′=f′(g(x))g′(x),可以得到y′=(sin(x3+1))′=sin′(x3+1)×(x3+1)′=cos(x3+1)×3x2

例2:假设有函数,求函数的导数y′。

解答:首先观察原函数,可以知道它是由三个函数复合而成的,这三个函数分别是f(x)=ex,g(x)=ln(x),h(x)=x3+1,那么根据复合函数的链式法则(f(g(h(x))))′=f′(g(h(x)))g′(h(x))h′(x),可以得到

通过上面的两个实例,可以看到在例2中复合函数的求导要比在例1中的更复杂,因为例2的复合函数嵌套了三个函数。如果遇到复合程度更高的函数,就可以按照例2中的方法,将嵌套的函数层层剥离、分别求导,然后将各部分函数的求导结果相乘,就得到了最终结果。