如果需要小编其他数学基础博客,请移步小编的GitHub地址
传送门:请点击我
如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote
这里我打算补充一下机器学习涉及到的一些关于微积分的知识点。
微积分是高等数学中研究函数的微分,积分以及有关概念和应用的数学分支。它是数学的一个基础学科。内容主要包括极限,微分学,积分学及其应用。微分学包含求导数的运算,是一套关于变化率的理论。它使得函数,速度,加速度和曲线的斜率等均可用一套通用的符号进行讨论。积分学,包含求积分的运算,为定义和计算面积,体积等提供一套通用的方法。
前一节博客已经整理了求导的公式,一些常用的概念。这里主要学习一下微积分的起源。因为微积分是现代数学的基础,后面学习的线性代数,矩阵论,最优化方法等数学课程都需要微积分的知识。单就机器学习和深度学习而言,更多的用到微分,积分基本上只在概率论中被使用,概率密度函数,分布函数等概念和计算都要借助于积分来定义或计算。
前一节的博客地址:
(注意:目前自己补充到的所有知识点,均按照自己网课视频中老师课程知识点走的,同时一些公式是网友辛辛苦苦敲的,这里用到那个博客均在文末补充地址,不过这里首先表示感谢!!)
(特别感谢此博客(深入浅出的讲解了微积分):https://www.zhihu.com/question/336322284/answer/918067537)
1,微积分的起源
微积分有多重要,相信大家多多少少心里有点数,特别是我们这些学数学的。好了废话不多说了,直接来学。
微积分诞生于 17 世纪,主要帮助人们解决各种速度,面积等实际问题。下图为微积分的发明者牛顿和莱布尼兹大佬,瞻仰一下。
我们从小学数学就学会了各种求面积的公式,比如长方形,三角形,圆,梯形等等。不知道大家有没有想过一个问题:好像我们每新学习一种新图形就有一个新的面积公式,可是世界上有无数种图形,我们难道要记无数种公式吗?,而且还有一些图形根本没有什么面积公式,比如随手画一条曲线,这条曲线围成的面积如何计算呢?
所以面对如何求一条曲线围成的面积就有很多人去研究。面对这个问题,古今中外的数学家的想法都是类似的,那就是:用我们熟悉的图像(比如三角形,长方形等)去逼近曲线围成的图像面积。这就好比在铺地砖的时候,我们会用尽可能多的瓷砖填满地板,然后这些瓷砖的面积之和差不多就是地板的面积。这里就蕴含了微积分的思想了。
微积分主要解决如何求曲线的面积。我们这里可以把微积分拆分成 “微分” 和 “积分”两个词,
首先来看积分,积分这个词当初被造出来,就是用来表示“由无穷个无穷小的面积组成的面积S”。
如上图所示,如果一条曲线 y=f(x) 和 x 轴在 a 和 b 之间围成的面积为A,那么我们就可以这样表示这部分面积A:
微积分的思想是:以直代曲。
为了加深一下对上面这个积分公式的理解,我们再来用矩阵试一下,对于矩形,我们可以轻松求得其面积,那么是否能够用矩形代替曲线形状呢?如果要代替则应该用多少个矩阵来代替呢?
如下图,我们可以将其分为四个矩阵,九个矩阵:
我们用有限个矩阵把a和b之间分为四份,我们看到如果只是用矩阵求面积的话,还是有很大误差的,但是使用九个的话,误差就缩小了,那么我们是否可以使用无穷多个矩形来逼近原面积,这样误差就变得无穷小了,答案是肯定的。当我们使用无数个矩阵来逼近原面积的时候,每个矩形的底自然就变成了无穷小,这个无穷小的底就是上面的 dx,而 f(x) 就是函数的纵坐标,矩阵的底,高相乘不就是求面积了吗?
下面说说公式由来。
在 ab 之间插入若干个点,这样就得到了 n个小区间。
每一个小矩形面积为:
近似得到曲线面积:
当分割无限加细,每个小区间的最大长度为 λ ,此时 λ -> 0
曲边面积:
不过这里再吹吹牛逼。
上面将 dx 当做一个无穷小的底,把积分当做求面积,这些都是微积分创立初期的看法。这种看法非常符合我们的直观,但是逻辑上是不严密的。这种无穷小量 dx 也招致了很多人(比如贝克莱)对微积分的攻击,并且引发了第二次数学危机,这场危机一直到19世纪柯西等人完成了微积分的严密化之后才彻底化解。随着微积分的涅槃重生,我们对这些基本概念的看法也发生了根本的改变。
关于求面积的事情这里就说完了。“用一些图形去无限逼近曲线图形”的想法很早就有了,穷竭法在古希腊就很成熟了,中国魏晋时期的数学家刘徽使用割圆术去逼近圆周率也是这种思想。到了17世纪初,这些思想并没有什么太大的改变,由于这些解法比较复杂,又很难扩展,所以大家的关注度并不高。
没办法,因为打死人也想不到:破解这种求曲线面积(求积分)的关键,竟然藏在一个看起来跟他毫无关联的东西身上,这个东西就是微积分名字的另一半:微分。当牛顿和莱布尼兹意识到微分和积分之间的内在关系之后,数学就迎来了一次空前的大发展。
从求和出发,我们需要尽可能的将每一个矩阵的底边无穷小,莱布尼兹为了体现求和的感觉,给 S 拉长了,简写成:∫ f(x) dx。
2,直线和斜率
微积分的基本概念是导数。
关于导数呢,举个例子:我们爬山的时候,山越陡越难爬;骑车的时候,路面的坡度越大越难骑。一个面的坡度越大,倾斜的越厉害,我们就越难上去,那么我们该如何衡量这个倾斜程度呢?
在平面里画一条直线,我们可以直观地看出这条直线的倾斜程度,而且还不难发现:不管在直线的什么地方,它的倾斜程度都是一样的。所以我们就可以用一个量来描述这整条直线的倾斜程度,这个概念就被形象的称为斜率。
那么,一条直线的斜率要怎么计算呢?这个想法也很直观:建一个坐标系,看看直线在 x 轴改变了 Δx 的时候,它在 y 轴的改变量 Δy 是多少。如果 Δx 是固定的,那么显然 Δy 越大,这条直线就斜的越厉害,斜率也就越大。
这就和我们判断跑步的速度是一样的道理:给定一个固定的时间,比如10秒(相当于固定的 Δx),看看你能跑多远(相当于 Δy),你跑的越远(Δy 越大),我就认为你跑得就越快。当然也可以反过来,给定一个固定的距离,比如100米(相当于Δy),你跑的时间越短(Δx 越小),我就认为你跑的越快。
把这两种情况综合一下,我们就能发现:固定时间(Δx)也好,固定距离(Δy)也好,最终起决定作用的是Δy和Δx的比值Δy/Δx。这个比值越大,你就跑得越快,对应的直线也就越陡。所以,我们就可以在直线上随意找两个点,用它们纵坐标之差Δy和横坐标之差Δx的比值(Δy/Δx)来定义这条直线斜率。
学过三角函数的同学也会知道,这个斜率刚好就是这条直线和x轴夹角θ的正切值tanθ,即:tanθ=Δy/Δx。这就是说,直线和x轴的夹角θ越大,它的斜率就越大,就倾斜的越厉害,这跟经验都是一致的。
3,曲线和切线
直线好说,关键是曲线怎么办?曲线跟直线不同,它完全可以在这里平缓一点,在那里陡峭一点,它在不同地方的倾斜程度是不一样的。所以,我们就不能说一条曲线的倾斜程度(“斜率”),而只能说曲线在某个具体点的倾斜程度。
于是我们要引入一个新的概念:切线。
切线,直观的看,就是刚好在这点“碰到”曲线的直线,因为切线是直线,所以切线有斜率,于是我们就可以用切线的斜率代表曲线在这点的倾斜程度。
传统上我们可以这样定义切线:先随便画一条直线,让这条直线与曲线有两个交点,这样的直线叫割线(仿佛把曲线“割断”了,如下图蓝色的AB)。然后,我们让B点沿着曲线慢慢向A点靠近,直观上,等到B点和A点重合之后,割线AB就变成了曲线在A点的切线。
这样做很符合人们的直观,但是它在逻辑上会有一点问题:当B点向A点移时,它是什么时候从割线变成切线呢?
重合的时候吗?如果B点和A点重合,那就剩下一个点了,我们知道“两点确定一条直线”,一个点怎么能确定一条直线呢?但是,如果B点和A点不重合的话,那么这就仍然是一条割线而不是切线啊。
于是,这样就出现了一个“一看非常简单直观,但是怎么说都说不圆”的情况,似乎两个点不行,一个点也不行,怎么办?
解决这个问题有一个很朴素的思路:要确定这条切线,让A,B两点重合是不行的,但是让他们分得太开也不行。最好就是让着两点靠近靠近无限靠近,但是就是不让他们重合。没重合的话就依然是两个点。两个点可以确定一条直线;无限靠近的话又可以把他们跟一般的割线区分开来,这样不就是两全其美了。
也就是说,A,B两点必须无限靠近但又不能重合,这样他们的距离就无限接近0但又不等于0。这是什么,这不就是无穷小么?
我们前面求曲线围成的面积时,核心实现就是用无数个矩阵来逼近原图像,这样每个矩形的底边就变成了无穷小。在这里,我们又认为当A,B两点的距离变成无穷小的时候,割线AB就变成了过A点的切线。
那么切线的斜率是什么?
好,利用无穷小定义了一点上的切线,我们就可以理所当然的用过这点切线的斜率来标色曲线在这点的倾斜度了。
那么切线是当曲线上A,B两点相隔无穷小时确定的直线,那么切线的斜率依然可以写成 Δy/Δx,只不过这时Δx和Δy都无限趋近于0。
莱布尼兹就给这两个趋近于0却又不等于0的 Δx和Δy 重新取了一个名字:dx 和 dy,并把他们称为“微分”。
也就是说,对莱布尼兹而言,dx这个微分就是当 Δx 趋近于0时的无穷小量, dy 也是一样。虽然 dx 和 dy 都是无穷小,但是他们的比值 dy/dx 确是一个有限的数(所以这时候你就不能把无穷小 dx 当成 0 了,否则还怎么当除数?)这就是该点切线的斜率,这样一切就似乎解释的通了。
虽然上图放大了,但是其实依然是:
再次使用图对几个指标进行解释:
4,导数
4.1 导数的初始定义
显然,我们在曲线上的一点上定义了切线,那么在平滑曲线的其他点上也能定义切线。因为每条切线都有一个斜率,所以曲线上的任何一点都有一个斜率,所以,曲线上任何一点都有一个斜率值跟它对应。两个量之间存在一种对应关系,这个关系就是函数。
函数 y = f(x) 不就是告诉我们:给定一个 x,就有一个 y 和它对应。现在我们是给定一个点(假设横坐标为 x),就有一个斜率 dy/dx 跟他对应。显然,这也是个函数,这个函数就叫导函数,简称导数。
在中学,我们通常在函数 f(x) 的右上角加上一撇表示这个函数的导数,那么现在这两个情况就表示导数:
所以,导数 f \'(x) 就可以表示横坐标为 x 的地方对应切线的斜率,它表示曲线在这一点上的倾斜程度。如果 导数 f \'(x) 的值比较大,曲线就比较陡,f \'(x) 比较小,曲线就比较平缓。于是,我们就可以用导数来描述曲线的倾斜程度了。
例子:求函数 f(x) = x2 的导数。
这还是我们前面说的抛物线,它的函数图像是这样的:
求函数的导数,就是求函数在每一点切线的斜率,而切线就是曲线上两个相距无穷小的点确定的直线。
那就好说了,我们假设曲线上有一个横坐标为x的点,那么,跟它距离无穷小的点的横坐标就是x+dx,由于这个点也在曲线f(x)=x²上,所以它的纵坐标就是(x+dx)²,即:
然后,我们用这两个点的纵坐标之差f(x+dx)-f(x)除以横坐标之差(x+dx)-x就能算出x点的切线斜率。因为这个x是任意取的,所以得到的结果就是任意点的切线斜率,那么这就是导数了:
接下来,化简上面,不过存在一个问题:这上面和下面的dx能不能约掉?
我们知道,除数不能为0的,如果你想分子分母同时除以一个数,就必须保证这个数不是0,现在我们是想除以 dx, 这个 dx 就是我们前面定义的无穷小量,它无限接近于 0 却又不等于 0 。所以我们暂且可以约掉它,如下:
但是还剩下一个 dx,怎么办呢?一个有限的数加上一个无穷小量,结果是多少呢?似乎还应该是这个数。这样我们似乎又可以去掉 dx,就像丢掉了一个等于 0 的数一样,这样最终的导数就可以简单地写成这样:
表明上看,当 x 越来越大(x > 0)的是, f \' (x) 的值也是越来越大的。而导数是用来表示函数的倾斜程度的,也就是说,当 x 越来越大的时候,曲线就越来越陡,这和图像完全一致了。
但是逻辑上就很奇怪了:一个无限趋近于 0 的无穷小量 dx 到底是不是 0?如果是 0,那么为什么可以让分子分母同时除以它来约分;如果不是 0 ,那么为什么又可以把它随意舍弃?总不能同时等于零又不等于零吧。
怎么办呢?下面看导数的意义。
4.2 导数的意义
导数反映的是一个量变化快慢的程度,这其实就是一种广义的“速度”。速度这个概念在科学里很重要,当我们说一辆车的速度很快的时候,我们其实就是说这辆车的位移对时间的导数很大。
此外,有了导数,我们就能轻而易举的求一条曲线的极值(极大值或极小值),为什么?因为只要导数不为 0,曲线在这里就是在上升(大于 0)或者下降(小于 0)的,只有导数等于 0 的地方,才有可能是一个极值点。
求极值也是非常重要的:军人希望他们发射的导弹可以飞得尽可能的远;商人希望他们的利润可以尽可能的高;我们也希望去哪都能走最近的路....
导数的这些用处很多人也知道,事实上,求曲线围成的面积也好,求曲线的导数也好,在牛顿和莱布尼兹之前大家都已经知道了,但这些并不是最重要的。
牛顿和莱布尼兹之所以伟大,之所以把他们视为微积分的发明人,是因为他们在这些寻常事实背后发现了一个极不寻常的秘密:求面积和求导数,或者说积分和微分,这两个看似完全不搭边的东西,竟然是一对互逆的运算。
4.3 互逆运算
积分和微分是一堆互逆运算,这是微积分最核心的思想。把这个思想用数学语言描述出来就会得到一个定理,这个定理叫微积分基本定理。
这也是牛顿和莱布尼兹在微积分里最重要的发现,因此,微积分基本定理又叫牛顿-莱布尼兹公式。
求面积的时候,矩形的数量越多,矩形的面积之和就越接近真实面积。另外,在求瞬时速度的时候,我们把时间段分的越细,每个小时间段里的平均速度就越接近瞬时速度,如果无穷细分,那么无穷小时间段里的平均速度就可以认为是瞬时速度了。也就是说,如果知道整个过程中的瞬时速度(或者说是无穷小时间段内的速度),我们就能精确地求出无穷小时间段内的距离,然后把所有距离加起来得到精确地总距离,这就是积分。也就是说,通过积分的过程,我们能从瞬时速度求出总距离。
另一方面,要证明微分(求导)是这个过程的逆运算,我们就得证明从总距离可以求出瞬时速度。也就是说,如果已知任意时刻你从家到学校的距离,你通过微分(求导)就能把瞬时速度求出来。
距离对时间的求导,这就是速度啊。前面我们也说了“导数是一种广义的速度”。也就是说:距离除以时间,结果就是速度。你用平均距离除以平均时间得到平均速度,用瞬时距离(某一时刻的距离)除以瞬时时间(无穷小时间片段)自然就得到了瞬时速度。这样不就说完了。通过积分,我们能从瞬时速度求出总距离来;通过微分,我们能从总距离求出瞬时速度,这就说明积分和微分是一对互逆运算。
4.4 原函数
我们知道了“积分和微分是互逆运算”,能给我们带来什么呢?答案是:多一种选择。因为既然积分和微分是互逆运算,那么有些操作如果积分不擅长,我就可以把它丢给微分。
什么意思呢?我们还是以最开始求曲线围成的面积为例。我们是这样求抛物线 y=x²与x轴在0到1之间围成面积的:如果用n个矩形去逼近,每个矩形的底就是1/n,n个矩形的面积之和就是这样:
当 n 区域无穷大的时候,后面两项就等于无穷小,然后结果就只剩下第一项 1/3。
用这种方法,面对不同的曲线就得有不同的求和公式,最后还得保证相关项可以变成无穷小丢掉。所以这种方法的复杂度和局限性都非常大,无法推广。
但是,在伟大的牛顿和莱布尼兹发现了“积分和微分是互逆运算”之后,这一切就改变了。因为我们有另一种选择:积分之路不好走,我们可以走微分。
怎么走呢?我们可以求 f(x) = x²的导数,最终的结果是这样的:
那么反过来,如果我们知道一个函数是f(x)=2x,难道我就猜不出究竟是哪个函数求导之后变成了f(x)=2x么?当然可以啊,我们完全可以根据f(x)=2x反推出原来的函数是f(x)=x²+c。
为什么这里多了一个常数c?因为常数求导的结果都是0,所以就多了这样一个尾巴。
也就是说,f(x)=x²,f(x)=x²+1,f(x)=x²+3等函数的导数都是f(x)=2x,只凭f(x)=2x我们无法确定最开始函数具体是什么样子。但是,我们可以确定它一定就是x²加上一个常数c。于是,我们就把求导之前原来的函数f(x)=x²+c称为的f(x)=2x的原函数。
好,下面是关键:积分是函数围成面积的过程,速度 v 是通过积分就得到了位移 s,在 v-t 图像里速度 v 围成的面积就是位移 s;微分是求导的过程,对位移 s 求一次导数就能够得到速度 v。
有了原函数以后,我们也可以根据速度 v 把(求导之后等于速度 v的)位移 s 给求出来,这时候位移 s 就是速度 v 的原函数(无非就是再加一个常数 c)。而原函数表示的位移 s 就是速度 v 围成的面积,于是,原函数就有了求面积(积分)的效果。
也即是说,s 求导一次就变成了 v,那么 v 反向求导一次就可以得到 s,这时候 s 是 v 的原函数。另一方面,因为 s 求导一次能变成了 v,那么 v 积分一次也能变成了 s(互逆运算)。于是,v通过求原函数和积分都能得到 s,所以原函数 s 其实就是有了积分(曲线 v 围成面积)的效果。
再简单的说,因为积分和微分是一对互逆运算,所以你反向微分(求原函数)的话,自然就得到和积分一样的效果了。
所以,现在求曲线f(x)=x²和x轴在0到1区间里围成面积这个原本属于积分的事情,现在就可以通过反向微分(求原函数)来实现。
这是一次非常华丽的转变,马上你就会看到这种新方法会把问题简化到什么程度,而且,正是这种力量让数学发生了根本性的改变。
5,微积分基本定理(牛顿-莱布尼兹公式)
5.1 牛顿-莱布尼兹公式
既然要反向微分的方法求面积,那我们就去找f(x)=x²的原函数,看看到底是哪个函数求导之后变成了f(x)=x²。我们用F(x)来表示这个原函数,那么F(x)就是它(C为常数):
有了 f(x) = x² 的原函数F(x)以后,怎么去求f(x)和x轴在0到1区间里围成的面积呢?前面已经分析了,原函数具有积分的效果,而积分就是曲线围成的面积,所以原函数也可以表示曲线围成的面积(为了方便理解,这里我们先不考虑常数c的影响,反正函数相减的时候常数c会抵消掉)。
因此,我们要求f(x)与x轴在0到1区间内围成的面积,直接用这个代表面积的原函数F(x)在1处的值F(1)减去在0处的值F(0)就完了:
F(1)-F(0)就是曲线在0到1之间围成的面积,我们这样得到的结果是1/3,跟我们原来用矩形逼近计算的结果一模一样,惊不惊喜,意不意外?但是它明显比原来的方法简单太多太多太多了,简单到一个中学生都能轻而易举地算出来,这才是微积分的真正力量。
有了这样的铺垫,微积分基本定理(牛顿-莱布尼兹公式)就非常容易理解了:如果函数 f(x) 在区间 a到b之间连续(简单理解就是曲线没有断),并且存在原函数 F(x) ,那么就有:
这式子的左边就是函数 f(x) 与 x 轴在 a到b 区间内围成的面积,式子的右边就是原函数在 b点和 a点的差。意义也很明确:函数反向求导得到的原函数F(x) 本来就表示面积,那么F(b)-F(a)自然就是这两点之间的面积之差。于是公式左右两边就都表示面积。
这就是微积分的基本定理,这就是微积分的核心思想。这里再来回答一下上面将区间分为四份,八份的微积分解:
5.2 进击的微积分
诚然,微积分基本定理(牛顿-莱布尼兹公式)的发现是这场革命里最核心的东西,相当于革命的指导思想,既然有了指导思想了,那么接下来就是要扩大战果了,把这个优秀的思想扩散到各个领域里去,怎么扩呢?
首先,微积分基本定理的核心思想就是用求原函数的方式来解决求面积的问题,所以求一个函数的原函数就成了问题的核心。那么,我们自然就要研究各种常见函数的求导和求原函数的方法。
这些弄清楚之后,我们接下来就要问:由一些常见函数组成的复合函数,比如两个函数相加减、相乘除、相嵌套复合等时候要怎么求原函数?怎么求积分?再扩展一下,现在知道了如何求面积,那要怎样求体积,求曲线的长度呢?
然后,我们就可以把微积分的技术扩展到各种其它的领域了。比如,有了微积分,我就可以研究弯曲的东西,曲线、曲面什么的都可以研究。这就等于说是在用微积分来研究几何,这就是微分几何。
有了微积分,我们发现很多物理定律都可以写成微分方程的形式,有多个变量的时候就是偏微分方程。麦克斯韦方程组、波动方程,广义相对论的场方程,都是这样。
有了微积分,我们就可以计算各种不同曲线的长度。那么,如何确定在特定条件下最短的那条曲线呢?这里就发展出了变分法,变分法配合最小作用量原理,在物理学的发展里起到了极为关键的作用。
所以微积分在接下来的两个世纪里就这样疯狂的扩张着,科学(尤其是物理学)的发展需要微积分,微积分也需要从科学里汲取营养,他们就这样互相促进,互相成长,相亲相爱。
5.3 柯西中值定理
似乎还有一个问题没有解决:那就是莱布尼兹将 dx 视为一个无穷小量,但是无穷小怎么说都说不圆。一个接近于0但又不等于0的无穷小量到底是什么呢?为什么有时候你可以把它当做除数约掉(认为他不等于0),但有时候有可以随意把它丢掉(认为他等于0)?
所以柯西来了。
柯西深刻的认识到:只要涉及数学概念,任何关于连续运动的一些先验的直观观念,都是可以避免,甚至是必须避免的。科学放弃了形而上学方面的努力,采用“可观测”概念之后就迎来了大发展,那数学为什么不也这样呢?
无穷小量是一个无限趋近于0但是又不能等于0的概念,也就是说他有一个极限位置0,你可以想多接近就多接近,但就是无法到达。
我们知道实数跟数轴上的点是一一对应的。当我们说一个量在无限趋近于0的时候,很多人脑海里浮现的画面就是一个点在数轴上不停的移动,从一个点移动到下一个点,一直靠近0这个点。
但是上图是不对的。因为实数是稠密的。稠密就是说任意两个点(实数)之间永远都有无数个点(实数)。(你想想:1和2之间有多少个数?)你以为它能从A点移动到邻近的下一个B点么?不好意思,这个它还真做不到。
A和B之间永远有无数个点,也就是说A点根本就没有所谓的“下一个点”。你认为我一定要走完了A点到B点之间所有的点才能到达B点,那就不可避免的陷入了芝诺悖论里去了。因为你压根就就不可能走完任何两个点之间的所有点(因为是无穷多个),所以如果按照这种逻辑,你就根本“走不完”,所以芝诺的飞矢就飞不动了。
因此,面对这种连续的概念的时候,我们就不应该使用这种“动态的”定义。你想通过“让一个点在数轴上动态地运动来定义极限”是行不通的,这就是莱布尼兹的无穷小量栽跟头的真正原因。
数学家们经过一百多年的探索,失败和总结,最后终于意识到了这点,这些思想在柯西这里完全成熟。于是,柯西完全放弃了那种动态的定义方式,转而采取了一种完全静态,完全可以描述测量的方式重新定义了极限,进而为微积分奠定了扎实的基础。
柯西对极限的新定义为:当一个变量相继的值无限的趋近于某个固定值的时候,如果他同这个固定值之间的差可以随意地小,那么这个固定值就被称为它的极限。
有这些疑问是正常的,毕竟是让数学家们卡了一百多年的问题,不可能那么太“显而易见”。我们再仔细看看柯西的定义,它跟以前的差别到底在哪?你看啊,柯西虽然也有用“无限趋近”,但是他只是用这个来描述这个现象,并不是用它来做判决的。他的核心判决是后面一句:如果它同这个固定值之间的差可以随意的小,那么它就是极限。
可以随意的小和你主动去无限逼近是完全不一样的。可以随意小的意思是:你让我多小我就可以多小。你让我小于0.1,我就能小于0.1;你让我小于0.01,我就能小于0.01;你让我小于0.00…001,我就可以小于0.00…001。只要你能说出一个确定的值,不管你说的值有多小,我都可以让它跟这个固定值的差比你更小。柯西说如果这样的话,那么这个固定值就是它的极限。
大家发现没有,柯西学聪明,学鸡贼了,他把这个判断过程给颠倒了过来。以前是你要证明自己的极限是0,你就不停地变小,不停地朝0这个地方跑过去。但是,你和0之间永远隔着无数个点,所以你永远也跑不完,你也就不知道你要跑到什么时候去,这样就晕了。
现在我学聪明了,这个难以界定的东西,这个烫手的山芋我不管了,我丢给你,我让你先说。只要你说出一个数,你要我变得多小我就变得多小。你如果想让我变成无穷小,那你就得先把无穷小是多少给我说出来,你说不出来的话那就不能怪我了。
柯西就通过这种方式把那些不可测的概念挡在了数学之外,因为你能具体说出来的数,那肯定就都是“可观测”的啊。大家再看看这个定义,再想想之前莱布尼茨的想法,是不是这么回事?
于是,柯西就这样完美的甩开了那个招人烦的无穷小量。在柯西这里,无穷小量不过就是一个简单的极限为0的量而已,一个“只要你可以说出一个数,我肯定就可以让我和0之间的差比你给的数更小”的量。这样我们就能把它说得清清楚楚,它也不再有任何神秘了。
5.4 魏尔斯特拉斯和 ε-δ 极限
然后,魏尔斯特拉斯用完全数学的语言改进了柯西的这段纯文字的定义,得到了最终的,也就是我们现在教材里使用的 ε-δ 极限定义。
根据柯西的思想,魏尔斯特拉斯说:你要判断某个函数f(x)在某个地方a的极限是不是某个值L,关键就要看如果我任意说一个数ε(比如0.00…001或者任意其它的,注意是任意取,这里用ε代替),你能不能找到一个x的取值范围(用δ来衡量),让这个范围里的函数值f(x)与那个值L之间的差(用套个绝对值的|f(x)-L|表示)小于ε。如果你总能找到这样的δ,那我就说函数f(x)在a点的极限为L。
用精练的数学语言表述上面的话就是:当且仅当对于任意的ε,存在一个δ>0,使得只要0<|x-a|<δ,就有|f(x)-L|<ε,那么我们就说f(x)在a点的极限为L。记做:
定义里的 Lim 就是极限的英文单词 limit的缩写,这个箭头 x->a 也非常形象的表达了极限这个概念。
这个定义就真正做到了完全“静态”,不再有任何运动的痕迹(连柯西说的“无限趋近”,“随意的小”都没有了),也不再有任何说不清的地方。从定义你也能清楚的看出来:它根本不关心你是如何逼近L的,飞过来,调过去它都不管,只要最后的差比 ε 小就行,我就承认你是我的极限。
这里要特别注意的是 ε 是任意的,任意就是说随便 ε 取什么你都要找到对应的 δ,你不能说有 10 个 ε 满足条件就说这是极限。
看个例子,我们考虑最简单的 f(x) = 1/x,当x的取值(x>0)越来越大的时候,这个函数的值就会越来越小::f(1)=1,f(10)=0.1,f(100)=0.01,f(1000)=0.001,……
看的出来,当x 的取值越来越大的时候,f(x)的值会越来越趋近于0。所以,函数 f(x) 在无穷远处的极限值应该是 0,也就是说:
这个结论是很明显的,接下来我们就来看看如何用 ε-δ 定义来说这个事。
按照定义,我们要取一个任意小的ε,假设这里我们取ε=0.1,那么我们就要去找一个δ,看能不能找到一个范围让|f(x)-0|<0.1,显然只需要x>10就行了;取ε=0.01,就只需要x>100就行了;任意给一个ε,我们显然都能找到一个数,当x大于这个数的时候满足|f(x)-0|<ε,这样就OK了。
于是,我们就构建了一个逻辑严密,不再有任何“说不清”概念的极限理论。有了这个坚实的地基,我们就可以放心地在上面盖房子了。那个漂泊了一百多年,那个被幽灵般的无穷小量缠绕了一百多年的微积分,即将迎来新生。
6,微积分的重构
6.1 积分的重建
先看积分,我们之前认为曲线围成的面积是无数个宽度为无穷小量的矩形面积之和,于是我们在这里就被无穷小量缠上了。有了ε-δ极限之后,我们就可以刷新一下我们对积分的认知了:从现在起,我们把曲线围成的面积看成一个极限,而不再是无数个无穷小量的矩形面积之和。
什么意思呢?假设我们用 1个矩形逼近曲线围成的面积的时候,我们就把这个矩形的面积记为S1, 用两个矩形逼近的面积之和记为S2,同样的,我们记下S3, S4, S5,...
一般情况下,如果我们用 n个矩形去逼近这个面积,这 n 个矩形的面积之和就记为 Sn。如果这个 Sn 的极限存在,也就是说,随便你说一个数字 ε,我都能找到一个 n 的范围,让 Sn和A之间的差 |Sn-A| 小于你给定的这个数字 ε。那么,A就是这个Sn的极限。
于是,我们就说:曲线围成的面积就是这个极限A,它是 n 个矩形面积之和这个序列 Sn的极限。
所以我们把这个极限过程表示的面积A定义为函数 f(x) 从 a 到 b 上的积分:
这样,我们的积分就成了一个由ε-δ语言精确定义的极限。这里没有那个等于0又不等于0的无穷小量,一切都清清楚楚、明明白白,没有含糊的地方,这就是第二次数学危机的终极解决之道。
这样处理虽然不再那么直观,但是它非常精确和严密,这是符合数学的精神的。直观虽然能帮助我们更好的感受数学,但是如果失去了严密性,数学将什么都不是。
6.2 导数的重建
积分解决了,微分也是一样,有了 ε-δ定义 之后,我们就再不能把导数看成两个无穷小量的比值 (dy/dx),而是把导数也看成一个极限。
就是说函数在某一点的导数就是这点切线的斜率,我们前面提到,切线就是当割线的两点不停的靠近,当他们的距离变成无穷小时决定的直线。
很明显,这个定义是依赖无穷小量的,我们在要用ε-δ定义的极限来代替这个无穷小量。所以,切线就应该被理解为割线的极限,那么切线的斜率(也就是这点的导数)自然就是割线斜率的极限,所以导数f(x)’也自然而然地成了一个极限。
由于割线的斜率就是用这两点的纵坐标之差f(x+Δx)-f(x)除以这两点的横坐标之差(x+Δx-x=Δx),而导数f(x)’是割线斜率的极限。那么,我们在割线斜率的前面加一个极限符号就可以表示导数f(x) \' 了:
这才是导数的真正定义,它是一个极限,而不再是两个无穷小量 dy 与 dx 的商 dy/dx。也就是说,按照极限的ε-δ定义 的含义,这个导数 f \'(x) 的真正含义是:你任意给一个 ε ,我都能让割线的斜率与这个值的差比你给的 ε 更小。
6.3 微分的重建
莱布尼兹当年认为导数是两个无穷小量 dy 和 dx 的商,所以他用 dy/dx 来表示导数。虽然现在导数不再是这个意思,但是莱布尼兹当年精心发明的这一套符号确实好用,于是我们就继续沿用了。也就是说我们现在仍然使用 dy/dx 来表示导数,但是现在 dy/dx 是一个极限,而不再是两个无穷小量的商。
微分的严格定义是这样的:对于 Δy 是否存在一个关于 Δx 为线性的无穷小 A*Δx(A为常数),使它与 Δy 的差是较 Δx 更高阶的无穷小,也就是说下面这个式子是否成立:
o(Δx) 就表示 Δx 的高阶无穷小,从字面上理解,高阶无穷小就是比无穷小还无穷小。当 Δx 慢慢趋向于 0 的时候,o(Δx) 能够比 Δx 以更快的速度趋向于 0。比如当 Δx 减少为原来的 1/10 的时候, o(Δx) 就减少到原来的 1/100,1/1000甚至更多。
如果这个式子成立,我们就说函数 f(x) 是可微的,dy=A*Δx 就说函数的微分。因为这是一个线性函数,所以我们说微分 dy 是 Δy 的线性主题。
7,定积分
7.1 定积分的定义
定积分是积分的一种,是函数 f(x) 在区间 [a,b]上积分和的极限。
注意定积分和不定积分的关系:若定积分存在,则它是一个具体的数值,而不定积分是一个函数表达式,它们仅仅在数学上有一个计算关系(牛顿-莱布尼兹公式)。
一个函数,可以存在不定积分,而不存在定积分;也可以存在定积分,而不存在不定积分。一个连续函数,一定存在定积分和不定积分;若只有有限个间断点,则定积分存在;若有跳跃间断点,则原函数一定不存在,即不定积分一定不存在。
当 ||Δx|| -> 0 时,总和 S 总是趋于确定的极限 I,则称极限 I为函数 f(x),在曲线 [a, b] 上的定积分定义用公式表达如下:
积分值和被积函数与积分曲线有关,与积分遍历字母无关。
当函数 f(x) 在曲线 [a, b] 上的定积分存在的时候,称 f(x) 在区间 [a, b]上可积。
定积分的几何含义:
面积的正负值:
代数和,它有正负之分,在 x 轴之上为正,在轴之下为负。
那么如何利用定积分的几何意义判断定积分的正负?
如果被积函数在积分区间总大于零,积分区间上限大于下限,则定积分为正,因为表示的是积分函数在积分上下限间与 X 轴围成的一个面积;如果被积函数在积分区间总小于零,积分区间上限大于下限,则定积分为负。
7.2 定积分的性质
定积分的性质如下:
定理1:
设 f(x) 在区间 [a, b] 上连续,则 f(x) 在 [a, b]上可积
定理2:
设 f(x) 区间 [a, b] 上有界,且只有有限个间断点,则 f(x) 在 [a, b] 上可积
定理3:
设 f(x) 在 区间 [a, b]上单调,则 f(x) 在 [a, b] 上可积
积分第一中值定理
积分第一中值定理是积分中值定理的推广之一,此外还有积分第二中值定理。积分中值定理揭示了一种将极分化为函数值,或者将复杂函数的积分化为简单函数的积分的方法。是数学分析的基本定理和重要手段,在求极限,判定某些性质点,估计积分值等方面应用广泛。
定理定义:如果函数 f(x) 在闭区间 [a, b] 上连续, g(x) 在 [a, b] 上不变号,并且 g(x) 在闭区间 [a, b] 上是可积的,则在 [a, b]上至少存在一个点 ε ,使下式成立:
如果函数 f(x) 在闭区间 [a, b] 上连续,则在积分区间 [a, b] 上至少存在一个点 ζ,使得:
积分第二中值定理:
积分第二中值定理是与积分第一中值定理相互独立的一个定理,属于积分中值定理。它可以用来证明Dirichlet-Abel 反常,Riemann 积分判别法。
定理内容:设 f(x) 在 [a, b] 上可积, g(x) 在 [a, b] 上单调,则存在 ζ 属于 [a, b],使得:
积分上限函数:
设函数 f(x) 在区间 [a, b] 上可积,且对于 定积分 ∫xbf(x)dx 每一个取值 的 x 都有一个对应的定积分值,则称变上限定积分 ∫a x f(t)dt 为 f(x) 的积分上限函数,记为:
如果 f(x) 在区间 [a, b] 上连续,则积分上限函数就是 f(x) 在 [a, b] 上的原函数。
当 f(x) >=0 时, Φ(x) 在集合上表示为右侧邻边可以变动的曲线梯形面积,下图中的阴影部分:
定理:设函数 f(x) 在区间 [a, b] 上连续,则积分上限函数:
在 [a, b] 上可导,并且:
7.3 实例
对于定积分的定义,有四个步骤:分割,近似,求和,取极限,具体如下:
1,求曲线 y=x2 与 x=1, y=0 所围成的区域的面积
2,利用定义计算定积分 ∫10x2dx
3,利用定义计算定积分 ∫π/20(2cosx + sinx -1)dx
4,计算由曲线 y2=2x 和直线 y=x-4 所围成的图形的面积
8,微积分的总结
8.1 微分学的思想
微分学的核心思想是逼近。其中:
- 一阶导数:线性逼近
- 二阶导数:二次逼近
- 导数计算:求导法则
8.2 微分学的主要作用
微积分的主要作用是:
- 1,求解函数的极限
- 2,分析函数的性质
8.3 微积分知识点总结
下面列出机器学习和深度学习中所需要的微积分知识点,虽然前面都已经学习过了,但是这里再整理起来。
1,极限:极限是高等数学和初等数学的分水岭,也是微积分的基石,是倒数,微分,积分的基础。虽然在机器学习里不直接用到极限的知识,但要理解导数和积分,它是必须的。
2,上确界和下确界:这个在机器学习中会经常用到,比如论文中常出现的 sup 和 inf。
3,导数:其重要性众所周知,求函数的极限需要它,分析函数的性质需要它。典型的如梯度下降法的推导,Logistic函数导数的计算。所以熟练地计算函数的导数是基本功。
4,Lipschitz 连续性:这一概念对分析算法的性质却很有用,在GAN,深度学习算法的稳定性,泛化性能分析中都有用武之地。
5,导数与函数的单调性:某些算法的推导,如神经网络的激活函数,AdaBoost算法,都需要研究函数的单调性。
6,导数与函数的极限:这个在机器学习中处于中心位置,大部分优化问题都是连续优化问题,因此可以通过求导为0的点而求函数的极限,以实现最小化损失函数,最大化似然函数等目标。
7,导数与函数的凹凸性:在凸优化中,Jensen不等式的证明中都有它的应用。
8,泰勒公式:又一个核心知识点,在优化算法中广泛使用,从梯度下降法,牛顿法,拟牛顿法,到AdaBoost算法,梯度提升算法,XGBoost算法的推导都离不开它。
9,不定积分:积分在机器学习中使用的相对较小,主要用于概念的计算中,它是定积分的基础。
10,定积分:包含广义积分,被用于概率论的计算中。机器学习中很大一类算法是概率型算法,如贝叶斯分类器,概率图模型,变分推导等。这些地方都涉及到对概率密度函数进行积分。
11,变上限积分:分布函数是典型的变上限积分函数,同样主要用于概率计算中。
12,牛顿-莱布尼兹公式:在机器学习中很少直接使用,但它是微积分中最重要的公式之一,为定积分的计算提供了依据。
13,偏导数:重要性不用多说,机器学习绝大多数函数都是多元函数,要求其极限,偏导数是绕不开的。
14,梯度:决定了多元函数的单调性和极限,梯度下降法的推导离不开它。几乎所有连续优化算法都需要计算函数的梯度值,且以寻找梯度为0的点作为目标。
15,高阶偏导数:确定函数的极值离不开它,光有梯度值还无法确定函数的极值。
16,链式法则:同样使用广泛,各种神经网络的反向传播算法都依赖于链式法则。
17,Hessian 矩阵:决定了函数的极值凹凸性。
https://www.zhihu.com/question/336322284/answer/918067537