久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

【吳恩達機器學(xué)習(xí)】第九章 神經(jīng)網(wǎng)絡(luò)參數(shù)的反向傳播算法

 LibraryPKU 2019-07-15
  • csdn:

    https://blog.csdn.net/qq_36645271

  • github:

    https://github.com/aimi-cn/AILearners

9.1 代價函數(shù)

9.1.1 神經(jīng)網(wǎng)絡(luò)在分類中的作用

  •  {(x^(1), y^(1)),...,(x^(m), y^(m))}:含有m組訓(xùn)練樣本的訓(xùn)練集,。

  • L:神將網(wǎng)絡(luò)結(jié)構(gòu)的總層數(shù),。對于上圖來說,L=4.

  • s_l:第L層的神經(jīng)單元數(shù),,這其中不包括第L層的偏置單元,。例如上圖中

對于分類問題,,我們會將其分成兩種情況考慮:即二元分類(binary classification)多元分類(multi-class classification),。

對于二元分類,,由于y只能等于0或1,,所以我們只有一個輸出單元,其輸出h_θ(x)一個實數(shù),。在這種情況下,,s_L=1。

在多元分類中,,會有K個不同的類,,就會有K個輸出單元,,其輸出h_θ(x)為一個K維向量。在這種情況下,,s_L=K,。

9.1.2 神經(jīng)網(wǎng)絡(luò)的代價函數(shù)

先讓我們回顧一下邏輯回歸的代價函數(shù):

在邏輯回歸中,我們通常要使J(θ)小化,,一般會在最后加上一個正則化項,,是一個j從1到n的求和,因為我們并沒有把偏差項θ_0正則化,。

對于一個神經(jīng)網(wǎng)絡(luò)來說,,我們的代價函數(shù)就會是這個式子的一般形式,這里不僅只有一個邏輯回歸輸出單元,,而是K個,。

所以上圖中的式子就是神經(jīng)網(wǎng)絡(luò)中的代價函數(shù)。上式中的第一部分-1/m乘以一個類似于我們在邏輯回歸里的求和項,,除了上式還加入了求k從1到的K的有和,。這個求和項主要是K個輸出單元之和。依次把每一個邏輯回歸算法的代價函數(shù)按照四次輸出的順序加起來,。這個求和符號應(yīng)用于y_k和h_k因為我們主要是將第K個輸出單元的值和y_k的值的大小作比較,,即最后得到的向量應(yīng)該屬于哪個分類。

最后,,神經(jīng)網(wǎng)絡(luò)代價函數(shù)的正則化項也與邏輯回歸有些不同,。這里的正則化項是對θ_ij^(l)項對所有i,j,k的值求和。就像在邏輯回歸中我們不加入偏置單元的值一樣,,這里要去除那些對應(yīng)的偏置單元的項,。具體地說,我們不對θ_ij^(l)中i為0的項求和,,因為我們在計算激活函數(shù)時,,會得到類似于θ_i0^(2)a_0+θ_i1^(2)a_0+...樣的項,這些含有0的項對應(yīng)了a_0的項,,這是一個類似于偏置單元的項,。

正則化的那一項只是排除了每一層θ_0后,每一層的θ_i0矩陣的和,。最里層的循環(huán)循環(huán)所有的行(由 s_l+1 層的激活單元數(shù)決定),,循環(huán)i則循環(huán)所有的列,由該層(s_l層)的激活單元數(shù)所決定,。

9.2 反向傳播算法

9.2.1 梯度計算

在上一節(jié)中我們介紹了神經(jīng)網(wǎng)絡(luò)的代價函數(shù),,現(xiàn)在,讓我們來看一下讓代價函數(shù)最小化的算法——反向傳播算法(back propagation algorithm)

上圖中我們給出了神經(jīng)網(wǎng)絡(luò)的代價函數(shù),,現(xiàn)在我們要設(shè)法找到參數(shù)θ使J(θ)取到最小值,。所以這里我們需要計算J(θ)以及一些列偏導(dǎo)項。

讓我們從只有一個訓(xùn)練樣本說起,。

這里我們先使用向前傳播,,通過項量化的方法計算出神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)里的每一個神經(jīng)單元的激活值。

9.2.2 反向傳播算法

反向傳播算法從直觀上說,,就是對于每一個節(jié)點,,我們計算δ_j^(l),它代表了第l層第j個節(jié)點的誤差,。這個δ項在某種程度上就捕捉到了我們在這個節(jié)點的激活值得誤差,。在這里,我們還要回顧一下之前的一個定義——a_j^(l),,它代表了第層第個節(jié)點的激活值,。

我們用上面這個四層(L=4)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)為例。對于每一個輸出單元,,我們將計算δ項,。

所以第四層第j個單元的δ值等于這個單元的激活值減去訓(xùn)練樣本里的真實值。這里的y_i就是我們訓(xùn)練集中向量y的第j個元素,。接下來,,我們把網(wǎng)絡(luò)中前面幾層的誤差項δ項算出來。

上面公式中的.*是MATLAB中的點乘符號,,g`(z^{(3)})是對激活函數(shù)在輸入值為z(3)的時候所求的導(dǎo)數(shù),。g`(z^{(3)})=a^{(3)} * (1-a^{(3)})。

這里沒有δ^(1)項是因為第一次對應(yīng)的是輸入層,,那只表示我們在訓(xùn)練集里觀察到的,,所以不會存在誤差

我們有了所有的誤差的表達式后,,便可以計算代價函數(shù)的偏導(dǎo)數(shù)了,,假設(shè),即我們不做任何正則化處理時有:

在上述公式中:

  • l代表目前所計算的是第幾層,。

  • j代表目前計算層中的激活單元的下標(biāo),,也將是下一層的第個輸入變量的下標(biāo)。

  • i代表下一層中誤差單元的下標(biāo),,是受到權(quán)重矩陣中第行影響的下一層中的誤差單元的下標(biāo),。

9.2.3 整合到一起

現(xiàn)在讓我們把上面的內(nèi)容整合到一起,來看看如何實現(xiàn)反向傳播算法,。

我們要做的第一件事就是固定這些帶下標(biāo),,讓其值都為0,,它們將會被用來計算偏導(dǎo)項,。

接下來我們將遍歷我們的訓(xùn)練集,。

首先,對于第i個循環(huán)而言,,我們將取出訓(xùn)練樣本(x^{(i)},y^{(i)}),,然后設(shè)定a^{(1)},也就是輸入層的激活函數(shù)為x^{(i)},。

接下來我們運用正向傳播,,計算每一層的激活值。

用樣本的輸出值y^(i)計算這個輸出值所對應(yīng)的誤差項δ(L),。

用反向傳播分別計算δ值一直到δ^(2),。

用△來累計偏導(dǎo)數(shù)項。

最后,,執(zhí)行完for循環(huán)之后,,我們跳出循環(huán),然后計算下面的式子:

一旦計算出來了這些項,,它正好就是代價函數(shù)關(guān)于每個參數(shù)的偏導(dǎo)數(shù),,之后就可以使用梯度下降或其他高級優(yōu)化算法了。

9.3 反向傳播算法的直觀理解

9.3.1 向前傳播

為了更好地理解反向傳播,,我們先進一步的研究向前傳播的過程,。

這就是向前傳播。我們會發(fā)現(xiàn)反向傳播算法與其大致相同,,知識計算方向不一樣而已,。

9.3.2 神經(jīng)網(wǎng)絡(luò)的代價函數(shù)

為了更好地理解反向傳播算法的過程,讓我們先看一下神經(jīng)網(wǎng)絡(luò)的代價函數(shù),。

這個代價函數(shù)適用于只有一個輸出單元的情況?,F(xiàn)在讓我們只關(guān)注一個訓(xùn)練樣本(x^{(i)},y^{(i)}),因為只有一個輸出單元,,所以這里y^{(i)}是一個實數(shù),,并且忽略正則化項。簡化的代價函數(shù)如下:

將這一個訓(xùn)練樣本帶入,,我們會發(fā)現(xiàn)它的代價函數(shù)可以寫成如下形式:

這個代價函數(shù)扮演了一個類似方差的角色,,所以與其關(guān)注這個代價函數(shù),可以把cost(i)近似的看成神經(jīng)網(wǎng)絡(luò)的輸出值與實際值的方差:

因此,,它表示了神經(jīng)網(wǎng)絡(luò)預(yù)測樣本值的準(zhǔn)確程度,,也就是網(wǎng)絡(luò)的輸出值和實際觀測值y^(i)接近程度。

9.3.3 反向傳播算法

現(xiàn)在讓我們看看反向傳播的過程,,一種直觀的理解是反向傳播算法就是在計算這些δ_j^(i),,我們可以把它們看作是在第層中第j個單元得到的激活項的“誤差”,。用數(shù)學(xué)的知識去解釋的話,δ_j^(i)是代價函數(shù)關(guān)于z_j^(i)的偏導(dǎo)數(shù),。它們衡量的是為了影響這些中間值,,我們想要改變神經(jīng)網(wǎng)絡(luò)中的權(quán)重的程度進而影響整個神經(jīng)網(wǎng)絡(luò)的輸出h(x)。

接下來讓我們對反向傳播算法有一個更直觀的了解:

現(xiàn)在,,讓我們關(guān)注一下第一個隱藏層中第三個神經(jīng)元的具體計算過程,。與向前傳播類似,我么分別用紫色和紅色標(biāo)注權(quán)值,,用后一層中δ的加權(quán)和由對應(yīng)邊的強度來進行加權(quán),。

9.4 使用注意:展開參數(shù)

9.4.1 為什么要展開參數(shù)

在上節(jié)中,我們談到了怎樣使用反向傳播算法計算代價函數(shù)的導(dǎo)數(shù),。在這一節(jié),,我們將介紹如何把你的參數(shù)從矩陣展開成向量,以便我們在高級最優(yōu)化步驟中的使用需要,。

具體來講,,我們在執(zhí)行代價函數(shù)時,輸入?yún)?shù)是theta,,函數(shù)返回代價值及導(dǎo)數(shù)值,。然后我們可以將返回值傳遞給高級優(yōu)化算法。這些程序默認(rèn)給定的theta都是參數(shù)向量(vectors),,同時代價函數(shù)返回的梯度值也是一個向量,。

但是在神經(jīng)網(wǎng)絡(luò)中,我們的參數(shù)不再是向量了,,而變成了矩陣(matrices),。同樣的,這些返回的梯度值D^(1),D^(2),D^(3)是矩陣,。

9.4.2 如何展開參數(shù)

假設(shè)我們有一個輸入層有10個輸入單元,,隱藏層有10個隱藏單元,最后的輸出層只有一個輸出單元的神經(jīng)網(wǎng)絡(luò),。再做這種情況下,,θ和維度如上圖所示。在octave中,,如果想實現(xiàn)將矩陣轉(zhuǎn)化為向量,,就要使用下面的代碼:

即將theta1,2,3中的所有元素取出,然后把它們?nèi)空归_成為一個很長的向量,。

如果想實現(xiàn)將向量還原回矩陣,,就要適用下面的代碼:

例如還原theta1,我們先取出前110個元素,,然后用reshape命令來改變矩陣的大小,,從而得到矩陣theta1,。

9.4.3 將展開的參數(shù)應(yīng)用于學(xué)習(xí)算法

假設(shè)我們有一些初始化參數(shù),我們要把它們展開成一個長向量,,然后作為theta參數(shù)的初始值傳入優(yōu)化函數(shù),。另一件需要我們做的是就是實現(xiàn)代價函數(shù),如下圖:

代價函數(shù)實現(xiàn)算法如下:

使用矩陣表達的好處是在進行正向/反向傳播時會更方便,;用向量表達式的有點是當(dāng)你使用一些高級優(yōu)化算法時,,這些算法會要求把所有參數(shù)展開成一個長向量的形式,。

9.5 梯度檢驗

當(dāng)我們對一個較為復(fù)雜的模型(例如神經(jīng)網(wǎng)絡(luò))使用梯度下降算法時,,可能會存在一些不容易察覺的錯誤,意味著,,雖然代價看上去在不斷減小,,但最終的結(jié)果可能并不是最優(yōu)解。為了避免這樣的問題,,我們采取一種叫做梯度的數(shù)值檢驗(Numerical Gradient Checking)方法,。這種方法的思想是通過估計梯度值來檢驗我們計算的導(dǎo)數(shù)值是否真的是我們要求的。

9.5.1 梯度的數(shù)值估計

通常來說,,epsilon一個很小的值,,例如10^(-4)當(dāng)我們在octave中需要執(zhí)行這樣的計算時,需要執(zhí)行以下代碼:

9.5.2 參數(shù)為向量時

在上一節(jié)中,,我們只考慮了θ實數(shù)的情況,,現(xiàn)在我們要考慮更普遍的情況,即為參數(shù)向量的時候,。

我們可以用類似的思想來計算所有的偏導(dǎo)數(shù)項:

具體來說,,求θ_1偏導(dǎo)時,可以通過增加J中的θ_1得到,,所以括號中是θ_1+epsilon其余項不變,。在octave中的代碼實現(xiàn)如下:

當(dāng)我們在神經(jīng)網(wǎng)絡(luò)中使用這種方法時,我們需要驗證通過上述方法得到的偏導(dǎo)數(shù)與通過反向傳播算法得到的偏導(dǎo)數(shù)在數(shù)值上是否非常接近,。如果二者十分接近,,那么反向傳播的實現(xiàn)就是正確的。

9.5.3 總結(jié)

在進行梯度檢驗時時,,我們需要注意:

  • 通過反向傳播來計算DVec(D^(1),D^(2),D^(3)的展開形式),。

  • 實現(xiàn)數(shù)值上的梯度檢驗,計算出gradApprox,。

  • 確保DVec和gradApprox都能得出相似的近似值,。

  • 在你使用代碼訓(xùn)練網(wǎng)絡(luò)之前,要關(guān)掉梯度檢驗,。因為梯度檢驗是一個計算量非常大的,,運行速度非常慢的計算倒數(shù)的程序,,相反的,反向傳播算法是一個高性能的導(dǎo)數(shù)計算方法,。所以一旦確定反向傳播的實現(xiàn)是正確的,,就應(yīng)該關(guān)閉梯度檢驗。

9.6 隨機初始化(random initialization)

9.6.1 為什么要進行隨機初始化

當(dāng)你執(zhí)行一個例如梯度下降的算法時,,我們需要為變量θ取一些初始值,,那么應(yīng)該如何對θ設(shè)置初始值呢?一般在邏輯回歸中,,我們會將初始值設(shè)為0,,但是在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時這樣起不到任何作用

我們以上圖中的神經(jīng)網(wǎng)絡(luò)為例,。由于參數(shù)都是以0初始化的,,所以隱藏層的權(quán)重相同,導(dǎo)致a_1^(2)=a_2^(2)同理δ_1^(2)=δ_2^(2)進一步去看,,由于權(quán)重相同,,那么它們的偏導(dǎo)數(shù)也就相同,這樣會導(dǎo)致雖然迭代多次后值不為0,,但是從同一個輸入單元處罰的兩條權(quán)重每次更新完后都是相等的,。

所以每次更新之后,這兩個隱藏單元的每個參數(shù)輸入都是相等的,。如果有不止兩個隱藏單元,,而是有很多隱藏單元,那么它們在計算相同的特征,。所有的隱藏單元都以相同的函數(shù)作為輸入,,這是一種高度冗余的現(xiàn)象,因為這意味著最后的邏輯回歸單元只能得到一個特征,。

9.6.2 隨機初始化

為了解決上節(jié)中的問題,,我們要使用隨機初始化。對于每一個值,,我們將其初始化為一個范圍在[-epsilon,epsilon]之間的隨機值,。在octave中可以通過如下代碼實現(xiàn):

其中,rand方法會產(chǎn)生一個所有元素介于0到1之間的隨機矩陣,。注意,,這里的與我們在梯度檢驗中的沒有任何關(guān)系。

總而言之,,為了訓(xùn)練神經(jīng)網(wǎng)絡(luò),,應(yīng)該首先要將權(quán)重隨機初始化為一個接近0的,范圍在[-epsilon,epsilon]之間的隨機值,,然后進行反向傳播,,在進行梯度檢驗,,最后使用梯度下降或其他高級優(yōu)化算法來最小化代價函數(shù)。

9.7 組合到一起

9.7.1 選擇一個神經(jīng)網(wǎng)絡(luò)

在訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)時,,我們要做的第一件事就是選擇一種網(wǎng)絡(luò)架構(gòu)(network architecture),,即神經(jīng)元之間的連接模式。

我們將按以下原則進行選擇:

  • 輸入層的單元數(shù)量:特征x^(i)的維度,。

  • 輸出層的單元數(shù)量:分類問題中分類的個數(shù),。

  • 隱藏層數(shù):一個合理的默認(rèn)選項是只是用單個隱藏層,如果使用多余一層的隱藏單元,,那每一個隱藏層通常都應(yīng)有相同的單元數(shù),。雖然神經(jīng)元的數(shù)量越多,計算量越大,,但是通常來說,,隱藏單元還是越多越好,。

9.7.2 訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)

接下來要說的是訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)需要實現(xiàn)的步驟:

  1. 使用梯度檢查,,來比較已經(jīng)計算得到的偏導(dǎo)數(shù)項與用反向傳播算法得到的偏導(dǎo)數(shù)值,以確保兩種方法得到的值近似,。之后要停用梯度檢查,。

  2. 使用一個最優(yōu)化算法和反向傳播算法相結(jié)合,來最小化關(guān)于的代價函數(shù)J(θ),。

對于神經(jīng)網(wǎng)絡(luò)來說,,代價函數(shù)J(θ)是一個非凸函數(shù)(non-convex),理論上可能停留在局部最小值的位置,。實際上,,梯度下降算法和其他一些高級優(yōu)化方法理論上都能收斂于局部最小值,但是一般來講,,在實際操作中,,盡管我們不能保證這些優(yōu)化算法一定會得到局部最優(yōu)值,但項梯度下降這類算法,,在最小化代價函數(shù)J(θ)的過程中表現(xiàn)得很不錯,。

9.8 無人駕駛

本章視頻可在吳恩達及機器學(xué)習(xí)課時80中觀看。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多