吳恩達深度學習課程一:神經網(wang)絡和深度學習 第三周:淺層神經網(wang)絡(一)正向傳播
此分類用于記錄吳恩達深度學習課程的學習筆記。
課程相(xiang)關信(xin)息鏈接如下(xia):
- 原課程視頻鏈接:
- github課程資料,含課件與筆記:
- 課程配套練習(中英)與答案:
本篇為第(di)一課第(di)三(san)周,到(dao)部分的筆記內容。
經(jing)過第二周(zhou)的基礎補充,本周(zhou)內(nei)(nei)容的理解(jie)難度可(ke)以(yi)說有了很大(da)的降低,主(zhu)要是(shi)從邏輯(ji)回(hui)歸擴(kuo)展到(dao)淺(qian)層神經(jing)網絡,講解(jie)相關內(nei)(nei)容,我們按(an)部就班梳(shu)理課程(cheng)內(nei)(nei)容即可(ke),當然(ran),依舊會盡可(ke)能地創造一個較為絲(si)滑的理解(jie)過程(cheng)。
1.神經網絡
1.1 邏輯回歸的網絡結構
在第二周我們已經知道,邏輯回歸是通過一次線性組合和sigmoid激活函數來進行二分類的算法,現在,我們用神經網絡的結構來描述一下邏輯回歸,如下圖所示:

對于輸入層,隱藏層,輸出層,我們在第一周的內容里就已經進行過相關介紹。
為什么在這里寫了兩種層級劃分形式呢?
我們回到之前總結的內容:邏輯回歸 =線性組合+sigmoid
一般來說,對于二分類問題,我們會在輸出層設置 sigmoid 激活函數,來對隱藏層的輸出再進行最終的組合和映射。
但邏輯回歸的結構過于簡單,它的內容只有一次線性組合和sigmoid,而這二者在一個神經元里即可完成設置。
因此,我們可以把邏輯回歸的網絡看作沒有隱藏層,又或者輸出層不做任何處理。
這些都是結構上的劃分,我們明白意思,知道算法的內容即可。
最后總結一下邏輯回歸,可以說,邏輯回歸的核心還是對數據進行線性擬合,只是其經過sigmoid輸出的是概率而非直接的數值。
在上周的代碼實踐部分中,我們也能發現,邏輯回歸展現出的性能略顯不足。
我們通過邏輯(ji)回歸了解了一(yi)(yi)個最簡單的(de)神經網絡的(de)運行過程,而現在就(jiu)需要(yao)更進(jin)一(yi)(yi)步了。
1.2 一個淺層神經網絡的網絡結構
來看這樣一個稍復雜(za)點的神經網絡:

很明顯,隱藏層神經元從一個變成了四個,每一個神經元的結構都和剛剛包含線性組合和激活函數的神經元一樣。
一直以來,我們都有這樣的認知:更復雜的神經網絡能擬合更復雜的數據,得到更好的模型。
而現在,面對這個比邏輯回歸復雜了一些的淺層神經網絡,它又是如何做到更好的擬合效果呢?
我們(men)用淺層神經網(wang)絡再來一次傳播(bo)。
2.淺層神經網絡的正向傳播
在之前的向量化學習內容中,我們知道了邏輯回歸,即只有一個隱藏神經元的神經網絡的正向傳播過程,而現在我們來看一下淺層神經網絡的正向傳播。

先引入一些新的符號。
在(zai)之前(qian)的內容里,我們知道(dao):
- \(x^{(i)}\) 中的 \(i\) 代表第 \(i\) 個樣本
- \(x_i\) 中的 \(i\) 代表某個樣本的第 \(i\) 個變量
現在,我們對神經網絡的層級進行劃分,規定:\(x^{[i]}\) 中的 \(i\) 代表這個量來自第 \(i\) 層。
我們按照課程內容對各層劃分,規定輸入層為第0層,此后依次增加。
要說明的是并非隱藏層就是第1層,輸出就是第2層,只是這個淺層神經網絡中只有一層隱藏層,所以輸出是第2層。
因此,如圖所示: \(a^{[1]}_1\) 就代表第(di)一(yi)層第(di)一(yi)個神經元的(de)輸出。
現在(zai),我(wo)們系統地梳理一遍淺(qian)層神經(jing)網(wang)絡(luo)的向(xiang)量化正向(xiang)傳播過程:
2.1 輸入特征
沒有變化:
- 對于單個樣本:
- 對于一個批次,\(m\) 個樣本:
2.2 隱藏層的參數設置
這里我們按上面的網絡結(jie)構定為4個隱藏神經元:
- 對于單個神經元,其權重向量為:
- 現在,我們把4個神經元的權重向量組合在一起得到隱藏層權重矩陣\(W^{[1]}\),其中每一行 \(\mathbf{w^{[1]}_i}\)
是連接輸入層到第 \(i\) 個隱藏神經元的權重向量。
- 同理,我們得到偏置矩陣:
要說明的是,我們已經知道了廣播機制,所以現在\(\mathbf{b^{[1]}}\)中的每個量都是標量,在進行加權和運算時會自動向右復制為 \(m\) 列來配合運算,不直接定義為一個標量是因為每個神經元的偏置不同。
2.3 隱藏層的線性加權和
最(zui)終,我們向量化的線(xian)性組合公式如(ru)下:
我們展開來看一下\(\mathbf{Z^{[1]}}\) 的具體內容:
再細化一下:
這樣,我們就得到了一批次樣本在分別在四個隱藏神經元上線性組合得到的加權和。
2.4 隱藏層的激活函數
每個(ge)隱藏神經元的輸(shu)出為:
其中 \(g(x)\) 是激活函數(例如 ReLU、tanh、sigmoid)。
到這里,我們就得到了隱藏(zang)層的輸(shu)出(chu),同時,這也是輸(shu)出(chu)層的輸(shu)入。
2.5 輸出層的參數設置
輸出層只有一個神經元,用來生成最終的預測值。
我們先再看一眼輸入\(\mathbf{A^{[1]}}\) ,他代表的是一批次樣本在分別在四個隱藏神經元上的輸出,其中每一個元素就代表一個樣本經過一個隱藏層神經元的輸出。
再說到行列:
\(\mathbf{A^{[1]}}\) 的一行代表所有樣本在一個隱藏神經元上的輸出,一列代表一個樣本在所有隱藏神經元上的輸出。
按計算的位置來說,在這里一個樣本在每個隱藏神經元上的輸出和之前的每個樣本的輸入特征相同
我(wo)們再(zai)次進行線性組合,依然要以樣(yang)本為單位。
- 權重向量如下,再次強調區分: 隱藏層存在多個神經元,所以 \(\mathbf{W^{[1]}}\)里的每個元素是向量,而輸出層只有一個神經元,所以 \(\mathbf{W^{[2]}}\)里的每個元素是標量。
- 偏置矩陣如下,其列數和該層神經元數量相同。
2.6 輸出層的線性組合和激活
公式如下:
如果說 \(\mathbf{A^{[1]}}\) 的每個元素代表了一個樣本在經過各個輸入特征加權后的中間表達結果,那么 \(\mathbf{A^{[2]}}\) 的每個元素便進一步綜合了該樣本在所有隱藏神經元上的響應,得到該樣本在輸出層的最終預測值。
從這句話,或許(xu)便(bian)可以從邏輯上來幫(bang)助理解更復雜(za)的網絡能(neng)得到(dao)更好的擬合效(xiao)果的原因。
2.7 總結

這便是課(ke)程中給出的(de)(de)總結(jie)部(bu)分,一次正向傳播實際上便是四個公式的(de)(de)運算,我們也(ye)總結(jie)一下本次過(guo)程中各(ge)種量的(de)(de)變化(hua)如下:
| 層級 | 符號 | 含義 | 維度 |
|---|---|---|---|
| 輸入層 | ?? | 所有輸入樣本 | (n × m) |
| 隱藏層權重 | \(W^{[1]}\) | 輸入→隱藏層連接 | (4 × n) |
| 隱藏層偏置 | \(b^{[1]}\) | 每個神經元偏置 | (4 × 1) |
| 隱藏層線性輸出 | \(Z^{[1]}\) | 加權和 | (4 × m) |
| 隱藏層激活 | \(A^{[1]}\) | 非線性輸出 | (4 × m) |
| 輸出層權重 | \(W^{[2]}\) | 隱藏層→輸出層連接 | (1 × 4) |
| 輸出層偏置 | \(b^{[2]}\) | 輸出層偏置 | (1 × 1) |
| 輸出層線性輸出 | \(Z^{[2]}\) | 加權和 | (1 × m) |
| 最終輸出 | \(A^{[2]}\) | 模型預測 | (1 × m) |
下一篇會再展開一下激活函數來(lai)敘(xu)述復雜(za)網絡(luo)提(ti)高擬合能力的原因,并(bing)梳理淺層神經網絡(luo)如何應用梯度下降(jiang),即(ji)反向(xiang)傳(chuan)播的過程。
