深度學習筆記(7) 實踐層面(二)

2021-09-23 07:51:53 字數 3362 閱讀 6601

深度學習可能存在過擬合問題——高方差,在確定模型之後有兩個解決方法

正則化準備更多的資料

但可能無法時時刻刻準備足夠多的訓練資料或者獲取更多資料的成本很高

正則化通常有助於避免過擬合或減少網路誤差

用邏輯回歸來實現這些設想,求成本函式j的最小值,引數包含一些訓練資料和不同資料中個體**的損失

w和b是邏輯回歸的兩個引數,w是乙個多維度引數向量,b是乙個實數

在邏輯回歸函式中加入正則化,只需新增引數λ,也就是正則化引數

λ/2m 乘以w範數的平方,w 歐幾里德範數 的平方等於wj(j 值從1到nx)平方的和,也可表示為wtw

因為用了歐幾里德法線,被稱為向量引數w的l2範數,此方法稱為l2正則化

w幾乎涵蓋所有引數,如果加了引數b,其實也沒太大影響,因為b只是眾多引數中的乙個,所以通常省略不計

在python中,λ是乙個保留字段,編寫**時,刪掉a,寫成lambd,以免與python中的保留字段衝突

神經網路含有乙個成本函式,該函式包含w([1]),b([1])到w([l]),b([l])所有引數,字母l是神經網路所含的層數

正則項為:

這個矩陣範數 |w[l] |2(即平方範數),被定義為矩陣中所有元素的平方求和

在權重更新時:w=w

−adw

w=w-adw

w=w−adwdw

dwdw

來自backprop中j對w的偏導數,可以看到

正則化引數λ係數小於1,因此l2範數正則化也被稱為「權重衰減

直觀上理解就是

如果正則化λ設定得足夠大,權重矩陣w被設定為接近於0的值

直觀理解就是把多隱藏單元的權重設為0,於是基本上消除了這些隱藏單元的許多影響

這個被大大簡化了的神經網路會變成乙個很小的網路,小到如同乙個邏輯回歸單元

可是深度卻很大,會使這個網路從過度擬合的狀態更接近高偏差狀態

但是λ會存在乙個中間值,於是會有乙個接近「just right」的中間狀態

直觀上λ增加到足夠大,w會接近於0

實際上是不會發生這種情況的,嘗試消除或至少減少許多隱藏單元的影響

最終這個網路會變得更簡單

這個神經網路越來越接近邏輯回歸,直覺上認為大量隱藏單元被完全消除了

其實不然,實際上是該神經網路的所有隱藏單元依然存在,但是它們的影響變得更小了

神經網路變得更簡單了,貌似這樣更不容易發生過擬合

若正則化引數λ很大,啟用函式的引數w會相對較小,因為代價函式中的引數變大了,

所以相對來說,z也會很小,這個啟用函式,也就是曲線函式tanh會相對呈線性

這個線性函式非常簡單,並不是乙個極複雜的高度非線性函式,不會發生過擬合

如果每層都是線性的,那麼整個網路就是乙個線性網路

即使是乙個非常深的深層網路,因具有線性啟用函式的特徵,最終只能計算線性函式

因此,它不適用於非常複雜的決策,以及過度擬合資料集的非線性決策邊界

除了l2正則化,還有乙個非常實用的正則化方法——「dropout(隨機失活)

dropout會遍歷網路的每一層,並設定消除神經網路中節點的概率,假設網路中的每一層,每個節點都以拋硬幣的方式設定概率,每個節點得以保留和消除的概率都是0.5,設定完節點概率,會消除一些節點,然後刪除掉從該節點進出的連線,最後得到乙個節點更少,規模更小的網路再進行訓練

最常用實施dropout的方法:inverted dropout(反向隨機失活)

以乙個三層網路為例,要定義向量d,d[3] 表示乙個三層的dropout向量:

d3 = np.random.rand(a3.shape[0],a3.shape[1])

看它是否小於某數,稱之為keep-prob,keep-prob是乙個具體數字

本例中它是0.8,它表示保留某個隱藏單元的概率

此處 keep-prob = 0.8,則消除任意乙個隱藏單元的概率是0.2

此時的a[3] 等於原來的的a[3] 乘以d[3] ,a3 = np.multiply(a3,d3)

這裡是元素相乘,也可寫為a3 * = d3

用python實現該演算法的話,d[3] 則是乙個布林型陣列,值為 true 和 false

假設第三隱藏層上有50個單元或50個神經元,在一維上a[3] 是50

通過因子分解將它拆分成50×m維的,保留和刪除它們的概率分別為80%和20%

則最後被刪除或歸零的單元平均有10

而z[4] ,z[4] = w[4] a[3] +b[4] ,預期是a[3] 減少20%,也就是說a[3] 中有20%的元素被歸

為了不影響z[4] 的期望值,向外擴充套件a[3]

需要用a[3] /0.8,或者除以 keep-prop 引數,它將會修正或彌補所需的那20%,a[3] 的期望值不會變

反向隨機失活(inverted dropout)方法通過除以 keep-prop ,確保 a[3] 的期望值不變

不能依靠任何特徵,因為特徵都有可能被隨機清除,或者說該單元的輸入也都可能被隨機清除。不願意把所有賭注都放在乙個節點上,不願意給任何乙個輸入加上太多權重,因此該單元將通過這種方式積極地傳播開,並為單元的輸入增加一點權重,通過傳播所有權重, dropout 將產生收縮權重的平方範數的效果,降低每個特徵的關聯性,增強泛化性

keep-prop 設定為1,那麼就不存在 dropout ,因為會保留所有節點。不同層的 keep-prop 也可以變化,對於有可能出現過擬合,且含有諸多引數的層,可以把 keep-prop 設定成比較小的值,以便應用更強大的 dropout

dropout 一大缺點:代價函式j不再被明確定義,每次迭代都會隨機移除一些節點,很難進行複查梯度下降的效能

參考:

深度學習筆記(8) 實踐層面(三)

訓練神經網路,特徵必須要在0到1之間 此時就只能加速訓練的方法就是歸一化輸入 在使用正則化的情況下,必須使用標準化 因為不用正則時,損失函式只是僅僅在度量 與真實的差距 加上正則後,損失函式除了要度量上面的差距外,還要度量引數值是否足夠小 而引數值的大小程度或者說大小的級別是與特徵的數值範圍相關的 ...

深度學習筆記 二

miou計算方法 p ij表示類 i被識別為類j的畫素總數,即p ii表示識別正確的真正例 true positive,tp 總數,而p ij和p ji則分別表示識別錯誤的假正例fp false positive,fp 總數和假反例fn false negative,fn 總數。語義分割j and ...

深度學習 學習筆記二

理論 1.線性判別函式和決策邊界 線性判別函式 若分屬於 1,2的兩類模式可用一方程d x 0來劃分,那麼稱d x 為判別函式,或稱判決函式 決策函式。乙個線性分類模型 linear classi cation model 或線性分類器 linear classi er 是由乙個 或多個 線性的判別...