吳恩達深度學習 神經網路的優化 1

2021-10-06 23:01:17 字數 2144 閱讀 4984

選擇最佳的train/dev/test sets非常重要。除此之外,構建神經網路時,需要設定的引數很多:神經網路層數,神經元個數,學習率的大小。啟用函式的選擇等等。實際上很難第一次就確定好這些引數,大致過程是:

先確定初始引數,構建神經網路模型,然後通過**實現該模型,之後進行試驗確定模型的效能。根據效能再不斷調整引數,重複上述過程,直到讓神經網路模型最優。

由上述可知,深度學習是乙個不斷迭代優化的過程,效率取決於單次試驗所花費的時間,而設定合適的train/dev/test sets數量,能有效提高訓練效率。

對於如今的大資料樣本,train/dev/test sets的比例通常可以設定為98%/1%/1%,或者99%/0.5%/0.5%。樣本資料量越大,相應的dev/test sets的比例可以設定的越低一些。

另外乙個值得注意的問題是:訓練樣本和測試樣本分佈上不匹配,即訓練樣本和測試樣本來自於不同的分布。解決方法就是盡量使兩者處於統一分布。

具體做法有:對於一張,可以讓轉向或者擷取的一部分,識別一些數字時可以使數字進行稍微的變形等等。

如下圖所示,顯示了二維平面上,可見,高偏差(high bias)對應著欠擬合,而高方差(high variance)對應著過擬合。

減少high bias的方法通常是增加神經網路的隱藏層個數、神經元個數,訓練時間延長,選擇其它更複雜的模型等。

減少high variance的方法通常是增加訓練樣本資料,進行正則化regularization,選擇其他更複雜的nn模型等。

邏輯回歸中採用l2正則化的表示式為:

λ就是正則化引數(超引數的一種)。可以設定λ為不同的值,在dev set中進行驗證,選擇最佳的λ。

因為w的維度很大,b只是乙個常數,很大程度上b對整體模型的影響很小,所以可以不對b進行正則化。

由於加入了正則化項,梯度下降演算法中的dw[

l]dw^dw

[l]計算表示式需要做如下修改

由於加上了正則項,dw[

l]dw^dw

[l]有個增量,在更新w[l

]w^w[l]

的時候,會多減去這個增量,使得w[l

]w^w[l]

比沒有正則項的值要小一些。不斷迭代更新,不斷地減小。

為什麼正則化能夠有效避免high variance,防止過擬合呢?

當λ很大時,w就會很小接近於0,意味著該神經網路模型中的某些神經元實際的作用很小,可以忽略。從效果上來看,其實是將某些神經元給忽略掉了。這樣原本過於複雜的神經網路模型就變得不那麼複雜了,而變得非常簡單化了

第二種防止過擬合的方法:dropout

dropout是指在深度學習網路的訓練過程中,對於每層的神經元,按照一定的概率將其暫時從網路中丟棄。也就是說,每次訓練時,每一層都有部分神經元不工作,起到簡化複雜網路模型的效果,從而避免發生過擬合。

對於同一組訓練資料,利用不同的神經網路訓練之後,求其輸出的平均值可以減少overfitting。dropout就是利用這個原理,每次丟掉一定數量的隱藏層神經元,相當於在不同的神經網路上進行訓練,這樣就減少了神經元之間的依賴性,即每個神經元不能依賴於某幾個其他的神經元。

此方法在計算機視覺應用很多,其他應用很少。

第三種防止過擬合的方法:early stoping

乙個神經網路模型隨著迭代訓練次數增加,train set error一般是單調減小的,而dev set error 先減小,之後又增大。也就是說訓練次數過多時,模型會對訓練樣本擬合的越來越好,但是對驗證集擬合效果逐漸變差,即發生了過擬合。因此,迭代訓練次數不是越多越好,可以通過train set error和dev set error隨著迭代次數的變化趨勢,選擇合適的迭代次數,即early stopping。

但是early stopping的做法通過減少得帶訓練次數來防止過擬合,這樣j就不會足夠小.

吳恩達神經網路和深度學習

課程名稱 神經網路和深度學習 andrew ng 神經網路和深度學習 1 什麼是神經網路 傳送門 神經網路和深度學習 2 啟用函式 傳送門 神經網路和深度學習 3 神經網路輸入的表示 傳送門 神經網路和深度學習 4 符號約定 傳送門 神經網路和深度學習 5 邏輯回歸 傳送門 神經網路和深度學習 6 ...

吳恩達 深度學習 神經網路和深度學習

二分類問題是一種簡單分類問題,其輸出結果是兩個離散值。假如給定一副貓的,那麼二分類問題就可描述為 判別這幅影象中是否有貓?分類結果也只有1 表示存在 0 表示不存在 兩種。符號定義 x 表示乙個nx維資料,為輸入資料,維度為 nx,1 y 表示輸出結果,取值為 0,1 x i y i 表示第i組資料...

神經網路和深度學習 吳恩達 神經網路基礎

簡單的理解就是輸出的結果是兩個離散的值,就像課程中舉的例子 通過輸入一張的資訊,經過一些列的計算,輸出乙個離散的y值,中是否有貓,當y 1時表示中有貓,反之當y 0時,表示中沒有貓。我看很多人將這個翻譯成邏輯回歸,而在 機器學習 中,作者認為應該更為準確的叫對數機率回歸,這裡我就不對這兩個翻譯做過多...