***11 ***訓(xùn)練神經(jīng)網(wǎng)絡(luò) 第二部分
現(xiàn)在我們有了一個明確的目標(biāo):最小化神經(jīng)網(wǎng)絡(luò)的損失。通過調(diào)整網(wǎng)絡(luò)的權(quán)重和截距項,我們可以改變其預(yù)測結(jié)果,但如何才能逐步地減少損失?
這一段內(nèi)容涉及到多元微積分,如果不熟悉微積分的話,可以跳過這些數(shù)學(xué)內(nèi)容。
為了簡化問題,假設(shè)我們的數(shù)據(jù)集中只有Alice:
假設(shè)我們的網(wǎng)絡(luò)總是輸出0,換言之就是認(rèn)為所有人都是男性。損失如何?
那均方差損失就只是Alice的方差:
也可以把損失看成是權(quán)重和截距項的函數(shù)。讓我們給網(wǎng)絡(luò)標(biāo)上權(quán)重和截距項:
這樣我們就可以把網(wǎng)絡(luò)的損失表示為:
假設(shè)我們要優(yōu)化 ,當(dāng)我們改變 時,損失會怎么變化?可以用來回答這個問題,怎么計算?
接下來的數(shù)據(jù)稍微有點復(fù)雜,別擔(dān)心,準(zhǔn)備好紙和筆。
首先,讓我們用來改寫這個偏導(dǎo)數(shù):
因為我們已經(jīng)知道 ,所以我們可以計算
現(xiàn)在讓我們來搞定。分別是其所表示的神經(jīng)元的輸出,我們有:
由于 只會影響(不會影響),所以:
對,我們也可以這么做:
在這里,是身高,是體重。這是我們第二次看到 (S型函數(shù)的導(dǎo)數(shù))了。求解:
稍后我們會用到這個 。
我們已經(jīng)把分解成了幾個我們能計算的部分:
這種計算偏導(dǎo)的方法叫『反向傳播算法』(backpropagation)。
好多數(shù)學(xué)符號,如果你還沒搞明白的話,我們來看一個實際例子。
***12 ***例子:計算偏導(dǎo)數(shù)
我們還是看數(shù)據(jù)集中只有Alice的情況:
把所有的權(quán)重和截距項都分別初始化為1和0。在網(wǎng)絡(luò)中做前饋計算:
網(wǎng)絡(luò)的輸出是,對于Male(0)或者Female(1)都沒有太強(qiáng)的傾向性。算一下
提示: 前面已經(jīng)得到了S型激活函數(shù)的導(dǎo)數(shù) 。
搞定!這個結(jié)果的意思就是增加也會隨之輕微上升。
***13 ***訓(xùn)練:隨機(jī)梯度下降
現(xiàn)在訓(xùn)練神經(jīng)網(wǎng)絡(luò)已經(jīng)萬事俱備了!我們會使用名為隨機(jī)梯度下降法的優(yōu)化算法來優(yōu)化網(wǎng)絡(luò)的權(quán)重和截距項,實現(xiàn)損失的最小化。核心就是這個更新等式:
是一個常數(shù),被稱為學(xué)習(xí)率,用于調(diào)整訓(xùn)練的速度。我們要做的就是用減去
- 如果是正數(shù),變小,會下降。
- 如果是負(fù)數(shù),會變大,會上升。
如果我們對網(wǎng)絡(luò)中的每個權(quán)重和截距項都這樣進(jìn)行優(yōu)化,損失就會不斷下降,網(wǎng)絡(luò)性能會不斷上升。
我們的訓(xùn)練過程是這樣的:
- 從我們的數(shù)據(jù)集中選擇一個樣本,用隨機(jī)梯度下降法進(jìn)行優(yōu)化——每次我們都只針對一個樣本進(jìn)行優(yōu)化;
- 計算每個權(quán)重或截距項對損失的偏導(dǎo)(例如 等);
- 用更新等式更新每個權(quán)重和截距項;
- 重復(fù)第一步;
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4722瀏覽量
100308 -
神經(jīng)元
+關(guān)注
關(guān)注
1文章
363瀏覽量
18423 -
python
+關(guān)注
關(guān)注
54文章
4756瀏覽量
84284
發(fā)布評論請先 登錄
相關(guān)推薦
評論