![PyTorch深度学习实战:从新手小白到数据科学家](https://wfqqreader-1252317822.image.myqcloud.com/cover/744/33114744/b_33114744.jpg)
2.5 加油站之高等数学知识回顾
又到了“补充营养”环节,持之以恒定有收获!
2.5.1 方向导数和梯度
在神经网络的迭代优化过程中需要求各个权重的偏导数,从而用更新公式的方式更新权重,达到优化的目的。本节主要回顾高等数学中的方向导数及梯度的概念,使读者更加清楚神经网络中的偏导数。
在数学中,一个多变量的函数的偏导数是它关于其中一个变量的导数而保持其他变量恒定。在一元函数中,导数就是函数的变化率;二元函数的变化率比较复杂,因为它多了一个自变量。如图2.28所示,在XOY平面内,当动点由P(x0,y0)处沿不同方向变化时,函数f(x,y)的变化速度一般来说是不同的,因此需要研究f(x,y)在点(x0,y0)处沿不同方向的变化率。
![](https://epubservercos.yuewen.com/4F5521/17725769606720406/epubprivate/OEBPS/Images/38829_99_1.jpg?sign=1739301121-ZMqZwxnHuVrjmYgYQ9LIdcsOwJmWgxXy-0-dadd098b0d91a177859248b8c6352402)
图2.28 偏导数
如图2.28所示,Z是关于x和y的函数,Z的变化受x和y的变化的影响,x的变化速度和y的变化速度对于Z的影响是不同的,如同下山,沿着水平方向移动和沿着垂直方向移动,对于达到下山目的的快慢是有不同影响的,沿着X轴和沿着Y轴的变化率就是偏导数。函数Z的偏导数只有两个,但是这两个偏导数产生的合向量却有无数个,并且方向是任意的,这两个偏导数的合向量被称为方向导数。
偏导数的数学定义如下:设函数Z=f(x,y)在点(x0,y0)的某个邻域内有定义,固定y=y0,一元函数f(x,y0)在点x=x0处可导,则x的导数等于x=x0处的极限,即
![](https://epubservercos.yuewen.com/4F5521/17725769606720406/epubprivate/OEBPS/Images/38829_99_2.jpg?sign=1739301121-eTHm8PBaALr3XguVwPxI40BFdxsrBQmX-0-86bef2c59db3761880895f27bcf4e11b)
称A为函数Z=f(x,y)在点(x0,y0)处关于自变量x的偏导数,记作fx(x0,y0)。从上面的定义可知,偏导数的几何意义为变量方向上的斜率,即对应方向上变化的快慢程度。
上面回顾了偏导数的定义,请据此求出f(x,y)在点(3,4)处的偏导数。
f(x,y)=x3+2xy+y3
x的偏导数为fx(x,y)=3x2+2y。
y的偏导数为fy(x,y)=2x+3y2。
将点(3,4)代入即可求出f(x,y)的偏导数。参考结果为fx(3,4)=3×32+2×4=35,fy(3,4)=2×3+3×42=54。
下面以“蚂蚁远离火源”为例介绍方向导数,如图2.29所示。
![](https://epubservercos.yuewen.com/4F5521/17725769606720406/epubprivate/OEBPS/Images/38829_99_3.jpg?sign=1739301121-U0YUEE19QhYxSJJyHswFnYbVxMi1qIeV-0-c964b0e395decd0b16eab2974bbf9fe3)
图2.29 蚂蚁远离火源与方向导数
在二维平面上,一只蚂蚁为了逃避大火的炙烤会选择远离火源,它可以沿着X轴向右撤离,也可以沿着Y轴向上撤离,还可以沿着X轴和Y轴的某一夹角的方向撤离。实际上,最聪明的方法是沿着y=x的方向远离火源,因为在这条直线撤离能最快远离火源。
在数学中,为了定义函数沿着某个方向变化的快慢,产生了方向导数的概念,如同下山,你可以有几百种下山的方式,不同的下山方向有不同的变化,但是最快捷的下山方式只有一种。如图2.29中的第二张图所示,X轴方向的改变量Δx和Y轴方向的改变量Δy以φ为夹角组成方向向量L,代表蚂蚁实际撤离的方向,在该方向撤离的变化速度就是其方向导数。
沿L方向的方向导数的定义如下:如果函数的增量f(x+Δx,y+Δy)-f(x,y)与PP′的距离的比值存在,则将其称为P点沿L方向的方向导数。
![](https://epubservercos.yuewen.com/4F5521/17725769606720406/epubprivate/OEBPS/Images/38829_100_2.jpg?sign=1739301121-PTzXvLAw3vjBBm7ZooOP0VqfR9HIm3KS-0-b7f258ce20c3c18ee5f3afed0d1b14af)
关于方向导数有如下这样一个定理:如果z=f(x,y)在点P(x,y)处可微分,那么在该点沿着任意方向的方向导数都存在,并且方向导数为
![](https://epubservercos.yuewen.com/4F5521/17725769606720406/epubprivate/OEBPS/Images/38829_100_3.jpg?sign=1739301121-KR0LcWpb0kUH8gMM66PyFhiNyplznXzq-0-f1b55c3bb9be1808c8bffe901e395b2c)
式中,φ为X轴到方向L的夹角。请读者尝试求函数z=xe2y在点p(1,0)处沿着p点到q(2,-1)的方向导数。
参考答案如下:方向向量为,X轴到方向向量L的夹角为
;
;
。所以,方向导数为
,你求对了吗?
方向导数和梯度的关系如下:在数学定义中,梯度表示最大的方向导数,并且梯度的方向和方向导数取得最大值时的方向一致。这也是梯度下降优化算法名称的由来,即梯度的方向是优化的最佳方向。
2.5.2 微分及积分
下面先回顾微积分的重要思想。微积分起源于17世纪,主要帮助人们解决各种速度、面积的求解等实际问题,图2.30所示就是使用微积分求面积的典型例子。
![](https://epubservercos.yuewen.com/4F5521/17725769606720406/epubprivate/OEBPS/Images/38829_101_1.jpg?sign=1739301121-CYGLBTVMYZ7pav5mFcVGgrctToqBsD29-0-e7fa3aafe675fdb04212a76cd381a627)
图2.30 使用微积分求阴影部分的面积
在微积分出现之前,古人计算图2.30中阴影部分的面积的方法是“以直代曲”,古人没有求取阴影部分的面积的工具和数学知识,于是采用近似计算的方式估计阴影部分的面积。具体的做法如下:将阴影部分划分成较小的矩形,利用矩形公式近似计算阴影部分的面积,如图2.31所示。
![](https://epubservercos.yuewen.com/4F5521/17725769606720406/epubprivate/OEBPS/Images/38829_101_2.jpg?sign=1739301121-uGhU2Qe2vQRWB7EEI3eo0UtaC4zVJt9D-0-f2a5b20c9aeba31b919bbad4ceac51a8)
图2.31 “以直代曲”求阴影部分的面积
将阴影部分划分成4个矩形,利用矩形面积公式计算每个矩形的面积,最后将4个矩形的面积累加即可得到阴影部分的面积,虽然不是很精确,但可以估算大概值。如果将矩形划分得足够小,对阴影部分面积的估计就会更加准确,这也是微分思想的雏形。假设在a和b之间插入若干个点,得到n个小的区间,每个小矩形的面积为Ai=f(εi)Δxi,于是近似得到阴影部分的面积:A=,当n→∞时,每个小矩形的边长λ→0,于是可以得到阴影部分精确的面积:A=
。莱布尼兹在研究过程中为了体现求和(Sum)的感觉,将S拉长,于是出现了后来的简写符号“∫”,因此上面的面积公式变成如下形式:
![](https://epubservercos.yuewen.com/4F5521/17725769606720406/epubprivate/OEBPS/Images/38829_101_5.jpg?sign=1739301121-ASzFXV3ZdWvmOxe4w3ZDzR8QA87roMfQ-0-dacbc880b7746511ddce50574112e95e)
式中,d是英语单词differential的简写,表示微分。
微分和导数之间的关系可以借助图2.32进行解释。
![](https://epubservercos.yuewen.com/4F5521/17725769606720406/epubprivate/OEBPS/Images/38829_102_1.jpg?sign=1739301121-Wg4wjphLKiR7vpSyqPDd1tblYCK9fukX-0-73b946008a787b380f317c45aea45732)
图2.32 微分和导数之间的关系
在图2.32中,Δx=dx,Δy是y=f(x)的曲线增量,dy是dx的切线增量,Δy=dy+o(Δx),其中o(Δx)→0。切线斜率就是该点的导数,dy=f′(x)dx。dy和dx组成微分三角形。微积分实际就是将这些微分累积起来,这也是其名称的由来。
当Δx→0时,总和S总是趋于确定的极限I,所以称极限I为函数f(x)在曲线[a,b]上的定积分,定积分的表达如图2.33所示。
![](https://epubservercos.yuewen.com/4F5521/17725769606720406/epubprivate/OEBPS/Images/38829_102_3.jpg?sign=1739301121-VPFfoqV2fxJYbSSdGMaOTEGrivsbVgtQ-0-a20cea5f30a696ed3cc5a5c933a7f5e0)
图2.33 定积分的表达
下面利用定义计算定积分。
首先将[0,1]分为n等份,n→∞,分点为,i=1,2,3,…,n,每个小区间[xi-1,xi]的长度
,i=1,2,…,n,取ξi=xi,i=1,2,…,n,则
。
定积分有以下几个性质。
●。
●(k为常数)。
●设a<c<b,则有。
●设在区间[a,b]上满足f(x)≥0,则。
除了这些性质,微积分中还有著名的第一中值定理,它的定义如下:如果f(x)在区间[a,b]上连续,则在区间[a,b]上至少存在一个点ξ使,如图2.34所示。
![](https://epubservercos.yuewen.com/4F5521/17725769606720406/epubprivate/OEBPS/Images/38829_103_9.jpg?sign=1739301121-pAM9jSASEVkJHft3rdZc0BIqH26ae4l3-0-76e9379a7a645dcba91753928f54becf)
图2.34 第一中值定理
2.5.3 牛顿-莱布尼兹公式
牛顿-莱布尼兹公式给出了求取定积分的简单方法,如果F(x)是连续函数f(x)在区间[a,b]上的一个原函数,则满足:
![](https://epubservercos.yuewen.com/4F5521/17725769606720406/epubprivate/OEBPS/Images/38829_103_10.jpg?sign=1739301121-Mm4Xy9VfaasnhkJwxE2xphGFU9opXzPU-0-e50531bb7c298bd7a299971a9141d18f)
一个连续函数在区间[a,b]上的定积分等于它的任意一个原函数在区间上的增量,下面对其做几何解释。
把区间[a,b]均分成4份,整体等于部分之和,所以f(b)-f(a)=∑Δy,如果再细分,将区间[a,b]均分到最细的间隔dx,对应的Δy就变成dy,所以f(b)-f(a)=∑dy,如图2.35所示。
![](https://epubservercos.yuewen.com/4F5521/17725769606720406/epubprivate/OEBPS/Images/38829_104_1.jpg?sign=1739301121-kyAHDblDhg4moEU6Ch8a0c8MRq4m1CY5-0-54208a193995229c918ffcbab0da38fc)
图2.35 牛顿-莱布尼兹公式的几何解释
f(b)-f(a)=∑dy,由于dy=f′(x)dx,所以,这就是牛顿-莱布尼兹公式的由来。
在计算定积分时,通常采用牛顿-莱布尼兹公式。接下来用牛顿-莱布尼兹公式求曲线y2=2x和直线y=x-4所围成的阴影部分的面积,如图2.36所示。
![](https://epubservercos.yuewen.com/4F5521/17725769606720406/epubprivate/OEBPS/Images/38829_104_3.jpg?sign=1739301121-uN2Xk4vm7Qce73LjX6HF5Ubu7y9eGbTP-0-169dd758d82e1b51c55e6e1f1d600902)
图2.36 用牛顿-莱布尼兹公式求阴影部分的面积
先求出曲线y2=2x和直线y=x-4的交点,分别为(2,-2)和(8,4),选取y作为积分变量,y∈[-2,4],由牛顿-莱布尼兹公式可得,被积函数
的原函数为F(x),
,
,
,所以F(4)-F(-2)=30-12=18。
从第3章开始,笔者将带领读者从头到尾熟悉PyTorch中的各种算子。