ミニバッチとエポックについて

33 ビュー (過去 30 日間)
Ryoya Takahashi
Ryoya Takahashi 2017 年 9 月 15 日
コメント済み: Eiji Ota 2017 年 9 月 16 日
ミニバッチとエポックについては以下の考え方でよろしいのでしょうか? 学習を開始すると、まず全クラスの学習データセットから指定したバッチサイズの画像データ数をニューラルネットワークに与え、パラメータを更新する。これを全クラスの学習データセットの全画像データを1巡した際、1エポックの計算が終了したと定義される。例えば、全クラスの合計の画像データが1000枚であり、バッチサイズが10とすると100回のパラメータ更新で全クラスの全画像データを1巡した、すなわち1エポック経過したことになる。この条件で10エポック計算することを考えると合計で1000回のパラメータ更新をすることになる。 また、上記正しい場合、全体の画像の枚数がバッチサイズで割り切れない場合、その端数はどのように処理されるのでしょうか?
  1 件のコメント
Eiji Ota
Eiji Ota 2017 年 9 月 16 日
端数に相当する部分のデータは無視されることになります。

サインインしてコメントする。

採用された回答

michio
michio 2017 年 9 月 16 日
ミニバッチとエポックに関してはおっしゃる通りです
Stochastic Gradient Descent with Momentum に記載がありますが、
"Each evaluation of the gradient using the mini-batch is an iteration. At each iteration, the algorithm takes one step towards minimizing the loss function. The full pass of the training algorithm over the entire training set using mini-batches is an epoch."
ということで、mini-batch size 枚の画像を使用したパラメーターを更新が 1 iteration。すべての画像に対して一通り実行された状態を 1 epoch と呼んでいます。
>> 全体の画像の枚数がバッチサイズで割り切れない場合、その端数はどのように処理されるのでしょうか?
に関しては、ドキュメンテーションに記載が無いので今後変更されるかもしれませんが、R2017a 時点のコードを見ていくと端数は使用されていないことがわかります。すなわち、10枚の画像があり、mini-batchサイズが 6 であれば、4枚の画像は使われず 1 epochが完了します。
ただ、"By default, the software shuffles the data once before training." との記載がある通り、6枚に何が選ばれるかは epoch 毎にシャッフルされますし、通常の場合画像の総数に比べて使われずに終わる画像の枚数は少ないでしょうし影響は小さいかと思います。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDeep Learning Toolbox についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!