神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)WU-week4深層神經(jīng)網(wǎng)絡(luò)

1. 引言

由淺到深的神經(jīng)網(wǎng)絡(luò)。


由淺到深的神經(jīng)網(wǎng)絡(luò)示意圖

在實際應(yīng)用中,是無法事先知道神經(jīng)網(wǎng)絡(luò)需要幾層的,可以將層數(shù)當(dāng)作超參數(shù),通過交叉驗證來確定需要幾層。

  • 符號標(biāo)法與之前相同,不同的是多了一個表示層數(shù)的符號L。如下圖。
    深(四)層神經(jīng)網(wǎng)絡(luò)及符號示意圖

2. 正向傳播

2.1 一個樣本

與單隱層類似,可以得到如下的前向傳播公式

\begin{array}{l}{z^{[1]}=W^{[1]} a^{[0]}+b^{[1]}} \\ {a^{[1]}=g^{[1]}\left(z^{[1]}\right)} \\ {z^{[2]}=W^{[2]} a^{[1]}+b^{[2]}} \\ {a^{[2]}=g^{[2]}(z^{[2]})} \\ ...... \\ {z^{[4]}=W^{[4]} a^{[3]}+b^{[4]}} \\ {a^{[4]}=g^{[4]}(z^{[4]})} \end{array}

2.2 m個樣本的訓(xùn)練集

\begin{array}{l}{Z^{[1]}=W^{[1]} A^{[0]}+b^{[1]}} \\ {A^{[1]}=g^{[1]}\left(Z^{[1]}\right)} \\ {Z^{[2]}=W^{[2]} A^{[1]}+b^{[2]}} \\ {A^{[2]}=g^{[2]}(Z^{[2]})} \\ ...... \\ {Z^{[4]}=W^{[4]} A^{[3]}+b^{[4]}} \\ {a^{[4]}=g^{[4]}(z^{[4]})} \end{array}
所以無論是單樣本還是訓(xùn)練集,都可以寫成:

for i=1 to m:
\begin{array}{l}{Z^{[i]}=W^{[i]} A^{[i-1]}+b^{[i]}} \\ {A^{[i]}=g^{[i]}\left(Z^{[i]}\right)} i\end{array}

2.3 矩陣維數(shù)檢查

  • \color {red} {Tips}: 要Debug程序,就要仔細(xì)系統(tǒng)的思考矩陣的維數(shù)?。?!
  • 在向量化過程不會改變維數(shù)的參數(shù)是W,b.
    W^{[i]}的維數(shù)是(n^{[i]},n^{[i-1]})b^{[i]}的維數(shù)是(b^{[i]},1)。函數(shù)的導(dǎo)數(shù)與函數(shù)有相同的維數(shù),所以\mathrmu0z1t8osW^{[i]}的維數(shù)與 W^{[i]}的維數(shù)相同也是(n^{[i]},n^{[i-1]})。所以\mathrmu0z1t8osb^{[i]}的維數(shù)與 b^{[i]}的維數(shù)相同也是(n^{[i]},1)。該維數(shù)在多個樣本的向量化過程中不會發(fā)生變化,即與樣本個數(shù)無關(guān)。
  • 在向量化過程會改變維數(shù)的參數(shù)是z,a,x
    一個樣本時,z的維數(shù)是(n^{[1]},1),x的維數(shù)是(n^{[0]},1)a的維數(shù)是(n^{[1]},1)。m個樣本向量化之后變成了,Z^{[i]}的維數(shù)是(n^{[i]},m),X的維數(shù)是(n^{[0]},m),A^{[i]}的維數(shù)是(n^{[i]},m)。同理,\mathrmu0z1t8osZ^{[i]},\mathrmu0z1t8osA^{[i]}的維數(shù)也是(n^{[i]},m)。

3. 為什么使用深層表示

  • 神經(jīng)網(wǎng)絡(luò)可以不大(小或者不大指的是隱藏單元的數(shù)量,即每層的單元數(shù)),但得有深度,得有比較多的隱藏層。
  • 以人臉檢測,人臉識別為例,深度神經(jīng)網(wǎng)絡(luò)先識別簡單特征,然后組合起來識別較復(fù)雜的特征,由簡單到復(fù)雜。
  • 神經(jīng)網(wǎng)絡(luò)有效的另一種說法,與電路元件依靠不同的邏輯門計算函數(shù)相似,如果不用多個隱層,那么單元數(shù)就會呈指數(shù)增長。如下圖所示,左側(cè)只需要O(log(n))個隱層,右側(cè)需要O(2^{n})2^{n-1}個隱藏單元。
    隱層數(shù)與節(jié)點(diǎn)數(shù)示意圖
  • 深度學(xué)習(xí)其實就是多隱層神經(jīng)網(wǎng)絡(luò),是一種名稱的再包裝。
  • 解決實際問題時,不必要一上來就用深度神經(jīng)網(wǎng)絡(luò),可以將隱層數(shù)看作是超參數(shù),從Logistic回歸開始,到一到二個隱層的神經(jīng)網(wǎng)絡(luò),慢慢調(diào)整,找到最佳效果。雖然不能否認(rèn)的是很多問題確實是多隱層神經(jīng)網(wǎng)絡(luò)的效果更好。

4. 搭建深層神經(jīng)網(wǎng)絡(luò)

如下圖所示的神經(jīng)網(wǎng)絡(luò),第l層需要的計算有:

示意神經(jīng)網(wǎng)絡(luò)

  • 前向傳播
    • 輸入:a^{[l-1]}
    • 輸出a^{[l]}
    • 計算過程:
      \begin{array}{l}{z^{[l]}=w^{[l]} a^{[l-1]}+b^{[l]}} \\ {a^{[l]}=g^{[l]}\left(z^{[l]}\right)} \end{array}
    • 緩存:z^{[l]},w^{[l]},b^{[l]}
  • 后向傳播
    • 輸入:\mathrmu0z1t8osa^{[l]}
    • 輸出:\mathrmu0z1t8osa^{[l-1]}
    • 計算過程:為了簡便說明,只給出相鄰的兩步計算公式,以看清楚計算過程
      根據(jù)公式
      \begin{array}{l}{z^{[l]}=w^{[l]} a^{[l-1]}+b^{[l]}} \\ {a^{[l]}=g^{[l]}\left(z^{[l]}\right)} \\{z^{[l-1]}=w^{[l]-1} a^{[l-2]}+b^{[l-1]}} \\ {a^{[l-1]}=g^{[l-1]}\left(z^{[l-1]}\right)} \end{array}
      不妨假設(shè)a^{[l]}就是輸出\hat{y},則有損失函數(shù){L(a^{[l]},y)},從而可以得到\mathrmu0z1t8osa^{[l]},由第l步的迭代公式,可以計算\mathrmu0z1t8osz^{[l]},進(jìn)而計算\mathrmu0z1t8osw^{[l]},\mathrmu0z1t8osb^{[l]},并可看出,每一步如果像計算導(dǎo)數(shù),都得先有對a的導(dǎo)數(shù)\mathrmu0z1t8osa^{[l-1]} = \mathrmu0z1t8osz^{[l]} \bullet w^{[l] T},再進(jìn)入第l-1步迭代,依次前推。
    • 緩存:\mathrmu0z1t8osw^{[l]},\mathrmu0z1t8osb^{[l]}
      即如下圖所示
      第l層的計算示意圖

      整個神經(jīng)網(wǎng)絡(luò)的計算如下圖:
      神經(jīng)網(wǎng)絡(luò)一個梯度下降的計算示意圖
  • 前向與后向傳播的計算公式:
    • 前向傳播
      \begin{aligned} Z^{[1]} &=W^{[1]} X+b^{[1]} \\ A^{[1]} &=g^{[1]}\left(Z^{[1]}\right) \\ Z^{[2]} &=W^{[2]} A^{[1]}+b^{[2]} \\ A^{[2]} &=g^{[2]}\left(Z^{[2]}\right) \\ .\\ . \\. \\ A^{[L]} &=g^{[L]}\left(Z^{[L]}\right)=\hat{Y} \end{aligned}
    • 后向傳播
      \begin{array}{l}{d Z^{[L]}=d A^{[L]} \bullet g^{[L] '}(z^{[L ]})} \\ {d W^{[L]}=\frac{1}{m} d Z^{[L]} A^{[L]^{T}}} \\ {d b^{[L]}=\frac{1}{m} n p \cdot \operatorname{sum}\left(\mathrmu0z1t8os Z^{[L]}, \text { axis }=1, \text {keepdims}=\text { True }\right)} \\ {d A^{[L-1]}=W^{[L] T} \bullet d Z^{[L]} }\end{array}
      {d Z^{[L-1]}=W^{[L] T}d Z^{[L]} \bullet g^{[L-1] '}(z^{[L-1]})}
      .
      .
      .
      {d Z^{[1]}=W^{[2] T}d Z^{[2]} \bullet g^{[1] '}(z^{[1]})}
      d W^{[1]} =\frac{1}{m} d Z^{[1]} A^{[1]^{T}}
      d b^{[1]} =\frac{1}{m} n p \cdot \operatorname{sum}\left(\mathrmu0z1t8os Z^{[1]}, \text { axis }=1, \text {keepdims}=\text { True }\right)
    • 若做的是二分類問題,那么g^{[l]}是sigmoid函數(shù),從而有d a^{[l]} = -\frac{y}{a} + \frac{1-y}{1-a}。
  • 算法的復(fù)雜性來源于數(shù)據(jù),而不是代碼!

5. 參數(shù)與超參數(shù)

  • 參數(shù)的參數(shù)就是超參數(shù)。
  • 一個原則: Try!Try!Try!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容