1. 程式人生 > >六天搞懂“深度學習”之五:深度學習

六天搞懂“深度學習”之五:深度學習

簡單地說,深度學習就是一種採用深度神經網路的機器學習技術,深度神經網路就是一種包含2個或者2個以上隱藏層的多層神經網路。

在這裡插入圖片描述

這裡再次簡單回顧一下“深度學習”的發展歷史:

l 第一代神經網路——單層神經網路,在解決機器學習面臨的實際問題時,很快就暴露出它的基本侷限性,單層神經網路只能求解線性可分問題。

l 多層神經網路必然是下一個突破點,然而,單層到多層網路的演進卻花費了大約30年的時間。

l 直到1986年,多層神經網路的訓練問題最終在引入反向傳播演算法後得到解決;神經網路再次登上了歷史舞臺。

l 遺憾的是,多層神經網路在實際問題上的效能並沒有達到預期;研究者嘗試了很多方法進行改善,但都失敗了,最後,神經網路被判處沒有改進可能的死刑,它被大家遺忘了。

l 直到2000年中期深度學習的引入,才打開了新的研究大門。由於深度神經網路的訓練難度較大,深度隱藏層需要較長時間才能獲得足夠的效能。海量儲存器及飛躍發展的計算機處理能力為深度學習的實現提供了強有力的硬體基礎。

深度學習的創新是許多小技術改進的結果。從本質上說,深度神經網路效能較差的原因是因為網路沒有得到正確的訓練。在深度神經網路的訓練過程中,反向傳播演算法存在以下三個主要困難:

  1. 梯度消失Vanishing gradient
    
  2. 過度擬合Overfitting
    
  3. 計算量Computational load
    

梯度消失Vanishing gradient

在反向傳播演算法訓練神經網路時,它將輸出誤差向後傳播到隱藏層。當神經網路的隱藏層數量較多時,輸出誤差幾乎不能到達第一隱藏層(即與輸入層相鄰的隱藏層),所以導致權值無法被調整,也就無法充分地訓練所有隱藏層。

消失梯度的代表性解決方案是使用整流線性單元(ReLU)函式作為啟用函式,ReLU比sigmoid函式能夠更好地傳遞誤差。ReLU函式的定義如下:

在這裡插入圖片描述

當輸入為負數時,該函式輸出0;當輸入為正數時,則輸出為輸入的正數。ReLU的名字是因為它的功能類似於整流器,一種在切斷負電壓時將交流轉換成直流的電氣元件

sigmoid函式將神經節點的輸出範圍限制為單位1,沒有考慮輸入值的大小;相反,ReLU函式不受這樣的限制。

反向傳播演算法中需要的另一個元素是ReLU函式的導數。根據ReLU函式的定義,它的導數為:

在這裡插入圖片描述

過度擬合Overfitting

深度神經網路特別容易過擬合的原因是模型變得更加複雜,因為模型中包含更多的隱藏層,以及更多的權值。越複雜的模型越容易過擬合。

通過加深神經網路的層數可以獲得更優的效能,但可能使得神經網路面臨“過度擬合”的危機,這是一種兩難的選擇。最具代表性的解決方案是dropout,它只訓練隨機選擇的一些節點,而不是整個神經網路。

dropout隨機選擇一些節點,並將它們的輸出設定為零,即這些節點不起任何作用,實質上是降低了神經網路的複雜程度。dropout能夠有效地防止過度擬合,因為它不斷地改變訓練過程中的節點和權值。一般來說,對於隱藏層和輸入層,dropout的適用比例分別約為50%和25%。

用於防止過度擬合的另一種流行方法是將正則化項新增到代價函式中,其中正則化項提供權值的幅度大小。正則化儘可能簡化神經網路的結構,從而減少過擬合的發生。正則化的簡化實質也是丟棄網路節點,不過正則化是按照某種規則丟棄(或者是弱化某些節點的影響),而dropout是隨機丟棄。

此外,需要注意的是,深度神經網路的充分訓練離不開大資料,這樣可以減少由於特定資料引起的潛在偏差。

計算量Computationalload

最後一個挑戰是完成深度網路訓練所需的時間問題,權值的數量隨著隱藏層數量的增加而呈現幾何增長,因此需要更多的訓練資料,最終就需要進行更多的計算。神經網路的計算量越大,訓練時間就越長。如果計算能力不足,訓練一個神經網路需要1個月的時間,那麼1年最多隻能進行12次訓練測試,這是大多數的研究不可接受的。通過採用GPU和批處理歸一化等快速演算法,已經在很大程度上緩解了這一難題。

機器學習的三個主要研究領域通常為影象識別、語音識別和自然語言處理。從目前來看,深度學習優於這三個領域中使用的所有技術,這也是深度學習受到高度重視的重要原因。

由於ReLU函式對初始權值比較敏感,因此當初始權值不合適時,使用ReLU作為啟用函式可能會導致神經網路訓練失敗。

更多精彩文章請關注微訊號:在這裡插入圖片描述