梯度下降法和泰勒公式
第一部分:泰勒公式
在高數中,引出相關需求,其描述如下:
對于一些較復雜的函數,為了便于研究,往往希望用一些簡單的函數來近似表達。由于用多項式表示的函數,只要對自變量進行有限次的加,減,乘三種算數運算,便能求出它的函數值,因此我們經常用多項式近似表達函數。
簡單說來,就是:在誤差允許的前提下,我們用多項式(簡單函數)來近似代替復雜函數,使得復雜函數的應用更加方便
所以說,泰勒公式是使用多項式對目標函數的近似,當然為了提高精度,使用了高次多項式
泰勒(Taylor)中值定理1:如果函數f(x)在x0處具有n階導數,那么存在x0的一個領域,對于該領域的任一x,有:
佩亞諾余項(近似誤差):
我們可以利用泰勒公式對未知函數進行估計,過程如下:
設下圖是我們要估計的函數圖形:
我們不知道函數圖形的全部,只知道一小部分:
?使用泰勒公式,已知點是這一個函數片段的端點,通過泰勒公式我們可以估計函數片段端點的一個極小領域內的值,若我們用一階泰勒展開式進行計算的話,效果應該如下:
?每一次估計之后,下一次使用上一次的結果再進行估計(迭代過程),每一個估計片段鏈接起來,就是我們在已知函數片段下,對函數整體的估計。我們可以使用更高階的泰勒展開來估計函數,這要看對應的應用場景而定。
現在我們只要知道一個函數的一個點的取值和該點的變化率(導數),就可以對函數整體進行估計。
?
第二部分:梯度下降(上升)法
在優化方法中最常提到的方法——梯度下降法
什么是最優化問題?
在百度百科中的定義如下:
工程設計中最優化問題(optimization problem)的一般提法是要選擇一組參數(變量),在滿足一系列(約束條件)下,使設計指標(目標)達到最優值。
設,我們有一個數據集,每一項數據有兩個值(x:屬性,y:標簽),都是數值型的,我們認為每一項的屬性和標簽是符合某個函數關系的,即:
?我們希望這個函數盡可能的符合真實的屬性-標簽之間的關系,我們用歐氏距離來度量,預測關系和真實關系的差距,當這個差距足夠小,我們就可以使用
?來近似這種關系。
所以我們有如下最優化目標
這是一個關于w的函數,取不同的數據集,有不同的結果,我們要求這個函數取最小值時的w?,當然我們可以選擇對函數求導,令導數等于0,就可以求解,我們不采取這種方法(在現實任務中,一階導數等于0這個式子不容易求解)。
我們選擇一種看上去比較蠢,但是實用的方式:對w一點點的調整,我們希望每一次調整,計算結果都在減小,這是一個迭代過程,直到w的調整無法使函數值下降,我們認為此時的w是最優的w。(這就是梯度下降的基本思想)
設w每次的調整為:w-w0=ηv,因為w是一個參數向量,所以其變化用η(步長,變化大小,標量),v(變化方向,單位向量)來表示。我們需要求v(變化方向),使得函數的變化最快,在v未知的情況下,怎么得到調整后的函數值呢?
此時就可以使用泰勒公式對函數值進行估計,表示如下(使用一階泰勒展開式):
表示為w的方程為:
因為w-w0=ηv?,有:
因為每次參數w調整之后,函數值減小,有:
?
?因為步長η是一個標量,不影響符號,所以先省略,得到:
?v是一個單位向量,函數的導數也是一個向量(函數增長方向),那么兩個向量的乘積在什么時候小于0呢?
如下是向量的乘積:
當cos(α)<0,時向量乘積小于0?,因為我們希望下降速度是最快的,所以令cos(α) = -1,即兩個向量的方向相反。
那么知道了v與f'(w0)方向相反,且是個單位向量,所以v為:
因為?
是個標量,那么將它并入η?,則w的更新公式為:
這就是梯度下降法,梯度上升是求最大值時用的,即把上式中的-換成+
總結
以上是生活随笔為你收集整理的梯度下降法和泰勒公式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《黑客帝国》说的是什么?
- 下一篇: H7N9?生活还得继续~~适合边玩边学的