先來回顧一下梯度下降法的參數更新公式:
(其中,α是學習速率,是梯度)
這個公式是怎么來的呢?下面進行推導:
首先,如果一個函數 n 階可導,那么我們可以用多項式仿造一個相似的函數,這就是泰勒展開式。其在a點處的表達式如下:
可以看出,隨着式子的展開,這個展開式越來越接近於原函數。
如果用一階泰勒展開式,得到的函數近似表達式就是:。想像梯度下降就是站在山坡上往下走,
是原點,
是往下走一步后所處的點。
我們知道梯度下降每走一步都是朝着最快下山的方向,因此應該最小化。
我們使用一個向量來表示:
,
也是一個向量,那么上式可寫成:
。
既然我們要使最小,那么只有當
等於-1,也就是
和
這兩個向量反方向時,
才會最小。
當和
反方向時,我們可以用
向量來表示
:
。(其中
表示長度大小)
因為:,代入可得:
。
這樣就可以得到參數更新公式:。(其中
是步長,
是函數在
時的梯度)
因為我們使用的是一階泰勒展開式,因此要非常小,式子才成立。也就是說學習速率要非常小才行。所以如果你要讓你的損失函數越來越小的話,梯度下降的學習速率就要非常小。如果學習速率沒有設好,有可能更新參數的時候,函數近似表達式是不成立的,這樣就會導致損失函數沒有越變越小。