1. 程式人生 > >吳恩達 deep learning 第三週 淺層神經網路

吳恩達 deep learning 第三週 淺層神經網路

文章目錄

神經網路概覽

[]表示不同的層
x (

i ) x^{(i)} 表示第i個數據

神經網路的表示

簡單的神經網路
a [ i

] a^{[i]} 表示第i層的啟用值
w [ i ]
b [ i ] w^{[i]} ,b^{[i]}
表示第i層的引數
w [ 1 ] w^{[1]} 是4*3的矩陣,4表示4個隱藏單元,3表示3個輸入

計算神經網路的輸出

神經網路的計算過程

向量化之後的計算過程

多個例子中的向量化

向量化的實現,通過向量化可以更快的實現神經網路的計算

啟用函式

幾種不同的啟用函式

tanh啟用函式幾乎在所有場合由於sigmoid,在做二分類的時候,輸出層使用sigmoid函式
tanh和sigmoid有一個缺點就是如果z很大或者很小,那麼導數的梯度可能就會很小,這就會導致梯度下降很慢
ReLU 修正性單元 缺點是當z為負的時候,導數等於零
Leaky ReLU 解決上述問題 這兩者的優點是啟用函式的斜率和0差得很遠,在實踐中使用ReLU啟用函式,神經網路的訓練會快很多,雖然ReLU有一半的斜率為0,當有足夠多的隱藏單元,令z>0

為什麼需要非線性啟用函式


如果使用線性啟用函式,那麼神經網路只是把輸入線性組合在輸出

啟用函式的導數

Sigmoid函式的導數

Tanh函式的導數

ReLU和Leaky ReLu導數

神經網路的梯度下降

神經網路梯度下降

正向傳播和反向傳播
keepdims=True 保證輸出的是矩陣

隨機初始化

當隱藏單元的引數設定為0時,通過多次迭代隱藏單元還是對稱的,都在計算完全一樣的函式,這樣多個隱藏單元沒有意義

將w*0.01是為了儘可能的是輸出小,使得z的值位於sigmoid和tanh啟用函式的0附近,0附近的梯度較大,可以提高神經網路的速度