***11 ***訓練神經(jīng)網(wǎng)絡 第二部分
現(xiàn)在我們有了一個明確的目標:最小化神經(jīng)網(wǎng)絡的損失。通過調(diào)整網(wǎng)絡的權(quán)重和截距項,我們可以改變其預測結(jié)果,但如何才能逐步地減少損失?
這一段內(nèi)容涉及到多元微積分,如果不熟悉微積分的話,可以跳過這些數(shù)學內(nèi)容。
為了簡化問題,假設(shè)我們的數(shù)據(jù)集中只有Alice:
假設(shè)我們的網(wǎng)絡總是輸出0,換言之就是認為所有人都是男性。損失如何?

那均方差損失就只是Alice的方差:

也可以把損失看成是權(quán)重和截距項的函數(shù)。讓我們給網(wǎng)絡標上權(quán)重和截距項:

這樣我們就可以把網(wǎng)絡的損失表示為:

假設(shè)我們要優(yōu)化
,當我們改變
時,損失
會怎么變化?可以用
來回答這個問題,怎么計算?
接下來的數(shù)據(jù)稍微有點復雜,別擔心,準備好紙和筆。
首先,讓我們用
來改寫這個偏導數(shù):

因為我們已經(jīng)知道
,所以我們可以計算

現(xiàn)在讓我們來搞定
。
分別是其所表示的神經(jīng)元的輸出,我們有:

由于
只會影響
(不會影響
),所以:

對
,我們也可以這么做:

在這里,
是身高,
是體重。這是我們第二次看到
(S型函數(shù)的導數(shù))了。求解:

稍后我們會用到這個
。
我們已經(jīng)把
分解成了幾個我們能計算的部分:

這種計算偏導的方法叫『反向傳播算法』(backpropagation)。
好多數(shù)學符號,如果你還沒搞明白的話,我們來看一個實際例子。
***12 ***例子:計算偏導數(shù)
我們還是看數(shù)據(jù)集中只有Alice的情況:

把所有的權(quán)重和截距項都分別初始化為1和0。在網(wǎng)絡中做前饋計算:

網(wǎng)絡的輸出是
,對于Male(0)或者Female(1)都沒有太強的傾向性。算一下

提示: 前面已經(jīng)得到了S型激活函數(shù)的導數(shù)
。
搞定!這個結(jié)果的意思就是增加
也會隨之輕微上升。
***13 ***訓練:隨機梯度下降
現(xiàn)在訓練神經(jīng)網(wǎng)絡已經(jīng)萬事俱備了!我們會使用名為隨機梯度下降法的優(yōu)化算法來優(yōu)化網(wǎng)絡的權(quán)重和截距項,實現(xiàn)損失的最小化。核心就是這個更新等式:

是一個常數(shù),被稱為學習率,用于調(diào)整訓練的速度。我們要做的就是用
減去
- 如果
是正數(shù),
變小,
會下降。 - 如果
是負數(shù),
會變大,
會上升。
如果我們對網(wǎng)絡中的每個權(quán)重和截距項都這樣進行優(yōu)化,損失就會不斷下降,網(wǎng)絡性能會不斷上升。
我們的訓練過程是這樣的:
- 從我們的數(shù)據(jù)集中選擇一個樣本,用隨機梯度下降法進行優(yōu)化——每次我們都只針對一個樣本進行優(yōu)化;
- 計算每個權(quán)重或截距項對損失的偏導(例如
等); - 用更新等式更新每個權(quán)重和截距項;
- 重復第一步;
-
神經(jīng)網(wǎng)絡
+關(guān)注
關(guān)注
42文章
4820瀏覽量
106352 -
神經(jīng)元
+關(guān)注
關(guān)注
1文章
368瀏覽量
19063 -
python
+關(guān)注
關(guān)注
56文章
4849瀏覽量
89236
發(fā)布評論請先 登錄
人工神經(jīng)網(wǎng)絡原理及下載
labview BP神經(jīng)網(wǎng)絡的實現(xiàn)
【PYNQ-Z2試用體驗】神經(jīng)網(wǎng)絡基礎(chǔ)知識
卷積神經(jīng)網(wǎng)絡如何使用
【案例分享】ART神經(jīng)網(wǎng)絡與SOM神經(jīng)網(wǎng)絡
人工神經(jīng)網(wǎng)絡實現(xiàn)方法有哪些?
如何構(gòu)建神經(jīng)網(wǎng)絡?
matlab實現(xiàn)神經(jīng)網(wǎng)絡 精選資料分享
基于BP神經(jīng)網(wǎng)絡的PID控制
卷積神經(jīng)網(wǎng)絡一維卷積的處理過程
用Python從頭實現(xiàn)一個神經(jīng)網(wǎng)絡來理解神經(jīng)網(wǎng)絡的原理1
用Python從頭實現(xiàn)一個神經(jīng)網(wǎng)絡來理解神經(jīng)網(wǎng)絡的原理2
用Python從頭實現(xiàn)一個神經(jīng)網(wǎng)絡來理解神經(jīng)網(wǎng)絡的原理4

用Python從頭實現(xiàn)一個神經(jīng)網(wǎng)絡來理解神經(jīng)網(wǎng)絡的原理3
評論