自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

什么是神經(jīng)網(wǎng)絡(luò)—終于把梯度下降搞明白了!

發(fā)布于 2024-12-23 09:14
瀏覽
0收藏

 什么是梯度下降?

 梯度下降是一種用于優(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ù)可以表示為:

什么是神經(jīng)網(wǎng)絡(luò)—終于把梯度下降搞明白了!-AI.x社區(qū)

這里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),綠色的線是我們要擬合的線):

什么是神經(jīng)網(wǎng)絡(luò)—終于把梯度下降搞明白了!-AI.x社區(qū)

這條直線的方程是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)如下圖所示:

什么是神經(jīng)網(wǎng)絡(luò)—終于把梯度下降搞明白了!-AI.x社區(qū)

什么是神經(jīng)網(wǎng)絡(luò)—終于把梯度下降搞明白了!-AI.x社區(qū)

上面的圖片中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的梯度:

什么是神經(jīng)網(wǎng)絡(luò)—終于把梯度下降搞明白了!-AI.x社區(qū)

當(dāng)b=0時(shí),Loss很大,梯度(斜率)很大。

什么是神經(jīng)網(wǎng)絡(luò)—終于把梯度下降搞明白了!-AI.x社區(qū)

當(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ì)梯度下降非常了解了?!

什么是神經(jīng)網(wǎng)絡(luò)—終于把梯度下降搞明白了!-AI.x社區(qū)

本文轉(zhuǎn)載自 ??人工智能訓(xùn)練營(yíng)??,作者: 小A學(xué)習(xí)


已于2024-12-23 09:17:53修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦