天天看點

梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...

内容導讀:切線、導數、偏導數、梯度、梯度下降算法,從中學、大學數學到人工智能,這些概念是一脈相承的。本文将這些知識進行大串聯。

如果你是個中學生,讀完本篇文章,你将會了解到,中學裡學習的數學将來會在人工智能的哪些方面應用。如果你正在從事人工智能的學習研究,本文将有助于你系統地重溫人工智能算法及其預備知識的前世今生。

(1)中學數學裡的相切、切線、導數等概念。

曲線上某點A的切線是這樣定義的:B是曲線上鄰近A的點,以A為定點,當B點沿着曲線無限地接近A點時,割線AB的極限位置就是曲線在點A的切線,A點叫做切點。下面的GIF動畫動态示範了這一過程。

梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...

我們可以繪制任意光滑曲線上的點的切線。下面幾幅動圖展示了圓、抛物線、正弦曲線、複合函數曲線上的切線。

梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...
梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...
梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...

有了切線和切點,我們還可以求出經過切點的法線,它與切線垂直。正弦曲線上任何一點的切線及其法線如下面的動圖所示。

梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...

曲線上某點的切線的斜率,我們稱之為曲線在該點的導數。當然,導數有其嚴格的定義,函數y=f(x)在x0處的導數定義為:函數y=f(x)在x0處的函數值的增量Δy與自變量的增量Δx之比在Δx→0時的極限,如下圖所示:

梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...

當然,這個導數值與x0處的切線斜率是相等的。

導數或者切線斜率有什麼意義?它反映了當自變量變化時,因變量變化的快慢程度。如下圖所示,圖中給出了抛物線上兩點A,B的切線,顯然B點的切線更陡峭,則在兩點處,當自變量x有相同的變化量Δx時,B點的因變量Δy更大。明白這一點很重要。

梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...

在中學裡學習的導數,僅限于單個自變量的函數。事實上,許多函數有2個或者更多自變量。那麼此時導數該怎麼定義呢?這就要用到偏導數。

(2)大學裡的偏導數概念。

為了簡化問題,數學家們想了一個巧妙的方法。例如對2元函數f(x,y),把y看作常數,則f(x,y)變成了一進制函數,就可以按照中學裡導數的定義求解出f(x,y)在(x0,y0)處對x的導數。同理,将x看作常數,可以求出f(x,y)在(x0,y0)處對y的導數。這個導數叫作對x或y方向的偏導數,如下圖所示。

梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...

偏導數用下面的公式來表示。

梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...

偏導數反映了在(x0,y0)處,f(x,y)在某個方向上随該自變量變化而發生變化的快慢程度。

很容易将偏導數的概念推廣到多元函數。

如果給偏導數添加方向,可以将偏導數變換為矢量形式。其變換方法為将各個方向的偏導數乘以該方向的機關方向向量,如下圖所示:

梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...

則該矢量的和稱為梯度,如上面的圖所示。反過來,梯度矢量在各個坐标軸的投影的大小即為在各個方向的偏導數。

那麼梯度有什麼意義呢?根據前面的介紹,方向導數反映了函數值在各個方向上的最大變化率,梯度是各個方向梯度分量(偏導數乘以機關方向向量)的合成,則梯度自然反映了函數的最大變化率及其方向。

了解了這一點非常重要。它有什麼用呢?

在人工智能的機器學習中,訓練各種機器學習模型時,常常構造一個誤差函數。為了避免正負誤差抵消,常取模型輸出與目标輸出的誤差平方和構造一個誤差函數,也稱為損失函數,如下圖所示。

梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...

而這個誤差函數中,有一些變量,譬如權重,是模型訓練要優化的對象。

機器學習模型的訓練,是一個反複疊代更新誤差函數中的權重等變量,使誤差下降的過程。自然,誤差下降的越快,則模型訓練用時越少。

聯想到函數沿梯度方向的變化量最大,自然而然的想到,每次疊代都沿梯度方向降低誤差,會使誤差快速下降。看下圖,假定它是一個2元變量的誤差函數。誤差函數存在極小值,則顯然沿路徑ABCDE誤差下降到達最小值的速度最快。

梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...

簡單的講,梯度下降算法基本思想是:在目前位置,各個自變量沿各自的梯度方向變化,得到下一個位置。下圖是該算法的描述,分别給出了誤差函數和參數更新公式。

梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...

圖中,a是學習步長,用來控制參數更新的快慢。

下圖展示了一個1元誤差函數梯度下降算法的過程。

梯度下降算法_從中學數學到AI算法01:切線、導數、偏導數、梯度、梯度下降算法...

總結:切線、導數、偏導數、梯度、梯度下降算法,從中學、大學數學到人工智能,這些概念層層遞進,一脈相承。反過來看,人工智能的算法并不複雜,它的基本思想就蘊含在中學、大學學習的數學知識中。

繼續閱讀