日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

神经网络入门篇之深层神经网络:详解前向传播和反向传播(Forward and backward propagation)

發布時間:2023/11/30 windows 25 coder
生活随笔 收集整理的這篇文章主要介紹了 神经网络入门篇之深层神经网络:详解前向传播和反向传播(Forward and backward propagation) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

深層神經網絡(Deep L-layer neural network)

復習下前面的內容:

1.邏輯回歸,結構如下圖左邊。一個隱藏層的神經網絡,結構下圖右邊:

注意,神經網絡的層數是這么定義的:從左到右,由0開始定義,比如上邊右圖,\({x}_{1}\)\({x}_{2}\)\({x}_{3}\),這層是第0層,這層左邊的隱藏層是第1層,由此類推。如下圖左邊是兩個隱藏層的神經網絡,右邊是5個隱藏層的神經網絡。

嚴格上來說邏輯回歸也是一個一層的神經網絡,而上邊右圖一個深得多的模型,淺與深僅僅是指一種程度。記住以下要點:

有一個隱藏層的神經網絡,就是一個兩層神經網絡。記住當算神經網絡的層數時,不算輸入層,只算隱藏層和輸出層。

但是在過去的幾年中,DLI(深度學習學院 deep learning institute)已經意識到有一些函數,只有非常深的神經網絡能學會,而更淺的模型則辦不到。盡管對于任何給定的問題很難去提前預測到底需要多深的神經網絡,所以先去嘗試邏輯回歸,嘗試一層然后兩層隱含層,然后把隱含層的數量看做是另一個可以*選擇大小的超參數,然后再保留交叉驗證數據上評估,或者用開發集來評估。

再看下深度學習的符號定義:

上圖是一個四層的神經網絡,有三個隱藏層。可以看到,第一層(即左邊數過去第二層,因為輸入層是第0層)有5個神經元數目,第二層5個,第三層3個。

用L表示層數,上圖:\(L=4\),輸入層的索引為“0”,第一個隱藏層\({n}^{[1]}=5\),表示有5個隱藏神經元,同理\({n}^{[2]}=5\)\({n}^{[3]}=3\)\({{n}^{[4]}}\)=\({{n}^{[L]}}=1\)(輸出單元為1)。而輸入層,\({n}^{[0]}={n}_{x}=3\)

在不同層所擁有的神經元的數目,對于每層l都用\({a}^{[l]}\)來記作l層激活后結果,會在后面看到在正向傳播時,最終能會計算出\({{a}^{[l]}}\)

通過用激活函數 \(g\) 計算\({z}^{[l]}\),激活函數也被索引為層數\(l\),然后用\({w}^{[l]}\)來記作在l層計算\({z}^{[l]}\)值的權重。類似的,\({{z}^{[l]}}\)里的方程\({b}^{[l]}\)也一樣。

最后總結下符號約定:

輸入的特征記作\(x\),但是\(x\)同樣也是0層的激活函數,所以\(x={a}^{[0]}\)

最后一層的激活函數,所以\({a}^{[L]}\)是等于這個神經網絡所預測的輸出結果。

前向傳播和反向傳播

  • 之前的神經網絡入門篇都是基于淺層神經網絡進行的,此篇開始基于深層神經網絡進行

之前學習了構成深度神經網絡的基本模塊,比如每一層都有前向傳播步驟以及一個相反的反向傳播步驟,這次講講如何實現這些步驟。

先講前向傳播,輸入\({a}^{[l-1]}\),輸出是\({a}^{[l]}\),緩存為\({z}^{[l]}\);從實現的角度來說可以緩存下\({w}^{[l]}\)\({b}^{[l]}\),這樣更容易在不同的環節中調用函數。

所以前向傳播的步驟可以寫成: \({z}^{[l]}={W}^{[l]}\cdot{a}^{[l-1]}+{b}^{[l]}\)

? \({{a}^{[l]}}={{g}^{[l]}}\left( {{z}^{[l]}}\right)\)

向量化實現過程可以寫成: \({z}^{[l]}={W}^{[l]}\cdot {A}^{[l-1]}+{b}^{[l]}\)

? \({A}^{[l]}={g}^{[l]}({Z}^{[l]})\)

前向傳播需要喂入\({A}^{[0]}\)也就是\(X\),來初始化;初始化的是第一層的輸入值。\({a}^{[0]}\)對應于一個訓練樣本的輸入特征,而\({{A}^{[0]}}\)對應于一整個訓練樣本的輸入特征,所以這就是這條鏈的第一個前向函數的輸入,重復這個步驟就可以從左到右計算前向傳播。

下面講反向傳播的步驟:

輸入為\({{da}^{[l]}}\),輸出為\({{da}^{[l-1]}}\)\({{dw}^{[l]}}\), \({{db}^{[l]}}\)

所以反向傳播的步驟可以寫成:

(1)\(d{{z}^{[l]}}=d{{a}^{[l]}}*{{g}^{[l]}}'( {{z}^{[l]}})\)

(2)\(d{{w}^{[l]}}=d{{z}^{[l]}}\cdot{{a}^{[l-1]}}~\)

(3)\(d{{b}^{[l]}}=d{{z}^{[l]}}~~\)

(4)\(d{{a}^{[l-1]}}={{w}^{\left[ l \right]T}}\cdot {{dz}^{[l]}}\)

(5)\(d{{z}^{[l]}}={{w}^{[l+1]T}}d{{z}^{[l+1]}}\cdot \text{ }{{g}^{[l]}}'( {{z}^{[l]}})~\)

式子(5)由式子(4)帶入式子(1)得到,前四個式子就可實現反向函數。

向量化實現過程可以寫成:

(6)\(d{{Z}^{[l]}}=d{{A}^{[l]}}*{{g}^{\left[ l \right]}}'\left({{Z}^{[l]}} \right)~~\)

(7)\(d{{W}^{[l]}}=\frac{1}{m}\text{}d{{Z}^{[l]}}\cdot {{A}^{\left[ l-1 \right]T}}\)

(8)\(d{{b}^{[l]}}=\frac{1}{m}\text{ }np.sum(d{{z}^{[l]}},axis=1,keepdims=True)\)

(9)\(d{{A}^{[l-1]}}={{W}^{\left[ l \right]T}}.d{{Z}^{[l]}}\)

總結一下:

第一層可能有一個ReLU激活函數,第二層為另一個ReLU激活函數,第三層可能是sigmoid函數(如果做二分類的話),輸出值為,用來計算損失;這樣就可以向后迭代進行反向傳播求導來求\({{dw}^{[3]}}\)\({{db}^{[3]}}\)\({{dw}^{[2]}}\)\({{db}^{[2]}}\)\({{dw}^{[1]}}\)\({{db}^{[1]}}\)。在計算的時候,緩存會把\({{z}^{[1]}}\) \({{z}^{[2]}}\)\({{z}^{[3]}}\)傳遞過來,然后回傳\({{da}^{[2]}}\)\({{da}^{[1]}}\) ,可以用來計算\({{da}^{[0]}}\),但不會使用它,這里講述了一個三層網絡的前向和反向傳播,還有一個細節沒講就是前向遞歸——用輸入數據來初始化,那么反向遞歸(使用Logistic回歸做二分類)——對\({{A}^{[l]}}\) 求導。

忠告:補補微積分和線性代數,多推導,多實踐。

總結

以上是生活随笔為你收集整理的神经网络入门篇之深层神经网络:详解前向传播和反向传播(Forward and backward propagation)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。