神經網路是由乙個個神經元相互連線並按層次排列構成的,深度神經網路是有任意層的神經網路,這裡的深度是指層次的多,而不是神經元數量的多。有任意層,那麼就要有乙個迴圈來負責遍歷每一層進行計算。所以深度神經網路的計算形式,就必須要適應這個迴圈結構。
我們先來說說神經元吧
對於多神經元神經網路,其實也是一樣的。簡單來說就是重複單神經元的流程,把上一層神經元的輸出作為下一層神經元的輸入。
下面是乙個多神經元神經網路。
我們可以把它拆分成乙個乙個單獨的神經元來看,就可以清楚地看出複雜的神經網路其實就是由我們學習過的最簡單的單神經元網路組成的。例如我們先只看第乙個神經元。
最前面的負責輸入特徵的層叫做輸入層,當我們在統計層數的時候通常不會把這一層計算在內,所以這是乙個兩層的神經網路(雖然上面看起來有3層);最後一層我們叫做輸出層;在中間的所有層統稱為隱藏層。
下面我們來看一下深度神經網路前向傳播的計算形式,和單神經元是一樣的,只是多了層次的識別符號。利用下面兩個經典的計算公式。
z l=
wlal
−1+b
lz^ = w^la^ + b^l
zl=wla
l−1+
bla l=
gl(z
l)a^l = g^l(z^l)
al=gl(
zl)比如說在計算第一層時,al−
1a^al−1
就是輸入特徵x,g
lg^l
gl是第一層的啟用函式(每一層的啟用函式都可以是不同的),得到第一層的a後,將其傳入到第二層,依然套用上面的公式計算第二層的z,然後計算第二層的a,這樣一層一層地傳下去,最後得出最後一層的a(y
^\hat
y^**結果)
然後說一下反向傳播的計算。
反向傳播利用的是下面四個計算公式。
d zl
=dal
∗g′l
(zl)
dz^l = da^l * g'^l(z^l)
dzl=da
l∗g′
l(zl)dw
l=dz
l∗al
−1dw^l = dz^l * a^
dwl=dz
l∗al
−1d bl
=dzl
db^l= dz^l
dbl=dzlda
l−1=
wl.t
∗dzl
da^ = w^l.t * dz^l
dal−1=
wl.t
∗dzl
需要強調的一點是,最後一層的da的計算公式有所不同,因為最後乙個a直接傳入到了損失函式,所以可以直接計算它的偏導數,在邏輯回歸中最後一層的da=
−ya+
1−y1
−ada=-\frac+\frac
da=−ay
+1−
a1−y
。最後總結一下整個神經網路的訓練過程,a[0]也就是特徵輸入x,它與w[1],b[1]一起經過前向傳播的第一步後,得出了z[1]以及a[1],a[1]又傳遞到下一步,得出z[2]和a[2],然後又繼續往下傳播,最後得出**結果a[l]就也是y
^\hat
y^。**結果a[l]與真實標籤y可以構成損失函式,得出**精準度。有了損失函式,那麼我們就可以計算出損失函式關於a[l]的偏導數da[l]。有了da[l],我們就可以通過偏導數的鏈式法則進行反向傳播,反向傳播的第一步使用da[l]以及前向傳播中得到的z[l],w[l]等等資料得出了dz[l],dw[l],db[l]以及da[l-1],da[l-1]繼續向前傳播,一步步得出每一層的w和b的偏導數。然後使用這些偏導數進行梯度下降,來更新每一層的w和b,然後使用新的w和b進行第二輪前向傳播反向傳播,這樣不停地更新w和b,不停地優化w和b。
機器學習,深度學習,神經網路,深度神經網路
先來說一下這幾者之間的關係 人工智慧包含機器學習,機器學習包含深度學習 是其中比較重要的分支 深度學習源自於人工神經網路的研究,但是並不完全等於傳統神經網路。所以深度學習可以說是在傳統神經網路基礎上的公升級。神經網路一般有輸入層 隱藏層 輸出層,一般來說隱藏層大於2的神經網路就叫做深度神經網路,深度...
深度神經網路
關於卷積神經網路cnn,網路和文獻中有非常多的資料,我在工作 研究中也用了好一段時間各種常見的model了,就想著簡單整理一下,以備查閱之需。如果讀者是初接觸cnn,建議可以先看一看 deep learning 深度學習 學習筆記整理系列 中關於cnn的介紹 1 是介紹我們常說的lenet為例,相信...
(pytorch 深度學習)深度迴圈神經網路
迴圈神經網路只有乙個單向的隱藏層,在深度學習應用裡,我們通常會用到含有多個隱藏層的迴圈神經網路,也稱作深度迴圈神經網路。下圖演示了乙個有l ll個隱藏層的深度迴圈神經網路,每個隱藏狀態不斷傳遞至當前層的下一時間步和當前時間步的下一層。具體來說 第1隱藏層的隱藏狀態和之前的計算一樣 h t 1 xtw...