https://
arxiv。org/pdf/1609。0483
6v1。pdf
Title: On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima
將訓練資料分塊,做成批(batch training)訓練可以將多個訓練資料元的loss function求和,使用梯度下降法,最小化求和後的loss function,進而對神經網路的引數進行最佳化更新。
使用成批訓練有三個好處:
(1)對一個批次的多個訓練資料同時進行 f(x W +b) 操作,更容易GPU並行化處理
(2)多個訓練資料loss function求和後,只做一次梯度下降,加速計算
(3)Batch Normalization 使用同批次的統計平均和偏差對資料進行正規化,加速訓練
大家最常用的 Batch Size (一個批次中的訓練資料個數) 是 {36, 64, 。。。 512}。 這個數字越大,GPU並行的效率越高,訓練速度越快。但是文獻【28】發現大的Batch Size, 使訓練得到的模型對新資料的預言能力降低大約5%。
本文的主要發現是:
對新資料預言能力的降低主要是由於,使用了大Batch Size 的神經網路更容易收斂到訓練函式的陡峭極小值。這些極小值的特徵是∇^2 f(x) 有更大的正本徵值,推廣能力更弱。相反,小Batch Size 的神經網路更容易收斂到平滑的極小值,特徵是∇^2 f(x) 有較小的正本徵值。陡峭的極小值對引數空間(示意圖中的橫軸)非常敏感,訓練函式和測試函式在引數空間的微小絕對誤差會帶來極大的相對誤差,並導致對輸入的錯誤分類。
相反,在平滑的極小值附近,引數空間的微小絕對差別只能帶來更小的相對誤差,因此函式的容錯率更高,對新資料的預言能力也更強。