第三周:淺層神經網絡(Shallow neural networks)
文章目錄
- 第三周:淺層神經網絡(Shallow neural networks)
- 前言
- 正文
-
- 3.1 神經網絡概述( Neural Network Overview)
- 3.2 神經網絡的表示( Neural Network Representation)
- 3.3 計算一個神經網絡的輸出( Computing a Neural Network's output)
- 3.4 多樣本向量化( Vectorizing across multiple examples)
- 3.5 向量化實作的解釋( Justification for vectorized implementation)
- 3.6 激活函數( Activation functions)
- 3.7 為什麼需要非線性激活函數?( why need a nonlinear activation)
- 3.8 激活函數的導數( Derivatives of activation functions)
-
- (1)Sigmoid activation function
- (2)Tanh activation function
- (3)Rectified Linear Unit(ReLU)
- (4)Leaky Linear Unit(Leaky ReLU)
- 3.9 神經網絡的梯度下降( Gradient descent for neural networks)
- 3.10(選修)直覺了解反向傳播 (Backpropagation intuition)
- 3.11 随機初始化( Random+Initialization)
- 總結
前言
主要内容:吳恩達《Deep Learning》系列的第一門課《神經網絡和深度學習》的第三周部分:淺層神經網絡
簡介:本文是筆者在學習該課程的過程中随意記錄的一些要點,希望能幫助到大家,歡迎大家留言or私信讨論
參考資料:吳恩達先生的課程材料&黃海廣先生整理的深度學習課程筆記(V5.7)
正文
以下是本篇文章正文内容
3.1 神經網絡概述( Neural Network Overview)
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SYxQDZ1QjNhJGZ5kDMmNDZ1UmNhFTMiNmZjJjYxUWNl9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
3.2 神經網絡的表示( Neural Network Representation)
一、
當我們計算網絡的層數時,輸入層是不算入總層數内,是以隐藏層是第一層,輸出層是第二 層
二、
我們将輸入層稱為第零層
3.3 計算一個神經網絡的輸出( Computing a Neural Network’s output)
單一樣本
3.4 多樣本向量化( Vectorizing across multiple examples)
多個樣本
邏輯回歸是将各個訓練樣本組合成矩陣,對矩陣的各列進行計算。神經網絡是通過對邏輯回歸中的等式簡單的變形,讓神經網絡計算出輸出值。這種計算是所有的訓練樣本同時進行的,以下是實作它具體的步驟:
向量化
3.5 向量化實作的解釋( Justification for vectorized implementation)
3.6 激活函數( Activation functions)
a = t a n h ( z ) = e z − e − z e z + e − z a=tanh(z)=\frac {e^z-e^{-z}}{e^z+e^{-z}} a=tanh(z)=ez+e−zez−e−z
tanh函數是sigmoid的向下平移和伸縮後的結果。對它進行了變形後,穿過了(0,0)點,并且值域介于+1和-1之間。
在訓練一個算法模型時,如果使用tanh函數代替sigmoid函數中心化資料,使得資料的平均值更接近0而不是0.5。
優化算法中:tanh函數在任何時候都優于sigmoid函數
但有一個例外:在二分類的問題中,對于輸出層,因為𝑦的值是0或1,是以想讓 y ^ \widehat{y} y
的數值介于0和1之間,而不是在 -1和 +1之間。是以需要使用sigmoid激活函數。
sigmoid函數和tanh函數兩者共同的缺點是,在𝑧特别大或者特别小的情況下,導數的梯度或者函數的斜率會變得特别小,最後就會接近于0,導緻降低梯度下降的速度。
如果輸出是0、1值(二分類問題),則輸出層選擇sigmoid函數,然後其它的所有單元都選擇Relu函數。
Relu函數和Leaky Relu函數
3.7 為什麼需要非線性激活函數?( why need a nonlinear activation)
總而言之,不能在隐藏層用線性激活函數;唯一可以用的通常是輸出層
3.8 激活函數的導數( Derivatives of activation functions)
(1)Sigmoid activation function
a = g ( z ) a=g(z) a=g(z)
d d z g ( z ) = a ( 1 − a ) \frac {d}{dz}g(z)=a(1-a) dzdg(z)=a(1−a)
(2)Tanh activation function
g ( z ) = t a n h ( z ) = e z − e − z e z + e − z g(z)=tanh(z)=\frac {e^z-e^{-z}}{e^z+e^{-z}} g(z)=tanh(z)=ez+e−zez−e−z
d d z g ( z ) = 1 − ( t a n h ( z ) ) 2 \frac{d}{dz}g(z)=1-(tanh(z))^2 dzdg(z)=1−(tanh(z))2
注:當 z = ± 10 z=±10 z=±10時 d d z g ( z ) ≈ 0 \frac{d}{dz}g(z)≈0 dzdg(z)≈0
當 z = 0 z=0 z=0時 d d z g ( z ) = 1 − ( 0 ) = 1 \frac{d}{dz}g(z)=1-(0)=1 dzdg(z)=1−(0)=1
(3)Rectified Linear Unit(ReLU)
(4)Leaky Linear Unit(Leaky ReLU)
3.9 神經網絡的梯度下降( Gradient descent for neural networks)
3.10(選修)直覺了解反向傳播 (Backpropagation intuition)
3.11 随機初始化( Random+Initialization)
當你訓練神經網絡時,權重随機初始化是很重要的。對于邏輯回歸,把權重初始化為0當然也是可以的。但是對于一個神經網絡,如果你把 權重或者參數都初始化為 0,那麼梯度下降将不會起作用。
b可以初始化為0,但W不行,一旦W=0,會導緻反向傳播中dZ1=dZ2,進而導緻梯度下降無法繼續
e.g.
總結
以上就是神經網絡的程式設計基礎(第二周)的部分學習筆記,本文僅僅簡單記錄了在學習過程中個人認為比較重要的要點。