前面我們已經(jīng)了解到神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測(cè)的過程,但是仍然留下許多疑問,比如權(quán)重值如何獲得,如何訓(xùn)練神經(jīng)網(wǎng)絡(luò)等,這些問題我們將在本文展開。
權(quán)重值如何得到
權(quán)重值也就是前文所提到的小蜘蛛的道具,沒有看過的朋友可以先看看我的上一個(gè)博客。
權(quán)重值該如何獲得呢?
我們以最簡(jiǎn)單的三個(gè)神經(jīng)元的神經(jīng)網(wǎng)絡(luò)舉例子:

最左邊的神經(jīng)元是起點(diǎn),最右邊的是終點(diǎn),只有中間的神經(jīng)元有權(quán)重值。
我們先來離散的獲得一部分點(diǎn):

我們可以隱約地看到這些點(diǎn)大約分布在一條直線附近, 我們把這條直線畫出來

那我們?nèi)绾瓮ㄟ^這幾個(gè)點(diǎn)來獲得這條紅色的線呢?
先來明確一個(gè)問題:獲得紅色的線有什么用?
- 獲得紅色線后,我們可以提供一個(gè)x的值,然后預(yù)測(cè)y的值,雖然這個(gè)值不一定準(zhǔn)確,但是也在一個(gè)大概的范圍內(nèi)。
這十個(gè)已知的點(diǎn)分別是什么?

第一列表示x軸的坐標(biāo),第二列表示y軸的坐標(biāo)
其實(shí)思路就是用最小二乘法,先假設(shè)隨便畫一條線

我畫了一條y=0.1x+0.1的線如圖所示
y = wx + b
我令w=0.1, b=0.1
隨機(jī)給w和b賦值,不用在以是多少,先畫出來,有可能一次就能畫出紅色的線!
顯然我們畫的線差距很大,此時(shí)使用最小二乘法,就是每個(gè)點(diǎn)到直線的距離加起來,再用梯度下降法來優(yōu)化!
好的,如果我這么說,肯定和每說一樣,那么我一步一步來
第一個(gè)點(diǎn)的坐標(biāo)是(1, 0.16375502570787515),我們把x=1帶入y=0.1x+0.1這個(gè)函數(shù),得到y(tǒng)=0.2
顯然我們正確的y應(yīng)該是0.163,那么正確的y,和我們?cè)趛=0.1x+0.1得到的y值差距是多大呢?差距是:(0.163-0.2)^2
我們要想辦法減小這個(gè)差距
差距是怎么得到的?預(yù)測(cè)值減去真實(shí)值再平方,用數(shù)學(xué)語言就是(0.1*1+0.1-0.2)^2 ==> (wx+b-2)^2
就是說我們要對(duì)函數(shù) (y - wx+b)^2 獲得的值最小,也就是求這個(gè)函數(shù)的最小值,高中數(shù)學(xué)就講到求函數(shù)最小值的方法就是求導(dǎo),這是二元函數(shù),就是高考最喜歡做的題目?。?!求導(dǎo)之后畫出導(dǎo)數(shù)函數(shù)的圖像,然后與0相交的點(diǎn)就是極小值點(diǎn)!大家應(yīng)該很熟悉這個(gè)步驟。
不過
這個(gè)函數(shù)有w和b兩個(gè)未知數(shù),我們的思路是正確的,只是不能通過這種方式獲得最小值,所以這里我們求的是對(duì)w和對(duì)b的偏導(dǎo)數(shù),(這里需要微積分學(xué)歷)對(duì)w的偏導(dǎo)數(shù)就是 2w(wx+b-y)。對(duì)b的偏導(dǎo)數(shù)就是2(wx+b-y)。
此時(shí)我們把第一個(gè)點(diǎn)的數(shù)據(jù)代入 x=1, y=0.163, w=0.1, b=0.1
對(duì)w的偏導(dǎo)數(shù)等于 0.0326
對(duì)b的偏導(dǎo)數(shù)等于 0.326
此時(shí),我們?cè)O(shè)定一個(gè)步長(zhǎng),也叫學(xué)習(xí)率,假設(shè)等于0.2吧,
對(duì)于步長(zhǎng)的理解,類似于我們?cè)谏巾?,找不到下山的路,那我們可以一小步一小步走,每走一小步,環(huán)顧四周,看看哪一邊最陡峭,就往那邊走一小步,不斷走,就可以到達(dá)山底。
那么,
更新后的w等于 0.1 - (-0.0326) x 0.2 = 1.00652
更新后的b等于 0.1 - (-0.326) x 0.2 = 1.0652
我們已經(jīng)更新了w和b的值,只要重復(fù)這個(gè)步驟足夠多的次數(shù),那么就可以得到很接近紅色的線。
其實(shí),這就是神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程。
過程總結(jié)
先把我們已經(jīng)有的值傳入網(wǎng)絡(luò),網(wǎng)絡(luò)一開始的權(quán)重值是隨機(jī)的,傳入網(wǎng)絡(luò)得到一個(gè)預(yù)測(cè)值,這個(gè)預(yù)測(cè)值會(huì)和真實(shí)值有一定的差距,那么我們優(yōu)化這個(gè)差距,讓這個(gè)差距變小,其實(shí)這就是一個(gè)反向傳播的過程,我們用數(shù)學(xué)計(jì)算來更新了w和b的值,那么下一次傳入網(wǎng)絡(luò)得到的預(yù)測(cè)值與真實(shí)值之間的距離就會(huì)減小,周而復(fù)始,這個(gè)距離不斷減小,我們就可以得到一個(gè)預(yù)測(cè)能力比較好的w和b,也就是擬合能力比較強(qiáng)的網(wǎng)絡(luò),就可以對(duì)未知的數(shù)據(jù)得到較為準(zhǔn)確的結(jié)果。