1. 程式人生 > >Coursera吳恩達《優化深度神經網路》課程筆記(3)-- 超引數除錯、Batch正則化和程式設計框架

Coursera吳恩達《優化深度神經網路》課程筆記(3)-- 超引數除錯、Batch正則化和程式設計框架

上節課我們主要介紹了深度神經網路的優化演算法。包括對原始資料集進行分割,使用mini-batch gradient descent。然後介紹了指數加權平均(Exponentially weighted averages)的概念以及偏移校正(bias correction)方法。接著,我們著重介紹了三種常用的加速神經網路學習速度的三種演算法:動量梯度下降、RMSprop和Adam演算法。其中,Adam結合了動量梯度下降和RMSprop各自的優點,實際應用中表現更好。然後,我們介紹了另外一種提高學習速度的方法:learning rate decay,通過不斷減小學習因子,減小步進長度,來減小梯度振盪。最後,我們對深度學習中local optima的概念作了更深入的解釋。本節課,我們將重點介紹三個方面的內容:超引數除錯、Batch正則化和深度學習程式設計框架。

1. Tuning Process

深度神經網路需要除錯的超引數(Hyperparameters)較多,包括:

  • α:學習因子

  • β:動量梯度下降因子

  • β1,β2,ε:Adam演算法引數

  • #layers:神經網路層數

  • #hidden units:各隱藏層神經元個數

  • learning rate decay:學習因子下降引數

  • mini-batch size:批量訓練樣本包含的樣本個數

超引數之間也有重要性差異。通常來說,學習因子α是最重要的超引數,也是需要重點除錯的超引數。動量梯度下降因子β、各隱藏層神經元個數#hidden units和mini-batch size的重要性僅次於

α。然後就是神經網路層數#layers和學習因子下降引數learning rate decay。最後,Adam演算法的三個引數β1,β2,ε一般常設定為0.9,0.999和108,不需要反覆除錯。當然,這裡超引數重要性的排名並不是絕對的,具體情況,具體分析。

如何選擇和除錯超引數?傳統的機器學習中,我們對每個引數等距離選取任意個數的點,然後,分別使用不同點對應的引數組合進行訓練,最後根據驗證集上的表現好壞,來選定最佳的引數。例如有兩個待除錯的引數,分別在每個引數上選取5個點,這樣構成了5x5=25中引數組合,如下圖所示:

這裡寫圖片描述

這種做法在引數比較少的時候效果較好。但是在深度神經網路模型中,我們一般不採用這種均勻間隔取點的方法,比較好的做法是使用隨機選擇。也就是說,對於上面這個例子,我們隨機選擇25個點,作為待除錯的超引數,如下圖所示:

這裡寫圖片描述

隨機化選擇引數的目的是為了儘可能地得到更多種引數組合。還是上面的例子,如果使用均勻取樣的話,每個引數只有5種情況;而使用隨機取樣的話,每個引數有25種可能的情況,因此更有可能得到最佳的引數組合。

這種做法帶來的另外一個好處就是對重要性不同的引數之間的選擇效果更好。假設hyperparameter1為α,hyperparameter2為ε,顯然二者的重要性是不一樣的。如果使用第一種均勻取樣的方法,ε的影響很小,相當於只選擇了5個α值。而如果使用第二種隨機取樣的方法,εα都有可能選擇25種不同值。這大大增加了α除錯的個數,更有可能選擇到最優值。其實,在實際應用中完全不知道哪個引數更加重要的情況下,隨機取樣的方式能有效解決這一問題,但是均勻取樣做不到這點。

在經過隨機取樣之後,我們可能得到某些區域模型的表現較好。然而,為了得到更精確的最佳引數,我們應該繼續對選定的區域進行由粗到細的取樣(coarse to fine sampling scheme)。也就是放大表現較好的區域,再對此區域做更密集的隨機取樣。例如,對下圖中右下角的方形區域再做25點的隨機取樣,以獲得最佳引數。

這裡寫圖片描述

2. Using an appropriate scale to pick hyperparameters

上一部分講的除錯引數使用隨機取樣,對於某些超引數是可以進行尺度均勻取樣的,但是某些超引數需要選擇不同的合適尺度進行隨機取樣。

什麼意思呢?例如對於超引數#layers和#hidden units,都是正整數,是可以進行均勻隨機取樣的,即超引數每次變化的尺度都是一致的(如每次變化為1,猶如一個刻度尺一樣,刻度是均勻的)。

但是,對於某些超引數,可能需要非均勻隨機取樣(即非均勻刻度尺)。例如超引數α,待調範圍是[0.0001, 1]。如果使用均勻隨機取樣,那麼有90%的取樣點分佈在[0.1, 1]之間,只有10%分佈在[0.0001, 0.1]之間。這在實際應用中是不太好的,因為最佳的α值可能主要分佈在[0.0001, 0.1]之間,而[0.1, 1]範圍內α值效果並不好。因此我們更關注的是區間[0.0001, 0.1],應該在這個區間內細分更多刻度。

通常的做法是將linear scale轉換為log scale,將均勻尺度轉化為非均勻尺度,然後再在log scale下進行均勻取樣。這樣,[0.0001, 0.001],[0.001, 0.01],[0.01, 0.1],[0.1, 1]各個區間內隨機取樣的超引數個數基本一致,也就擴大了之前[0.0001, 0.1]區間內取樣值個數。

這裡寫圖片描述

一般解法是,如果線性區間為[a, b],令m=log(a),n=log(b),則對應的log區間為[m,n]。對log區間的[m,n]進行隨機均勻取樣,然後得到的取樣值r,最後反推到線性區間,即10r10r就是最終取樣的超引數。相應的Python語句為:

m = np.log10(a)
n = np.log10(b)
r = np.random.rand()
r = m + (n-m)*r
r = np.power(10,r)

除了α之外,動量梯度因子β也是一樣,在超引數除錯的時候也需要進行非均勻取樣。一般β的取值範圍在[0.9, 0.999]之間,那麼1β的取值範圍就在[0.001, 0.1]之間。那麼直接對1β在[0.001, 0.1]區間內進行log變換即可。

這裡解釋下為什麼β也需要向α那樣做非均勻取樣。假設β從0.9000變化為0.9005,那麼11β基本沒有變化。但假設β從0.9990變化為0.9995,那麼11β前後差別1000。β越接近1,指數加權平均的個數越多,變化越大。所以對β接近1的區間,應該採集得更密集一些。

3. Hyperparameters tuning in practice: Pandas vs. Caviar

經過除錯選擇完最佳的超引數並不是一成不變的,一段時間之後(例如一個月),需要根據新的資料和實際情況,再次除錯超引數,以獲得實時的最佳模型。

在訓練深度神經網路時,一種情況是受計算能力所限,我們只能對一個模型進行訓練,除錯不同的超引數,使得這個模型有最佳的表現。我們稱之為Babysitting one model。另外一種情況是可以對多個模型同時進行訓練,每個模型上除錯不同的超引數,根據表現情況,選擇最佳的模型。我們稱之為Training many models in parallel。

這裡寫圖片描述

因為第一種情況只使用一個模型,所以類比做Panda approach;第二種情況同時訓練多個模型,類比做Caviar approach。使用哪種模型是由計算資源、計算能力所決定的。一般來說,對於非常複雜或者資料量很大的模型,使用Panda approach更多一些。

4. Normalizing activations in a network

Sergey Ioffe和Christian Szegedy兩位學者提出了Batch Normalization方法。Batch Normalization不僅可以讓除錯超引數更加簡單,而且可以讓神經網路模型更加“健壯”。也就是說較好模型可接受的超引數範圍更大一些,包容性更強,使得更容易去訓練一個深度神經網路。接下來,我們就來介紹什麼是Batch Normalization,以及它是如何工作的。

之前,我們在Coursera吳恩達《優化深度神經網路》課程筆記(1)– 深度學習的實用層面中提到過在訓練神經網路時,標準化輸入可以提高訓練的速度。方法是對訓練資料集進行歸一化的操作,即將原始資料減去其均值μ後,再除以其方差σ2。但是標準化輸入只是對輸入進行了處理,那麼對於神經網路,又該如何對各隱藏層的輸入進行標準化處理呢?

其實在神經網路中,第l層隱藏層的輸入就是第l1層隱藏層的輸出A[l1]。對A[l1]進行標準化處理,從原理上來說可以提高W[l]b[l]的訓練速度和準確度。這種對各隱藏層的標準化處理就是Batch Normalization。值得注意的是,實際應用中,一般是對Z[l1]進行標準化處理而不是A[l1],其實差別不是很大。

Batch Normalization對第l層隱藏層的輸入Z[l1]做如下標準化處理,忽略上標

相關推薦

Coursera優化深度神經網路課程筆記3-- 引數除錯Batch程式設計框架

上節課我們主要介紹了深度神經網路的優化演算法。包括對原始資料集進行分割,使用mini-batch gradient descent。然後介紹了指數加權平均(Exponentially weighted averages)的概念以及偏移校正(bias corr

改善深層神經網路——引數除錯Batch程式框架7

目錄 1.超引數除錯 深度神經網路需要除錯的超引數(Hyperparameters)較多,包括: α:學習因子 β:動量梯度下降因子 :Adam演算法引數 #layers:神經網路層數

Coursera《序列模型》課程筆記3-- Sequence models & Attention mechanism

《Recurrent Neural Networks》是Andrw Ng深度學習專項課程中的第五門課,也是最後一門課。這門課主要介紹迴圈神經網路(RNN)的基本概念、模型和具體應用。該門課共有3周課時,所以我將分成3次筆記來總結,這是第三節筆記。 1. B

-深度學習-課程筆記-8: 參數調試Batchsoftmax( Week 3 )

erp 搜索 給定 via 深度 mode any .com sim 1 調試處理( tuning process ) 如下圖所示,ng認為學習速率α是需要調試的最重要的超參數。 其次重要的是momentum算法的β參數(一般設為0.9),隱藏單元數和mini-batch的

《機器學習》課程總結7

額外 分享 哪些 TP 回歸 分享圖片 表現 例子 兩個 7.1過擬合的問題 訓練集表現良好,測試集表現差。魯棒性差。以下是兩個例子(一個是回歸問題,一個是分類問題) 解決辦法: (1)丟棄一些不能幫助我們正確預測的特征。可以使用工選擇保留哪些特征,或者使用一些模型選擇

《機器學習》課程總結15異常檢測

是否 5.6 問題 com 結果 平移 分享 出現問題 計算過程 15.1問題的動機 將正常的樣本繪制成圖表(假設可以),如下圖所示: 當新的測試樣本同樣繪制到圖標上,如果偏離中心越遠說明越可能不正常,使用某個可能性閾值,當低於正常可能性閾值時判斷其為異常,然後做進一步的

機器學習公開課學習筆記

吳恩達機器學習公開課學習筆記(一) 一些規範表達形式 線性迴歸/單變數線性迴歸 代價函式 公開課連結: https://study.163.com/course/courseLearn.htm?courseId=1004570029#/lea

深度學習tensorflow實戰筆記3VGG-16訓練自己的資料並測試儲存模型

    前面的部落格介紹瞭如何把影象資料轉換成tfrecords格式並讀取,本篇部落格介紹如何用自己的tfrecords格式的資料訓練CNN模型,採用的模型是VGG-16。現有的教程都是在mnist或者cifar-10資料集上做的訓練,如何用自己的資料集進行訓練相關的資料比較

Coursera神經網路深度學習》課程筆記2-- 神經網路基礎之邏輯迴歸

上節課我們主要對深度學習(Deep Learning)的概念做了簡要的概述。我們先從房價預測的例子出發,建立了標準的神經網路(Neural Network)模型結構。然後從監督式學習入手,介紹了Standard NN,CNN和RNN三種不同的神經網路模型。接

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

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

第一門-神經網路深度學習第三週6-10學習筆記

吳恩達第一門-神經網路和深度學習第三週6-10學習筆記 3.6啟用函式 啟用函式 圖中給出了前面課程中所學到的利用神經網路計算輸出值的具體步驟。其中的 σ

卷積神經網路——深度卷積網路:例項探究

經典網路 LeNet5 隨著網路的加深,影象的高度和寬度在縮小,通道數量增加 池化後使用sigmoid函式 AlexNet 與LeNet相似,但大得多 使用ReLu函式 VGG-16 網路大,但結構並不複雜 影象縮小的比例和通道增加的比例是有規律的 64->

改善深層神經網路引數引數除錯以及優化——優化演算法

機器學習的應用是一個高度依賴經驗的過程,伴隨著大量的迭代過程,你需要訓練大量的模型才能找到合適的那個,優化演算法能夠幫助你快速訓練模型。 難點:機器學習沒有在大資料發揮最大的作用,我們可以利用巨大的資料集來訓練網路,但是在大資料下訓練網路速度很慢; 使用快速的優化演算法大大提高效率

改善深層神經網路引數除錯以及優化 第一週

吳恩達 改善深層神經網路:超引數除錯、正則化以及優化 課程筆記  第一週 深度學習裡面的實用層面 1.1 測試集/訓練集/開發集        原始的機器學習裡面訓練集,測試集和開發集一般按照6:2:2的比例來進行劃分。但是傳統的機器學習

機器學習 - 神經網路的反向傳播演算法 機器學習 - 神經網路的反向傳播演算法

原 吳恩達機器學習 - 神經網路的反向傳播演算法 2018年06月21日 20:59:35 離殤灬孤狼 閱讀數:373

機器學習 - 神經網路 機器學習 - 神經網路

原 吳恩達機器學習 - 神經網路 2018年06月19日 21:27:17 離殤灬孤狼 閱讀數:97

卷積神經網路——卷積神經網路

計算機視覺 相關問題: 1)影象分類: 2)目標檢測: 3)影象風格遷移: 挑戰:資料輸入可能會非常大 輸入10001000的彩色影象,則需要輸入的資料量為100010003 =3M,這意味著特徵向量X的維度高達3M ,如果在第一隱藏層有1000個神經元,使用標準全連線,那麼權值矩

學習-深層神經網路

深度學習是指神經網路包含了很多層的隱層,比如說10層20層這樣,有些問題用淺層神經網路不能得到很好的優化,只能通過深層神經網路優化,這是因為深層神經網路有其獨特的優勢,下面我們就先介紹深層神經網路的優勢。 1.深層神經網路的優勢 1.深層神經網路的一大優勢就

Deeplearning--卷積神經網路-第一週作業01-Convolution Networks(python)

Convolutional Neural Networks: Step by StepWelcome to Course 4's first assignment! In this assignment, you will implement convolutional (

Coursera深度學習2-3引數除錯Batch Norm

Class 2:改善深層神經網路:超引數除錯、正則化以及優化 Week 3:超引數除錯和Batch Norm 目錄 1、超引數除錯處理 2、為超引數選擇合適的範圍 Scale均勻隨機 在超引數