為什么梯度方向是函數(shù)值變化最快的方向

在這篇文章中,我會詳細(xì)的講解,梯度下降算法所依賴的數(shù)學(xué)原理。
讓同學(xué)們切實理解梯度的數(shù)學(xué)概念,為理解梯度下降算法打下基礎(chǔ)。

考慮下面這個問題。設(shè)多元函數(shù),f(x, y)=x^2+y^2。在多元函數(shù)上有一點P(x0, y0),如果我們從這一點出發(fā),沿著哪個方向運動,能使函數(shù)f(x, y)增大或減小的最快呢?
?先說結(jié)論,函數(shù)上的某一點,如果沿著函數(shù)梯度的方向運動,那么函數(shù)增加的最快,如果沿著函數(shù)梯度的反方向運動,函數(shù)減小的最快。接下來,我們就詳細(xì)的討論這個問題。
?梯度,英文是gradient,是微積分和向量分析中的重要概念,可以定義為一個多元函數(shù)全部偏導(dǎo)數(shù)所構(gòu)成的向量。我們使用倒三角符號▽,nabla,表示某個函數(shù)的梯度。
?

例如,二元函數(shù)f(x, y),它的梯度就是函數(shù)f,對x和y求偏導(dǎo)組成的二維向量。三元函數(shù)g(x, y, z)的梯度是,g對x,y,z求偏導(dǎo)組成的三維向量。 n元函數(shù)f(θ1,θ2,…,θn) 的梯度是,f分別對n個自變量求偏導(dǎo)構(gòu)成的n維向量。
二元函數(shù)與函數(shù)上某點的梯度
為了更加直觀的說明函數(shù)與梯度的關(guān)系,我們畫出,二元函數(shù)f(x, y) = x^2 + y^2,在點(1, 1)處的梯度向量。這里將函數(shù)上的一點P(1, 1, 2),標(biāo)記為紅色。將該點向灰色的x-o-y平面投影,標(biāo)記為藍(lán)色。

從藍(lán)色點出發(fā),畫出向量(2, 2),使用黑色箭頭表示,它就是點(1, 1, 2)的梯度向量。對于輸入點(1, 1),如果它沿著(2, 2)方向運動,函數(shù)會增加的最快。

這里要注意,因為梯度向量是在函數(shù)的輸入空間中定義的,對應(yīng)x-o-y平面,因此我們畫出了藍(lán)色的投影點,并從該點畫梯度向量。另外,我們可以將視角調(diào)整俯視,進(jìn)一步觀察黑色的梯度向量。
仍然使用這個例子,說明梯度的計算方法。計算函數(shù)f(x, y) = x^2 + y^2的梯度。
首先,需要分別求出f(x, y)關(guān)于x和y的偏導(dǎo)數(shù)。

然后將這兩個偏導(dǎo)數(shù)組合成一個梯度向量(2x, 2y),它表示了f(x, y)在任意點(x, y)上的變化方向和速率。將坐標(biāo)(1, 1)帶入,計算點(1, 1)處的梯度,可以得到向量(2, 2)。
梯度的性質(zhì)
梯度的方向是函數(shù)值上升最快的方向。對于函數(shù)上的某個點,如果沿著梯度方向移動,那么函數(shù)值增加的最快。如果沿著梯度的反方向移動,函數(shù)值減小的最快。

例如,對于點(1, 1),沿著方向(2, 2)運動,函數(shù)值會增加的最快。沿著負(fù)梯度方向(-2, -2)運動,函數(shù)值減小的最快。接下來,我們舉例說明這條性質(zhì)。
仍然討論點P(1, 1, 2)的運動。將函數(shù)圖像調(diào)整為俯視角度,可以觀察P點的自變量取值(1, 1),與其可能得運動方向。調(diào)整為平視角度,可以觀察到函數(shù)值f(1, 1)=2。

接下來,我們會從點P出發(fā),向不同的方向運動相同的長度,來說明沿著梯度方向運動,函數(shù)值會變化的最快。
為什么沿梯度方向運動,函數(shù)值變化的最快
基于俯視的角度觀察函數(shù)。

在xOy平面上,設(shè)置3個方向向量,(-1, 0)、(1, 0)和(2, 2),代表接下來自變量x和y要變化的方向。分別是向左運動,向右運動和沿梯度方向運動。

接著我們要從P點沿著(-1, 0)、(1, 0)和(2, 2)這三個向量的方向,運動1個單位,到達(dá)A、B、C三個點。然后比較A、B、C這三個點的函數(shù)值,相比P點函數(shù)值的變化。
如果從點P(1, 1),按照向量(-1, 0)的方向,移動1個單位,會到達(dá)A點。A點(0,1)處的函數(shù)值為f(x, y)=0^2+1^2=1。

我們會發(fā)現(xiàn),f(0, 1)相比f(1, 1)減小了1。這里從側(cè)面,觀察圖像上點的運動,可以更容易看出函數(shù)值的變化。
如果從點P(1, 1),按照向量(1, 0)的方向移動1個單位,會到達(dá)B點(2, 1)。該點的函數(shù)值是,f(x, y)=2^2+1^2=5,f(2, 1)比f(1, 1)增加了3。
?

最后按照梯度方向(2, 2)移動1個單位,大約會到達(dá)C點。這里需要將梯度轉(zhuǎn)換為單位向量,也就是根號2分之1, 根號2分之1,進(jìn)行計算。
C點大概在(1.707,1.707)這個位置,這里的1.707是1+的近似值。此時函數(shù)值為1.707^2 + 1.707^2 = 5.828,比f(1, 1)增加了3.828,是增加的最多的。
從這個例子中可以看到,同樣是移動單位1的長度,如果函數(shù)上的某個點,沿著該點的梯度方向移動,函數(shù)增長的最為迅猛。相應(yīng)的,如果沿著梯度的反方向運動,函數(shù)的值減小的最快。
關(guān)于該性質(zhì)的嚴(yán)格數(shù)學(xué)證明,有興趣的同學(xué),可以繼續(xù)深入學(xué)習(xí)"方向?qū)?shù)"和"梯度方向與方向?qū)?shù)的關(guān)系"的相關(guān)概念。
另外,在機器學(xué)習(xí)的訓(xùn)練算法中,我們總是需要找到目標(biāo)函數(shù)的最小值。因此從函數(shù)的某一個點出發(fā),使該點沿著梯度的反方向運動,會使函數(shù)減小的最快。
基于這樣的運動方式,就可以更快的使函數(shù)收斂到最小,這也是梯度下降算法的理論基礎(chǔ)。
最后給大家留一個思考題:
既然梯度方向是函數(shù)變化最快的方向,那么什么方向是函數(shù)變化最慢的方向呢?
那么到這里,為什么梯度方向是函數(shù)值變化最快的方向,這一主題就講完了。感謝大家的觀看,我們下節(jié)課再會。