神经网络入门篇:详解神经网络概述和表示
神經(jīng)網(wǎng)絡概述(Neural Network Overview)
先開始快速瀏覽一下如何實現(xiàn)神經(jīng)網(wǎng)絡。上篇博客了解了邏輯回歸,了解了這個模型(見圖1.1.1)如何與下面公式1.1建立聯(lián)系。
圖1.1.1 :
公式1.1:
\[\left. \begin{array}{l} x\\ w\\ b \end{array} \right\} \implies{z={w}^Tx+b} \]如上所示,首先需要輸入特征\(x\),參數(shù)\(w\)和\(b\),通過這些就可以計算出\(z\),公式1.2:
\[\left. \begin{array}{l} x\\ w\\ b \end{array} \right\} \implies{z={w}^Tx+b} \implies{a = \sigma(z)}\\ \implies{{L}(a,y)} \]接下來使用\(z\)就可以計算出\(a\)。將的符號換為表示輸出\(\hat{y}\implies{a = \sigma(z)}\),然后可以計算出loss function \(L(a,y)\)
神經(jīng)網(wǎng)絡看起來是如下這個樣子(圖1.1.2)。正如之前已經(jīng)提到過,可以把許多sigmoid單元堆疊起來形成一個神經(jīng)網(wǎng)絡。對于圖3.1.1中的節(jié)點,它包含了之前講的計算的兩個步驟:首先通過公式1.1計算出值\(z\),然后通過\(\sigma(z)\)計算值\(a\)。
圖1.1.2
在這個神經(jīng)網(wǎng)絡(圖1.1.2)對應的3個節(jié)點,首先計算第一層網(wǎng)絡中的各個節(jié)點相關的數(shù)\(z^{[1]}\),接著計算\(\alpha^{[1]}\),在計算下一層網(wǎng)絡同理;
會使用符號\(^{[m]}\)表示第\(m\)層網(wǎng)絡中節(jié)點相關的數(shù),這些節(jié)點的集合被稱為第\(m\)層網(wǎng)絡。這樣可以保證\(^{[m]}\)不會和之前用來表示單個的訓練樣本的\(^{(i)}\)(即使用表示第\(i\)個訓練樣本)混淆;
整個計算過程,公式如下:
公式1.3:
公式1.4:
\[\left. \begin{array}{r} \text{$a^{[1]} = \sigma(z^{[1]})$}\\ \text{$W^{[2]}$}\\ \text{$b^{[2]}$}\\ \end{array} \right\} \implies{z^{[2]}=W^{[2]}a^{[1]}+b^{[2]}} \implies{a^{[2]} = \sigma(z^{[2]})}\\ \implies{{L}\left(a^{[2]},y \right)} \]類似邏輯回歸,在計算后需要使用計算,接下來需要使用另外一個線性方程對應的參數(shù)計算\(z^{[2]}\),
計算\(a^{[2]}\),此時\(a^{[2]}\)就是整個神經(jīng)網(wǎng)絡最終的輸出,用 \(\hat{y}\)表示網(wǎng)絡的輸出。
公式1.5:
\[\left. \begin{array}{r} {da^{[1]} = ozvdkddzhkzd\sigma(z^{[1]})}\\ {dW^{[2]}}\\ {db^{[2]}}\\ \end{array} \right\} \impliedby{{dz}^{[2]}=ozvdkddzhkzd(W^{[2]}\alpha^{[1]}+b^{[2]}}) \impliedby{{{da}^{[2]}} = ozvdkddzhkzd\sigma(z^{[2]})}\\ \impliedby{{dL}\left(a^{[2]},y \right)} \]知道這其中有很多細節(jié),其中有一點非常難以理解,即在邏輯回歸中,通過直接計算\(z\)得到結果\(a\)。而這個神經(jīng)網(wǎng)絡中,反復的計算\(z\)和\(a\),計算\(a\)和\(z\),最后得到了最終的輸出loss function。
應該記得邏輯回歸中,有一些從后向前的計算用來計算導數(shù)\(da\)、\(dz\)。同樣,在神經(jīng)網(wǎng)絡中也有從后向前的計算,看起來就像這樣,最后會計算\(da^{[2]}\) 、\(dz^{[2]}\),計算出來之后,然后計算計算\(dW^{[2]}\)、\(db^{[2]}\) 等,按公式1.4、1.5箭頭表示的那樣,從右到左反向計算。
至此大概了解了一下什么是神經(jīng)網(wǎng)絡。
神經(jīng)網(wǎng)絡的表示
先回顧一下上一篇博客的圖片,在這里將討論這些圖片的具體含義,也就是畫的這些神經(jīng)網(wǎng)絡到底代表什么。
首先關注一個例子,本例中的神經(jīng)網(wǎng)絡只包含一個隱藏層(圖1.2.1)。這是一張神經(jīng)網(wǎng)絡的圖片,讓給此圖的不同部分取一些名字。
圖1.2.1
有輸入特征\(x_1\)、\(x_2\)、\(x_3\),它們被豎直地堆疊起來,這叫做神經(jīng)網(wǎng)絡的輸入層。它包含了神經(jīng)網(wǎng)絡的輸入;然后這里有另外一層稱之為隱藏層(圖1.2.1的四個結點)。待會兒會回過頭來講解術語"隱藏"的意義;在本例中最后一層只由一個結點構成,而這個只有一個結點的層被稱為輸出層,它負責產(chǎn)生預測值。解釋隱藏層的含義:在一個神經(jīng)網(wǎng)絡中,當使用監(jiān)督學習訓練它的時候,訓練集包含了輸入\(x\)也包含了目標輸出\(y\),所以術語隱藏層的含義是在訓練集中,這些中間結點的準確值是不知道到的,也就是說看不見它們在訓練集中應具有的值。能看見輸入的值,也能看見輸出的值,但是隱藏層中的東西,在訓練集中是無法看到的。所以這也解釋了詞語隱藏層,只是表示無法在訓練集中看到他們。
現(xiàn)在再引入幾個符號,就像之前用向量\(x\)表示輸入特征。這里有個可代替的記號\(a^{[0]}\)可以用來表示輸入特征。\(a\)表示激活的意思,它意味著網(wǎng)絡中不同層的值會傳遞到它們后面的層中,輸入層將\(x\)傳遞給隱藏層,所以將輸入層的激活值稱為\(a^{[0]}\);下一層即隱藏層也同樣會產(chǎn)生一些激活值,那么將其記作\(a^{[1]}\),所以具體地,這里的第一個單元或結點將其表示為\(a^{[1]}_{1}\),第二個結點的值記為\(a^{[1]}_{2}\)以此類推。所以這里的是一個四維的向量如果寫成Python代碼,那么它是一個規(guī)模為4x1的矩陣或一個大小為4的列向量,如下公式,它是四維的,因為在本例中,有四個結點或者單元,或者稱為四個隱藏層單元;
公式1.7
最后輸出層將產(chǎn)生某個數(shù)值\(a\),它只是一個單獨的實數(shù),所以的\(\hat{y}\)值將取為\(a^{[2]}\)。這與邏輯回歸很相似,在邏輯回歸中,有\(\hat{y}\)直接等于\(a\),在邏輯回歸中只有一個輸出層,所以沒有用帶方括號的上標。但是在神經(jīng)網(wǎng)絡中,將使用這種帶上標的形式來明確地指出這些值來自于哪一層,有趣的是在約定俗成的符號傳統(tǒng)中,在這里所看到的這個例子,只能叫做一個兩層的神經(jīng)網(wǎng)絡(圖1.2.2)。原因是當計算網(wǎng)絡的層數(shù)時,輸入層是不算入總層數(shù)內(nèi),所以隱藏層是第一層,輸出層是第二層。第二個慣例是將輸入層稱為第零層,所以在技術上,這仍然是一個三層的神經(jīng)網(wǎng)絡,因為這里有輸入層、隱藏層,還有輸出層。但是在傳統(tǒng)的符號使用中,如果閱讀研究論文,會看到人們將這個神經(jīng)網(wǎng)絡稱為一個兩層的神經(jīng)網(wǎng)絡,因為不將輸入層看作一個標準的層。
圖1.2.2
最后,要看到的隱藏層以及最后的輸出層是帶有參數(shù)的,這里的隱藏層將擁有兩個參數(shù)\(W\)和\(b\),將給它們加上上標\(^{[1]}\)(\(W^{[1]}\),\(b^{[1]}\)),表示這些參數(shù)是和第一層這個隱藏層有關系的。之后在這個例子中會看到\(W\)是一個4x3的矩陣,而\(b\)是一個4x1的向量,第一個數(shù)字4源自于有四個結點或隱藏層單元,然后數(shù)字3源自于這里有三個輸入特征,之后會更加詳細地討論這些矩陣的維數(shù),到那時可能就更加清楚了。相似的輸出層也有一些與之關聯(lián)的參數(shù)\(W^{[2]}\)以及\(b^{[2]}\)。從維數(shù)上來看,它們的規(guī)模分別是1x4以及1x1。1x4是因為隱藏層有四個隱藏層單元而輸出層只有一個單元,之后會對這些矩陣和向量的維度做出更加深入的解釋,所以現(xiàn)在已經(jīng)知道一個兩層的神經(jīng)網(wǎng)絡什么樣的了,即它是一個只有一個隱藏層的神經(jīng)網(wǎng)絡。
總結
以上是生活随笔為你收集整理的神经网络入门篇:详解神经网络概述和表示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 会影响佣金收入,苹果承认欧洲市场开放第三
- 下一篇: c# char unsigned_dll