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