从零开始:机器学习的数学原理和算法实践

978-7-115-55696-7
作者: 大威
译者:
编辑: 张天怡

图书目录:

详情

零基础读者应如何快速入门机器学习?数学基础薄弱的读者应如何理解机器学习中的数学原理?这些正是本书要解决的问题。本书从数学基础知识入手,通过前3章的介绍,帮助读者轻松复习机器学习涉及的数学知识;然后,通过第4~第13章的介绍,逐步讲解机器学习常见算法的相关知识,帮助读者快速入门机器学习;最后,通过第14章的综合实践,帮助读者回顾本书内容,进一步巩固所学知识。   本书适合对机器学习感兴趣但数学基础比较薄弱的读者学习,也适合作为相关专业的学生入门机器学习的参考用书。   

图书摘要

版权信息

书名:从零开始:机器学习的数学原理和算法实践

ISBN:978-7-115-55696-7

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。


版  权

编   著 大  威

责任编辑 张天怡

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

内 容 提 要

零基础读者应如何快速入门机器学习?数学基础薄弱的读者应如何理解机器学习中的数学原理?这些正是本书要解决的问题。本书从数学基础知识入手,通过前3章的介绍,帮助读者轻松复习机器学习涉及的数学知识;然后,通过第4~第13章的介绍,逐步讲解机器学习常见算法的相关知识,帮助读者快速入门机器学习;最后,通过第14章的综合实践,帮助读者回顾本书内容,进一步巩固所学知识。

本书适合对机器学习感兴趣但数学基础比较薄弱的读者学习,也适合作为相关专业的学生入门机器学习的参考用书。

前  言

虽然目前机器学习受到大众的欢迎和热捧,但由于机器学习既涉及编程基础又涉及微积分、线性代数及概率统计等数学知识,学科的综合性很强,因此大部分读者只能望而却步。同时,市面上的很多机器学习相关图书往往存在两个极端。

(1)浅尝辄止,止于通识。这类图书主要以通识类机器学习介绍为主,几乎不机器学习算法原理进行详细描述,只简单概括算法的用途和优缺点。这类图书虽然能够满足零基础读者对机器学习的“扫盲”需求,但难以满足广大读者深入了解机器学习算法原理的核心需求。

(2)满页公式,令人望而生畏。这类图书常用大量公式推导来展示机器学习算法原理,对数学基础薄弱的读者来说,这类图书阅读起来非常困难数学基础薄弱的读者往往翻上几页之后便将其束之高阁,不再问津。

既能通俗直白地讲解机器学习算法原理,又能对机器学习关键的数学原理进行细致入微的讲解,并且还能通过手把手的代码案例教学帮助读者快速入门,这些就是本书所要实现的目标。总体来说,本书主要具有以下特点。

(1)形象直白地讲解机器学习算法原理。本书用直白、形象、生动的语言向读者讲述机器学习的关键知识,如机器学习是什么、机器学习的流程环节有哪些、机器学习的核心过程是怎样的、机器学习的典型算法内容等,使零基础读者也能够深入理解机器学习算法原理。

(2)细致讲解关键数学原理。读者要真正理解机器学习的底层原理很难完全脱离数学知识,因此,通俗直观地讲解机器学习的数学原理就是本书的特色与亮点。本书梳理了机器学习中常用的数学知识点,并直观、形象地进行讲述,帮助读者夯实数学基础。同时,本书针对重点内容如凸优化与梯度下降、数据降维与主成分分析(PCA)等进行深入讲解,保证读者能够理解并掌握核心内容。

(3)代码分段讲解,帮助读者上手实操。目前,有些图书的代码部分冗长没有详细解释,这导致编程基础较为薄弱的读者面对大量代码产生畏难情绪。本书对代码部分进行拆分讲解,对每一个小模块进行细致讲解,非常适合编程基础较为薄弱的读者学习

机器学习是一门综合性极强的学科,既包含微积分、线性代数和概率统计等高等数学基础知识,又包含编程语法与工业实践经验,因此学习门槛相对较高。如何降低机器学习的学习门槛而又保证学习的深度,是一个亟待解决的难题。本书在内容编排上根据读者不同的知识背景,力图做到知识讲解“直白形象,层层递进”。

(1)补基础。第1~第3章用直观形象的讲解方式,帮助读者夯实微积分、线性代数和概率统计的基础。这部分不是简单地将大学教科书的内容照搬过来,而是强调数学知识讲解的“直观形象、可感知”,希望读者阅读之后产生“原来如此”的感受,将大学阶段很多不明白的数学知识彻底搞清楚。

(2)机器学习的全景与关键。第4~第6章讲述机器学习的全景脉络和关键内容,如凸优化与梯度下降、数据降维与PCA等,帮助读者理解机器学习的全貌。

(3)算法与代码详解。第7~第14章讲述各个典型算法的来龙去脉,用最直观形象的语言描述最本质的原理,使零基础读者也能够快速理解算法原理。

本书充分考虑了零基础读者希望深度理解机器学习算法原理的需求,力求在直观形象、通俗易懂与深度讲解之间取得较好的平衡。本书主要面向下述读者群体。

(1)零基础机器学习的读者。零基础读者可以跳过数学基础相关章节,直接阅读机器学习的相关内容。本书机器学习算法原理的讲解从大众非常熟悉的线性回归等算法入手,并且尽可能使用文字来描述,从而保证零基础读者也能够快速理解机器学习算法原理。

(2)希望了解数学原理的读者。相当一部分读者希望更加深入地了解机器学习背后的数学原理,从而对机器学习有更为深入的掌握。针对这部分读者,本书提供了“补基础”和“搞懂算法”相关章节涉及的数学原理,希望帮助数学基础薄弱的读者夯实数学基础,让读者产生“原来这个数学知识是这样的啊”的感受,从而更加深刻理解机器学习背后的数学原理。

(3)编程基础薄弱的读者。本书代码实现过程部分实行的是分模块详解,对于编程基础较为薄弱的读者帮助较大。

(4)机器学习初、中级水平的读者。总体来说,本书适合机器学习初、中级水平的读者使用,能够有效帮助初、中级水平读者理解机器学习背后的数学原理。

大威

2021年5月

第1章 补基础:不怕学不懂微积分

机器学习是一门多学科交叉的学科,背后的数学原理涵盖微积分、线性代数、概率统计等相关内容,它的核心是“使用算法解析数据并从中学习,然后对世界上的某件事情做出预测”。机器学习有着广阔的应用空间,能发挥巨大作用,但要深入掌握算法的内部原理就必须了解相关算法背后的数学原理。搞清楚这些数学原理相关的知识,可以帮助我们选择正确的算法、选择参数设置和验证策略、识别欠拟合和过拟合现象等。微积分就是机器学习背后极其重要且不可或缺的一类数学知识。绝大多数机器学习算法在训练或者预测时会碰到最优化问题,而最优化问题的解决需要用到微积分中函数极值的求解知识,可以说微积分是机器学习数学大厦的基石。

微积分是一门由工程实践问题“催生”的学科,大量的工程实践问题促使了微积分的产生,总结来说主要有以下4类问题。

(1)求解变速运动的瞬时速度。

(2)求解曲线上某点处的切线。

(3)求解函数的最大值和最小值。

(4)求解曲线的长度、曲面的面积、物体体积等。

从微分和积分的应用来看,前3类问题主要应用微分知识,最后一类问题主要应用积分知识。微积分的应用如图1-1所示。

图1-1 微积分的应用

微积分包含众多知识点,例如极限概念、求导公式、乘积法则、链式法则、隐函数求导、积分中值定理、泰勒公式等。其中,研究导数、微分及其应用的部分一般称为微分学,研究不定积分、定积分及其应用的部分一般称为积分学。微分学和积分学统称为微积分学,而微积分基本定理则将微分和积分进行关联。由于泰勒定理本质上是微积分基本定理的连用,因此从总体上来看微积分包括核心概念和关键技术,其中核心概念是微分和积分,关键技术是微积分基本定理和泰勒定理。微积分知识体系如图1-2所示。

图1-2 微积分知识体系

最简单的函数是一次函数,最简单的方程是一次方程,微积分的基本思想就是将其他复杂的函数或者方程变成一次函数或一次方程来研究。根据近似的精确度不同,微积分可以分为以下几种情况。

第一种情况,用常数项近似代替某个函数在某点附近的数值,这就是极限,误差是无穷小。

第二种情况,用一次函数近似代替某个函数在某点附近的数值,这就是微分,误差为高阶无穷小。

第三种情况,用泰勒公式近似代替某个函数在某点附近的数值,误差比前两种情况都要小。从近似的精确度来看,泰勒公式的极限最低,但精确度是最高的。

1.1 深入理解导数的本质

导数虽然简单,却是深刻理解微积分的切入点和重要基础。本节我们将从一个著名的哲学故事开始我们的微积分之旅。

1.1.1 哲学层面理解变化

古希腊数学家、哲学家芝诺有一个著名的“飞矢不动”论断。这个“诡辩”是说,设想一支飞行的箭在每一时刻必然位于空间中的一个特定位置。每一瞬间箭都是静止的,既然每一瞬间都是静止的,那么飞行的箭其实就是“静止不动”的,这就是“飞矢不动”。

对中学时代的我们来说,这样奇怪的想法还是令人惊奇的。虽然我们明白这是一种“没道理”的说法,但是要严格批驳似乎又觉得无能为力。不过如果我们从数学角度来思考这个问题,很多事情就豁然开朗了。

既然芝诺提到“飞矢不动”,那么我们首先就要定义什么是“动”。不难发现,日常我们使用“运动”这个概念的时候,都会牵涉两个因素:时间、位置。假设一个物体在时刻t1处于A点,而在时刻t2处于B点,我们就说物体在时刻t1t2之间动了,否则我们就说物体是静止的。

“每一瞬间箭都是静止的”这句话本身就有问题。“每一瞬间”就是每一个时刻,每一个时刻箭当然会处在某个位置上,但是“静止”是一个跟“时间段”有关联的概念,不存在某个时刻是“静止”还是“运动”的说法。为了更好、更精确地刻画“运动”或“变化”,数学中引入了函数的概念。数学中,函数是描述物体运动与变化的重要工具。

1.1.2 生活中处处有函数

“你是你吗?”时刻t1看到这句话的你跟时刻t2开始思考这句话的你,难道没有发生变化吗?显然,时刻t2的你已经不是时刻t1的你了,但是大家并不会因此觉得“你不是你”。更一般地说,小时候的你跟现在的你相比,样貌、思想、行为、爱好都存在很大的不同,但是你并不会觉得小时候的你不是你。所以,什么是你呢?

我们知道,任何事物都处于时间的河流之中,时间就像河流一样滚滚向前,不断流逝。所以,你可以被看成一个以时间为自变量、自身状态为因变量的函数,自变量的取值范围是你的寿命,而你就是与时刻对应的无穷多状态的总和。

你在不同时刻有着不同的状态,我们为什么又会认为不同状态下的你是同一个“你”呢?这其实可以用连续函数来解释。虽然不同时刻的你对应着不同的状态,但是相邻时刻对应的状态差别很小,并且随着时刻越来越接近,状态差别也越来越小,这就是函数的连续性。这很好理解,例如用你读到这段话前后的时刻来对比,你的状态差别很小,别人也不会奇怪地对你说“你变了”;可是如果你跟几年未见的朋友再次见面,朋友可能就会发现你的变化。

1.1.3 从瞬时速度到导数

有了函数的概念,就可以进一步研究导数了。其实导数的概念并不是凭空产生的,而是基于生产、生活的需要出现的。导数典型的应用场景就是对瞬时速度的求解。

我们知道一辆汽车如果是匀速行驶的,那么用汽车行驶距离除以行驶时间就是它的速度,这个速度既是平均速度也是每时每刻的速度。但是实际上汽车很少是匀速行驶的,往往有时快有时慢,这时候用行驶距离除以行驶时间得到的将是汽车的平均速度,而不是它每时每刻的速度。那么,我们应如何求解汽车在某个时刻的速度,也就是瞬时速度呢?牛顿正是从求解瞬时速度入手进而创立了微积分的。

我们之前已经有了“速度”的概念,但那是“平均速度”或者匀速运动中每时每刻的“速度”,并没有“瞬时速度”的概念,所以我们需要给出“瞬时速度”的概念及其计算方法。

假设我们想求解汽车在时刻t0的瞬时速度,光盯着这个时刻是没有办法求解的,因为汽车在某一时刻的位置是确定的,我们需要把时间延伸到时刻t1。假设汽车行驶的位移公式为。时间从t0t1,时间的变化量,对应的行驶距离表示为,因此就是时刻t0t1的平均速度。

一个合理的想法是,Δ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时的某个趋近值,进而引出了“极限”的概念来进一步定义“导数”——虽然这是一个巧妙的想法,但也带来了麻烦,那就是如何说清楚“极限”。这花费了数学家们一个多世纪的时间,并且整个论证过程烦琐复杂,导致大家学起来很困难。实际上,对于导数,除了传统的理解方法外,数学家们还提出了其他更简单的理解方法。

我们对一次函数kb是常数)比较熟悉,一次函数的图像是一条直线,一次项系数k是直线的斜率。同时,一次函数可以代表匀速运动,一次项系数k正好就是匀速运动的速度。如果所有的运动都是匀速运动,那么我们的问题就解决了,匀速运动的速度就是瞬时速度。但问题是现实中很多运动都是变速运动,这该如何处理呢?仔细思考不难发现,变速运动虽然速度是变化的,但是因为速度是连续变化的,所以在很短的时间内其运动规律近似于匀速运动,那么我们是否可以考虑用匀速运动来近似代替变速运动呢?

前面汽车行驶的例子中,已知汽车行驶的位移公式为,求解汽车在时刻t0的瞬时速度。我们考虑时刻t0经过很短的时间Δt后在时刻的位置与Δt的关系:是Δt的二次函数。也就是说,汽车在时刻t0附近很小时间段Δt的运动规律可以用二次函数ft)来表示。如果把二次函数的常数项和一次项组成一个一次函数的话,可以得到,其中是常数项,是一次项,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)链式法则:例如,复合函数为基本函数sinxx2的函数嵌套。我们用新的符号如y来代替x2,则复合函数可以写作。如果自变量x发生微小变化dx,会导致函数发生微小变化,而dy的变化又会导致复合函数发生微小变化。于是,即。也就是说,基本函数嵌套形成的复合函数导数等于“外层导数与内层导数依次相乘”。

1.2 理解多元函数偏导

为了方便读者理解,前文主要从一元函数角度来讲解导数相关知识。但现实中更为常见的是多元函数的求导问题,也就是多元函数的偏导数和梯度求解。

1.2.1 多元函数偏导数是什么

最简单的函数是一元函数,如,但现实中更多的是多元函数,如等。其实,多元函数在生活中随处可见,例如矩形的面积(其中,xy分别是矩形的长和宽)就是二元函数,梯形的面积(其中,xy分别是梯形上、下底长,z为梯形的高)就是三元函数。从映射的观点来看,一元函数是实数集到实数集的映射,多元函数则是有序数组集合到实数集合的映射。我们对一元函数求导是非常熟悉的,那么对多元函数的求导该如何处理呢?

典型的一元函数,对这个典型一元函数求导有。实际上,式子中的abc也是可以变化的,所以求导过程也是求解关于x的偏导数。由此可知,多元函数偏导数的求解方法就是“各个击破”,对一个变量求导时,将其他变量暂时看成固定的参数。

对于形如这样的一元函数,它的导数就是自变量x的微小变化Δx与其所引起函数值微小变化Δf的比值,一般表示为。那么对于一个含有xy两个变量的函数,保持其他变量固定而关注一个变量的微小变化带来的函数值变化情况,这种变化的比值就是偏导数,如

1.2.2 搞清楚梯度是什么

梯度和导数是密切相关的一对概念,实际上梯度是导数对多元函数的推广,它是多元函数对各个自变量求偏导形成的向量。

中学时,我们接触“微分”这个概念是从“函数图像某点切线斜率”或“函数的变化率”这个认知开始的。典型的函数微分如等。

梯度实际上就是多变量微分的一般化,例如。对该函数求解微分,也就得到了梯度。梯度的本意是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。一般来说,梯度可以定义为一个函数的全部偏导数构成的向量。梯度在机器学习中有着重要的应用,例如梯度下降算法,这将在后文详细论述。

1.3 理解微积分

微积分基本定理无疑是人类思想最伟大的成就之一。在它被发现之前,曲面面积、物体体积等问题困扰着一代又一代的数学家,从公元前3世纪的阿基米德到17世纪中叶的费马都被这些问题所困扰。但是自牛顿、莱布尼茨发现了微积分基本定理并经过其追随者系统完善后,原本这些只有“天才”才能够解决的面积、体积难题变成了一般人根据系统方法和步骤也可以解决的普通问题了。

1.3.1 直观理解积分

我们讲解导数概念的时候,是已知汽车的位移函数来求解某个时刻的瞬时速度。那么,如果已知汽车各个时刻的瞬时速度,能否求出汽车的位移情况甚至位移函数呢?

(1)情况一:匀速运动。如果汽车匀速运动,也就是每时每刻的速度都相等,那么汽车位移就应该是速度曲线下方的面积,如图1-4所示。

图1-4 匀速运动情况

(2)情况二:变速运动。实际上更为一般的情况是汽车速度是变化的,也就是汽车处于变速运动状态。假设汽车瞬时速度v(t)与时间t之间的函数关系为,如图1-5所示。

图1-5 变速运动情况

如果汽车每一小段时间内都是匀速运动的话计算就比较方便了,那样只需要把各小段时间内的位移相加就可以得到最终的位移了。其中每一小段时间内的位移就是该段时间内速度与时间段的乘积,最终位移也就是各个直方图的面积之和,如图1-6所示。

图1-6 变速运动位移

上面的过程可以分解得更为细致,将0~6秒时间轴划分为很多份,每一段时间长度为dt,该段时间内的速度为v(t)。于是,这些小直方图的面积之和可以表示为,如图1-7所示。

图1-7 划分细致的变速运动位移

上述过程分解得越来越细致,以至于0~6秒被划分成无穷多个时间段,则直方图的面积最终会趋近于整个速度曲线下方的面积,如图1-8所示。

图1-8 划分足够细致的变速运动位移

曲线下方的面积就是速度对时间的“积分”,它表示所有的微小量累加起来的结果。

1.3.2 直观理解微积分基本定理

有了积分的概念以后,我们就可以进一步思考:积分的数值是多少呢?一辆汽车从时刻0启动行驶到时刻T,行驶速度函数为,则汽车行驶的位移是多少?显然,不同的时刻T对应的速度v(t)和位移s(t)都是不同的,如图1-9所示。

图1-9 积分数值

哪个位移函数对时间t求导结果恰好是速度函数呢?通过求导公式,不难知道位移函数对时间t的求导结果就是上述的速度函数。于是从时刻0到时刻T的位移就是。因此,我们可以知道

更一般的情况,某个区间的积分结果为,其中s(t)是函数v(t)的原函数。区间积分结果如图1-10所示。

图1-10 区间积分结果

上述结论的一般形式就是微积分基本定理:如果函数f (x)在区间[a,b]上连续,并且存在原函数F (x),则

1.4 泰勒公式太重要了

由于长期注重考试而轻视运用,大部分人在大学阶段对泰勒公式没有足够重视。实际上,泰勒公式是微分的“巅峰”和精华所在,需要我们高度重视。

1.4.1 泰勒公式是什么

泰勒公式的典型形式如下:

其中,Rn(x)是高阶无穷小量。上述公式也称为f (x)在点a处的泰勒级数。

泰勒公式的主要作用是对特别复杂的函数进行化简,具体来说就是通过近似函数来代替原函数,通过使用简单熟悉的多项式去代替复杂的原函数。

1.4.2 泰勒公式的典型应用

请大家解决这个问题:已知,求解的值。

解题思路:虽然众所周知,但是的值恐怕还真是不太容易求解。如果我们使用泰勒公式,问题就可以轻松化解。上面的问题可以看成对于函数,已知点处的函数值,求解点附近点处的函数值。

根据泰勒公式,我们可以得到在点附近的函数展开式:

代入化简可得:

观察上式,我们容易发现函数在自变量的给定值a附近可以用无穷个多项式不断展开来近似代替,展开式越多,代替的精度也就越高。例如,函数在自变量的给定值附近可以用一次函数来近似代替,那么一次项系数就反映了函数在点处的变化。如果用一次函数来近似代替原函数的值,那么精度就依赖于的大小。如果足够小,那么使用一次函数来近似代替的效果就令人满意。如果不够小,可能导致误差也不够小。如果想得到精度更高的近似值,就需要考虑使用更高次项的多项式来代替原函数。代入有以下几种情况。

(1)用一次项近似代替:

(2)用二次项近似代替:

(3)用三次项近似代替:

可见,次项越高,代替的精度也就越高。

1.4.3 直观理解泰勒公式的来龙去脉

泰勒公式被称为微积分的最高峰,在实践中有着大量而广泛的应用,是数学中广泛应用的函数近似工具。泰勒公式常见的应用场景是在某个点附近用多项式函数去逼近某个复杂的函数,从而通过多项式函数在该点处的数值去获得复杂函数在该点处的近似值。

多项式函数具有很好的性质,如易于计算、求导和积分等,所以如果能够用多项式函数来近似代替一些复杂函数,那样很多问题就好解决了。下面,我们以函数在点处可以用什么样的多项式函数来代替为示例进行讲解。

我们考察不同阶数多项式函数来近似代替附近的数值分布状况,如下所示。

(1)函数处有;函数处的一阶导数,二阶导数,三阶导数,四阶导数,五阶导数,如此循环。

(2)假设多项式最高次项为二次项,则多项式函数为。如果真的存在一组系数C0C1C2,使得多项式函数能够在附近非常好地近似代替函数的话,那么这样的系数C0C1C2应该是什么样的呢?

首先,函数处的数值为,那么多项式函数P(0)至少应该为0,即,因此。其次,虽然C0的数值被确定了,但是C1C2的数值还没有被确定。也就是说,满足多项式处数值为0的函数有无穷多种。显然,这无穷多种多项式不可能都很好地在附近近似代替函数。我们不仅希望多项式函数P(x)在处的数值等于函数,还希望两者在处的变化趋势也是相同的,也就是要求两者的一阶导数相同。因此可得,,因此。最后,我们可以进一步要求苛刻些,即希望两者在x =0处的变化趋势也是相同的,于是两者的二阶导数也应该相同。因此可得,。这样,多项式函数就被确定了。这个多项式函数就是附近的近似函数。

(3)假设多项式最高次项为三次项,则多项式函数为。根据上面的推理,多项式函数应该满足:首先,P(x)与f (x)在处的数值相等,即;其次,P(x)与f (x)在处的一阶导数相等,即;再次,P(x)与f (x)在处的二阶导数相等,即;最后,P(x)与f (x)在处的三阶导数相等,即。于是,我们可知

总结上述例子,我们可以发现多项式函数P(x)的各个系数是由原函数的求导情况和次项决定的,如表1-1所示。

表1-1 求导情况

原函数求导情况

原函数求导数值

多项式函数系数

处的数值

sin0=0

处的一阶导数

cos0=1

处的二阶导数

-sin0=0

处的三阶导数

-cos0=-1

处的四阶导数

sin0=0

处的五阶导数

cos0=1

处的六阶导数

-sin0=0

由表1-1可知,多项式函数系数……于是,我们可知多项式函数P(x)在附近的函数如下:

将上述式子推广到x=a,就可以得到多项式函数即泰勒公式如下:

其中,Rn(x)是高阶无穷小量。上述公式也称为f (x)在点a处的泰勒级数。

1.4.4 微积分基本定理与泰勒公式的关系

泰勒公式本质上是微积分基本定理连续累加的结果,下面我们将重点介绍如何通过微积分基本定理来推导泰勒公式。

微积分基本定理采用定积分来展示函数F(x)与它的导数之间的关系,即。也就是说,已知F(x)可以求解F'(x)的定积分。

假设a为定值,且,则上面的微积分基本定理可以写成:。这样,我们就可以使用的定积分和F(a)来计算的数值。我们继续对定积分进行变量代换x = a+t,则有

如果是连续可导函数,那么。将上面的式子进行迭代,可得:

如此循环迭代,就可以得到泰勒公式。这说明,泰勒公式本质上是微积分基本定理的多次连用,两者本质上具有统一性。

相关图书

ChatGPT原理与应用开发
ChatGPT原理与应用开发
动手学机器学习
动手学机器学习
机器学习与数据挖掘
机器学习与数据挖掘
机器学习公式详解 第2版
机器学习公式详解 第2版
自然语言处理迁移学习实战
自然语言处理迁移学习实战
AI医学图像处理(基于Python语言的Dragonfly)
AI医学图像处理(基于Python语言的Dragonfly)

相关文章

相关课程