1. 程式人生 > >人工智慧必備數學基礎:高等數學基礎(3)

人工智慧必備數學基礎:高等數學基礎(3)

如果需要小編其他數學基礎部落格,請移步小編的GitHub地址

  傳送門:請點選我

  如果點選有誤:https://github.com/LeBron-Jian/DeepLearningNote

  這裡我打算補充一下機器學習涉及到的一些關於泰勒公式與拉格朗日的知識點。

  (注意:目前自己補充到的所有知識點,均按照自己網課視訊中老師課程知識點走的,同時一些公式是網友辛辛苦苦敲的,這裡用到那個部落格均在文末補充地址,不過這裡首先表示感謝!!)

  (特別感謝此部落格(如何通俗地解釋泰勒公式):https://www.zhihu.com/question/21149770/answer/111173412)

1,泰勒公式

  泰勒公式,也稱泰勒展開式,是用在一個函式在某點的資訊,描述其附近取值的公式。如果函式足夠平滑,在已知函式在某一點的各階導數值的情況下,泰勒公式可以利用這些導數值來做係數,構建一個多項式近似函式,求得在這一點的鄰域中的值。

  泰勒公式用一句話描述:就是用多項式函式去逼近光滑複雜函式,以直代曲。

  先來感受一下泰勒公式的逼近效果:

  泰勒公式的維基百科定義:設 n  是一個正整數,如果定義在一個包含 a 的區間上的函式 f 在 a 點處 n+1 次可導,那麼對於這個區間上的任意 x 都有:

  其中的多項式稱為函式在 a 處的泰勒展開式,Rn(x) 是泰勒公式的餘項且是 (x-a)n

的高階無窮小

  這裡的餘項即為誤差,因為使用多項式函式在某點展開,逼近給定函式,最後肯定會有一丟丟的誤差,我們稱之為餘項。

  泰勒公式的定義看起來高階大氣。但如果 a=0 的話,就是麥克勞倫公式,即:

  這個就是我們下面討論的,可以認為麥克勞倫公式和泰勒公式等價。

  泰勒公式的作用就是用一個多項式函式去逼近一個給定的函式(即儘量使多項式函式影象擬合給定的函式影象),注意,逼近的時候一定是從函式影象上的某個點展開。如果是一個非常複雜函式,想求其某點的值,直接求無法實現,這時候就可以使用泰勒公式取近似的求該值,這是泰勒公式的應用之一,泰勒公式在機器學習中主要應用於梯度迭代。

  不過這裡我們首先看看多項式函式影象特點及其如何逼近給定函式。

1.1  多項式的函式影象特點

  初等數學已經瞭解到一些函式如:ex,sinx,cosx,arctanx,lgx....的一些重要性質,但是初等數學不曾回答怎樣來計算他們,下面我們慢慢學習。

  首先,我們看一下泰勒展示式:

   其中 f(0), f ''(0)/2! 這些都是常數,我們暫時不管,先看看其中最基礎的組成部分,冪函式有什麼特點。

  可以看到,冪函式其實只有兩種形態,一種是關於 Y 軸對稱,一種是關於原點對稱,並且指數越大,增長速度越大。

  那冪函式組成的多項式函式有什麼特點呢?

  我們發現:如果把9次的和2次的直接放在一起,那2次的都不用玩了。

  但是開始的時候,應該是2次的效果更好,之後才慢慢輪到9次,可是如何才能讓 x2 和 x9 的影象特效能結合起來呢?

  所以說,通過改變係數,多項式可以像鋼絲一樣彎成任意的函式曲線。

1.2  用多項式對 ex 進行逼近

  e 是麥克勞倫展示形式上最簡單的函式,有 e 就是這麼任性。下面看一下 ex 的多項式展示式:

  增加一個 1/4!*x4 看看。

  增加一個 1/5!*x5 看看。

   可以看出, 1/n!*xn 不斷的彎曲著那根多項式形成的鐵絲去逼近 ex,並且 n 越大,其作用的區域距離 0 越遠。

  連起來看,如下:

1.3 用多項式對 sin(x) 進行逼近

  sin(x) 是周期函式,有非常多的彎曲,難以想象可以用多項式進行逼近。

  下面看一下 sin(x) 的多項式展示式。

  同樣,我們再增加一個 1/7!*x7 試試。

  可以看到 1/7!*x在適當的位置,改變了x - 1/3!*x+1/5!*x5 的彎曲方向,最終讓 x - 1/3!*x+1/5!*x5 - 1/7!*x  更好的逼近 sin(x)。

  下面看看 sin(x)的泰勒展示:

  從上圖中每次不同程度的函式逼近可以看出:對於精確度要求較高且需要估計誤差的時候,必須用高次多項式來近似表達函式,同時給出誤差公式。以上就是利用多項式函式去逼近給定函式的一個過程。

1.4  泰勒公式是怎麼推導的?

  是根據“以直代曲,化整為零”的數學思想,產生了泰勒公式。

  如上圖,把曲線等分為 n 份,分別為 a1, a2, .... an,令  a1 = a, a2 = a + Δx, ... xn = a + (n-1)Δx。我們可以退出 (Δ2, Δ3  可以認為是二階,三階微分,其準確的數學用於是差分,和微分相比,一個是有限量,一個是極限量):

  也就是說, f(x) 全部可以由 a 和 Δx 決定,這個就是泰勒公式提出的基本思想。據此的思想,加上極限 Δx -> 0,就可以推出泰勒公式。

注意:為什麼泰勒公式選擇多項式函式去近似表達給定的函式?

  首先,我們看如下多項式:

  其實多項式是最簡單的一類初等函式。關於多項式,由於它本身的運算僅是有限項加減法和乘法,所以在數值計算方面,多項式是人們樂於使用的工具。因此我們經常用多項式來近似表達函式。這也是為什麼泰勒公式選擇多項式函式去近似表達給定的函式。

  下面我們推導一下其一階泰勒公式,我們首先從一階導數著手,假設 f(x) 在 x0 處有一階導數,那麼根據定義,就有:

  現在先回顧一下關於函式極限的一個結論:

  其中,α(x) 是該極限過程下的某個無窮小,即: α(x)  -> 0(x ->x*),利用這個結論,可以將(1)改寫為:

  其中  α1(x)  -> 0(x ->x0),再進一步變形,就可以得到:

  注意到(4)末尾那一項,很清楚,它是 (x - x0) 的高階無窮小,這是因為:

  於是,我們可以直接將它記作:

  這樣的話,(4)式就可以進一步改寫為:

  這就是一階泰勒公式,老師的PPT如下:

  那麼如何得到二階呢?

  先比較一下二階泰勒和一階泰勒形式上的差別。他們前兩項都是一樣的,只不過二階的又多出一項。注意到,高階無窮小的記號實際上是一個“收納筐”,它裡面裝著很多隱藏著的東西。如此,我們猜測,二階泰勒多出來的這一項,一定是從一階泰勒那個高階無窮小中“分析”出來的。

  這啟發我們來考慮這樣一個極限:

  這是 一個 0/0 的極限,要求解它可以考慮使用洛必達。但是,請注意,我們現在只有 f(x) 在 x0 一點一階可導的條件,這還不足以讓我們使用洛必達。不過,這並沒有太大困難,只要加強條件就行,比如:我們讓 f(x) 在 x0 處二階可導,這樣的話,就不僅保證了 f '' (xo) 存在,還同時保證了  f(x) 在 x0 某鄰域內一階可導,這就滿足了洛必達的使用條件。

  好了,下面開始洛必達!

  現在,我們又利用(2)的結論,將這個極限改寫為:

  基於同一理由:

  我們將它代入(10)並連同(10)一起帶回(7),就將得到:

  這就是二階泰勒公式!

  下面看一下以直代曲,當 |x| 很小的時候:

  這就相當於,在求一階導數,求 f(x) 在某一點的切線,這個從函式整體來看,只能表示出下一個點上,函式的整體走勢是上升還是下降。

  但是我們多畫幾個函式,就會發現只使用一階導數看起來有點不準,它只幫我們定位了下一個點是上升還是下降,對之後的趨勢就很難把控了。

  如何做的更準確一些呢? 我們如果把二階導利用上呢?

  更形象一點:

  • 首先要求兩曲線函式在某一點(x0,  y0)相交: 即 p(x) = f(x)
  • 如果要靠的更近,還要兩曲線在在該點(x0, y0)處切線相同:即函式的一階導數相同,p '(x) = f '(x)
  • 如果還要靠的更近,還要求函式的彎曲方向相同:即函式的二階導數相同,p '' (x) = f''' (x)

  以此類推:

  我們所找的多項式應該滿足下面條件:

  解釋一下上面的轉換時如何做的,以上面第三行的二階導數為例:

  第一個箭頭的轉換:將 Pn(x) 求二階導函式後將 x0 帶入,求得 Pn''(x0) = 2!a2

  第二個箭頭的轉換:所以 f ''(x0) = 2! a2,所以 a2 = 1/2! * f '' (x0)

  多項式函式:

  上面多項式中的係數 a 可以全部由  f(x) 表示,則得到泰勒多項式為:

  上式稱為 f(x) 在 x0 處關於 (x - x0) 的 n 階泰勒多項式。

  其中誤差為:

  因為是用多項式函式去無限逼近給定的函式,所以兩者之間肯定存在一丟丟的誤差。

  麥克勞倫公式為:

  近似可得:

  麥克勞林多項式在做逼近的時候很有用,它可以幫我們實現一個函式,在 x 軸 [0, 1] 之間符合低次冪的影象,在大於 1 的作用域上符合高次冪的影象,這樣便可以更好地擬合某些函式。

1.5 階乘的含義

  這裡補充一個知識:0的階乘為1,0的階乘等於1是人為規定的。

  原因如下:一個正整數的階乘是所有小於等於該數的正整數的積,並且有0的階乘為1.簡單一點是人為規定的,但是它有道理的,因為階乘是一個遞推定義, n! = n*(n-1)!,那麼必然有一個初始值需要認為規定。因為 1!=1,根據 1!=1*0!,所以 0!=1。

  那麼階乘到底什麼意思呢?

  • 1,我們發現,階數越高增長速度越快
  • 2,觀察可發現,越高次項在越偏右側影響越大
  • 3,對於一個複雜函式,對我們的感覺是在當前點,低階項能夠更好地描述當前點附近,對於之後的走勢就越來越依靠高階的了

1.6  泰勒公式的總結

  泰勒公式得名於英國數學家布魯克·泰勒。他在1712年的一封信裡首次敘述了這個公式,儘管1671年詹姆斯·格雷高裡已經發現了它的特例。拉格朗日在1797年之前,最先提出了帶有餘項的現在形式的泰勒定理。

  泰勒公式是一個用函式在某點的資訊描述其附近取值的公式。如果函式足夠平滑的話,在已知函式在某一點的各階導數值的情況下,泰勒公式可以用這些導數值做係數構建一個多項式來近似函式在這一點的鄰域中的值。泰勒公式還給出了這個多項式和實際的函式值之間的偏差。

  下面總結一下泰勒公式的作用:

  1,泰勒公式的作用是描述如何在 x0 點附近,用一個多項式函式去近似一個複雜函式。

  2,之所以能實現這種近似,背後的邏輯是:

  讓近似多項式函式在 x=x0 處的 y值,一階導,二階導 .... n 階導的值 = 原始函式在 x = x0 處的 y值,一階導,二階導,...n階導。

  即,如果函式 A 和 B在某一點的值一樣,變化率一樣,變化率的變化率一樣,變化率的變化率的變化率也一樣.....

  就這樣層層深入,無論深入到哪一個維度,關於這一點的變化率,函式A和函式B都是一樣的,那就可以推斷:

  在這一點上,函式A和B應該是一樣的

  在這一點附加,函式A和B應該很相似

  離這一點越遠,函式A和B的相似程度就越難以保證

  .........

  3,泰勒展開式的重要性體現在以下五個方面:

  • 1,冪級數的求導和積分可以逐項進行,因此求和函式相對比較容易
  • 2,一個解析函式可以被延伸為一個定義在複平面上的一個開片上的解析函式,並使得複分析這種手法可行
  • 3,泰勒級數可以永安裡近似計算函式的值,並估計誤差
  • 4,證明不等式
  • 5,求待定式的極限

1.7  泰勒公式的用處

  首先這裡要問了,為什麼要使用泰勒公式呢?

  • 用簡單的熟悉的多項式來近似代替複雜的函式
  • 泰勒公式容易計算函式值,導數與積分仍然是多項式
  • 多項式由他的係數完全確定,其係數又由他在一點的函式值及其導數所確定

  實際應用中,泰勒公式需要階段,只取有限項,一個函式的有限項的泰勒級數叫做泰勒展開式。泰勒公式的餘項可以用來估算這種近似的誤差。

  泰勒公式最直接的一個應用就是用於計算,計算機一般都是把  sin(x) 進行泰勒展開進行計算的。

  泰勒公式還可以把問題簡化,比如計算:

  代入 sin(x) 的泰勒展示有:

  其中 o(x3) 是泰勒公式裡面的餘項,是高階無窮小。

1.8  常見的麥克勞林級數

  下面給出幾個常見函式在 x=0 處的泰勒級數,即麥克勞林級數。

  下面是幾個常見的初等函式的帶有佩亞諾餘項的麥克勞林公式:

  佩亞諾餘項為 (x - x0)n 的高階無窮小:Rn(x) = o[(x - x0)n]

1.9  例子:求其n階麥克勞倫展開式

2,拉格朗日乘子法(Lagrange Multiplier Method)

  拉格朗日乘子法是用來求條件極值的,或者說拉格朗日乘子法叫拉格朗日數乘法求解條件極值,極值問題有兩類,其一,求函式在給定區間上的極值,對自變數沒有其他要求,這種極值稱為無條件極值。其二,對自變數有一些附加的約束條件限制下的極值,稱為條件極值。

  下面我們一步一步慢慢來

 2.1  如何求條件極值?

  給個函式: u = f(x, y),如何求其極值點呢?

  簡單來說直接求它的偏導不就OK了,即:

  但是:現在問題難度加大了,如果再加上約束條件呢?限制條件為 v(x, y) = 0

  解出 y = y(x) 代入 z 中有:

  這說明當 u 的梯度與條件 z = z(x,  y) 的法向量共線的時候 u 取得條件極值。

  由於一般情況下 v(x, y) 很難求出顯式子,所以我們運用銀行求導的法則:

  於是得到:

  顯然:

  於是我們得到結論:  u = f(x, y) 在條件 v(x,  y) = 0 作用下的極值點由下述函式的極值點給出,注意到 v(x,  y) = 0,極值也相同。

2.2  如何形象的理解拉格朗日乘子法?

  老師的PPT:

   下面來解析一下。

  想象一下,目標函式 f (x,  y) 是一座山的高度,約束 g(x, y)=C 是鑲嵌在山上的一條曲線如上圖。為了找到曲線的最低點,就從最低的等高線(0那條)開始往上數。數到第三條,等高線終於和曲線有交點了,如下圖所示,因為比這條等高線低的地方都不在約束範圍內,所以這肯定是這條約束曲線的最低點了。

  而且約束條件在這裡不可能和等高線相交,一定是相切。因為如果相交的話,如下圖所示,那麼曲線肯定會有一部分在B區域,但是B區域比等高線低,這是不可能的。

  兩條曲線相切,意味著他們在這點的法線(法向量)平行,也就是法向量只差一個任意的常數乘子(取為 - λ)

  我們把這個式子的右邊移到左邊,並把常數移到微分運算元,就得到:

  把這個式子重新解釋一下:這個就是函式 f(x, y) + λ g(x, y) 無約束情況下極值點的必要條件。

  (上圖解釋:兩曲線相切等價於兩曲線在切點處擁有共線的法向量,因此可得到函式 f(x, y) 與 g(x, y)在切線處的梯度(gradient)成正比,於是我們可以列出方程組求解切線的座標(x,y),進而得到函式 f的極值)

  從代數方面再梳理一下:

  求一個多元函式 f(x, y, z,...) 在條件 g(x, y, z,....) =a 下的極值,實際上是求前者在後者定義域下的極值。

  而求函式 L(r, x, y,z...) = f(x, y, z....) + r*(g(x,y,z...)-a) 的無條件極值,極值存在的條件為 L 的所有偏導數等於0。

  關鍵的一點來了,由於 r 也是 L 的變數,所以 L 對 r 的偏導數為 0 相當於要求:

  這恰好使 L(r, x, y, z...) 的除了r外的所有變數被限制在 g(x, y, z,...) 的定義域內。

  而在這個定義域內,顯然 g-a 恆等於0,於是就有 L=f,求 f的有條件極值問題被轉化為求 L的無條件極值問題。

2.3  什麼是拉格朗日乘子法?

  在數學最優問題中,拉格朗日乘子法(Lagrange Multiplier,以數學家拉格朗日命名)是一種尋找遍歷受一個或多個條件限制的多元函式的極值的方法。

  基本的拉格朗日乘子法(又稱為拉格朗日乘數法),就是求解函式 f(x1, x2, ....)在 g(x1,x2...)=0的約束條件下的極值的方法。其主要思想是引入一個新的引數 λ (即拉格朗日乘子),將約束條件與原函式聯絡到一起,使能配成與變數數量相等的等式方程,從而求出得到原函式極值的的各個變數的解。

  這種方法將一個有 n 個變數與 k 個約束條件的最優化問題轉換為一個有 n+k 個變數的方程組的極值問題,其變數不受任何約束。這種方法引入了一種新的標量未知數,即拉格朗日乘數:約束方法的梯度(gradient)的線性組合裡每個向量的係數。這種方法保證了在獲得最優乘子的情況下,原目標函式的解和拉格朗日函式的解是一致的。

  需要注意的是:lagrange函式本身沒有意義的,我們只是希望構造出一個 Lagrange函式,來使得這個函式的極值等於原函式 f(x) 在約束條件下的極值。

2.4  如何使用拉格朗日乘子法?

      在機器學習的過程中,我們經常遇到在有限制的情況下,最大化表示式的問題。即求表示式的最大值,一般情況下我們都是求導,令其等於 0,但是機器學習的過程中,我們經常遇到在有限制的情況下,最大化表示式,如下例子所示:

  此時,我們引入一個拉格朗日乘子 λ 構造出拉格朗日表達式 :

  對於有多個限制的表示式,則有:

  其中, λ 稱為拉格朗日乘子。

  接下來就是要對拉格朗日表達式求導,令其為0,解方程即可。

  最後將方程的解代入原函式中即可。

2.5  例項

  例項1:

  例項2:

  例項3:函式: f(x, y) = x + y 約束條件: x2 + y2 = 1,其其最大值。

   令:

  則:

  則對拉格朗日表達式求導,則有:

  求解可得  x,  y,  λ 。

  例項4:求旋轉拋物面 z = x2 + y2 與平面 x + y + z =1 的交線上到座標原點最近的點與最遠的點。

  設:

  令 F 的所有偏導數為零,得到:

  解得兩個點分別為:

  由於:

  所以,與原點最近的點是 M2,最遠的點是 M1。

 

3,泰勒公式與拉格朗日中值定理的關係

  先說結論:泰勒公式是拉格朗日中值定理的推廣,而拉格朗日中值定理是泰勒公式當 n=0時的特殊情況。因此,凡是可用拉格朗日中值定理解決的問題也可以用泰勒公式解決,但反之不然。

  拉格朗日中值定理維基百科定義:如果函式 f(x) 滿足在 [a, b] 上連續,在(a, b)上可導,那麼至少有一點 θ (a < θ < b)使下面等式成立:

  數學定義的文字描述總是非常嚴格,拗口。下面看一下拉格朗日中值定理的幾何意義:

  這個和泰勒公式有什麼關係呢?

  泰勒公式為:

  把泰勒公式0階展示,則剩下個餘項,還記得泰勒公式有個餘項 Rn(x) 我們一直沒有提。

  餘項即使用泰勒公式估算的誤差,即:

  餘項的代數式為:

  其中  a < θ < b 。

  看著是不是有點像?

  其實當 N=0 的時候,根據泰勒公式有, f(x) = f(a) + f '(θ)(x - a), 把拉格朗日中值定理中的 b 換成 x ,那麼拉格朗日中值定理根本就是 N=0 時的泰勒公式。

  拉格朗日(Lagrange)餘項:

  結合拉格朗日中值定理,我們看看 N=0 的時候,泰勒公式的幾何意義:

  當 N=0的時候,泰勒公式幾何意義很好理解,那麼 N=1, 2,...呢?

  這個問題我是這樣理解的:首先讓我們去想象高階導數的幾何意義,一階是斜率,二階是曲率,三階四階已經沒有明顯的幾何意義了。或許,高階導數的幾何意義不是在三維空間裡面呈現的,穿過更高維的時空才能俯視它的含義。

 

參考文獻:https://blog.csdn.net/ZLJ925/article/details/78961748

https://www.zhihu.com/question/21149770/answer/111173412

https://zhuanlan.zhihu.com/p/88855321

https://zhuanlan.zhihu.com/p/267037581

https://blog.csdn.net/acdreamers/article/details/41413445

https://blog.csdn.net/qq_38646027/article/details/88014692

https://www.zhihu.com/question/3858