神經網路和深度學習(二)淺層神經網路

2022-06-30 04:18:07 字數 2342 閱讀 1485

1、計算神經網路的輸出(正向傳播):

矩陣表示:

向量化:

2、多個樣本的向量化(正向傳播):

3、啟用函式:

(1)sigmoid函式僅用於二分分類的情況,較少使用;

(2)tanh函式絕大多數情況下優於sigmoid函式;

(3)relu函式是預設的常用啟用函式;

(4)leaking relu 帶洩露的relu函式;

4、神經網路為什麼需要非線性啟用函式?

假設使用線性啟用函式,即a[1] = z[1]

a[1] = z[1] = w[1]x + b[1]

a[2] = z[2] = w[2]a[1] + b[2]

= w[2] * (w[1]x + b[1]) + b[2]

= (w[1]w[2])x + (w[2]b[1] + b[2])

= w'x + b'

可見,神經網路只是把輸入線性組合再輸出.

一般在回歸問題中,可能會使用線性啟用函式.

5、神經網路中的梯度下降:

6、直觀理解反向傳播:

da[2] = dl/da[2] = -y/a[2] + (1-y)/(1-a[2])

dz[2] = dl/dz[2] = dl/da[2] * da[2]/dz[2] = [-y/a[2] + (1-y)/(1-a[2])] * a[2](1-a[2]) = a[2]-y

dw[2] = dl/dw[2] = dl/dz[2] * dz[2]/dw[2]

= dz[1]a[1]t

db[2] = dl/db[2] = dl/dz[2] * dz[2]/db[2] = dz[2]

da[1] = dl/da[1] = dl/dz[2] * dz[2]/da[1] = w[2]tdz[2]

dz[1] = dl/dz[1] = dl/da[1] * da[1]/dz[1] = w[2]tdz[2] .* g[1]'(z[1])

dw[1] = dl/dw[1] = dl/dz[1] * dz[1]/dw[1] = dz[1]xt

db[1] = dl/db[1] = dl/dz[1] * dz[1]/db[1] = dz[1]

7、隨機初始化:

如果 w 初始值設定為全0,則隱藏單元的每行值都完全相同,即完全對此. 每個隱藏單元的計算完全相同,使得隱藏單元失去作用.

隨機初始化方法:

w[i] = np.random.randn(...) * 0.01

b[i] = np.zero(...)

乘上 0.01 是為了避免 z[i] 太大,導致 a[i] 太大,使得啟用函式處於平緩區域(接近飽和),梯度下降速度慢(g'(z)接近0,dz也接近0).

神經網路和深度學習 淺層神經網路

乙個淺層神經網路示意圖 如圖所示,表示乙個單隱層的網路結構。這裡主要需要注意的是,層與層之間引數矩陣的規格大小 隱藏層和輸出層之間 由上面我們可以總結出,在神經網路中,我們以相鄰兩層為觀測物件,前面一層作為輸入,後面一層作為輸出,兩層之間的w引數矩陣大小為 n out,nin b引數矩陣大小為 n ...

深度學習 淺層神經網路 3

目錄 一 神經網路表示 神經網路層數 隱藏數 輸出層 1 輸入不算是一層,可以說是第0層 第i層的值 w 1 可以用來表示是第1層的引數 每一層中有多個神經元,然後它們可以做相同的事,比如第一層中有3個引數,用下標來區分 二 啟用函式 sigmoid a frac 只用於二元分類輸出層 缺點 不是以...

神經網路學習(十)淺層BP神經網路總結

系列部落格是博主學習神經網路中相關的筆記和一些個人理解,僅為作者記錄筆記之用,不免有很多細節不對之處。我的這一階段目標是在學習完淺層bp神經網路的相關知識時,可以將手寫字的識別率達到98 在前面的幾次實驗中,mnist手寫字的識別率始終未達到98 以上,這樣的結果是有些讓人沮喪的。今天進過艱苦奮鬥,...