深度學習的數學基礎-梯度下降法的含義與公式

應用數學最重要的任務之一就是尋找函數取最小值的點。現在我們來考察一下著名的尋找最小值的點的方法——梯度下降法。梯度下降法是神經網絡的數學武器。

下面主要通過兩個變量的函數來展開討論。在神經網絡的計算中,往往需要處理成千上萬個變量,但其數學原理和兩個變量的情形是相同的。

註:同樣,這裡考察的函數是充分光滑的函數。

梯度下降法的思路

已知函數z=f(x, y),怎樣求使函數取得最小值的x、y呢?最有名的方法就是利用「使函數z=f(x, y) 取得最小值的x、y滿足以下關係」這個事實。
image.png

這是因為,在函數取最小值的點處,就像葡萄酒杯的底部那樣,與函數相切的平面變得水平。

image.png

式(1) 的含義。在函數取最小值的點的附近,函數的增量為0。不過,這個式子終歸只是必要條件。

然而,在實際問題中,聯立方程式(1)通常不容易求解,那麼該如何解決呢?梯度下降法是一種具有代表性的替代方法。該方法不直接求解式(1)的方程,而是通過慢慢地移動圖像上的點進行摸索,從而找出函數的最小值。

我們先來看看梯度下降法的思路。這裡我們將圖像看作斜坡,在斜坡上的點P處放一個乒乓球,然後輕輕地鬆開手,球會沿着最陡的坡面開始滾動,待球稍微前進一點後,把球止住,然後從止住的位置再次鬆手,乒乓球會從這個點再次沿着最陡的坡面開始滾動。
image.png

將函數圖像的一部分放大,並看作坡面。球沿着最陡的坡面(PQ方向)開始滾動。
這個操作反覆進行若干次後,乒乓球沿着最短的路徑到達了圖像的底部,也就是函數的最小值點。梯度下降法就模擬了這個球的移動過程。

image.png

人按照乒乓球的移動軌跡來走的話,就會沿着最短路徑R1到達圖像的底部(最小值)。

在數值分析領域,梯度下降法也稱為最速下降法。這個名稱表示沿着圖像上的最短路徑下降。

近似公式和內積的關係

讓我們依照前面考察過的思路來將梯度下降法正式化。

函數z=f(x, y)中,當x改變∆x, y改變∆y時,我們來考察函數f(x, y)的值的變化∆z。
∆z=f(x+∆x, y+∆y)-f(x, y)

根據近似公式image.png,以下關係式成立。
image.png
圖中,根據近似公式,Δz=f(x+Δx,y+Δy)-f(x,y)與Δx、Δy之間的關係式(2)成立。

我們在上一文也提到過,式(2)的右邊可以表示為如下兩個向量的內積形式。
image.png

請大家注意這個內積的關係,這就是梯度下降法的出發點。
image.png
式(2)左邊的Δz可以用式(3) 的兩個向量的內積形式來表示。

向量內積的回顧

我們來考察兩個固定大小的非零向量a、b。當b的方向與a相反時,內積a·b取最小值。
image.png
向量a、b的內積為|a||b|cosθ(b為兩個向量的夾角)(左圖)。b為180º時(即a、b方向相反),內積的值最小(右圖)。

換句話說,當向量b滿足以下條件式時,可以使得內積a·b取最小值。
image.png

內積的這個性質(4)就是梯度下降法的數學基礎。

二變量函數的梯度下降法的基本式

當x改變∆x, y改變∆y時,函數f(x, y)的變化∆z為式(2),可以表示為式(3)的兩個向量的內積。根據式(4),當兩個向量方向相反時,內積取最小值。也就是說,當式(3)的兩個向量的方向恰好相反時,式(2)的∆z達到最小(即減小得最快)。
image.png

當式(3)的兩個向量方向相反時,式(2)的Δz最小,換言之,就是沿着圖像最陡的坡度減小。

根據以上討論我們可以知道,從點(x, y)向點(x+∆x, y+∆y)移動時,當滿足以下關係式時,函數z=f(x, y)減小得最快。這個關係式就是二變量函數的梯度下降法的基本式。
image.png

註:希臘字母η讀作ita,對應拉丁字母i。這裡也可以像式(4)那樣使用字母k,不過大多數文獻中採用η。

利用關係式(5),如果
image.png

就可以從圖像上點(x, y)的位置最快速地下坡。
image.png

當滿足關係式(5)時,函數圖像減小得最快。

式(5)右邊的向量(∂f(x,y)/∂x,∂f(x,y)/∂y)稱為函數f(x, y)在點(x, y)處的梯度(gradient)。這個名稱來自於它給出了最陡的坡度方向。

例題
設∆x、∆y為微小的數。在函數image.png中,當x從1變到1+∆x、y從2變到2+∆y時,求使這個函數減小得最快的向量(∆x, ∆y)。


根據式(5), ∆x、∆y滿足以下關係:
(∆x, ∆y)=-η(∂z/∂x,∂z/∂y)(η為正的微小常數)
因為∂z/∂x=2x,∂z/∂y=2y,依題意可知x=1, y=2,於是有
(∆x, ∆y)=-η(2, 4) (η為正的微小常數)

梯度下降法及其用法

為了弄清梯度下降法的思路,前面我們考察了乒乓球的移動方式。由於在不同的位置陡坡的方向也各不相同,通過反覆進行「一邊慢慢地移動位置一邊尋找陡坡」的操作,最終可以到達函數圖像的底部,也就是函數的最小值點。

下山的情形也是一樣的。最陡的下坡方向在每個位置各不相同。因此,要想通過最短路徑下山,就必須一邊慢慢地下坡一邊在每個位置尋找最陡的坡度。

在函數的情況下也完全一樣。要尋找函數的最小值,可以利用式(5)找出減小得最快的方向,沿着這個方向依照上述(6)稍微移動。在移動後到達的點處,再次利用式(5)算出方向,再依照上述(6)稍微移動。通過反覆進行這樣的計算,就可以找到最小值點。這種尋找函數f(x, y)的最小值點的方法稱為二變量函數的梯度下降法

image.png

從初始位置P0出發,利用式(5)、(6)求出最陡坡度的點P1,然後從P1出發,利用式(5)、(6)進一步求出最陡坡度的點P2,即反覆利用式(5)、(6),最終得以最快速地到達最小值點。這就是梯度下降法。

將梯度下降法推廣到三個變量以上的情況

二變量函數的梯度下降法的基本式(5)可以很容易地推廣到三個變量以上的情形。當函數f由n個自變量x1, x2, …, xn構成時,梯度下降法的基本式(5)可以像下面這樣進行推廣。

設η為正的微小常數,變量x1, x2, …, xn改變為x1+∆x1, x2+∆x2, …, xn+∆xn,當滿足以下關係式時,函數f減小得最快。

image.png

這裡,以下向量稱為函數f在點(x1, x2, …, xn)處的梯度。
image.png

與二變量函數的情況一樣,利用這個關係式(7),如果
image.png

就能夠沿着函數減小得最快的方向移動。因此,反覆依照上述(8)來移動,就能夠在n維空間中算出坡度最陡的方向,從而找到最小值點。這就是n變量情況下的梯度下降法。

此外,由於式(7)、(8)是n維的,難以在紙上畫出其圖像。大家可以利用二變量情況下的式(5)、(6)來直觀地理解。

哈密頓算子▽

在實際的神經網絡中,主要處理由成千上萬個變量構成的函數的最小值。在這種情況下,像式(7)那樣的表示往往就顯得十分冗長。因此我們來考慮更簡潔的表示方法。

在數學的世界中,有一個被稱為向量分析的領域,其中有一個經常用到的符號∇。∇稱為哈密頓算子,其定義如下所示。
image.png

利用這個符號,式(7)可以如下表示。

image.png

註:∇通常讀作nabla,來源於希臘豎琴的形象。

例1
對於二變量函數f(x, y),梯度下降法的基本式(5)如下所示。
(∆x, ∆y)=-η∇f(x, y)

例2
對於三變量函數f(x, y, z),梯度下降法的基本式(7)如下所示。
(∆x, ∆y, ∆z)=-η∇f(x, y, z)

其中,左邊的向量(∆x1, ∆x2, …, ∆xn) 稱為位移向量,記為∆x。

∆x=(∆x1, ∆x2, …, ∆xn)
利用這個位移向量,梯度下降法的基本式(7)可以更簡潔地表示。
image.png

η的含義以及梯度下降法的要點

到目前為止,η只是簡單地表示正的微小常數。而在實際使用計算機進行計算時,如何恰當地確定這個η是一個大問題。

從式(5)的推導過程可知,η可以看作人移動時的「步長」,根據η的值,可以確定下一步移動到哪個點。如果步長較大,那麼可能會到達最小值點,也可能會直接跨過了最小值點(左圖)。而如果步長較小,則可能會滯留在極小值點(右圖)。
image.png

在神經網絡的世界中,η稱為學習率。通過反覆試驗來尋找恰當的值。

遺留問題:是否可以研究確定η方法的明確的標準?