此篇 TensorFlow簡要教程及線性回歸算法示例 介紹了使用TensorFlow進行機器學習的基本流程,此篇 介紹一個快速確定神經網絡模型中各層矩陣維度的方法 介紹了在設計神經網絡的時候怎么確定各層矩陣的維度(矩陣的行數與列數),接下來就可以開始訓練模型了,在訓練模型的過程中,怎么衡量模型的好壞呢?通常用模型與真實之間的誤差來表示,誤差由 偏差 和 方差 兩部分組成。
Bias(偏差)
模型在樣本上的輸出與真實值之間的誤差,即模型本身的精准度,反應出算法的擬合能力。
Variance(方差)
模型每一次輸出結果與模型輸出期望之間的誤差,即模型的穩定性,反應出預測的波動情況。
偏差 與 方差 的關系
偏差與方差之間按照高低,可以組合成四種關系,如下圖所示
上圖中 偏離 紅色靶心 的藍點 越多、越遠,表示模型越差。
1、低偏差 低方差
表示模型既准確又穩定,效果最好,但是現實中這種情形很少遇見。
2、低偏差 高方差
表示模型准確但是穩定性差,對驗證數據&測試數據的擬合能力差,即是模型的泛化能力差,產生了 過擬合(Overfitting)。
3、高偏差 低方差
表示模型的准確度差,對數據的擬合能力弱,產生了 欠擬合(Underfitting)。
4、高偏差 高方差
表示模型既不准確又不穩定。
過擬合 與 欠擬合
由上面的分析可知,高方差往往預示着過擬合,高偏差則是欠擬合。
避免欠擬合(擬合太差)
1、增加訓練樣本數據
2、設計更復雜的神經網絡模型(加深、加寬等)
3、增加迭代次數
4、更好的優化函數
5、調整超參數值
避免過擬合(擬合過度,泛化太差)
1、設計更簡單的神經網絡模型
2、增加訓練樣本數據
3、正則化。在損失函數后面添加L2正則項
4、使用dropout。dropout的作用是隨機地使得網絡中的部分神經元失效,效果上類似將模型變得更簡單。
5、調整超參數值
6、嘗試其他模型
7、提前結束訓練(early stopping)。即是提前結束優化損失函數。
簡單小結
在實際的模型訓練中,通常可以按下面的來操作
貝葉斯(最優)誤差:理論上的最小誤差值(通常比人類誤差小)
可避免偏差:訓練誤差 與 貝葉斯誤差 之間的差值
方差:驗證集誤差 與 訓練誤差 的差值
當 可避免偏差 大於 方差 時,發生 欠擬合。
當 方差 大於 可避免偏差 時,發生 過擬合。
在訓練模型時對照以上描述,有助於定位問題,采取對應的措施調整模型,更快訓練出最適合的模型。