一天搞懂深度學習-訓練深度神經網絡(DNN)的要點


前言

這是《一天搞懂深度學習》的第二部分

 

一、選擇合適的損失函數

  典型的損失函數有平方誤差損失函數和交叉熵損失函數。

  交叉熵損失函數:

  選擇不同的損失函數會有不同的訓練效果

二、mini-batch和epoch

  (1)什么是mini-batch和epoch

    所謂的mini-batch指的是我們將原來的數據分成不重疊的若干個小的數據塊。然后在每一個epoch里面分別的運行每個mini-batch。ecpoch的次數和mini-batch的大小可以由我們自己設置。

  (2)進行mini-batch和epoch划分的原因

    之所以要進行mini-batch和epoch的改變,一個很重要的原因是這樣就可以實現並行計算。但是這樣的話,每一次的L就不是全局損失而是局部損失。mini-batch采用了並行計算會比之前傳統算法的速度更快。並且mini-batch的效果會比傳統的方法好

  (3)mini-batch和epoch的缺點

    mini-batch是不穩定的。mini-batch不一定會收斂。

三、新的激勵函數

深度學習並不是說神經網絡的層數越多越好。因為神經網絡的深度越深那么在誤差回傳的過程中,因為層數過多可能會有梯度消失的問題。所謂梯度消失問題指的是在訓練的過程中,越靠近輸出層的學習的越快越靠近輸入層的學習的越慢。那么隨着深度的增加,靠近輸出層的隱含層權重已經收斂了,但是靠近輸入層的隱含層卻還沒有什么變化,相當於還是像初始的時候一樣權重是隨機的。

為了梯度消失的問題,學者提出了使用ReLU函數作為激勵函數。以下是ReLU函數:

 

(1)為什么要選擇ReLU函數作為激勵函數

  1.很容易計算

  2.Relu函數和我們神經元的激勵機制很像:神經元只有在接收一定量的刺激才能夠產生反應

  3.infinite sigmoid with different biases【這句話不知道咋解釋】

  4.解決梯度消失問題

(2)ReLU函數的變種

  ReLU函數有很多種形式,上面的函數圖像只是其中最原始的一種。還有Leaky ReLU和Parametric ReLU

 

 (3)Maxout激勵函數

Maxout激勵函數先將隱含層的神經元進行分組然后利用分段函數得到組中每一個elements的值,取最大的輸出。這個分段函數分的段數是取決於一個group里面有多少個elements。其實ReLU就是一個group里面只有一個element的Maxout激勵函數

 

 四、自適應的學習率

學習率是一個很重要的參數,如果學習率選擇的太大的話就會出現無法收斂的情況,如果學習率選擇的太小的話收斂的太慢,訓練過程太長。

我們選擇學習率一般不是選擇一個固定的值,而是讓它隨着訓練次數的不斷增加而減少。學習率針對不同的參數應該是不同的。並且對於所有的參數來說學習率應該越來越小。導數越大,學習率越小;導數越小,學習率越大。【這里導數是有正負性的】

五、Momentum

單純的使用導數用於改變學習率,很容易陷入局部最小,或者極值點。為了避免這一點,我們使用了Momentum。雖然加上Momentum並不能完全的避免陷入局部最小,但是可以從一定的程度上減緩這個現象。

六、過擬合

所謂的過擬合,就是過度的學習訓練集的特征,將訓練集獨有的特征當做了數據的全局特征,使得其無法適應測試集的分布。

防止過擬合的方法叫做正則化,正則化的方式有很多。

在神經網絡中正則化的方法主要有四種:

  1.早起停止(eary stopping):比如我們可以設置訓練的最大輪數等

  2.權重衰減:減少無用的邊的權重

  3.droupout:每次訓練的時候都刪除一些節點單元,這樣會使網絡結構變得簡單,訓練過程也變得更加簡單。它的定義是如果你在訓練的階段對於某一層刪除了p%節點,那么你在訓練時該層的神經元的權重也要衰減p%。droupout可以看做是一個ensamble的過程。

  4.網絡結構:比如CNN

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM