1. 程式人生 > >[DeeplearningAI筆記]改善深層神經網路_深度學習的實用層面1.10_1.12/梯度消失/梯度爆炸/權重初始化

[DeeplearningAI筆記]改善深層神經網路_深度學習的實用層面1.10_1.12/梯度消失/梯度爆炸/權重初始化

覺得有用的話,歡迎一起討論相互學習~Follow Me

1.10 梯度消失和梯度爆炸

當訓練神經網路,尤其是深度神經網路時,經常會出現的問題是梯度消失或者梯度爆炸,也就是說當你訓練深度網路時,導數或坡度有時會變得非常大,或非常小,甚至以指數方式變小.這加大了訓練的難度.

假設你正在訓練一個很深的神經網路,並且將其權重新命名為”W[1],W[2],W[3],W[4]……W[L]”

2017-10-22_141300

為了簡化說明,我們選擇啟用函式為g(z)=z(線性啟用函式),b[l]=0(即忽略偏置對神經網路的影響)

這樣的話,輸出y^=w[l]w[l1]w[l2]...w[2]w[1]x

假設每層的W的值相等都為:[

1.5001.5]

從技術上講第一層的權值可能不同,基於此我們有式子y^=w[1][1.5001.5]L1x

對於一個深層神經網路來說層數L相當大,也就是說預測值y^實際上是以指數級增長的,它增長的比率是1.5L,因此對於一個深層神經網路來說,y的值將爆炸式增長.相反的,如果權重是0.5,有y^=w[1][0.5000.5]L1x 因此每個矩陣都小於1,假設x[1]x[2]的輸入值都是1,那麼啟用函式值到最後會變成0.5(L1)啟用函式值將會以指數級別下降.

對於深層神經網路最終啟用值的直觀理解是,以上述網路結構來看,如果每一層W只比1大一點,最終W會爆炸級別增長,如果只比W略微小一點,在深度神經網路中,啟用函式將以指數級遞減.

雖然只是論述了對於最終啟用函式輸出值將以指數級別增長或下降,這個原理也適用與層數L相關的導數或梯度函式也是呈指數增長或呈指數遞減

直觀上理解,梯度消失會導致優化函式訓練步長變小,使訓練週期變的很長.而梯度爆炸會因為過大的優化幅度而跨過最優解

ps: 對於該視訊中關於梯度消失和梯度爆炸的原理有一些爭論

請參考

1.11 神經網路中的權重初始化

對於梯度消失和梯度爆炸的問題,我們想出了一個不完整的解決方案,雖然不能徹底解決問題但卻很有用,有助於我們為神經網路更謹慎的選擇隨機初始化引數

單個神經元權重初始化

2017-10-22_153213

假設神經元有四個特徵輸入,暫時忽略b對神經元的作用則:z

=w1x1+w2x2+w3x3+...+wnxn

為了防止梯度爆炸或者梯度消失,我們希望wi儘可能小,最合理的方法就是設定W1n n表示神經元的輸入特徵數量

更簡潔的說,如果你用的是Sigmoid函式,設定某層權重矩陣W[l]=np.random.randn(shape)np.sqrt(1n[l1])(,l)

如果你用的是ReLU啟用函式,設定方差為2n更好,更簡潔的說,就是設定某層權重矩陣W[l]=np.random.randn(shape)np.sqrt(2n[l1])(,l)

如果你用的是Tanh啟用函式,則設定某層權重矩陣為W[l]=np.random.randn(shape)

相關推薦

[DeeplearningAI筆記]改善深層神經網路_深度學習實用層面1.10_1.12/梯度消失/梯度爆炸/權重初始

覺得有用的話,歡迎一起討論相互學習~Follow Me 1.10 梯度消失和梯度爆炸 當訓練神經網路,尤其是深度神經網路時,經常會出現的問題是梯度消失或者梯度爆炸,也就是說當你訓練深度網路時,導數或坡度有時會變得非常大,或非常小,甚至以指數方式變小.這加

[DeeplearningAI筆記]改善深層神經網路_優化演算法2.3_2.5_帶修正偏差的指數加權平均

Optimization Algorithms優化演算法 覺得有用的話,歡迎一起討論相互學習~Follow Me 2.3 指數加權平均 舉個例子,對於圖中英國的溫度資料計算移動平均值或者說是移動平均值(Moving average). 大體公式就是前一日的V值加上當日溫度的0.1倍,如果用紅線表示這個計算

[DeeplearningAI筆記]改善深層神經網路1.1_1.3深度學習實用層面_偏差/方差/欠擬合/過擬合/訓練集/驗證集/測試集

覺得有用的話,歡迎一起討論相互學習~Follow Me 1.1 訓練/開發/測試集 對於一個數據集而言,可以將一個數據集分為三個部分,一部分作為訓練集,一部分作為簡單交叉驗證集(dev)有時候也成為驗證集,最後一部分作為測試集(test).接下來我們開始

改善深層神經網路_優化演算法_mini-batch梯度下降、指數加權平均、動量梯度下降、RMSprop、Adam優化、學習率衰減

1.mini-batch梯度下降 在前面學習向量化時,知道了可以將訓練樣本橫向堆疊,形成一個輸入矩陣和對應的輸出矩陣: 當資料量不是太大時,這樣做當然會充分利用向量化的優點,一次訓練中就可以將所有訓練樣本涵蓋,速度也會較快。但當資料量急劇增大,達到百萬甚至更大的數量級時,組成的矩陣將極其龐大,直接對這麼大

DeepLearing學習筆記-改善深層神經網路(第三週作業-TensorFlow使用)

0- 背景: 採用TensorFlow的框架進行神經網路構建和結果預測 1- 環境依賴: import math import numpy as np import h5py import matplotlib.pyplot as plt import

02改善深層神經網路-Initialization-第一週程式設計作業1

分別使用 全零:parameters['W' + str(l)] = np.zeros((layers_dims[l], layers_dims[l-1])) 隨機:parameters['W' + str(l)] = np.random.randn(layers_dim

改善深層神經網路:超引數除錯、正則以及優化_課程筆記_第一、二、三週

所插入圖片仍然來源於吳恩達老師相關視訊課件。仍然記錄一下一些讓自己思考和關注的地方。 第一週 訓練集與正則化 這周的主要內容為如何配置訓練集、驗證集和測試集;如何處理偏差與方差;降低方差的方法(增加資料量、正則化:L2、dropout等);提升訓練速度的方法:歸一化訓練集;如何合理的初始化權

《吳恩達深度學習工程師系列課程之——改善深層神經網路:超引數除錯、正則以及優化》學習筆記

本課程分為三週內容: 深度學習的使用層面 優化演算法 超引數除錯、Batch正則化和程式框架 WEEK1 深度學習的使用層面 1.建立神經網路時選擇: 神經網路層數 每層隱藏單元的個數 學習率為多少 各層採用的啟用函式為哪些 2

吳恩達深度學習筆記(22)-深層神經網路說明及前後向傳播實現

深層神經網路(Deep L-layer neural network) 目前為止我們已經學習了只有一個單獨隱藏層的神經網路的正向傳播和反向傳播,還有邏輯迴歸,並且你還學到了向量化,這在隨機初始化權重時是很重要。 目前所要做的是把這些理念集合起來,就可以執行你自己的深度神經網路。

改善深層神經網路——深度學習實用層面(5)

目錄 正則化 偏差大的解決辦法:在正則化引數合適的情況下增大網路(不影響方差) 方差大解決辦法:調整正則化引數或者準備更多資料增大資料集(不影響偏差) 正則化 邏輯迴歸正則化: 神經網路正則化: 6.Dropout正則化 除

改善深層神經網路week1學習筆記

1.Initialization Zero initialization 即初始化為0。如果將w權重矩陣和b偏置矩陣都使用Zero initialization則會產生以下的結果: 演算法對每個測試樣裡都會輸出0,因此準確率在0.5左右,與隨機猜測無異。總體來說,因

吳恩達《深度學習-改善深層神經網路》3--超引數除錯、正則以及優化

1. 系統組織超參除錯Tuning process1)深度神經網路的超參有學習速率、層數、隱藏層單元數、mini-batch大小、學習速率衰減、β(優化演算法)等。其重要性各不相同,按重要性分類的話:   第一類:最重要的引數就是學習速率α    第二類:隱藏層單元數、min

吳恩達deeplearning.ai課程《改善深層神經網路:超引數除錯、正則以及優化》____學習筆記(第一週)

____tz_zs學習筆記第一週 深度學習的實用層面(Practical aspects of Deep Learning)我們將學習如何有效運作神經網路(超引數調優、如何構建資料以及如何確保優化演算法快速執行)設定ML應用(Setting up your ML applic

吳恩達《深度學習-改善深層神經網路1--深度學習實用層面

 資料集深度學習是基於經驗的,即使是經驗豐富的專家也很難再專案開始的時候就能夠確定最優引數,比如神經網路的層數,每層的單元數,每層的啟用函式,學習速率等,一般是先選擇一個簡單的模型,通過不斷的迭代來修改各引數,直到最優解。法則一:一般在專案中會把資料集分成三份:訓練集(tra

吳恩達deep learning筆記第二課 改善深層神經網路:超引數除錯、正則以及優化

學習吳恩達DL.ai第二週視訊筆記。 1.深度學習實用層面 在訓練集和驗證集來自相同分佈的前提下,觀察訓練集的錯誤率和驗證集的錯誤率來判斷過擬合(high variance高方差)還是欠擬合(high bias高偏差). 比如訓練集錯誤率1%,驗證集11%則過擬合(

深度學習Ng》課程學習筆記01week4——深層神經網路

4.1 深層神經網路 4.2 前向和反向傳播 前向傳播 反向傳播 反向傳播的四個基本方程 總結 4.3 深層網路中的前向傳播

神經網路深度學習課程筆記(第三、四周)

接著學習吳恩達老師第三、四周的課程。(圖片均來自吳恩達老師課件)   第三週 1. 普通的淺層網路                        

神經網路深度學習課程筆記(第一、二週)

   之前結束了吳恩達老師的機器學習的15節課,雖然看得很艱辛,但是也算是對於機器學習的理論有了一個入門,很多的東西需要不斷的思考以及總結。現在開始深度學習的學習,仍然做課程筆記,記錄自己的一些收穫以及思考。   第一週 1. ReLU (Rectified

深度學習筆記(四)——神經網路深度學習(淺層神經網路

1.神經網路概覽 神經網路的結構與邏輯迴歸類似,只是神經網路的層數比邏輯迴歸多一層,多出來的中間那層稱為隱藏層或中間層。從計算上來說,神經網路的正向傳播和反向傳播過程只是比邏輯迴歸多了一次重複的計算。正向傳播過程分成兩層,第一層是輸入層到隱藏層,用上標[1]來表示;第二層是隱藏層到輸出層,用上標

吳恩達第一門-神經網路深度學習第二週6-10學習筆記

神經網路和深度學習第二週6-10學習筆記 6.更多導數的例子 在本節中,為上一節的導數學習提供更多的例子。在上一節中,我們複習了線性函式的求導方法,其導數值在各點中是相等的。本節以y=a^2這一二次函式為例,介紹了導數值在各點處發生變化時的求導方法。求導大家都會,y=x ^3的導數是