專項課程二:改善的深度神經網絡 第一週

Basic recipe for machine learning

理論基礎

1、關於訓練集和數據集
通常來說,訓練一個機器學習算法模型,需要將數據分割成訓練集和數據集兩部分。訓練集用來訓練算法模型,測試集用來測試算法模型。80%數據進行訓練,20%數據進行測試。
這樣,在訓練過程中會遇到高方差和高偏差的問題,會採用以下的方法進行改善,就對測試集的泛化誤差進行了多次度量,並調整模型和超參數來得到你和那個測試集的最佳模型。在新的運行環境下,很明顯不能得到一個好的誤差。
所以,從數據集中再分出一個驗證集,用來調整超參數和監控模型是否過擬合。
一般三者比例爲:6:2:2.
開發和測試集應該來自同一分佈
吳恩達課程的答案是98:1:1.。。。。。。
2、交叉驗證
1、將數據集粗略的分爲比較均等不相交的k份
2、取其中的一份進行測試,另外k-1份進行訓練,然後求得error的平均值作爲最終評價。
3、選擇具有最小泛化誤差的模型作爲最終模型,並且在整個訓練集上再次訓練該模型,得到最終的模型。
在這裏插入圖片描述

正則化改善高方差

理論基礎

1、
在這裏插入圖片描述
在這裏插入圖片描述
2、
在這裏插入圖片描述

Dropout regularization(隨即失活算法)

在神經網絡的每一層,對於每一個神經節點都有50%的概率被刪除,從而使神經網絡的結構簡單化。對於每一個訓練樣例都有不同的神經網絡結構來進行訓練。

  • 反向隨即失活 通過除以keep.prob來保證期望值不變

Data augmentation

爲了降低成本,可以採用將圖片翻轉,隨機剪裁,或者將清晰圖片打馬賽克等一系列玄學手段來增加數據量。

Early stopping

編程作業

目標:
1、初始化參數:
1.1:使用 θ \theta 來初始化參數
1.2:使用隨機數來初始化參數
1.3:使用抑梯度異常初始化參數
2、正則化模型:
2.1:使用二範數對二分類模型正則化,嘗試避免過擬合
2.2:使用隨機刪除節點的方法精簡模型,避免過擬合
3、梯度校驗:
對模型使用梯度校驗,檢測它是否在梯度下降的過程中出現誤差過大的情況。

初始化參數核心代碼:
1、parameters["W" + str(l)] = np.zeros((layers_dims[l],layers_dims[l-1]))
parameters["b" + str(l)] = np.zeros((layers_dims[l],1))

2、parameters['W' + str(l)] = np.random.randn(layers_dims[l], layers_dims[l - 1]) * 10 #使用10倍縮放
parameters['b' + str(l)] = np.zeros((layers_dims[l], 1))

3、parameters['W' + str(l)] = np.random.randn(layers_dims[l], layers_dims[l - 1]) * np.sqrt(2 / layers_dims[l - 1])
parameters['b' + str(l)] = np.zeros((layers_dims[l], 1))
梯度校驗:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章