小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

 孟溪ProbeT連山 2019-02-07

作者——Anas Al-Masri

自從機(jī)器學(xué)習(xí)被引入到遞歸的非線性函數(shù)中(例如人工神經(jīng)網(wǎng)絡(luò))以來(lái),對(duì)相關(guān)內(nèi)容的應(yīng)用得到了充足的發(fā)展。在這種情況下,訓(xùn)練正確的神經(jīng)網(wǎng)絡(luò)是建立可靠模型最重要的方面。這種訓(xùn)練通常與'反向傳播'一詞聯(lián)系在一起,這個(gè)術(shù)語(yǔ)對(duì)大多數(shù)新手來(lái)說(shuō)是非常模糊的。這也是本文所存在的意義。

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

(圖源:https://www./watch?v=Ilg3gGewQ5U)

反向傳播是神經(jīng)網(wǎng)絡(luò)訓(xùn)練的本質(zhì)。它實(shí)際上是基于在前一歷元(即迭代)中獲得的誤差率(即損失)對(duì)神經(jīng)網(wǎng)絡(luò)的權(quán)重進(jìn)行微調(diào)的實(shí)踐。適當(dāng)?shù)恼{(diào)整權(quán)重可確保較低的錯(cuò)誤率,增加模型的適用性使模型更可靠。

那么這個(gè)過(guò)程如何運(yùn)作的呢?讓我們通過(guò)例子學(xué)習(xí)!

為了使這個(gè)例子盡可能便于大家理解,我們只涉及相關(guān)概念(例如損失函數(shù)、優(yōu)化函數(shù)等)而不解釋它們,因?yàn)檫@些主題值得我們另起一篇文章進(jìn)行細(xì)說(shuō)。

首先,讓我們?cè)O(shè)置模型組件

想象一下,我們需要訓(xùn)練一個(gè)深層神經(jīng)網(wǎng)絡(luò)。訓(xùn)練的目的是構(gòu)建一個(gè)模型,該模型使用兩個(gè)輸入和三個(gè)隱藏單元執(zhí)行XOR(異或)函數(shù),這樣訓(xùn)練集看起來(lái)如下所示:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

此外,我們需要一個(gè)激活函數(shù)來(lái)確定神經(jīng)網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)的激活值。為簡(jiǎn)單起見(jiàn),讓我們選擇一個(gè)激活函數(shù):

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

我們還需要一個(gè)假設(shè)函數(shù)來(lái)確定激活函數(shù)的輸入是什么。這個(gè)函數(shù)是:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

讓我們選擇損失函數(shù)作為邏輯回歸的一般成本函數(shù),看起來(lái)有點(diǎn)復(fù)雜,但實(shí)際上相當(dāng)簡(jiǎn)單:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

此外,我們將使用批處理梯度下降優(yōu)化函數(shù),用于確定我們應(yīng)該調(diào)整權(quán)重的方向,以獲得比我們現(xiàn)有的更低的損失。最后,學(xué)習(xí)率為0.1,所有權(quán)重將初始化為1。

我們的神經(jīng)網(wǎng)絡(luò)

讓我們最后畫(huà)一張我們期待已久的神經(jīng)網(wǎng)絡(luò)圖。它應(yīng)該看起來(lái)像這樣:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

最左邊的層是輸入層,它將X0作為值1的偏置項(xiàng),將X1和X2作為輸入特征。中間的層是第一個(gè)隱藏層,它的偏置項(xiàng)Z0也取值為1。最后,輸出層只有一個(gè)輸出單元D0,其激活值是模型的實(shí)際輸出(即h(x)) 。

現(xiàn)在我們向前傳播

現(xiàn)在是將信息從一個(gè)層前饋到另一個(gè)層的時(shí)候了。這需要經(jīng)過(guò)兩個(gè)步驟,通過(guò)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)/單元:

1. 使用我們之前定義的h(x)函數(shù)獲取特定單位輸入的加權(quán)和。

2.將我們從步驟1得到的值插入我們的激活函數(shù)(本例中為f(a)= a)并使用我們得到的激活值(即激活函數(shù)的輸出)作為連接輸入特征的下一層中的節(jié)點(diǎn)。

請(qǐng)注意,單位X0,X1,X2和Z0沒(méi)有任何連接到它們并任提供輸入的單位。因此,上述步驟不會(huì)出現(xiàn)在這些節(jié)點(diǎn)中。但是,對(duì)于其余的節(jié)點(diǎn)/單元,訓(xùn)練集中第一個(gè)輸入樣本的整個(gè)神經(jīng)網(wǎng)絡(luò)都是這樣的:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

其他單位也是如此:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

如前所述,最終單位(D0)的激活值(z)是整個(gè)模型的激活值(z)。因此,我們的模型預(yù)測(cè)輸入集{0,0}的輸出為1。計(jì)算當(dāng)前迭代的損失/成本如下:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

actual_y值來(lái)自訓(xùn)練集,而predict_y值是我們模型產(chǎn)生的值。所以這次迭代的成本是-4。

那么反向傳播在哪里呢?

根據(jù)我們的例子,我們現(xiàn)在有一個(gè)模型沒(méi)有給出準(zhǔn)確的預(yù)測(cè)(它給我們的值是4而不是1),這歸因于它的權(quán)重尚未調(diào)整(它們都等于1)。我們也有損失,即-4。反向傳播就是以這樣一種方式向后傳遞這種損失,我們可以根據(jù)這種方式微調(diào)權(quán)重。優(yōu)化函數(shù)(在我們的例子中為梯度下降)將幫助我們找到權(quán)重。那就讓我們開(kāi)始吧!

使用以下功能進(jìn)行前饋:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

然后通過(guò)這些函數(shù)的偏導(dǎo)數(shù)發(fā)生反向反饋。不需要經(jīng)過(guò)經(jīng)過(guò)推導(dǎo)這些函數(shù)的過(guò)程。我們需要知道的是,上面的函數(shù)將遵循:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

其中Z是我們從前饋步驟中的激活函數(shù)計(jì)算中獲得的z值,而delta是圖層中單位的損失。

我知道有很多信息一次性就能吸收,但我建議你花點(diǎn)時(shí)間,真正了解每一步發(fā)生了什么,然后再繼續(xù)前進(jìn)。

計(jì)算增量

現(xiàn)在我們需要找到神經(jīng)網(wǎng)絡(luò)中每個(gè)單元/節(jié)點(diǎn)的損耗。這是為什么呢?我們這樣想,深度學(xué)習(xí)模型到達(dá)的每一次損失實(shí)際上是由所有節(jié)點(diǎn)累積到一個(gè)數(shù)字引起的。因此,我們需要找出哪個(gè)節(jié)點(diǎn)對(duì)每層中的大部分損失負(fù)責(zé),這樣我們就可以通過(guò)賦予它更小的權(quán)重值來(lái)懲罰它,從而減少模型的總損失。

計(jì)算每個(gè)單元的增量可能會(huì)有問(wèn)題。但是,感謝吳恩達(dá)先生,他給了我們整個(gè)事情的捷徑公式:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

其中delta_0,w和f'(z)的值是相同單位的值,而delta_1是加權(quán)鏈接另一側(cè)的單位損失。例如:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

你可以這樣想,為了獲得節(jié)點(diǎn)的損失(例如Z0),我們將其對(duì)應(yīng)的f'(z)的值乘以它在下一層(delta_1)連接的節(jié)點(diǎn)的損失,再乘以連接兩個(gè)節(jié)點(diǎn)的鏈路的權(quán)重。

這正是反向傳播的工作原理。我們?cè)诿總€(gè)單元進(jìn)行delta計(jì)算步驟,將損失反向傳播到神經(jīng)網(wǎng)絡(luò)中,并找出每個(gè)節(jié)點(diǎn)/單元的損失。

讓我們計(jì)算一下這些增量!

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

這里有一些注意事項(xiàng):

  • 最終單位的損失(即D0)等于整個(gè)模型的損失。這是因?yàn)樗禽敵鰡挝?,它的損失是所有單位的累計(jì)損失,就像我們之前說(shuō)的那樣。
  • 無(wú)論輸入(即z)等于什么,函數(shù)f'(z)總是給出值1。這是因?yàn)槿缜八觯珜?dǎo)數(shù)如下:f'(a)= 1
  • 輸入節(jié)點(diǎn)/單位(X0,X1和X2)沒(méi)有delta值,因?yàn)檫@些節(jié)點(diǎn)在神經(jīng)網(wǎng)絡(luò)中無(wú)法控制。它們僅作為數(shù)據(jù)集和神經(jīng)網(wǎng)絡(luò)之間的一個(gè)鏈接。

更新權(quán)重

現(xiàn)在剩下的就是更新我們?cè)谏窠?jīng)網(wǎng)絡(luò)中的所有權(quán)重。這遵循批量梯度下降公式:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

其中W是手頭的權(quán)重,alpha是學(xué)習(xí)率(在我們的例子中是0.1),J'(W)是成本函數(shù)J(W)相對(duì)于W的偏導(dǎo)數(shù)。再次強(qiáng)調(diào),我們不需要進(jìn)行數(shù)學(xué)運(yùn)算。因此,讓我們使用吳恩達(dá)先生的函數(shù)的偏導(dǎo)數(shù):

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

其中Z是通過(guò)前向傳播獲得的Z值,delta是加權(quán)鏈接另一端的單位損失:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

現(xiàn)在用我們?cè)诿恳徊将@得的偏導(dǎo)數(shù)值,和批量梯度下降權(quán)重更新所有權(quán)重。值得強(qiáng)調(diào)的是,輸入節(jié)點(diǎn)(X0,X1和X2)的Z值分別等于1,0,0。1是偏置單元的值,而0實(shí)際上是來(lái)自數(shù)據(jù)集的特征輸入值。最后要注意的是,沒(méi)有特定的順序來(lái)更新權(quán)重。你可以按照你想要的任何順序更新它們,只要你不會(huì)在同一次迭代中錯(cuò)誤地更新任何權(quán)重兩次。

為了計(jì)算新的權(quán)重,讓我們給出神經(jīng)網(wǎng)絡(luò)名稱中的鏈接:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

新的權(quán)重計(jì)算方法如下:

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

零基礎(chǔ)深度學(xué)習(xí)入門:由淺入深理解反向傳播算法

需要注意的是,模型還沒(méi)有正確訓(xùn)練,因?yàn)槲覀冎煌ㄟ^(guò)訓(xùn)練集中的一個(gè)樣本進(jìn)行反向傳播。我們?yōu)闃颖咀隽怂形覀兡茏龅囊磺校@可以產(chǎn)生一個(gè)具有更高精度的模型,試圖接近每一步的最小損失/成本。

如果沒(méi)有正確的方法,機(jī)器學(xué)習(xí)背后的理論真的很難掌握。其中一個(gè)例子就是反向傳播,其效果在大多數(shù)現(xiàn)實(shí)世界的深度學(xué)習(xí)應(yīng)用程序中都是可以預(yù)見(jiàn)的。反向傳播只是將總損耗傳回神經(jīng)網(wǎng)絡(luò)的一種方式,以方便人們了解每個(gè)節(jié)點(diǎn)的損失量,并隨后通過(guò)為節(jié)點(diǎn)提供更高誤差,進(jìn)而使用損失最小化的方式來(lái)更新權(quán)重,反之亦然。

編譯出品

原文鏈接:https:///how-does-back-propagation-in-artificial-neural-networks-work-c7cad873ea7

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多