- 機器學習編程:從編碼到深度學習
- (意)保羅·佩羅塔
- 505字
- 2021-06-01 17:13:22
3.2.1 少量數學知識
這里使用數學方法表示梯度下降法。首先,我們使用良好定義的老式數學符號重寫均方誤差損失函數。

如果你不熟悉這個符號,那么只需要知道符號Σ表示“求和”的含義即可。同樣,公式里的m代表“樣本的數量”。如果使用自然語言表示,則可以將這個公式讀作:m個樣本的誤差平方和除以樣本數的平均值。
別忘了這里的x和y值都是常數——它們分別表示輸入樣本變量和標簽的取值。由于樣本的數量不會改變,m也是一個常數。由于我們暫時把b固定為0,所以b也是常數。雖然我們會在不久之后重新引入變量b,但是目前上述公式中唯一能夠發生變化的值就是w。
現在計算權重w關于損失函數L的梯度,也稱為“函數L關于變量w的導數”。如果你還記得在學校學過的微積分,那就能夠自己計算出這個導數值。如果不記得也沒有關系,已經有人算出來了:

損失函數的導函數與損失函數自身有點類似,只不過導函數沒有二次冪,而且求和式的每個加項都乘上了x,然后再對求和結果乘以2。我們可以把w的任意值代入上述公式,然后得到這一點的梯度值。
下面是轉換成代碼后的計算公式,這里按照約定將b設置為0。

既然已經有了一個計算梯度的函數,那就讓我們通過重寫train()函數的方式來實現梯度下降法。