訂閱
糾錯(cuò)
加入自媒體

技術(shù)分析:如何理解梯度下降算法

介紹

在這篇文章中,我們將了解什么是真正的梯度下降法,為什么它成為非常流行的機(jī)器學(xué)習(xí)算法,為什么AI和ML中的大多數(shù)算法都遵循這種技術(shù)。

柯西在1847年提出了梯度下降算法,是第一個(gè)提出梯度下降的人,

梯度這個(gè)詞的意思是一個(gè)性質(zhì)的增加和減少!而下降意味著向下移動(dòng)的動(dòng)作,所以,總的來(lái)說(shuō),先下降到某個(gè)地方,然后觀察并且繼續(xù)下降的行為被稱為梯度下降

所以,在正常情況下,如圖所示,山頂?shù)钠露群芨?通過(guò)不斷的移動(dòng),當(dāng)你到達(dá)山腳時(shí)的坡度最小,或者接近或等于零,同樣的情況在數(shù)學(xué)上也適用。

讓我們看看怎么做

在數(shù)學(xué)上的梯度下降

我們假設(shè)這是一條形式為y=f(x)的曲線。

曲線上,任何一點(diǎn)上的斜率都是y對(duì)x的導(dǎo)數(shù),當(dāng)向下移動(dòng)時(shí),斜率在尖端或最小位置減小并等于零,當(dāng)我們?cè)俅蜗蛏弦苿?dòng)時(shí),斜率會(huì)增加

記住這一點(diǎn),我們將研究在最小點(diǎn)處x和y的值會(huì)發(fā)生什么,

觀察下圖,我們有不同位置的五個(gè)點(diǎn)!

當(dāng)我們向下移動(dòng)時(shí),我們會(huì)發(fā)現(xiàn)y值會(huì)減小,所以在這里的所有點(diǎn)中,我們?cè)趫D的底部得到了相對(duì)最小的值,因此,我們的結(jié)論是我們總是在圖的底部找到最小值(x,y),F(xiàn)在讓我們看看如何在ML和DL中實(shí)現(xiàn)這個(gè)過(guò)程,以及如何在不遍歷整個(gè)圖的情況下達(dá)到最小點(diǎn)?

在任何一種優(yōu)化算法中,我們的主要目的是最小化損失,這才能使我們的模型表現(xiàn)更好。為了分析這一點(diǎn),我們將使用線性回歸

因?yàn)榫性回歸使用直線來(lái)預(yù)測(cè)連續(xù)輸出-

設(shè)直線為y=w*x+c

這里我們需要得到w和c的值,才能得到使誤差最小化的最佳擬合線,所以我們的目標(biāo)是找到最佳的w和c值

我們先把w和c初始化為隨機(jī)值,我們根據(jù)損失更新w和c的值,也就是說(shuō),我們更新這些權(quán)重,直到斜率等于或接近于零。

我們將取y軸上的損失函數(shù),x軸上有w和c。查看下圖

為了在第一個(gè)圖中達(dá)到最小的w值,請(qǐng)遵循以下步驟-

用w和c計(jì)算給定的一組x _values的損失。

繪制點(diǎn),現(xiàn)在將權(quán)重更新為-

w_new =w_old – learning_rate * slope at (w_old,loss)

重復(fù)這些步驟,直到達(dá)到最小值!

我們?cè)谶@里減去梯度,因?yàn)槲覀兿胍频缴侥_下,或者朝著最陡的下降方向移動(dòng)

當(dāng)我們減去梯度后,我們會(huì)得到一個(gè)比前一個(gè)小的斜率,這就是我們想要移動(dòng)到斜率等于或接近于零的點(diǎn)

我們稍后再討論學(xué)習(xí)率

這同樣適用于圖2,即損失和c的函數(shù)


現(xiàn)在的問(wèn)題是為什么要把學(xué)習(xí)率放在等式中?這是因?yàn)槲覀儾荒茉谄瘘c(diǎn)和最小值之間遍歷所有的點(diǎn)

我們需要跳過(guò)一些點(diǎn)

我們可以在最初階段采取大步行動(dòng)。

但是,當(dāng)我們接近最小值時(shí),我們需要小步走,因?yàn)槲覀兛赡軙?huì)越過(guò)最小值。為了控制步長(zhǎng)和移動(dòng),引入了學(xué)習(xí)速率。即使沒(méi)有學(xué)習(xí)速率,我們也會(huì)得到最小值,但我學(xué)習(xí)速率可以讓我們的算法更快!!

下面是一個(gè)使用梯度下降的線性回歸的示例算法。這里我們用均方誤差作為損失函數(shù)-

1.用零初始化模型參數(shù)

m=0,c=0

2.使用(0,1)范圍內(nèi)的任何值初始化學(xué)習(xí)速率

lr=0.01

誤差方程-

現(xiàn)在用(w*x+c)代替Ypred并計(jì)算偏導(dǎo)

3.c也一樣可以計(jì)算得出

4.將此應(yīng)用于所有epoch的數(shù)據(jù)集

for i in range(epochs):
         y_pred = w * x +c
         D_M = (-2/n) * sum(x * (y_original - y_pred))
         D_C = (-2/n) * sum(y_original - y_pred)

這里求和函數(shù)一次性將所有點(diǎn)的梯度相加!

更新所有迭代的參數(shù)

W = W – lr * D_M

C = C – lr * D_C

梯度下降法用于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)…

在這里,我們更新每個(gè)神經(jīng)元的權(quán)值,以便在最小誤差的情況下得到最佳分類。我們使用梯度下降法來(lái)更新每一層的所有權(quán)值…

Wi = Wi – learning_rate * derivative (Loss function w.r.t Wi)

為什么它受歡迎?

梯度下降是目前機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中最常用的優(yōu)化策略。

它用于訓(xùn)練數(shù)據(jù)模型,可以與各種算法相結(jié)合,易于理解和實(shí)現(xiàn)

許多統(tǒng)計(jì)技術(shù)和方法使用GD來(lái)最小化和優(yōu)化它們的計(jì)算過(guò)程。

圖片標(biāo)題

聲明: 本文由入駐維科號(hào)的作者撰寫(xiě),觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問(wèn)題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過(guò)于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無(wú)評(píng)論

暫無(wú)評(píng)論

    掃碼關(guān)注公眾號(hào)
    OFweek人工智能網(wǎng)
    獲取更多精彩內(nèi)容
    文章糾錯(cuò)
    x
    *文字標(biāo)題:
    *糾錯(cuò)內(nèi)容:
    聯(lián)系郵箱:
    *驗(yàn) 證 碼:

    粵公網(wǎng)安備 44030502002758號(hào)