前面我們已經(jīng)了解到神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測(cè)的過(guò)程疤祭,但是仍然留下許多疑問(wèn)盼产,比如權(quán)重值如何獲得,如何訓(xùn)練神經(jīng)網(wǎng)絡(luò)等勺馆,這些問(wèn)題我們將在本文展開戏售。
權(quán)重值如何得到
權(quán)重值也就是前文所提到的小蜘蛛的道具,沒有看過(guò)的朋友可以先看看我的上一個(gè)博客草穆。
權(quán)重值該如何獲得呢灌灾?
我們以最簡(jiǎn)單的三個(gè)神經(jīng)元的神經(jīng)網(wǎng)絡(luò)舉例子:
最左邊的神經(jīng)元是起點(diǎn),最右邊的是終點(diǎn)悲柱,只有中間的神經(jīng)元有權(quán)重值锋喜。
我們先來(lái)離散的獲得一部分點(diǎn):
我們可以隱約地看到這些點(diǎn)大約分布在一條直線附近, 我們把這條直線畫出來(lái)
那我們?nèi)绾瓮ㄟ^(guò)這幾個(gè)點(diǎn)來(lái)獲得這條紅色的線呢?
先來(lái)明確一個(gè)問(wèn)題:獲得紅色的線有什么用豌鸡?
- 獲得紅色線后嘿般,我們可以提供一個(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賦值派任,不用在以是多少砸逊,先畫出來(lái),有可能一次就能畫出紅色的線掌逛!
顯然我們畫的線差距很大痹兜,此時(shí)使用最小二乘法,就是每個(gè)點(diǎn)到直線的距離加起來(lái),再用梯度下降法來(lái)優(yōu)化颤诀!
好的字旭,如果我這么說(shuō),肯定和每說(shuō)一樣崖叫,那么我一步一步來(lái)
第一個(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é)語(yǔ)言就是(0.1*1+0.1-0.2)^2 ==> (wx+b-2)^2
就是說(shuō)我們要對(duì)函數(shù) (y - wx+b)^2 獲得的值最小种呐,也就是求這個(gè)函數(shù)的最小值,高中數(shù)學(xué)就講到求函數(shù)最小值的方法就是求導(dǎo)弃甥,這是二元函數(shù)爽室,就是高考最喜歡做的題目!Oァ阔墩!求導(dǎo)之后畫出導(dǎo)數(shù)函數(shù)的圖像,然后與0相交的點(diǎn)就是極小值點(diǎn)瓶珊!大家應(yīng)該很熟悉這個(gè)步驟啸箫。
不過(guò)
這個(gè)函數(shù)有w和b兩個(gè)未知數(shù),我們的思路是正確的伞芹,只是不能通過(guò)這種方式獲得最小值忘苛,所以這里我們求的是對(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è)谏巾敚也坏较律降穆诽吃觯俏覀兛梢砸恍〔揭恍〔阶呋竦瘢孔咭恍〔剑h(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)練過(guò)程矫膨。
過(guò)程總結(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è)反向傳播的過(guò)程谊娇,我們用數(shù)學(xué)計(jì)算來(lái)更新了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é)果。