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