ある企業が、12,000件の訓練データでニューラルネットワークをミニバッチ学習させる。当初はバッチサイズ300で30エポック学習する計画だったが、GPUのメモリが不足するため、バッチサイズを200に下げることにした。1イテレーションごとに重みを1回更新するとき、重みの更新回数の合計を当初の計画と同じにするエポック数として、最も適切なものを1つ選べ。
正解と解説を見る
解説
正解 A
この問題の論点:バッチサイズと更新回数
ポイント
1エポックあたりの更新回数はデータ数÷バッチサイズです。バッチサイズを小さくすると、同じ更新回数に必要なエポック数は減ります。
選択肢ごとの解説
- A
適切 正解
当初は1エポックあたり12,000÷300=40回、30エポックで40×30=1,200回更新します。変更後は1エポックあたり12,000÷200=60回なので、1,200÷60=20エポックで同じ回数になります。
- B
不適切
エポック数を変えないと、更新回数は60×30=1,800回に増えます。バッチサイズを小さくすると1エポックあたりのイテレーション数が増えるため、同じ更新回数ならエポック数は少なくて済みます。
- C
不適切
45は30×300÷200で、バッチサイズの比を逆向きに掛けた値です。この場合の更新回数は60×45=2,700回となり、当初の1,200回を大きく上回ります。
- D
不適切
60は変更後の1エポックあたりのイテレーション数(12,000÷200)です。エポックは訓練データ全体を1周する単位で、イテレーションとは数え方が異なります。
補足
バッチサイズを訓練データの件数と同じにすると、1エポックに1回だけ更新するバッチ学習になります。1にすると、1件ごとに更新するオンライン学習になります。ミニバッチ学習はその中間で、深層学習ではこれも確率的勾配降下法(SGD)と呼ぶのが一般的です。なお、更新回数をそろえても、バッチサイズが変わると1回の更新に使う勾配のばらつきが変わるため、学習結果が同じになるとは限りません。実際には学習率もあわせて見直します。
試験での狙われ方
エポック・イテレーション・バッチサイズの関係を、条件を変えた場面で計算させる形が考えられます。
参考
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目16 最適化手法)
- Goodfellow, Bengio, Courville, Deep Learning (2016) (8.1.3 Batch and Minibatch Algorithms)