- 从零开始:机器学习的数学原理和算法实践
- 大威编著
- 3917字
- 2021-07-09 10:33:05
1.1 深入理解导数的本质
导数虽然简单,却是深刻理解微积分的切入点和重要基础。本节我们将从一个著名的哲学故事开始我们的微积分之旅。
1.1.1 哲学层面理解变化
古希腊数学家、哲学家芝诺有一个著名的“飞矢不动”论断。这个“诡辩”是说,设想一支飞行的箭在每一时刻必然位于空间中的一个特定位置。每一瞬间箭都是静止的,既然每一瞬间都是静止的,那么飞行的箭其实就是“静止不动”的,这就是“飞矢不动”。
对中学时代的我们来说,这样奇怪的想法还是令人惊奇的。虽然我们明白这是一种“没道理”的说法,但是要严格批驳似乎又觉得无能为力。不过如果我们从数学角度来思考这个问题,很多事情就豁然开朗了。
既然芝诺提到“飞矢不动”,那么我们首先就要定义什么是“动”。不难发现,日常我们使用“运动”这个概念的时候,都会牵涉两个因素:时间、位置。假设一个物体在时刻t1处于A点,而在时刻t2处于B点,我们就说物体在时刻t1和t2之间动了,否则我们就说物体是静止的。
“每一瞬间箭都是静止的”这句话本身就有问题。“每一瞬间”就是每一个时刻,每一个时刻箭当然会处在某个位置上,但是“静止”是一个跟“时间段”有关联的概念,不存在某个时刻是“静止”还是“运动”的说法。为了更好、更精确地刻画“运动”或“变化”,数学中引入了函数的概念。数学中,函数是描述物体运动与变化的重要工具。
1.1.2 生活中处处有函数
“你是你吗?”时刻t1看到这句话的你跟时刻t2开始思考这句话的你,难道没有发生变化吗?显然,时刻t2的你已经不是时刻t1的你了,但是大家并不会因此觉得“你不是你”。更一般地说,小时候的你跟现在的你相比,样貌、思想、行为、爱好都存在很大的不同,但是你并不会觉得小时候的你不是你。所以,什么是你呢?
我们知道,任何事物都处于时间的河流之中,时间就像河流一样滚滚向前,不断流逝。所以,你可以被看成一个以时间为自变量、自身状态为因变量的函数,自变量的取值范围是你的寿命,而你就是与时刻对应的无穷多状态的总和。
你在不同时刻有着不同的状态,我们为什么又会认为不同状态下的你是同一个“你”呢?这其实可以用连续函数来解释。虽然不同时刻的你对应着不同的状态,但是相邻时刻对应的状态差别很小,并且随着时刻越来越接近,状态差别也越来越小,这就是函数的连续性。这很好理解,例如用你读到这段话前后的时刻来对比,你的状态差别很小,别人也不会奇怪地对你说“你变了”;可是如果你跟几年未见的朋友再次见面,朋友可能就会发现你的变化。
1.1.3 从瞬时速度到导数
有了函数的概念,就可以进一步研究导数了。其实导数的概念并不是凭空产生的,而是基于生产、生活的需要出现的。导数典型的应用场景就是对瞬时速度的求解。
我们知道一辆汽车如果是匀速行驶的,那么用汽车行驶距离除以行驶时间就是它的速度,这个速度既是平均速度也是每时每刻的速度。但是实际上汽车很少是匀速行驶的,往往有时快有时慢,这时候用行驶距离除以行驶时间得到的将是汽车的平均速度,而不是它每时每刻的速度。那么,我们应如何求解汽车在某个时刻的速度,也就是瞬时速度呢?牛顿正是从求解瞬时速度入手进而创立了微积分的。
我们之前已经有了“速度”的概念,但那是“平均速度”或者匀速运动中每时每刻的“速度”,并没有“瞬时速度”的概念,所以我们需要给出“瞬时速度”的概念及其计算方法。
假设我们想求解汽车在时刻t0的瞬时速度,光盯着这个时刻是没有办法求解的,因为汽车在某一时刻的位置是确定的,我们需要把时间延伸到时刻t1。假设汽车行驶的位移公式为。时间从t0到t1,时间的变化量,对应的行驶距离表示为,因此就是时刻t0到t1的平均速度。
一个合理的想法是,Δt越小,这个平均速度就越接近于时刻t0的瞬时速度。我们观察:当Δt不为0时,可得。当Δt不断变小且无限接近于0的时候,上述平均速度就无限接近于2t0这一定值。我们就可以认为当Δt无限趋近于0时,平均速度无限趋近的数值2t0就是时刻t0的瞬时速度值,也称为函数在该点的导数。概括地讲,导数描述了自变量的微小变化导致因变量微小变化的关系。
我清晰地记得中学阶段第一次接触到这个想法时,既觉得“巧妙”又觉得“不踏实”。“巧妙”是因为使用趋于0的时间段的平均速度来定义瞬时速度的想法符合常理且很好地解决了难题,“不踏实”是因为数学在我心里一直是精确的学科,这样采取“近似”的做法让人一时难以接受。实际上,微积分刚开始确实碰到了逻辑上的一大难题,牛顿当时也没有很好地解决。当牛顿开创了微分方法后,虽然由于它的实用性,该方法受到了数学家和物理学家的热烈欢迎,但由于逻辑上一些不清晰的地方,该方法也受到了猛烈批评,最著名的就是乔治•伯克利主教对牛顿的微分方法的批评。
伯克利主教猛烈批评牛顿的微分方法,他指出:无穷小量如果等于0,那么它不能作为分母被化简;无穷小量如果不等于0,那么它无论多小都不能随意省略。无穷小量既不是0又是0,难道是0的“鬼魂”吗?
伯克利的批评确实切中要害,即便是牛顿也没法很好地反驳。这一逻辑上的缺陷直到19世纪才由柯西等数学家弥补起来。数学家们的解决方法其实也简单,就是通过引入一个新的概念“极限”,将瞬时速度定义为平均速度在Δt趋近于0时的极限值。为了严格地论证这个过程,柯西等还发明了一套严格的ε语言来说明,也就是大学阶段“折磨”过我们的那套语言。
1.1.4 从近似运动来理解导数
数学家们通过将瞬时速度定义为平均速度在Δt趋近于0时的某个趋近值,进而引出了“极限”的概念来进一步定义“导数”——虽然这是一个巧妙的想法,但也带来了麻烦,那就是如何说清楚“极限”。这花费了数学家们一个多世纪的时间,并且整个论证过程烦琐复杂,导致大家学起来很困难。实际上,对于导数,除了传统的理解方法外,数学家们还提出了其他更简单的理解方法。
我们对一次函数(k、b是常数)比较熟悉,一次函数的图像是一条直线,一次项系数k是直线的斜率。同时,一次函数可以代表匀速运动,一次项系数k正好就是匀速运动的速度。如果所有的运动都是匀速运动,那么我们的问题就解决了,匀速运动的速度就是瞬时速度。但问题是现实中很多运动都是变速运动,这该如何处理呢?仔细思考不难发现,变速运动虽然速度是变化的,但是因为速度是连续变化的,所以在很短的时间内其运动规律近似于匀速运动,那么我们是否可以考虑用匀速运动来近似代替变速运动呢?
前面汽车行驶的例子中,已知汽车行驶的位移公式为,求解汽车在时刻t0的瞬时速度。我们考虑时刻t0经过很短的时间Δt后在时刻的位置与Δt的关系:是Δt的二次函数。也就是说,汽车在时刻t0附近很小时间段Δt的运动规律可以用二次函数f (Δt)来表示。如果把二次函数的常数项和一次项组成一个一次函数的话,可以得到,其中是常数项,是一次项,2t0是一次项系数,也是所代表的匀速运动的速度。
如果我们认可变速运动的速度变化是连续的,进而微小时间段内的速度变化也较小,可以看作近似的匀速运动,那么可以在微小的时间段内使用匀速运动来代替变速运动。但上面的一次函数所代表的匀速运动是最接近真实运动规律的的吗?会不会有其他匀速运动的一次函数更加接近真实运动规律呢?答案是不会,的确是最接近真实运动规律的近似函数。
首先计算一下两者的误差:。然后计算任意一次函数与真实运动规律的误差:。
(1)当,且时,容易知道 ,。显然,比大。
(2)当,且时,由明显可知,比大。
(3)当,且时,。两个函数是同一个函数,描述的是同一个匀速运动。
因此,我们可以知道由某点的二次函数的常数项和一次项组成的一次函数描述的是最接近该点真实运动规律的匀速运动,匀速运动的速度可以看成该点的瞬时速度。
一般来说,如果函数在点附近可以使用一次函数或者常数f1(x)来近似代替,使得它们的误差是Δx阶无穷小,我们就容易证明f1(x)在点处是最接近f (x)的一次函数或常数。的一次项系数k就是在点处的导数。这就是导数的另外一种理解方法。
传统的对导数的理解是借助于“极限”的概念来实现的,“极限”则需要由数学家创造的那套繁杂的-语言来描述,而新的导数理解视角则避免了这种麻烦。另外,传统的导数(瞬时速度)求解过程是通过“平均速度”在的情况下趋近于某个值2t0来定义的,而新的导数(瞬时速度)则是通过寻找一个与变速运动最接近的匀速运动来求解的。当然,当时,这两种方法描述的是同一种物理状态。
1.1.5 直观理解复合函数求导
我们根据导数定义不难得出一些基本函数的导数公式,例如幂函数、三角函数 等。掌握了基本函数的求导公式并非“万事大吉”,现实中更为常见的是各种基本函数的复合函数求导问题,这需要我们进一步研究复合函数求导公式。
基本函数的复合方式总结起来主要分为3类:函数相加、函数相乘、函数嵌套。
(1)加法法则:例如,复合函数为。假设x变化量为dx,则基本函数变化量为d(x2)和d(sinx),于是复合函数变化量就是。由于基本函数可导,将基本函数的导数代入,可得,这样复合函数导数。也就是说,基本函数相加形成的复合函数导数等于基本函数导数之和。
(2)乘法法则:例如,复合函数为,则复合函数f可以看作以x2和sinx为邻边的矩形的面积。如果自变量x发生微小变化dx,则矩形的两个邻边也会对应发生变化d(x2)和d(sinx),于是原始矩形的面积会增加。其中,是高阶无穷小,可以忽略。于是,复合函数导数。也就是说,基本函数相乘形成的复合函数导数等于“前导后不导加上后导前不导”。乘法法则示意如图1-3所示。
图1-3 乘法法则示意
(3)链式法则:例如,复合函数为基本函数sinx和x2的函数嵌套。我们用新的符号如y来代替x2,则复合函数可以写作。如果自变量x发生微小变化dx,会导致函数发生微小变化,而dy的变化又会导致复合函数发生微小变化。于是,即。也就是说,基本函数嵌套形成的复合函数导数等于“外层导数与内层导数依次相乘”。