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

用Python從頭實(shí)現(xiàn)一個(gè)神經(jīng)網(wǎng)絡(luò)來理解神經(jīng)網(wǎng)絡(luò)的原理2

用Python從頭實(shí)現(xiàn)一個(gè)神經(jīng)網(wǎng)絡(luò)來理解神經(jīng)網(wǎng)絡(luò)的原理4

評論