多層神經網絡的常見問題

多層神經網絡的常見問題

神經網絡中的隱層極大的提升了神經網絡的表達能力,理論上只要隱層的節點足夠多,即使只有一個隱含層的神經網絡也可以擬合任意函數,隱層越多就越容易擬合複雜函數。在實際使用中使用層數較深的神經網絡,會遇到容易過擬合、參數難以調試、梯度彌散等等恩義。

過擬合

過擬合是機器學習的一個常見問題,它是指模型預測準確率在訓練集上升高了,在測試集上反而下降了。這通常是因為模型的泛化性不好,只記憶了當前數據的特徵,不具備推廣能力。Dropout是解決過擬合問題的一種簡單有效的方法,它的大致思路是在訓練時,將神經網絡的某一層的輸出節點數據隨機丟棄一部分。我們可以理解成每次丟棄節點是對特徵的一種採樣,這種方法相當於隨機創造了很多新的樣本,通過增大樣本量,減少特徵數量來防止過擬合。

參數難以調試

神經網絡通常不是一個凸優化的問題,充滿了局部最優,當然我們也不期望能夠達到全局最優,就像每個人對這個世界的認知都是局部的,但是也妨礙在絕大多數情況下做出正確的判斷。不同機器學習問題的參數需要反覆調試設置,非常繁瑣,像Adagrad、Adam、Adadelta等自適應的方法可以減輕參數調試的負擔。

梯度彌散

多層神經網絡的常見問題

在ReLU激活函數出現之前,神經網絡都採用Sigmoid作為激活函數。

多層神經網絡的常見問題

這可能是因為sigmoid函數輸出值在0-1之間,最符合概率的定義。非線性的Sigmoid函數在信號的特徵空間映射上,對中央區的信號增益較大,對兩側區的信號增益小,酷似生物神經元的興奮態和抑制態的機制。但在神經網絡層數較多的時候,Sigmoid的梯度值會在反向傳播中急劇減小,這種情況下,根據訓練數據的反饋更新神經網絡的參數會非常緩慢,基本起不到訓練的作用。

ReLU較好的解決了梯度彌散的問題,因此非常適合訓練很深的神經網絡。不難看出,ReLU函數其實是分段線性函數,把所有的負值都變為0,而正值不變,這種操作被成為單側抑制。可別小看這個簡單的操作,正因為有了這單側抑制,才使得神經網絡中的神經元也具有了稀疏激活性。

多層神經網絡的常見問題


分享到:


相關文章: