深度學習介紹(下)【Coursera deeplearning.ai 神經網路與深度學習】
1. shallow NN 淺層神經網路
2. 為什麼需要activation function?
如下圖所示,如果不用啟用函式,那麼我們一直都在做線性運算,對於複雜問題沒有意義。linear 其實也算一類啟用函式,但是一般只用在機器學習的迴歸問題,例如預測房價等。
3. activation function啟用函式的選取:
tanh 基本上任何時候都比sigmoid 效果好,因為它使得結果均值趨近於0,便於下一層的計算。除非是binary classification,y是在[0,1]之間,否則永遠不要用sigmoid。因為tanh好得多。
除此之外,還有ReLu, 上一part說過。在別的演算法中,當不知道用什麼啟用函式的時候,吳恩達老師往往會選擇ReLu
4. 深度學習中因為可調節的引數太多了,所以往往會造成很多不確定性,除此之外還要結合實際資料型別等等。如果不確定,最好的辦法就是try them all。
5. NN 的 back propagation(啟用函式微分)
sigmoid和tanh的求導:
然後是ReLU和leaky ReLU的:
6. NN的gradient descent:
7. 初始化為0不可行(結果會讓每層unit一樣),需要random initialization
8. 向量
9. 什麼是深度神經網路?
shallow和deep的概念是相對的,指hidden layer較多的神經網路。big 和 small也是相對的,指units較多和較少。
10. matrix dimension是個重點,一定不能弄錯。因為我們要用到for loop做前饋。
11. 為什麼深度NN在影象識別上效果很好呢?
如下圖所示,我們需要識別人臉,deep NN能夠幫我們更好分工。第一層用於鑑別影象的邊緣,第二層用於識別眼睛、鼻子、嘴巴,第三層將識別到的東西組合在一起,最後輸出我們想要的面部。這一過程在CNN中更加有意義。大致過程就是讓前面的層學習比較低階的feature,後面的層進行高階處理。深度神經網路的工作就比較像人腦了,從邊緣開始識別,然後慢慢建立系統檢測更復雜的事物。
12. 除了影象、語音識別,deep NN在電子電路的門運算中也比shallow更有效。
13. 但是deep learning這個概念已經被濫用了,不再單指有許多隱藏層的NN;deep NN也常常被濫用(但我們依然需要很深的NN),隱藏層太多,overfit嚴重。
14. 對於deep NN, 我們需要有block意識來計算forward和back propagation:
15. parameters vs. hyperparameters
parameters: W, b
hyperparameters: learning rate, iteration numbers, hidden layers, hidden units, choices of activation functions
hyperparameters control parameters, so we call them hyper~
python 程式碼:
1. keepdims = True, keepdims主要用於保持矩陣的二維特性
>>> import numpy as np
>>> a = np.array([[1,2],[3,4]])
>>> a
array([[1, 2],
[3, 4]])
>>> b = np.sum(a, axis = 1, keepdims = True)
>>> c = np.sum(a, axis = 1)
>>> b
array([[3],
[7]])
>>> c
array([3, 7])
2. 矩陣運算
np.dot()是矩陣乘法
np.multiply()與*同,element-wise 元素相乘