改善深層神經網絡第一週

1.1 訓練/開發/測試集

可以將一個數據集分爲三個部分,

  • 訓練集:對訓練集執行訓練算法,通過驗證集或簡單交叉驗證集選擇最好的模型.
  • 驗證集:驗證不同的算法的有效性進而選擇最終的模型,然後就可以在測試集上進行評估了.
  • 測試集(test):對驗證集最終選定的神經網絡做出無偏估計,如果你不需要對模型進行無偏估計,那麼測試集沒有也無妨。

於數據量過百萬級別的數據我們可以使測試集,驗證集佔比更少即可

經驗之談:要確保驗證集和測試集的數據來自同一分佈.
1.2 偏差/方差

  • Bias是 “用所有可能的訓練數據集訓練出的所有模型的輸出的平均值” 與 “真實模型”的輸出值之間的差異;
  • Variance則是“不同的訓練數據集訓練出的模型”的輸出值之間的差異。
  • 下圖是高偏差和高方差的圖示

1.3如何解決高偏差/方差的問題
當初始模型訓練完成後,首先要知道算法的偏差高不高,偏差高(無法擬合訓練集)的解決辦法有:

    1)選擇一個新網絡,比如含有更多隱層或者隱層單元的網絡

    2)花費更多時間訓練算法,或者嘗試更先進的優化算法

當結果很好地擬合訓練集時,就要查看是否在驗證集上也表現很好,即檢查是否有高方差問題(過度擬合),高方差的解決方法有:

    1)採用更多的數據(可能很難)

    2)通過正則化來減少過擬合

不斷迭代,直到找到一個低偏差,低方差的模型
1.4正則化

  • √正則化:在損失函數中給每個參數 w 加上權重,引入模型複雜度指標,從而抑制模型噪聲,減小 過擬合。

關於正則化

  • why L2:在BP算法中權值W的每次梯度下降會額外減去一個(1−αλm)W(1−αλm)W的值稱之爲”權重衰減”即”Weight decay”

1.5 爲什麼正則化可以減少過擬合
正則化項可以理解爲複雜度,cost越小越好,因此cost加入正則化項後,爲了使cost小,則不能使正則項大,也就是不能讓模型複雜,這樣就降低了模型的複雜度,也就降低了過擬合,這就是正則化。
1.6 dropout正則化
這裏寫圖片描述
優點:對於存在過擬合的神經網絡,dropout會遍歷神經網絡的每一層,並設置消除每一點的概率,然後刪除某些點,得到一個更小的神經網絡,然後用backprop方法進行訓練.
1.7 其他正則化方法
- 擴增數據集:人工合成數據
- early stopping:”神經網絡你到現在的迭代訓練中表現已經非常好了,我們停止訓練吧”

機器學習的一般步驟:

1)選擇一個算法來優化代價函數J 
2)優化代價函數之後,同時不要過擬合(使用正則化或者擴增數據)

1.8 early stopping和L2正則化的權衡

  • L2正則化:引入超參數λ,這樣就要不停的尋找λ,使得訓練效果更好,因此訓練代價高;
  • earlystopping:只運行一次梯度下降,那你就可以找到w的較小值,中間值和較大值,而無需嘗試L2正則化超級參數λ的很多值.但是在訓練早期就終止了,使得代價函數J並沒有達到最優。

1.9 正則化輸入
這裏寫圖片描述

1.10 梯度消失與梯度爆炸
這裏寫圖片描述
這裏寫圖片描述
直觀上理解,梯度消失會導致優化函數訓練步長變小,使訓練週期變的很長.而梯度爆炸會因爲過大的優化幅度而跨過最優解。
1.11 初始化權重
這裏寫圖片描述
這裏寫圖片描述
爲了防止梯度爆炸或者梯度消失,我們希望w儘可能小,最合理的方法就是設置W方差爲1/n, n表示神經元的輸入特徵數量
1.12 梯度的數值逼近
梯度其實就是微分求導,但是由於求導結果可能比較複雜,所以使用微積分中的求導的定義來計算梯度。
這裏寫圖片描述
這裏寫圖片描述
最後我們的主要目標是檢查這個梯度的近似向量與反向傳播算法得到的梯度向量是否近似相等。

在確定好神經網絡的結構後,我們按如下的步驟訓練神經網絡:

  • 隨機初始化權重參數;
  • 對於每一個 通過前向傳播得到;
  • 計算代價函數;
  • 反向傳播算法用於計算偏導數
  • 使用梯度檢查來比較反向傳播算法計算的和數值估計的的梯度,如果沒有問題,在實際訓練時關閉這部分代碼;
  • 在反向傳播的基礎上使用梯度下降或其他優化算法來最小化;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章