Dog,Dog,Dog,... ,Dog,Dog,Dog,Cat,Cat,Cat,Cat,... ,Cat,Cat
複製程式碼
所有的狗都在貓前面,如果不shuffle,模型訓練一段時間內只看到了Dog,必然會過擬合於Dog,一段時間內又只能看到Cat,必然又過擬合於Cat,這樣的模型泛化能力必然很差。 那如果Dog和Cat一直交替,會不會就不過擬合了呢?
Dog,Cat,Dog,Cat,Dog ,Cat,Dog,...
複製程式碼
依然會過擬合,模型是會記住訓練資料路線的,為啥呢?
首先我們需要明白固定的資料集順序,意味著給定迭代步,對應此迭代步的訓練資料是固定的。 假如目標函式是J=f(w1, w2),使用梯度下降優化J。給定權重取值w1、w2和迭代步step的情況下,固定的資料集順序意味著固定的訓練樣本,也就意味著權值更新的方向是固定的,而無順序的資料集,意味著更新方向是隨機的。如下圖中的A點,如果固定的更新方向是紅色箭頭方向,則很難收斂到最優點,而如果更新方向是隨機的,則有可能就沿著白色箭頭方向收斂到最優點。
所以固定的資料集順序,嚴重限制了梯度優化方向的可選擇性,導致收斂點選擇空間嚴重變少,容易導致過擬合。
所以模型是會記住資料路線的,所以shuffle很重要,一定要shuffle。