1. 程式人生 > >深度學習(偏差/方差 - 欠擬合/適度擬合/過擬合)網路分析技巧

深度學習(偏差/方差 - 欠擬合/適度擬合/過擬合)網路分析技巧

github部落格傳送門
部落格園傳送門

方差/偏差

我們稱左邊的為圖一,中間的為圖二,右邊的為圖三

從圖上我們可以看到有兩個資料分佈 , 我們需要將他們進行分類開.

圖一:

處於欠擬合(訓練時間不夠或者網路結構較小的時候產生的) 我們也稱之為高偏差 .
檢測方法: 計算出訓練集的誤差和理想誤差的差距 , 並估計是否存在高偏差 .
解決辦法: 增加訓練時間 , 使用較大的網路結構 , 嘗試更先進的優化演算法(如Adam) , 或者修改網路結構(可能有效可能無效)

圖二:

處於適度擬合的狀態(就是我們想要的狀態)
檢測方法: 訓練集誤差 和 交叉驗證集誤差都比較低的時候
解決辦法: 這就是我們想要的樣子 , 所以就不需要優化了 .

圖三:

處於過擬合(訓練時間過長或者網路結構較大的時候產生的)我們也稱之為高方差 .
檢測方法: 計算出訓練集的誤差和交叉驗證集的誤差 , 當訓練集誤差很接近理想誤差時 , 交叉驗證集誤差卻很高時 , 網路存在高偏差的情況 .|| 當訓練集誤差很大時 , 交叉驗證集誤差也很大時 , 我們的網路同時存在 高偏差和高方差的情況 .
解決辦法: 首先解決偏差高的問題(解決辦法 同上) , 其次解決高方差的問題 . 最好的解決辦法就是採用更多的資料 , 其次使用正則化(Dropout, Batch Normzation , L1 , L2等等…) , 嘗試新的網路結構(可能有效可能無效 , 也可能同時減少方差和偏差)

總結:

構建一個大的網路 , 正則適度 , 便可以在不影響方差時 , 減少偏差 .
採用更多資料通常可以在不過多影響偏差的同時 , 減少方差 .

print_r('點個贊吧')var_dump('點個贊吧')NSLog(@"點個贊吧!")
System.out.println("點個贊吧!");
console.log("點個贊吧!");
print("點個贊吧!");
printf("點個贊吧!\n");
cout << "點個贊吧!" << endl;
Console.WriteLine("點個贊吧!");
fmt.Println("點個贊吧!"
) Response.Write("點個贊吧"); alert(’點個贊吧’)