3.3 神经网络的输出-深度学习-Stanford吴恩达教授
| 3.2 神經網絡表示 | 回到目錄 | 3.4 多個例子中的向量化 |
神經網絡輸出 (Computing a Neural Network’s Output)
在上一節的視頻中,我們介紹只有一個隱藏層的神經網絡的結構與符號表示。在這節的視頻中讓我們了解神經網絡的輸出究竟是如何計算出來的。
首先,回顧下只有一個隱藏層的簡單兩層神經網絡結構:
其中, xxx 表示輸入特征, aaa 表示每個神經元的輸出, WWW 表示特征的權重,上標表示神經網絡的層數(隱藏層為1),下標表示該層的第幾個神經元。這是神經網絡的符號慣例,下同。
神經網絡的計算
關于神經網絡是怎么計算的,從我們之前提及的邏輯回歸開始,如下圖所示。用圓圈表示神經網絡的計算單元,邏輯回歸的計算有兩個步驟,首先你按步驟計算出 zzz ,然后在第二步中你以sigmoid函數為激活函數計算 zzz (得出 aaa ),一個神經網絡只是這樣子做了好多次重復計算。
回到兩層的神經網絡,我們從隱藏層的第一個神經元開始計算,如上圖第一個最上面的箭頭所指。從上圖可以看出,輸入與邏輯回歸相似,這個神經元的計算與邏輯回歸一樣分為兩步,小圓圈代表了計算的兩個步驟。
第一步,計算 z1[1]:z1[1]=w1[1]Tx+b1[1]z_1^{[1]}: z^{[1]}_1=w^{[1]T}_1x+b^{[1]}_1z1[1]?:z1[1]?=w1[1]T?x+b1[1]? 。
第二步,通過激活函數計算 a1[1]:a1[1]=σ(z1[1])a^{[1]}_1:a^{[1]}_1=\sigma(z^{[1]}_1)a1[1]?:a1[1]?=σ(z1[1]?) 。
隱藏層的第二個以及后面兩個神經元的計算過程一樣,只是注意符號表示不同,最終分別得到 a2[1]、a3[1]、a4[1]a^{[1]}_2、a^{[1]}_3、a^{[1]}_4a2[1]?、a3[1]?、a4[1]? ,詳細結果見下:
z1[1]=w1[1]Tx+b1[1],a1[1]=σ(z1[1])z^{[1]}_1=w^{[1]T}_1x+b^{[1]}_1,a^{[1]}_1=\sigma(z^{[1]}_1)z1[1]?=w1[1]T?x+b1[1]?,a1[1]?=σ(z1[1]?)z2[1]=w2[1]Tx+b2[1],a2[1]=σ(z2[1])z^{[1]}_2=w^{[1]T}_2x+b^{[1]}_2,a^{[1]}_2=\sigma(z^{[1]}_2)z2[1]?=w2[1]T?x+b2[1]?,a2[1]?=σ(z2[1]?)z3[1]=w3[1]Tx+b3[1],a3[1]=σ(z3[1])z^{[1]}_3=w^{[1]T}_3x+b^{[1]}_3,a^{[1]}_3=\sigma(z^{[1]}_3)z3[1]?=w3[1]T?x+b3[1]?,a3[1]?=σ(z3[1]?)z4[1]=w4[1]Tx+b4[1],a4[1]=σ(z4[1])z^{[1]}_4=w^{[1]T}_4x+b^{[1]}_4,a^{[1]}_4=\sigma(z^{[1]}_4)z4[1]?=w4[1]T?x+b4[1]?,a4[1]?=σ(z4[1]?)
向量化計算
如果你執行神經網絡的程序,用for循環來做這些看起來真的很低效。所以接下來我們要做的就是把這四個等式向量化。向量化的過程是將神經網絡中的一層神經元參數縱向堆積起來,例如隱藏層中的 www 縱向堆積起來變成一個 (4,3) 的矩陣,用符號 W[1]W^{[1]}W[1] 表示。另一個看待這個的方法是我們有四個邏輯回歸單元,且每一個邏輯回歸單元都有相對應的參數——向量 www ,把這四個向量堆積在一起,你會得出這4×3的矩陣。 因此, 公式3.8:
z[n]=w[n]x+b[n]z^{[n]}=w^{[n]}x+b^{[n]}z[n]=w[n]x+b[n]
公式3.9:
a[n]=σ(z[n])a^{[n]}=\sigma(z^{[n]})a[n]=σ(z[n])
詳細過程見下: 公式3.10:
a[1]=[a1[1]a2[1]a3[1]a4[1]]=σ(z[1])a^{[1]}=\left[ \begin{matrix} a^{[1]}_1\\a^{[1]}_2\\a^{[1]}_3\\a^{[1]}_4 \end{matrix} \right]=\sigma(z^{[1]})a[1]=??????a1[1]?a2[1]?a3[1]?a4[1]????????=σ(z[1])
公式3.11:
[z1[1]z2[1]z3[1]z4[1]]=[?W1[1]??W2[1]??W3[1]??W4[1]?]?W[1]?[x1x2x3]?input+[b1[1]b2[1]b3[1]b4[1]]?b[1]\left[ \begin{matrix} z^{[1]}_1\\z^{[1]}_2\\z^{[1]}_3\\z^{[1]}_4 \end{matrix} \right]= \overbrace{ \left[ \begin{matrix} \cdots & W^{[1]}_1 & \cdots \\\cdots & W^{[1]}_2 & \cdots\\\cdots & W^{[1]}_3 & \cdots\\\cdots & W^{[1]}_4 & \cdots \end{matrix} \right]}^{W^{[1]}} * \overbrace{ \left[\begin{matrix}x_1\\ x_2\\ x_3\end{matrix}\right] }^{input} + \overbrace{ \left[\begin{matrix}b_1^{[1]}\\ b^{[1]}_2\\ b^{[1]}_3\\b^{[1]}_4\end{matrix}\right] }^{b^{[1]}}??????z1[1]?z2[1]?z3[1]?z4[1]????????=???????????W1[1]?W2[1]?W3[1]?W4[1]??????????????W[1]?????x1?x2?x3??????input?+??????b1[1]?b2[1]?b3[1]?b4[1]?????????b[1]?
對于神經網絡的第一層,給予一個輸入 xxx ,得到 a[1]a^{[1]}a[1] , xxx 可以表示為 a[0]a^{[0]}a[0] 。通過相似的衍生你會發現,后一層的表示同樣可以寫成類似的形式,得到 a[2]a^{[2]}a[2] , y^=a[2]\hat{y}=a^{[2]}y^?=a[2] ,具體過程見公式3.8、3.9。
圖3.3.3
如上圖左半部分所示為神經網絡,把網絡左邊部分蓋住先忽略,那么最后的輸出單元就相當于一個邏輯回歸的計算單元。當你有一個包含一層隱藏層的神經網絡,你需要去實現以計算得到輸出的是右邊的四個等式,并且可以看成是一個向量化的計算過程,計算出隱藏層的四個邏輯回歸單元和整個隱藏層的輸出結果,如果編程實現需要的也只是這四行代碼。
總結 通過本視頻,你能夠根據給出的一個單獨的輸入特征向量,運用四行代碼計算出一個簡單神經網絡的輸出。接下來你將了解的是如何一次能夠計算出不止一個樣本的神經網絡輸出,而是能一次性計算整個訓練集的輸出。
課程板書
| 3.2 神經網絡表示 | 回到目錄 | 3.4 多個例子中的向量化 |
總結
以上是生活随笔為你收集整理的3.3 神经网络的输出-深度学习-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3.2 神经网络表示-深度学习-Stan
- 下一篇: 3.4 多个例子中的向量化-深度学习-S