隨機梯度下降法的數學基礎

嵌入式視覺發表於2023-01-18

梯度是微積分中的基本概念,也是機器學習解最佳化問題經常使用的數學工具(梯度下降演算法)。因此,有必要從頭理解梯度的來源和意義。本文從導數開始講起,講述了導數、偏導數、方向導數和梯度的定義、意義和數學公式,有助於初學者後續更深入理解隨機梯度下降演算法的公式。大部分內容來自維基百科和部落格文章內容的總結,並加以個人理解。

導數

導數(英語:derivative)是微積分學中的一個概念。函式在某一點的導數是指這個函式在這一點附近的變化率。導數的本質是透過極限的概念對函式進行區域性的線性逼近。當函式 \(f\) 的自變數在一點 \(x_0\) 處產生一個增量時 \(h\) 時,函式輸出值的增量與自變數增量 \(h\) 的比值在 \(h\) 趨於 0 時的極限如果存在,則將這個比值定義為 \(f\)\(x_0\) 處的導數,記作 \(f'(x_0)\)\(\frac{\mathrm{d}f}{\mathrm{d}x}(x_0)\)\(\left.\frac{\mathrm{d}f}{\mathrm{d}x}\right|_{x=x_0}\)

導數是函式的區域性性質。不是所有的函式都有導數,一個函式也不一定在所有的點上都有導數。若某函式在某一點導數存在,則稱其在這一點可導(可微分),否則稱為不可導(不可微分)。如果函式的自變數和取值都是實數的話,那麼函式在某一點的導數就是該函式所代表的曲線在這一點上的切線斜率。

對於可導的函式 \(f\)\(x \mapsto f'(x)\) 也是一個函式,稱作 \(f\) 的導函式。導數示例如下圖所示:

函式每個位置處的導數

導數的一般定義如下:

如果實函式 \(f\) 在點 \(a\) 的某個領域內有定義,且以下極限(注意這個表示式所定義的函式定義域不含 \(a\)

\[{\displaystyle \lim _{x\to a}{\frac {f(x)-f(a)}{x-a}}} \]

存在,則稱 \(f\)\(a\) 處可導,並稱這個極限值為 \(f\)\(a\) 處的導數,記作 \(f'(a)\)

偏導數

偏導數的作用與價值在向量分析和微分幾何以及機器學習領域中受到廣泛認可。

導數是一元函式的變化率(斜率),導數也是函式,可以理解為函式的變化率與位置的關係。

那麼如果是多元函式的變化率問題呢?答案是偏導數,定義為多元函式沿座標軸的變化率

偏導數是多元函式“退化”成一元函式時的導數,這裡“退化”的意思是固定其他變數的值,只保留一個變數,依次保留每個變數,則 \(N\) 元函式有 \(N\) 個偏導數。

如果一個變數對應一個座標軸,那麼偏導數可以理解為函式在每個位置處沿著自變數座標軸方向上的導數(切線斜率)。

在數學中,偏導數(英語:partial derivative)的定義是:一個多變數的函式(或稱多元函式),對其中一個變數(導數)微分,而保持其他變數恆定。函式 \(f\) 關於變數 \(x\) 的偏導數記為 \(f'(x)\)\(\frac{\partial f}{\partial x}\)。偏導數符號 $\partial $ 是全導數符號 \(d\) 的變體。

假設 \(f\) 是一個多元函式。例如:

\[z = f(x, y) = x^2 + xy + y^2 \]

我們把變數 \(y\) 視為常數,透過對方程求導,我們可以得到函式 \(f\) 關於變數 \(x\) 的偏導數:

\[{\displaystyle {\frac {\partial f}{\partial x}} = 2x + y} \]

同理可得,函式 \(f\) 關於變數 \(y\) 的偏導數:

\[{{\frac {\partial f}{\partial y}} = x + 2y} \]

方向導數

在前面導數和偏導數的定義中,均是沿座標軸正方向討論函式的變化率。那麼當我們討論函式沿任意方向的變化率時,也就引出了方向導數的定義,即:某一點在某一趨近方向上的導數值

通俗理解就是:我們不僅要知道函式在座標軸正方向上的變化率(即偏導數),而且還要設法求得函式在其他特定方向上的變化率(方向導數)。如下圖所示,點 \(P\) 位置處紅色箭頭方向的方向導數為黑色切線的斜率。圖片來自連結 Directional Derivative

Directional Derivative Visual

方向導數的定義參考下圖,來源-直觀理解梯度,以及偏導數、方向導數和法向量等

方向導數計算推導

梯度

梯度,寫作 \(\nabla f\) 或 grad \(f\),二元時為(\(\frac{\partial z}{\partial x}, \frac{\partial z}{\partial y}\))。梯度是微積分中的基本概念,也是機器學習解最佳化問題經常使用的數學工具(梯度下降演算法)。

在向量微積分中,梯度(英語:gradient)是一種關於多元導數的概括。平常的一元(單變數)函式的導數是標量值函式,而多元函式的梯度是向量值函式。

就像一元函式的導數表示這個函式圖形的切線的斜率,如果多元函式在點 \(P\) 上的梯度不是零向量,則它的方向是這個函式在 \(P\) 上最大增長的方向、而它的量是在這個方向上的增長率

可以從以下兩個例子理解梯度的意義:

  1. 假設有一個房間,房間內所有點的溫度由一個標量場 \(\phi\) 給出的,即點 \((x,y,z)\) 的溫度是 \(\phi(x,y,z)\)。假設溫度不隨時間改變。然後,在房間的每一點,該點的梯度將顯示變熱最快的方向。梯度的大小將表示在該方向上的溫度變化率。

  2. 考慮一座高度函式為 \(H\) 的山,山上某點 \((x, y)\) 的高度是 \(H(x, y)\),點 \((x,y)\) 的梯度是在該點坡度(或者說斜度)最陡的方向。梯度的大小會告訴我們坡度到底有多陡。

總結梯度的幾何意義:

  • 當前位置的梯度方向,為函式在該位置處方向導數最大的方向,也是函式值上升最快的方向,反方向為下降最快的方向;
  • 當前位置的梯度長度(模),為最大方向導數的值。

總結

  • 方向導數是各個方向上的導數。
  • 偏導數連續才有梯度存在。
  • 梯度的方向是方向導數中取到最大值的方向,梯度的值是方向導數的最大值。

參考資料

  1. 維基百科-偏導數
  2. 直觀理解梯度,以及偏導數、方向導數和法向量等

相關文章