內(nèi)容導(dǎo)讀:切線、導(dǎo)數(shù)、偏導(dǎo)數(shù)、梯度、梯度下降算法,從中學(xué)、大學(xué)數(shù)學(xué)到人工智能,這些概念是一脈相承的。本文將這些知識進行大串聯(lián)。
如果你是個中學(xué)生,讀完本篇文章,你將會了解到,中學(xué)里學(xué)習(xí)的數(shù)學(xué)將來會在人工智能的哪些方面應(yīng)用。如果你正在從事人工智能的學(xué)習(xí)研究,本文將有助于你系統(tǒng)地重溫人工智能算法及其預(yù)備知識的前世今生。
(1)中學(xué)數(shù)學(xué)里的相切、切線、導(dǎo)數(shù)等概念。
曲線上某點A的切線是這樣定義的:B是曲線上鄰近A的點,以A為定點,當(dāng)B點沿著曲線無限地接近A點時,割線AB的極限位置就是曲線在點A的切線,A點叫做切點。下面的GIF動畫動態(tài)演示了這一過程。
我們可以繪制任意光滑曲線上的點的切線。下面幾幅動圖展示了圓、拋物線、正弦曲線、復(fù)合函數(shù)曲線上的切線。
有了切線和切點,我們還可以求出經(jīng)過切點的法線,它與切線垂直。正弦曲線上任何一點的切線及其法線如下面的動圖所示。
曲線上某點的切線的斜率,我們稱之為曲線在該點的導(dǎo)數(shù)。當(dāng)然,導(dǎo)數(shù)有其嚴格的定義,函數(shù)y=f(x)在x0處的導(dǎo)數(shù)定義為:函數(shù)y=f(x)在x0處的函數(shù)值的增量Δy與自變量的增量Δx之比在Δx→0時的極限,如下圖所示:
當(dāng)然,這個導(dǎo)數(shù)值與x0處的切線斜率是相等的。
導(dǎo)數(shù)或者切線斜率有什么意義?它反映了當(dāng)自變量變化時,因變量變化的快慢程度。如下圖所示,圖中給出了拋物線上兩點A,B的切線,顯然B點的切線更陡峭,則在兩點處,當(dāng)自變量x有相同的變化量Δx時,B點的因變量Δy更大。明白這一點很重要。
在中學(xué)里學(xué)習(xí)的導(dǎo)數(shù),僅限于單個自變量的函數(shù)。事實上,許多函數(shù)有2個或者更多自變量。那么此時導(dǎo)數(shù)該怎么定義呢?這就要用到偏導(dǎo)數(shù)。
(2)大學(xué)里的偏導(dǎo)數(shù)概念。
為了簡化問題,數(shù)學(xué)家們想了一個巧妙的方法。例如對2元函數(shù)f(x,y),把y看作常數(shù),則f(x,y)變成了一元函數(shù),就可以按照中學(xué)里導(dǎo)數(shù)的定義求解出f(x,y)在(x0,y0)處對x的導(dǎo)數(shù)。同理,將x看作常數(shù),可以求出f(x,y)在(x0,y0)處對y的導(dǎo)數(shù)。這個導(dǎo)數(shù)叫作對x或y方向的偏導(dǎo)數(shù),如下圖所示。
偏導(dǎo)數(shù)用下面的公式來表示。
偏導(dǎo)數(shù)反映了在(x0,y0)處,f(x,y)在某個方向上隨該自變量變化而發(fā)生變化的快慢程度。
很容易將偏導(dǎo)數(shù)的概念推廣到多元函數(shù)。
如果給偏導(dǎo)數(shù)添加方向,可以將偏導(dǎo)數(shù)變換為矢量形式。其變換方法為將各個方向的偏導(dǎo)數(shù)乘以該方向的單位方向向量,如下圖所示:
則該矢量的和稱為梯度,如上面的圖所示。反過來,梯度矢量在各個坐標軸的投影的大小即為在各個方向的偏導(dǎo)數(shù)。
那么梯度有什么意義呢?根據(jù)前面的介紹,方向?qū)?shù)反映了函數(shù)值在各個方向上的最大變化率,梯度是各個方向梯度分量(偏導(dǎo)數(shù)乘以單位方向向量)的合成,則梯度自然反映了函數(shù)的最大變化率及其方向。
理解了這一點非常重要。它有什么用呢?
在人工智能的機器學(xué)習(xí)中,訓(xùn)練各種機器學(xué)習(xí)模型時,常常構(gòu)造一個誤差函數(shù)。為了避免正負誤差抵消,常取模型輸出與目標輸出的誤差平方和構(gòu)造一個誤差函數(shù),也稱為損失函數(shù),如下圖所示。
而這個誤差函數(shù)中,有一些變量,譬如權(quán)重,是模型訓(xùn)練要優(yōu)化的對象。
機器學(xué)習(xí)模型的訓(xùn)練,是一個反復(fù)迭代更新誤差函數(shù)中的權(quán)重等變量,使誤差下降的過程。自然,誤差下降的越快,則模型訓(xùn)練用時越少。
聯(lián)想到函數(shù)沿梯度方向的變化量最大,自然而然的想到,每次迭代都沿梯度方向降低誤差,會使誤差快速下降。看下圖,假定它是一個2元變量的誤差函數(shù)。誤差函數(shù)存在極小值,則顯然沿路徑ABCDE誤差下降到達最小值的速度最快。
簡單的講,梯度下降算法基本思想是:在當(dāng)前位置,各個自變量沿各自的梯度方向變化,得到下一個位置。下圖是該算法的描述,分別給出了誤差函數(shù)和參數(shù)更新公式。
圖中,a是學(xué)習(xí)步長,用來控制參數(shù)更新的快慢。
下圖展示了一個1元誤差函數(shù)梯度下降算法的過程。
總結(jié):切線、導(dǎo)數(shù)、偏導(dǎo)數(shù)、梯度、梯度下降算法,從中學(xué)、大學(xué)數(shù)學(xué)到人工智能,這些概念層層遞進,一脈相承。反過來看,人工智能的算法并不復(fù)雜,它的基本思想就蘊含在中學(xué)、大學(xué)學(xué)習(xí)的數(shù)學(xué)知識中。