1. 程式人生 > >李巨集毅機器學習 P18 Tips for Training DNN 筆記

李巨集毅機器學習 P18 Tips for Training DNN 筆記

假如deep learning得到不好的結果,應該從哪個方向進行改進呢?

首先檢查neural network在training data上是否得到好的結果。

如果在training data上得到好的結果,而在testing data上沒有得到好的結果,那麼這種情況就叫做overfitting。

如果在training data和testing data上都能得到好的結果,那麼你就得到一個可以用的模型。

注意在神經網路層數不同時,層數更多的網路需要更多的訓練次數才能訓練好,如果比較兩個層數不同的模型時,有時會發現一個層數少的模型的training error比層數多的模型還要下降的快,但這種情況有可能只是層數深的模型還沒有訓練好,需要更多訓練次數。

當然層數深的模型也不一定就比層數淺的模型表現要好。

不同的方法應對不同的情況。有的是為了提升training set上的表現,而有的是提升testing set上的表現。

比如dropout是為了提升在testing set上的表現,而會使在training set上的表現變差。

有哪些常用的方法:

網路層數越深,表現不一定會更好。(梯度消失現象)梯度越小學習速度越慢。

梯度消失現象:由於反向傳播的梯度是鏈式法則求導,最前面幾層的學習率會越來越小,這樣後面的loss到達local minima時,前面幾層的權重還未學習到最合適的值。這也是啟用函式從sigmoid函式改動relu函式的原因。

看sigmoid函式的特性:input變化很大時,output的變化相對來說並不大。

而relu函式則不會發生這樣的情況,因為它的函式是下面這樣的:

即輸入值大於0,則輸出等於輸入值;輸入值小於0,則輸出值為0。

比如現在有一個兩層的模型,都用relu作啟用函式:

對於input大於0的神經元,這個神經元就相當於線性變換;對於input小於0的神經元,這個神經元的輸出就是0,在反向傳播的時候,計算這裡引數的梯度是0,也就相當於不用更新。

如果是線性的變換,那麼就不會出現梯度消失的問題。這樣這個模型中只有一部分神經元是線性的,而且不同層中作線性變換的神經元不一樣,這樣對於整個模型來說,模型就不是線性的,這樣模型就可以模擬非線性的情況。

relu還有很多變形:

除此之外,還有之後提出來的ELU啟用函式。

其中α是一個可調整的引數,它控制著ELU負值部分在何時飽和。 

右側線性部分使得ELU能夠緩解梯度消失,而左側軟飽能夠讓ELU對輸入變化或噪聲更具有魯棒性。

ELU的輸出均值接近於零,所以收斂速度更快。

事實上,Relu是Maxout的一種特殊情況。

Maxout就是自動學習啟用函式。模型可以自己學習每個神經元需要什麼樣的啟用函式。

Maxout的原理:

比如上圖x1和x2分別與4個神經元做運算,得到4個輸出值,正常情況下,這4個輸出值應該都要再經過啟用函式的計算。

而在Maxout中是將這4個值分兩組,第一組取其中最大值7,第二組取其中最大值1(有點像池化操作)。

後面一層的做法也類似。

為什麼Maxout可以對不同的神經元產生不同的啟用函式?

如果啟用函式是relu時:

z=wx+b,是左圖上的藍色直線,是線性的。

而a是z經過relu處理的值,這時a就不是線性的了。

如果採用Maxout:

我們先計算出z1和z2,然後取max{z1,z2}。

我們可以看到z1和左圖的藍色直線一樣,而z2是z2=0的直線。

這樣我們可以發現通過max{z1,z2}所得的值在x的整個區間上就和relu函式得到的值一模一樣了。

這就是用Maxout學習出來的啟用函式就和relu函式一模一樣了。對其他的啟用函式也類似。

當然我們要注意Maxout學習出來的啟用函式是分段的線性函式。

有多少段就取決於你的分組中有多少個神經元。

如何去train這個Maxout呢?

Maxout是可以train的。給定一組輸入值x1和x2,我們假設紅框是每個分組裡的最大值,那麼train引數時就將分組中其他較小的值當做不存在,這時我們就發現Maxout還是一個線性的函式,我們就可以用反向傳播演算法來更新每層的權重了。

而分組的其他值在其他不同的輸入值時可能是最大值,故在其他不同的輸入值時,它們也可以用反向傳播演算法來更新權重。

自適應學習率:

Adagrad的公式:

有時候我們需要不同的學習率。

我們可以看到在w2值不同時需要的learning rate的大小不同。

這時候我們就要用RMSProp方法了。

RMSProp方法:

這個方法的核心就是在梯度越平坦的方向步子越大,梯度越陡峭的方向步子越小。

RMSProp與Adagrad的區別:

這是Adagrad:

這是RMSProp:

實際上就是分母由原來的所有步次的梯度和改為。(更多考慮上一步梯度的影響)

Momentum方法:

Momentum其實就是保留了上一步的梯度的跨步的幅度。

複習:一般的梯度下降方法:

如果把RMSProp和Momentum的合併起來,就是Adam演算法。

如何在testing data上也具有比較好的表現?

我們可以使用validation set來測試其testing error,這樣可以及早在testing error升高前停下來。

實際應用時,就是train一段時間就用validation set來測試一下模型。

正則化也可以用來減少testing error。

如L2正則化:

其做梯度下降時:

加上正則項時,更新引數時,現在前面是。前面括號內總是一次小於1的項,這樣wt每次都會越來越小。

後面這項會與前面這項取得平衡。

L1正則化:

dropout方法:

dropout就是丟掉一部分神經元的輸出值。然後將剩下的輸出值輸入下一層。

注意:

testing的時候是不dropout的。training時才dropout。

訓練時多批樣本會將所有神經元的權重都訓練到,不需要擔心訓練不到的情況。

dropout可以看作是一種ensemble的方式。

如果一個模型中有m個神經元,則經過dropout後可能產生2的m次方個的模型。

每一個模型都用一個minibath的樣本去train它。注意它們的引數是共用的。所有的模型的引數拼起來就是完整的網路中的所有引數。

而在test時:

test時,所有的weights都乘以1-p%。

舉例:

相關推薦

巨集機器學習 P18 Tips for Training DNN 筆記

假如deep learning得到不好的結果,應該從哪個方向進行改進呢? 首先檢查neural network在training data上是否得到好的結果。 如果在training data上得到好的結果,而在testing data上沒有得到好的結果,那麼這種

巨集機器學習 P12 HW2 Winner or Loser 筆記(不使用框架實現使用MBGD優化方法和z_score標準化的logistic regression模型)

建立logistic迴歸模型: 根據ADULT資料集中一個人的age,workclass,fnlwgt,education,education_num,marital_status,occupation等資訊預測其income大於50K或者相反(收入)。 資料集: ADULT資料集。

【ML】 巨集機器學習筆記

我的github連結 - 課程相關程式碼: https://github.com/YidaoXianren/Machine-Learning-course-note 0. Introduction Machine Learning: define a set of function

巨集機器學習 P14 Backpropagation 筆記

chain rule:求導的鏈式法則。 接著上一節,我們想要minimize這個loss的值,我們需要計算梯度來更新w和b。 以一個neuron舉例: 這個偏微分的結果就是輸入x。 比如下面這個神經網路: 下面我們要計算這個偏微分:。這裡的以si

巨集機器學習 P13 Brief Introduction of Deep Learning 筆記

deep learning的熱度增長非常快。 下面看看deep learning的歷史。 最開始出現的是1958年的單層感知機,1969年發現單層感知機有限制,到了1980年代出現多層感知機(這和今天的深度學習已經沒有太大的區別),1986年又出現了反向傳播演算法(通常超過3

巨集機器學習P11 Logistic Regression 筆記

我們要找的是一個概率。 f即x屬於C1的機率。 上面的過程就是logistic regression。 下面將logistic regression與linear regression作比較。 接下來訓練模型,看看模型的好壞。 假設有N組trainin

巨集機器學習 P15 “Hello world” of deep learning 筆記

我們今天使用Keras來寫一個deep learning model。 tensorflow實際上是一個微分器,它的功能比較強大,但同時也不太好學。因此我們學Keras,相對容易,也有足夠的靈活性。 李教授開了一個玩笑: 下面我們來寫一個最簡單的deep learning mo

線性迴歸 巨集機器學習HW1

本文是李巨集毅老師機器學習的第一次大作業,參考網上程式碼,寫了一下自己的思路。 李巨集毅 HM1: 要求:本次作業使用豐原站的觀測記錄,分成train set跟test set,train set是豐原站每個月的 前20天所有資料。test set則是從豐原站剩下的資料中取樣出來。 trai

巨集機器學習課程--迴歸(Regression)

  李老師用的是精靈寶可夢做的比喻,假設進化後的寶可夢的cp值(Combat Power)與未進化之前的寶可夢的cp值相關,我們想找出這兩者之間的函式關係,可以設進化後的cp值為y,進化之前的cp值為x:y = b + w*x (不只可以設一次項,還可以設定二次項,三次項

巨集機器學習P7 Gradient Descent (Demo by AOE) 筆記、P8 Gradient Descent (Demo by Minecraft) 筆記

P7 Gradient Descent (Demo by AOE) 筆記: 在進行Gradient Decent時,我們可以類似玩遊戲帝國時代時探索地圖的情況。 在地圖沒有探索前,你的視野範圍只有很小的一個圈,你不知道圈外的黑幕下面有什麼東西。 現在我們假設地圖上的海拔

巨集機器學習PTT的理解(1)深度學習的介紹

深度學習的介紹 機器學習就像是尋找一個合適的函式,我們輸入資料就可以得到想要的結果,比如: 在語音識別中,我們輸入一段語音,函式的輸出值就是識別的結果;在影象識別中,輸入一張照片,函式可以告訴我們分類

卷積神經網路CNN |巨集機器學習

2018年11月10日 15:29:22 小辣油 閱讀數:8 個人分類: 李巨集毅

巨集機器學習筆記——02.Where does the error come from ?

傳送門: 在上節課講到,如果選擇不同的function set就是選擇不同的model 在testing data上會得到不同的error,而且越複雜的model不見得會給你越低的error,我們要討論的問題就是error來自什麼地方? error有兩個來源,偏

巨集機器學習-學習筆記

function set就是model 機器學習3大步驟: 1. 定義模型(function)集合 2. 指定模型(function)好壞的評價指標 3. 通過演算法選擇到最佳的模型(function) alphago下棋模型抽象為棋局向下一步的分類問題: 減少擁有label的data用量的方法: 1.

巨集機器學習2016 第八講 深度學習網路優化小訣竅

Tips for Deep Learning 本章節主要講解了深度學習中的一些優化策略,針對不同的情況適用於不同的優化方法。 主要內容是:新的啟用函式(new activation function),自適應的學習率(adaptive learning

[機器學習入門] 巨集機器學習筆記-1(Learning Map 課程導覽圖)

在此就不介紹機器學習的概念了。 Learning Map(學習導圖) PDF VIDEO 先來看一張李大大的總圖↓ 鑑於看起來不是很直觀,我“照虎

巨集機器學習2016 第十五講 無監督學習 生成模型之 VAE

Unsupervised Learning : Generation本章主要講解了無監督學習中的生成模型方法。1.生成模型(Generative Models)“What I cannot create, I do not understand.” ——Richard Fey

[機器學習入門] 巨集機器學習筆記-5(Classification- Probabilistic Generative Model;分類:概率生成模型)

[機器學習] 李巨集毅機器學習筆記-5(Classification: Probabilistic Generative Model;分類:概率生成模型) Classification

[機器學習入門] 巨集機器學習筆記-15 (Unsupervised Learning: Word Embedding;無監督學習:詞嵌入)

[機器學習入門] 李巨集毅機器學習筆記-15 (Unsupervised Learning: Word Embedding;無監督學習:詞嵌入) PDF VIDEO

2018-3-21巨集機器學習視訊筆記(十三)--“Hello Wrold” of Deep learning

Keras:有關的介紹:總的來說就是一個深度學習框架keras - CSDN部落格https://blog.csdn.net/xiaomuworld/article/details/52076202軟體工程中的框架:一種可複用的設計構件(從巨集觀上大體結構的一種規定約束)軟體