第一:層數的增多會使每一層任務都變得簡單,例如計算乘法,可以在第一層計算按位加法,第二層計算兩個數的加法,第三層計算乘法,這樣的演算法邏輯更加簡單,清晰。也就是說中間層可以做更深的抽象。
第二:數學上可以證明只有一層隱藏層的神經網路可以表示任意的函式,但是神經元的數量卻是指數級增加的,但是使用深層網路可以解決這個問題。
所以綜上深層神經網路可以解決淺層神經網路無法輕易解決的問題。
但是如果我們使用隨機梯度下降訓練深層神經網路的話,就會發現結果並沒有比淺層神經網路好。這是因為不同的層學習速度差很多,後面的層學習更快,這是因為我們使用的是基於梯度的學習演算法。
在使用mlp識別mnist時我們會發現,一味的增加隱藏層數量並不會給最終的結果帶來好處,但是上文已經說了層數的增加可以使神經網路提公升,那麼問題的原因就是增加後的網路的權重不對。 δl
j=∂c
/∂bl
j 來表示第
l 層的第
j個神經元,不嚴謹的,可以認為||
δi||
為每個神經元的學習速度。那麼在訓練過程中發現越靠近輸入層的神經元學習速度越慢,這就導致在整個引數空間中的一些方向的方向導數很小。
所以,並不是網路結構的問題,而是這種訓練演算法的問題。
那麼,問題來了,梯度消失的原因是什麼?我們怎樣避免梯度消失?怎樣訓練神經網路?實際上,在深度神經網路中不只有梯度消失還有梯度**,只能說明深層神經網路中的梯度並不穩定,這時基於梯度的演算法無法正常工作的根本原因。
首先,想一下在近層梯度變小是不是真正的問題,或許只是那裡接近了極小值點?很可惜並不是這樣,因為我們的權重都是隨機初始化的,沒有理由**不需要訓練。
實際上,梯度消失和梯度**都是梯度不穩定的表現,這是因為淺層的神經元=後面所有神經元的乘積,所以當層數增多後容易引起不穩定的表現,
梯度不穩定只是深度學習中的乙個問題,雖然是最重要的,近年來學者們也在研究其他的一些原因,
2010 年glorot and bengio發現sigmoid函式可能是深度學習的問題之一,
2013 年sutskever, martens, dahl and hinton研究了權重的初始化,以及基於動量的方法
為什麼賺錢很難
為什麼賺錢很難 人都是生活在社會中的,沒有一點社會關係的人,幾乎是不存在的。關鍵的問題是,我們到底擁有多少社會關係,並且是否認真思考過它對我們生存的重要意義,或者說,從理論上誰都懂得關係的重要性,但是,面臨生存困境,很多人並未想到自己的社會關係還能幫自己賺到金錢。首先,很多人認為自己現有的關係對於賺...
神經網路基礎 為什麼要深層的網路
有人做了這樣乙個對比 在相同參數量的情況下,神經網路層數對最後模型結果的影響。最後得出的結論為是 神經網路 tall thin 的模型效果要好於fat short 的效果。為什麼會出現這樣的情況呢?其實神經網路在設計過程中,其實是乙個模組化的過程。設想這樣乙個場景 現在需要做影象分類,標籤為4類 長...
為什麼我很難複習成功?
不知道,你有沒有和我一樣,覺得自己很難複習一件東西成功。具體情況有以下幾種 不願意再去看重複的材料,願意找個新的相關課程來學。這樣的結果可能是,我學了很多東西,我好像它相關的每塊我都能說出來一點點,但是卻完全不明白本質。不願意認真去思考乙個技術問題。其實這可能是我逼著自己來寫部落格的原因吧。除了工作...