cs231_n6.1_啟用函式
啟用函式:如果不用啟用函式,每一層的輸出都是上一層的線性組合,從而導致整個神經網路的輸出為神經網路輸入的線性組合,無法逼近任意函式。
1. sigmoid:資料壓縮到[0,1]之間
問題:1)飽和的神經元導致梯度消失,輸入非常大(10)或非常小(-10)時,其梯度接近於0,導致資訊丟失,難以訓練
2)輸出不是以0為均值
3)指數運算計算量大,且梯度反傳,求導設計除法(問題不大)
2. tanh: 資料壓縮到[-1,1]之間
優點:與sigmoid相比,tanh是0均值
問題:1)與Sigmoid一樣, 飽和的神經元導致梯度消失
3. ReLU: max(0, x)
優點:1)計算高效 ,沒有飽和及梯度消失問題
2)由於Relu會使一部分神經元的輸出為0,這樣就造成了網路的稀疏性,並且減少了引數的相互依存關係,緩解了過擬合問題的發生。
3)收斂速度比sigmoid/tanh快6倍
缺點:1)函式輸出是非零中心
2)在負區間,當飽和時,梯度會消失。網路中多達10%到20%的部分是一些掛了的ReLU單元,大多數使用ReLU的網路都有這個問題。
4. Leaky-ReLU、P-ReLU:會解決ReLU掛掉的問題
5. ELU
優點: 所有ReLU的優點 ,不會死, 輸出接近0均值
缺點:計算量大,需要指數運算
6. Maxout(x):優點:泛化ReLU和Leaky ReLU;不會飽和,梯度不會消失。缺點:由於需要多訓練了幾組引數,網路的效率也大大降低了。
關於0中心:當輸入神經元的數值始終為正時,鏈式求導再乘以權值W,這時結果會要麼全部是正數,要麼全部是負數。這意味著所有關於w的梯度全為正值或者全為負值,那麼它們就會總是朝著同一個方向移動。這樣就會使得梯度只朝著正向或者負向更新,效率低見下圖。
插圖來自於:https://zhuanlan.zhihu.com/p/25110450
詳細可參考:https://liam.page/2018/04/17/zero-centered-active-function/
實際選擇:
神經網路訓練過程
1. 資料預處理:實際操作可參考https://www.cnblogs.com/34fj/p/9036369.html
1)均值減法(中心化/零均值化):是指變數減去它的均值(避免輸入資料都是正的,梯度更新效率低)
2)歸一化(標準化):是指數值減去均值,再除以標準差。注意,這裡指的是預處理時進行歸一化操作。在深度學習不常用,通常只需要中心化。 而在網路訓練中,我們通常會加入batch normalization操作。
通過中心化和標準化處理,最終得到均值為0,標準差為1的服從標準正態分佈的資料。可以取消由於量綱不同、自身變異或者數值相差較大所引起的誤差。
3)PCA
4)Whitening
機器學習中,常用的預處理操作除了中心化和歸一化,還有PCA和白化(whitening)。前者對資料進行降維,後者對資料進行方差處理。簡單來講,PCA就是通過拋棄攜帶資訊量較少的維度對資料進行降維處理,從而加速機器學習程式。白化是為了降低影像中相鄰畫素之間的相關性(冗餘的);更正式的說,我們希望通過白化過程使得學習演算法的輸入具有如下性質:(i)特徵之間相關性較低;(ii)所有特徵具有相同的方差。參考:https://www.cnblogs.com/Ponys/p/3428270.html
2. 權重初始化
使用0進行權重初始化(X):輸入資料後,每個神經元做相同的操作,輸出相同的數值並得到相同的梯度,因此它們會用相同的方式更新權重。
選取較小的隨機數:W = 0.01 * np.random.randn(D,H)。其中randn函式是基於零均值和標準差的一個高斯分佈來生成隨機數的。不適用於更深的網路。因為在更深的網路中,層的輸出會趨近0,梯度也會變成0,權重將不會更新,網路就不會學習。
選取較大的隨機數:當啟用函式為tanh,sigmoid等等,該方法會導致飽和,使得梯度消失(變為0),權重將不會更新。
Xavier初始化:來自論文[Glorot et al.,2010]。該方式是一種合理的初始化方法。如果有較少的輸入,將除以較小的數,從而得到較大的權重。如果有很多的輸入,想要更小的權重,以便讓它在輸出中得到相同的傳播。
神經網路模型中的引數權重W是不能全部初始化為零的,
引數b可以全部初始化為零,並不會影響神經網路訓練效果。
-->解決方法也很簡單,就是將W進行隨機初始化(b可初始化為零)。
W_1 = np.random.randn((2,2))*0.01
b_1 = np.zero((2,1))
W_2 = np.random.randn((1,2))*0.01
b_2 = 0
這裡我們將W1和W2矩陣乘以0.01的目的是儘量使得權重W初始化比較小的值。之所以讓W比較小,是因為如果使用sigmoid函式或者tanh函式作為啟用函式的話,W比較小,得到的|z|也比較小(靠近零點),而零點區域的梯度比較大,這樣能大大提高梯度下降演算法的更新速度,儘快找到全域性最優解。如果W較大,得到的|z|也比較大,附近曲線平緩,梯度較小,訓練過程會慢很多。
當然,如果啟用函式是ReLU或者Leaky ReLU函式,則不需要考慮這個問題。但是,如果輸出層是sigmoid函式,則對應的權重W最好初始化到比較小的值。
參考:https://blog.csdn.net/KKALL1314/article/details/104138540
相關文章
- 損失函式+啟用函式函式
- 常用啟用函式函式
- 啟用函式的作用函式
- 深度學習(啟用函式)深度學習函式
- 人工智慧---神經網路啟用函式恆等函式、sigmoid函式、softmax函式詳解人工智慧神經網路函式Sigmoid
- sigmoid啟用函式如何求導Sigmoid函式求導
- 啟用oracle資料庫密碼函式Oracle資料庫密碼函式
- 機器學習之簡單介紹啟用函式機器學習函式
- 卷積神經網路-啟用函式卷積神經網路函式
- python之matplotlib模組繪製常見的啟用函式及各啟用函式的優缺點Python函式
- 神經網路的啟用函式總結神經網路函式
- 神經網路中使用的啟用函式神經網路函式
- sigmod啟用函式和梯度消失問題函式梯度
- 深度神經網路(DNN)損失函式和啟用函式的選擇神經網路DNN函式
- 常見啟用函式的介紹和總結函式
- 神經網路啟用函式=生物轉換器?神經網路函式
- 深度學習基本部件-啟用函式詳解深度學習函式
- Tensorflow中神經網路的啟用函式神經網路函式
- gethostbyname函式和getservbyname函式的應用函式
- 深度學習筆記——常用的啟用(激勵)函式深度學習筆記函式
- 函式柯里化和偏函式應用函式
- 啟用函式(activation functions)二三事-性質、作用與選擇函式Function
- 一文概覽深度學習中的啟用函式深度學習函式
- Excel函式應用教程:函式的引數(轉)Excel函式
- Vue函式式元件的應用Vue函式元件
- 「AutoML」啟用函式如何進行自動學習和配置TOML函式
- Hash函式及其應用函式
- replace函式一用函式
- C語言函式指標與回撥用函式C語言函式指標
- Excel函式應用教程:函式的輸入方法(轉)Excel函式
- Excel函式應用教程:函式與公式的概念(轉)Excel函式公式
- Java 函式式介面 lamada 應用Java函式
- 實用函式式 Java (PFJ)簡介函式Java
- 深度學習筆記1:池化 全連線 啟用函式 softmax深度學習筆記函式
- Generator函式非同步應用函式非同步
- 函式計算——應用初探函式
- ORACLE 實用函式總結Oracle函式
- 函式進階應用3函式