這是《機器學習中的數學基礎》系列的第16篇,也是微積分的最後一篇。
在實際生活和工作中,我們經常希望用多項式來近似某點處的函數值,而泰勒級數就是幹這個的。不過在正式介紹泰勒級數之前,我們先來看看高階導數與函數的凹凸性。
那麼什麼是高階導數?顧名思義,高階導就是求了很多次導數。舉個例子,函數y=x³的圖像如下:
圖1
如圖1所示,y的一階導,也就是第一次求導,y'=3x²,表示圖像的斜率。那如果我們對y'再進行求導呢?可以得到y''=6x,它的幾何意義又是什麼呢?一階導我們表示的是函數值的變化率,那麼二階導就表示斜率的變化率。進一步,我們說,如果二階導大于0,說明斜率是在一直增加的,此時函數是個凸函數;同理,二階導小于0,斜率在一直減小,函數為凹函數。
既然說到了凹凸函數,我們就來看看它的定義(機器學習領域,可能與數學領域有所不同):
如果一個函數f是凸函數,那麼其滿足:f(tx (1-t)y)≤tf(x) (1-t)f(y),其中x、y為函數定義域上任意兩點,t∈[0,1]。
可能看公式不容易那麼理解,我們就來畫個凸函數的圖像吧:
圖2
如圖2所示,我們首先來看tx (1-t)y,它保證了取值範圍是在x、y之間。為什麼呢?因為t∈[0,1],把t=0代入,得到y;把t=1代入,得到x。因此tx (1-t)y的取值在x與y之間。那麼它對應的函數值自然就是:f(tx (1-t)y)。
下面我們看C點的值該如何求,我們再畫一個圖來說明:
圖3
如圖3,我們做了一條平行于x軸的線段AE。很容易看出△ACD相似于△ABE,因此有CD/BE=AD/AE。其中,CD的長是我們要求的,BE的長為f(y)-f(x),AD的長為tx (1-t)y-x=(1-t)(y-x),AE的長為y-x。所以,我們有:
約分化簡可得CD=(1-t)f(y) (t-1)f(x)。但我們想知道C的值,隻需再加上A點的函數值f(x)就可以了。因此,C點的值為(1-t)f(y) (t-1)f(x) f(x)=tf(x) (1-t)f(y)。Bingo!
我們再來觀察圖2,它是一個凸函數,那麼它的斜率就是不斷增加的,也就是說二階導始終大于0.
- 泰勒級數
有了以上的鋪墊,我們來看如何近似函數在某點的值。比如sin(x)在x=0處的函數值sin(0)怎麼來近似呢?
我們一般用多項式來估計,先上個二次多項式,f(x)=ax² bx c。然後再把sin(x)的圖像畫出來:
我們現在想用f(x)=ax² bx c來近似逼近sin(0)的值,隻需确定a、b、c三個參數的值就好了。
首先,這倆函數在0點的函數值得相等吧。也就是說,f(0)=sin(0),而sin(0)=0,f(0)=c,因此c=0.
然後,這倆函數在0點處的斜率得相同吧。也就是說,它們的一階導相等,即f'(0)=sin'(0),而sin'(0)=cos(0)=1,f'(0)=2a*0 b=b,化簡可得b=1.
最後,這倆函數在0點處的二階導也應該相等,即f''(0)=sin''(0),而sin''(0)=0,f''(0)=2a,因此a=0.
綜上,我們用來近似的函數f(x)=0*x² 1*x 0=x。我們說二次多項式中對sin(x)在x=0處最好的近似函數就是f(x)=x,把x=0代入就得到近似值是0。
觀察我們上面的近似過程,可以得到下面的式子:
sin(x)≈sin(0) sin'(0)/1!*x sin''(0)/2!*x²
我們把它一般化,如果要近似任意函數f(x)在x=0處的值,可以表示為:
如果我們想近似函數f(x)在任意一點x=x0處的值,那麼可以表示為:
泰勒級數的應用還有很多,這裡就不一一展開了。這就是今天的全部内容,歡迎留言讨論。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!