日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務,提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

反向傳播是訓練神經(jīng)網(wǎng)絡的最常用方法之一。Rumelhart、Hinton和Williams(1986)引入了反向傳播,該方法到今天仍然很流行。程序員經(jīng)常使用反向傳播訓練深層神經(jīng)網(wǎng)絡,因為在圖形處理單元上運行時,它的伸縮性很好。要了解這種用于神經(jīng)網(wǎng)絡的算法,我們必須探討如何訓練它,以及它如何處理模式。

經(jīng)典的反向傳播已得到擴展和修改,產(chǎn)生了許多不同的訓練算法。本章中將討論神經(jīng)網(wǎng)絡最常用的訓練算法。我們從經(jīng)典的反向傳播開始,然后以隨機梯度下降結束本章。

6.1 理解梯度

反向傳播是梯度下降的一種,許多教科書中通常互換使用這兩個術語。梯度下降是指針對每個訓練元素,在神經(jīng)網(wǎng)絡中的每個權重上計算一個梯度。由于神經(jīng)網(wǎng)絡不會輸出訓練元素的期望值,因此每個權重的梯度將為你提示如何修改權重以實現(xiàn)期望輸出。如果神經(jīng)網(wǎng)絡確實輸出了預期的結果,則每個權重的梯度將為0,這表明無需修改權重。

梯度是權重當前值下誤差函數(shù)的導數(shù)。誤差函數(shù)用于測量神經(jīng)網(wǎng)絡輸出與預期輸出的差距。實際上,我們可以使用梯度下降,在該過程中,每個權重的梯度可以讓誤差函數(shù)達到更低值。

梯度實質上是誤差函數(shù)對神經(jīng)網(wǎng)絡中每個權重的偏導數(shù)。每個權重都有一個梯度,即誤差函數(shù)的斜率。權重是兩個神經(jīng)元之間的連接。計算誤差函數(shù)的梯度可以確定訓練算法應增加,還是減小權重。反過來,這種確定將減小神經(jīng)網(wǎng)絡的誤差。誤差是神經(jīng)網(wǎng)絡的預期輸出和實際輸出之間的差異。許多不同的名為“傳播訓練算法”的訓練算法都利用了梯度。總的來說,梯度告訴神經(jīng)網(wǎng)絡以下信息:

  • 零梯度——權重不會導致神經(jīng)網(wǎng)絡的誤差;
  • 負梯度——應該增加權重以減小誤差;
  • 正梯度——應當減小權重以減小誤差。

由于許多算法都依賴于梯度計算,因此我們從分析這個過程開始。

 6.1.1 什么是梯度

首先,讓我們探討一下梯度。本質上,訓練是對權重集的搜索,這將使神經(jīng)網(wǎng)絡對于訓練集具有最小的誤差。如果我們擁有無限的計算資源,那么只需嘗試各種可能的權重組合,來確定在訓練期間提供最小誤差的權重。

因為我們沒有無限的計算資源,所以必須使用某種快捷方式,以避免需要檢查每種可能的權重組合。這些訓練算法利用了巧妙的技術,從而避免對所有權重進行蠻力搜索。但這種類型的窮舉搜索將是不可能的,因為即使小型網(wǎng)絡也具有無限數(shù)量的權重組合。

請考慮一幅圖像,它展示每個可能權重的神經(jīng)網(wǎng)絡誤差。圖6-1展示了單個權重的誤差。

最受歡迎的算法之一:反向傳播訓練

 

圖6-1 單個權重的誤差

從圖6-1中很容易看到,最佳權重是曲線的

最受歡迎的算法之一:反向傳播訓練

 

(

最受歡迎的算法之一:反向傳播訓練

 

)值最低的位置。問題是我們只看到當前權重的誤差;我們看不到整幅圖像,因為該過程需要窮盡的搜索。但是,我們可以確定特定權重下誤差曲線的斜率。在圖6-1中,我們看到誤差曲線在

最受歡迎的算法之一:反向傳播訓練

 

=1.5處的斜率。與誤差曲線相切(在

最受歡迎的算法之一:反向傳播訓練

 

=1.5處)的直線給出了斜率。在這個例子中,斜率或梯度為−0.562 2。負斜率表示增大權重會降低誤差。

梯度是指在特定權重下誤差函數(shù)的瞬時斜率。誤差曲線在該點的導數(shù)給出了梯度。這條線的傾斜程度告訴我們特定權重下誤差函數(shù)的陡峭程度。

導數(shù)是微積分中最基本的概念之一。對于本書,你只需要了解導數(shù)在特定點處提供函數(shù)的斜率即可。訓練技巧和該斜率可以為你提供信息,用于調整權重,從而降低誤差。現(xiàn)在,利用梯度的實用定義,我們將展示如何計算它。

 6.1.2 計算梯度

我們將為每個權重單獨計算一個梯度。我們不僅關注方程,也關注梯度在具有真實數(shù)值的實際神經(jīng)網(wǎng)絡中的應用。圖6-2展示了我們將使用的神經(jīng)網(wǎng)絡——XOR神經(jīng)網(wǎng)絡。

最受歡迎的算法之一:反向傳播訓練

 

圖6-2 XOR神經(jīng)網(wǎng)絡

此外,本書線上資源(見引言)的幾個示例中使用了相同的神經(jīng)網(wǎng)絡。在本章中,我們將展示一些計算,說明神經(jīng)網(wǎng)絡的訓練。我們必須使用相同的起始權重,讓這些計算保持一致。但是,上述權重沒有什么特征,是由該程序隨機生成的。

前面提到的神經(jīng)網(wǎng)絡是典型的三層前饋神經(jīng)網(wǎng)絡,就像我們之前研究的那樣,圓圈表示神經(jīng)元,連接圓圈的線表示權重,連接線中間的矩形給出每個連接的權重。

我們現(xiàn)在面臨的問題是,計算神經(jīng)網(wǎng)絡中每個權重的偏導數(shù)。當一個方程具有多個變量時,我們使用偏導數(shù)。每個權重均被視為變量,因為這些權重將隨著神經(jīng)網(wǎng)絡的變化而獨立變化。每個權重的偏導數(shù)僅顯示每個權重對誤差函數(shù)的獨立影響。該偏導數(shù)就是梯度。

可以用微積分的鏈式規(guī)則來計算每個偏導數(shù)。我們從一個訓練集元素開始。對于圖6-2,我們提供[1,0]作為輸入,并期望輸出是1。你可以看到我們將輸入應用于圖6-2。第一個輸入神經(jīng)元的輸入為1.0,第二個輸入神經(jīng)元的輸入為0.0。

該輸入通過神經(jīng)網(wǎng)絡饋送,并最終產(chǎn)生輸出。第4章“前饋神經(jīng)網(wǎng)絡”介紹了計算輸出與總和的確切過程。反向傳播既有前向,也有反向。計算神經(jīng)網(wǎng)絡的輸出時,就會發(fā)生前向傳播。我們僅針對訓練集中的這個數(shù)據(jù)項計算梯度,訓練集中的其他數(shù)據(jù)項將具有不同的梯度。在后文,我們將討論如何結合各個訓練集元素的梯度。

現(xiàn)在我們準備計算梯度。下面總結了計算每個權重的梯度的步驟:

  • 根據(jù)訓練集的理想值計算誤差;
  • 計算輸出節(jié)點(神經(jīng)元)的增量;
  • 計算內部神經(jīng)元節(jié)點的增量;
  • 計算單個梯度。

我們將在隨后的內容中討論這些步驟。

6.2 計算輸出節(jié)點增量

為神經(jīng)網(wǎng)絡中的每個節(jié)點(神經(jīng)元)計算一個常數(shù)值。我們將從輸出節(jié)點開始,然后逐步通過神經(jīng)網(wǎng)絡反向傳播。“反向傳播”一詞就來自這個過程。我們最初計算輸出神經(jīng)元的誤差,然后通過神經(jīng)網(wǎng)絡向后傳播這些誤差。

節(jié)點增量是我們將為每個節(jié)點計算的值。層增量也描述了該值,因為我們可以一次計算一層的增量。在計算輸出節(jié)點或內部節(jié)點時,確定節(jié)點增量的方法可能會有所不同。首先計算輸出節(jié)點,并考慮神經(jīng)網(wǎng)絡的誤差函數(shù)。在本書中,我們將研究二次誤差函數(shù)和交叉熵誤差函數(shù)。

 6.2.1 二次誤差函數(shù)

神經(jīng)網(wǎng)絡的程序員經(jīng)常使用二次誤差函數(shù)。實際上,你可以在網(wǎng)絡上找到許多使用二次誤差函數(shù)的示例。如果你正在閱讀一個示例程序,但未提及具體的誤差函數(shù),那么該程序可能使用了二次誤差函數(shù),也稱為MSE函數(shù),我們在第5章“訓練和評估”中討論過。公式6-1展示了MSE函數(shù):

最受歡迎的算法之一:反向傳播訓練

 

(6-1)

公式6-1將神經(jīng)網(wǎng)絡的實際輸出(

最受歡迎的算法之一:反向傳播訓練

 

)與預期輸出(

最受歡迎的算法之一:反向傳播訓練

 

)進行了比較。變量

最受歡迎的算法之一:反向傳播訓練

 

為訓練元素的數(shù)量乘以輸出神經(jīng)元的數(shù)量。MSE將多個輸出神經(jīng)元處理為單個輸出神經(jīng)元的情況。公式6-2展示了使用二次誤差函數(shù)的節(jié)點增量:

最受歡迎的算法之一:反向傳播訓練

 

(6-2)

二次誤差函數(shù)非常簡單,因為它取了神經(jīng)網(wǎng)絡的預期輸出與實際輸出之間的差。

最受歡迎的算法之一:反向傳播訓練

 

′表示激活函數(shù)的導數(shù)。

 6.2.2 交叉熵誤差函數(shù)

二次誤差函數(shù)有時可能需要很長時間才能正確調整權重。公式6-3展示了交叉熵誤差(Cross-entropy Error,CE)函數(shù):

最受歡迎的算法之一:反向傳播訓練

 

(6-3)

如公式6-4所示,采用交叉熵誤差函數(shù)的節(jié)點增量計算要比采用MSE函數(shù)簡單得多。

最受歡迎的算法之一:反向傳播訓練

 

(6-4)

交叉熵誤差函數(shù)通常會比二次誤差函數(shù)結果更好,因為二次誤差函數(shù)會為誤差創(chuàng)建一個陡峭的梯度。我們推薦采用交叉熵誤差函數(shù)。

6.3 計算剩余節(jié)點增量

既然已經(jīng)根據(jù)適當?shù)恼`差函數(shù)計算了輸出節(jié)點的增量,我們就可以計算內部節(jié)點的增量,如公式6-5所示:

最受歡迎的算法之一:反向傳播訓練

 

(6-5)

我們將為所有隱藏和無偏置神經(jīng)元計算節(jié)點增量,但無須為輸入和偏置神經(jīng)元計算節(jié)點增量。即使我們可以使用公式6-5輕松計算輸入和偏置神經(jīng)元的節(jié)點增量,梯度計算也不需要這些值。你很快會看到,權重的梯度計算僅考慮權重所連接的神經(jīng)元。偏置和輸入神經(jīng)元只是連接的起點,它們從來不是終點。

如果你希望看到梯度計算過程,有幾個JAVAScript示例顯示了這些計算過程。這些示例可以在以下URL中找到:

http://www.heatonresearch.com/aifh/vol3/

6.4 激活函數(shù)的導數(shù)

反向傳播過程需要激活函數(shù)的導數(shù),它們通常確定反向傳播過程將如何執(zhí)行。大多數(shù)現(xiàn)代深度神經(jīng)網(wǎng)絡都使用線性、Softmax和ReLU激活函數(shù)。我們還會探討S型和雙曲正切激活函數(shù)的導數(shù),以便理解ReLU激活函數(shù)為何表現(xiàn)如此出色。

 6.4.1 線性激活函數(shù)的導數(shù)

線性激活函數(shù)被認為不是激活函數(shù),因為它只是返回給定的任何值。因此,線性激活函數(shù)有時稱為一致激活函數(shù)。該激活函數(shù)的導數(shù)為1,如公式6-6所示:

最受歡迎的算法之一:反向傳播訓練

 

(6-6)

如前文所述,希臘字母

最受歡迎的算法之一:反向傳播訓練

 

表示激活函數(shù),在

最受歡迎的算法之一:反向傳播訓練

 

右上方的撇號表示我們正在使用激活函數(shù)的導數(shù)。這是導數(shù)的幾種數(shù)學表示形式之一。

 6.4.2 Softmax激活函數(shù)的導數(shù)

在本書中,Softmax激活函數(shù)和線性激活函數(shù)僅在神經(jīng)網(wǎng)絡的輸出層上使用。如第1章“神經(jīng)網(wǎng)絡基礎”所述,Softmax激活函數(shù)與其他激活函數(shù)的不同之處在于,其值還取決于其他輸出神經(jīng)元,而不僅僅取決于當前正在計算的輸出神經(jīng)元。方便起見,公式6-7再次展示了Softmax激活函數(shù):

最受歡迎的算法之一:反向傳播訓練

 

(6-7)

最受歡迎的算法之一:反向傳播訓練

 

向量代表所有輸出神經(jīng)元的輸出。公式6-8展示了該激活函數(shù)的導數(shù):

最受歡迎的算法之一:反向傳播訓練

 

(6-8)

對于上述導數(shù),我們使用了稍微不同的符號。帶有草書風格的符號的比率表示偏導數(shù),當你對具有多個變量的方程進行微分時會使用這個符號。要取偏導數(shù),可以將方程對一個變量微分,而將所有其他變量保持不變。上部的指出要微分的函數(shù)。在這個例子中,要微分的函數(shù)是激活函數(shù)

最受歡迎的算法之一:反向傳播訓練

 

。下部的表示偏導數(shù)的分別微分。在這個例子中,我們正在計算神經(jīng)元的輸出,所有其他變量均視為常量。微分是瞬時變化率:一次只有一個變量能變化。

如果使用交叉熵誤差函數(shù),就不會使用線性或Softmax激活函數(shù)的導數(shù)來計算神經(jīng)網(wǎng)絡的梯度。通常你只在神經(jīng)網(wǎng)絡的輸出層使用線性和Softmax激活函數(shù)。因此,我們無須擔心它們對于內部節(jié)點的導數(shù)。對于使用交叉熵誤差函數(shù)的輸出節(jié)點,線性和Softmax激活函數(shù)的導數(shù)始終為1。因此,你幾乎不會對內部節(jié)點使用線性或Softmax激活函數(shù)的導數(shù)。

 6.4.3 S型激活函數(shù)的導數(shù)

公式6-9展示了S型激活函數(shù)的導數(shù):

最受歡迎的算法之一:反向傳播訓練

 

(6-9)

機器學習經(jīng)常利用公式6-9中表示的S型激活函數(shù)。我們通過對S型函數(shù)的導數(shù)進行代數(shù)運算來導出該公式,以便在其自身的導數(shù)計算中使用S型激活函數(shù)。為了提高計算效率,上述激活函數(shù)中的希臘字母

最受歡迎的算法之一:反向傳播訓練

 

表示S型激活函數(shù)。在前饋過程中,我們計算了S型激活函數(shù)的值。保留S型激活函數(shù)的值使S型激活函數(shù)的導數(shù)易于計算。如果你對如何得到公式6-9感興趣,可以參考以下網(wǎng)址:

http://www.heatonresearch.com/aifh/vol3/deriv_sigmoid.html

 6.4.4 雙曲正切激活函數(shù)的導數(shù)

公式6-10給出了雙曲正切激活函數(shù)的導數(shù):

最受歡迎的算法之一:反向傳播訓練

 

(6-10)

在本書中,我們建議使用雙曲正切激活函數(shù),而不是S型激活函數(shù)。

 6.4.5 ReLU激活函數(shù)的導數(shù)

公式6-11展示了ReLU激活函數(shù)的導數(shù):

最受歡迎的算法之一:反向傳播訓練

 

(6-11)

嚴格來說,ReLU激活函數(shù)在0處沒有導數(shù),但是,由于約定,當

最受歡迎的算法之一:反向傳播訓練

 

為0時,0處的梯度被替換。具有S型和雙曲正切激活函數(shù)的深層神經(jīng)網(wǎng)絡可能難以通過反向傳播進行訓練。造成這一困難的因素很多,梯度消失問題是最常見的原因之一。圖6-3展示了雙曲正切激活函數(shù)及其梯度/導數(shù)。

最受歡迎的算法之一:反向傳播訓練

 

圖6-3 雙曲正切激活函數(shù)及其梯度/導數(shù)

圖6-3表明,當雙曲正切激活函數(shù)(實線)接近−1和1時,雙曲正切激活(虛線)的導數(shù)消失為0。S型和雙曲正切激活函數(shù)都有這個問題,但ReLU激活函數(shù)沒有。圖6-4展示了S型激活函數(shù)及其消失的導數(shù)。

最受歡迎的算法之一:反向傳播訓練

 

圖6-4 S型激活函數(shù)及其消失的導數(shù)

6.5 應用反向傳播

反向傳播是一種簡單的訓練算法,可以利用計算出的梯度來調整神經(jīng)網(wǎng)絡的權重。該方法是梯度下降的一種形式,因為我們將梯度降到較低的值。隨著程序調整這些權重,神經(jīng)網(wǎng)絡將產(chǎn)生更理想的輸出。神經(jīng)網(wǎng)絡的整體誤差應隨著訓練而下降。在探討反向傳播權重的更新過程之前,我們必須先探討更新權重的兩種不同方式。

 6.5.1 批量訓練和在線訓練

我們已經(jīng)展示了如何為單個訓練集元素計算梯度。在本章的前面,我們對神經(jīng)網(wǎng)絡輸入[1,0]并期望輸出1的情況計算了梯度。對于單個訓練集元素,這個結果是可以接受的,但是,大多數(shù)訓練集都有很多元素。因此,我們可以通過兩種方式來處理多個訓練集元素,即在線訓練和批量訓練。

在線訓練意味著你需要在每個訓練集元素之后修改權重。利用在第一個訓練集元素中獲得的梯度,你可以計算權重并對它們進行更改。訓練進行到下一個訓練集元素時,也會計算并更新神經(jīng)網(wǎng)絡。訓練將繼續(xù)進行,直到你用完每個訓練集元素為止。至此,訓練的一個迭代或一輪(epoch)已經(jīng)完成。

批量訓練也利用了所有訓練集元素,但是,我們不著急更新所有權重。作為替代,我們對每個訓練集元素的梯度求和。一旦我們完成了對訓練集元素梯度的求和,就可以更新神經(jīng)網(wǎng)絡權重。至此,迭代完成。

有時,我們可以設置批量的大小。如你的訓練集可能有10 000個元素,此時可選擇每1 000個元素更新一次神經(jīng)網(wǎng)絡的權重,從而使神經(jīng)網(wǎng)絡權重在訓練迭代期間更新10次。

在線訓練是反向傳播的最初方式。如果要查看該程序批處理版本的計算,請參考以下在線示例:

http://www.heatonresearch.com/aifh/vol3/xor_batch.html

 6.5.2 隨機梯度下降

批量訓練和在線訓練不是反向傳播的僅有選擇。隨機梯度下降(SGD)是反向傳播算法中最受歡迎的算法。SGD可以用批量或在線訓練模式工作。在線SGD簡單地隨機選擇訓練集元素,然后計算梯度并執(zhí)行權重更新。該過程一直持續(xù)到誤差達到可接受的水平為止。與每次迭代遍歷整個訓練集相比,選擇隨機訓練集元素通常會更快收斂到可接受的權重。

批量SGD可通過選擇批量大小來實現(xiàn)。對于每次迭代,隨機選擇數(shù)量不應超過所選批量大小的訓練集元素,因此選擇小批量。更新時像常規(guī)反向傳播批量處理更新一樣,將小批量處理中的梯度相加。這種更新與常規(guī)批量處理更新非常相似,不同之處在于,每次需要批量時都會隨機選擇小批量。迭代通常以SGD處理單個批量。批量大小通常比整個訓練集小得多。批量大小的常見選擇是600。

 6.5.3 反向傳播權重更新

現(xiàn)在,我們準備更新權重。如前所述,我們將權重和梯度視為一維數(shù)組。給定這兩個數(shù)組,我們準備為反向傳播訓練的迭代計算權重更新。公式6-12給出了為反向傳播更新權重的公式:

最受歡迎的算法之一:反向傳播訓練

 

(6-12)

公式6-12計算權重數(shù)組中每個元素的權重變化。你也會注意到,公式6-12要求對來自上一次迭代的權重進行改變。你必須將這些值保存在另一個數(shù)組中。如前所述,權重更新的方向與梯度的符號相反:正梯度會導致權重減小,反之負梯度會導致權重增大。由于這種相反關系,公式6-12以負號開始。

公式6-12將權重增量計算為梯度與學習率(以ε表示)的乘積。此外,我們將之前的權重變化與動量值(以α表示)的乘積相加。學習率和動量是我們必須提供給反向傳播算法的兩個參數(shù)。選擇學習率和動量的值對訓練的表現(xiàn)非常重要。不幸的是,確定學習率和動量主要是通過反復試驗實現(xiàn)的。

學習率對梯度進行縮放,可能減慢或加快學習速度。低于1.0的學習率會減慢學習速度。如學習率為0.5會使每個梯度減少50%;高于1.0的學習率將加速訓練。實際上,學習率幾乎總是低于1。

選擇過高的學習率會導致你的神經(jīng)網(wǎng)絡無法收斂,并且會產(chǎn)生較高的全局誤差,而不會收斂到較低值。選擇過低的學習率將導致神經(jīng)網(wǎng)絡花費大量時間實現(xiàn)收斂。

和學習率一樣,動量也是一個縮放因子。盡管是可選的,但動量確定了上一次迭代的權重變化中有百分之多少應該應用于這次迭代。如果你不想使用動量,只需將它的值指定為0。

動量是用于反向傳播的一項技術,可幫助訓練逃避局部最小值,這些最小值是誤差圖上的低點所標識的值,而不是真正的全局最小值。反向傳播傾向于找到局部最小值,而不能再次跳出來。這個過程導致訓練收斂誤差較高,這不是我們期望的。動量可在神經(jīng)網(wǎng)絡當前變化的方向上對它施加一些力,讓它突破局部最小值。

 6.5.4 選擇學習率和動量

動量和學習率有助于訓練的成功,但實際上它們并不是神經(jīng)網(wǎng)絡的一部分。一旦訓練完成,訓練后的權重將保持不變,不再使用動量或學習率。它們本質上是一種臨時的“腳手架”,用于創(chuàng)建訓練好的神經(jīng)網(wǎng)絡。選擇正確的動量和學習率會影響訓練的效果。

學習率會影響神經(jīng)網(wǎng)絡訓練的速度,降低學習率會使訓練更加細致。較高的學習率可能會跳過最佳權重設置,較低的學習率總是會產(chǎn)生更好的結果,但是,降低訓練速度會大大增加運行時間。在神經(jīng)網(wǎng)絡訓練中降低學習率可能是一種有效的技術。

你可以用動量來對抗局部最小值。如果你發(fā)現(xiàn)神經(jīng)網(wǎng)絡停滯不前,則較高的動量值可能會使訓練超出其遇到的局部最小值。歸根結底,為動量和學習率選擇好的值是一個反復試驗的過程。你可以根據(jù)訓練的進度進行調整。動量通常設置為0.9,學習率通常設置為0.1或更低。

 6.5.5 Nesterov動量

由于小批量引入的隨機性,SGD算法有時可能產(chǎn)生錯誤的結果。權重可能會在一次迭代中獲得非常有益的更新,但是訓練元素的選擇不當會使其在下一個小批量中被撤銷。因此,動量是一種資源豐富的工具,可以減輕這種不穩(wěn)定的訓練結果。

Nesterov動量是Yu Nesterov在1983年發(fā)明的一種較新的技術應用,該技術在他的Introductory Lectures on Convex Optimization: A Basic Course一書中得到了更新[1]。有時將該技術稱為Nesterov的加速梯度下降。盡管對Nesterov動量的完整數(shù)學解釋超出了本書的范圍,但我們將針對權重進行詳細介紹,以便你可以實現(xiàn)它。本書的示例(包括在線JavaScript的示例)包含Nesterov動量的實現(xiàn)。此外,本書的線上資源包含一些針對Nesterov動量權重更新的JavaScript示例程序。

公式6-13基于學習率(ε)和動量(α)計算部分權重更新:

最受歡迎的算法之一:反向傳播訓練

 

(6-13)

當前迭代用

最受歡迎的算法之一:反向傳播訓練

 

表示,前一次迭代用

最受歡迎的算法之一:反向傳播訓練

 

−1表示。這種部分權重更新稱為

最受歡迎的算法之一:反向傳播訓練

 

,最初從0開始。部分權重更新的后續(xù)計算基于部分權重更新的先前值。公式6-13中的偏導數(shù)是當前權重下誤差函數(shù)的梯度。公式6-14展示了Nesterov動量更新,它代替了公式6-12中展示的標準反向傳播權重更新:

最受歡迎的算法之一:反向傳播訓練

 

(6-14)

上面的權重更新的計算,是部分權重更新的放大。公式6-14中顯示增量權重已添加到當前權重中。具有Nesterov動量的SGD是深度學習最有效的訓練算法之一。

6.6 本章小結

本章介紹了經(jīng)典的反向傳播和SGD。這些方法都基于梯度下降。換言之,它們用導數(shù)優(yōu)化了單個權重。對于給定的權重,導數(shù)向程序提供誤差函數(shù)的斜率。斜率允許程序確定如何更新權重。每個訓練算法對斜率或梯度的解釋不同。

盡管反向傳播是最古老的訓練算法之一,但它仍然是最受歡迎的算法之一。反向傳播就是將梯度添加到權重中,負梯度將增大權重,正梯度將減小權重。我們通過學習率來縮放權重,防止權重變化過快。0.5的學習率意味著將權重增加一半的梯度,而2.0的學習率意味著將權重增加2倍的梯度。

反向傳播算法有多種變體,其中一些變體(如彈性傳播)頗受歡迎。第7章將介紹一些反向傳播的變體。盡管了解這些變體很有用,但是SGD仍然是最常見的深度學習訓練算法之一。

本文摘自《人工智能算法(卷3):深度學習和神經(jīng)網(wǎng)絡》

分享到:
標簽:訓練 傳播
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定