什么是神經(jīng)網(wǎng)絡(luò)—終于把梯度下降搞明白了!
什么是梯度下降?
梯度下降是一種用于優(yōu)化目標(biāo)函數(shù)的迭代算法。
什么是目標(biāo)函數(shù)?
就是損失函數(shù),損失函數(shù)(Loss Function)是在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中廣泛使用的一個(gè)概念。它主要用于衡量模型的預(yù)測(cè)結(jié)果與實(shí)際結(jié)果之間的差異程度。簡(jiǎn)單來(lái)說(shuō),損失函數(shù)的值越小,說(shuō)明模型的預(yù)測(cè)越準(zhǔn)確。
例如,在一個(gè)回歸問(wèn)題(比如預(yù)測(cè)房?jī)r(jià))中,常用的損失函數(shù)是均方誤差(MSE)。假設(shè)真實(shí)房?jī)r(jià)是y ,模型預(yù)測(cè)的房?jī)r(jià)是y^,均方誤差損失函數(shù)可以表示為:
這里n是樣本數(shù)量。該函數(shù)通過(guò)計(jì)算每個(gè)樣本預(yù)測(cè)值和真實(shí)值差的平方的平均值,來(lái)衡量整體的誤差。我們的目標(biāo)就是使得誤差降到最低,使預(yù)測(cè)值無(wú)限接近真實(shí)值,所以我們使用梯度下降來(lái)做到這一步。
梯度下降如何優(yōu)化損失函數(shù)?
舉個(gè)例子來(lái)說(shuō)明這一步,假設(shè)我們需要擬合一條直線,這條直線的橫坐標(biāo)是體重,縱坐標(biāo)是身高,如下所示(綠色的點(diǎn)是數(shù)據(jù)點(diǎn),綠色的線是我們要擬合的線):
這條直線的方程是y=w*x+b,三個(gè)數(shù)據(jù)坐標(biāo)點(diǎn)的分別是(0.5,0.8),(2.5,2),(3,3)。我們先求出損失函數(shù),這個(gè)損失函數(shù)才是我們要優(yōu)化的參數(shù)。我們使用MSE作為損失函數(shù)。
得到損失函數(shù)Loss=((0.8-w*0.5-b)平方+(2-w*2.5-b)平方+(3-w*3-b)平方)/3。
我們可以看到損失函數(shù)Loss就是關(guān)于w和b兩個(gè)參數(shù)的函數(shù)。我們將Loss函數(shù)的圖像畫(huà)出來(lái)如下圖所示:
上面的圖片中x軸是w,y軸是b,z軸是Loss。我們要找的就是Loss處于最低點(diǎn)處的w和b的值。
那我們?cè)趺凑夷兀?/p>
就要使用梯度下降。梯度就是導(dǎo)數(shù),就是參數(shù)在某一點(diǎn)的變化率,在曲線上可以反映為某一點(diǎn)的切線。對(duì)于多元函數(shù)來(lái)說(shuō),梯度就是一個(gè)向量,它包含了函數(shù)對(duì)各個(gè)向量的偏導(dǎo)數(shù),這個(gè)梯度的向量指向函數(shù)值增長(zhǎng)最快的方向。我們知道導(dǎo)數(shù)為0時(shí),函數(shù)處于極值點(diǎn)。所以我們沿著梯度下降就可以最快的到達(dá)損失函數(shù)極小值點(diǎn)。
梯度下降的做法就是損失函數(shù)分別對(duì)參數(shù)求導(dǎo),比如說(shuō)當(dāng)w為固定值時(shí),損失函數(shù)Loss對(duì)b的函數(shù)圖像如下所示,圖片中的斜率時(shí)Loss對(duì)b的導(dǎo)數(shù),也就是b的梯度:
當(dāng)b=0時(shí),Loss很大,梯度(斜率)很大。
當(dāng)b=0.8時(shí),Loss趨近最小值,梯度(斜率)很小。
由此我們可以看到,當(dāng)斜率也就是梯度很大的時(shí)候,b可以增大一點(diǎn)步長(zhǎng),以便于快速到達(dá)極值點(diǎn);當(dāng)斜率也就是梯度很小的時(shí)候說(shuō)明很快逼近最小值,b可以減小一點(diǎn)步長(zhǎng);所以b可以這樣更新:
b=b-(Loss對(duì)b的梯度)*學(xué)習(xí)率
梯度大的時(shí)候b就可以邁大一步,梯度小的時(shí)候b就可以邁小一步,這里學(xué)習(xí)率一般設(shè)置比較小,避免邁的步子太大直接跳過(guò)極小值點(diǎn)。
所以梯度下降的步驟一般如下所示:
1. 對(duì)損失函數(shù)中每個(gè)參數(shù)求導(dǎo),也就是求梯度
2. 對(duì)參數(shù)隨機(jī)賦值
3. 將參數(shù)值帶入梯度
4. 計(jì)算步長(zhǎng)
5. 更新參數(shù)
6. 回到步驟3重新計(jì)算,直到步長(zhǎng)((Loss對(duì)b的梯度)*學(xué)習(xí)率)小于設(shè)置閾值。
怎么樣?看上去很晦澀的東西是不是也沒(méi)那么難懂?是不是對(duì)梯度下降非常了解了?!
本文轉(zhuǎn)載自 ??人工智能訓(xùn)練營(yíng)??,作者: 小A學(xué)習(xí)
