泰勒展開[1]
在實際應用中對於具有復雜形式的函數我們常常希望用較為簡單的函數形式表示他,而多項式就是這種簡單的形式。比如對於指數函數、三角函數,我們可以使用多項式來逼近。
為了逼近(或者說是仿造)目標函數曲線f(x),首先選擇一個切入點(x0,f(f0)),然后讓此處的增減性相同,即一階導數相同。再使其凹凸性相同(二階導數相同)。然后讓更高級的特性相同。。。
因此,整體思路就是讓仿造的函數g(x)與f(x)的初始點和從一階到高階的導數都相等。然而,在實際操作中並不能無限階求導,只需要按需(或經驗)選擇階數。
假設我們只需要算到n階,多項式函數為:
\(g(x)=a_0+a_1(x-x_0)+a_2(x-x_0)^2+……+a_n(x-x_0)^n\)
由初始點相等: \(g(x_0)=f(x_0)\),得\(a_0=f(x_0)\)
由n階導數相等: \(g^n(x_0)=a_n n!=f^n(x_0)\),得\(a_n={f^n(x_0)\over n!}\)
因此求得多項式:
求泰勒展開式需要求g(x)的各項系數,計算比較復雜,但是一旦求出展開式之后就可以很方便地使用多項式計算了, 相當於一勞永逸.
誤差項,即余項: R(x)=f(x)-g(x)=\(\frac{f^{(n+1)}(x_0)}{(n+1)!}(x-x_0)^{n+1}+\frac{f^{(n+2)}(x_0)}{(n+2)!}(x-x_0)^{n+2}+\cdots +\frac{f^{(\infty)}(x_0)}{\infty!}(x-x_0)^{\infty}\)
利用柯西中值定理,可以求出\(R(x)=\frac{f^{(n+1)}(\xi)}{(n+1)!}(x-x_0)^{n+1}\)
應用舉例
優化算法之牛頓法
牛頓法原理:
將 \(f(x)\) 在 \(x_n\) 處二階 taylor 展開, 有:
我們的目的是選擇合適的 \(\Delta x\) 最小化目標函數 \(f(x_n+\Delta x)\) . 求導令導數為0得到:
其中的二階項 \(f''(x_n)\) 就是 Hessian 矩陣.
基尼指數
用基尼指數代替概率分布的信息熵
概率分布的信息熵等於 \(H(p)=-\sum_{k=1}^K p_k\log p_k\).
將 log(p) 在 p=0.5 處泰勒展開, 得到\(\log(p)\approx \log(0.5)+\log'(0.5)\cdot (p-0.5)+O(p^2)\approx 2(p-1)\)
將 p=0.5 處泰勒展開式代入 H(p) 可得\(H(p)\approx 2\cdot \rm{Gini}(p)\).
平方根 [2]
求正數的平方根, \(f(x)=\sqrt x\), 讓f(x)在x=1處泰勒展開得到: \(f(x)=\sqrt x \approx 1+{1\over 2}(x-1)-{1\over 4}{(x-1)^2\over 2!}+{3\over 8}{(x-1)^3\over 3!}-\cdots\)
這樣我們可以進行在一定精度內的逼近, 但是這里存在收斂區間的問題。只有 0 < x <2 時這個泰勒級式才會收斂. 因此需要我們對待求平方根的數字做預處理, 如果大於2, 就要把它轉化為[0,2)區間中去, 讓x不斷累除4(右移兩位運算)直到x落在收斂區間. 通過泰勒級式計算逼近值后再做修正(假如預處理時右移了2t次,那么修正時左移t次).
當然,實際應用中更常用牛頓迭代法求開方, 每次迭代時的預測值g與x/g取平均作為新預測值, 如果g與x/g當中的一個小於確切的平方根,那么另一個必然大於確切的平方根, 選擇平均值可以進一步逼近。
高斯核函數的推導證明[3]
在 SVM 中常用的徑向基核函數 \(K(x,y)=\exp(-{\|x-y\|^2\over 2\sigma^2})\), 證明其可以作為核函數, 即可以寫成 \(K(x,y)=\Phi^T(x)\cdot\Phi(y)\) 的形式.
證明:
\(\|x-y\|^2=x^Tx+y^Ty-2x^Ty\)
\(K(x,y)=\exp(-{\|x-y\|^2\over 2\sigma^2})=\exp(-{x^Tx\over 2\sigma^2})\exp({x^Ty\over \sigma^2})\exp(-{y^Ty\over 2\sigma^2})\)
對\(\exp({x^Ty\over \sigma^2})\)進行泰勒展開,在\(x^Ty=0\)處:
高斯核為什么會把原始維度映射到無窮多維?
非線性核通常使用高斯核, 高斯核可以映射到無窮維,解釋:
指數項 \(e^{x}\) 可以通過泰勒展開映射到無窮多項
相應的高斯核也是指數形式:
將泰勒展開式帶入高斯核,我們得到了一個無窮維度的映射。
參考