誤差逆伝播法における順伝播と逆伝播の回数を決める要素とエポック数の関係

こんにちは。ゆうせいです。

ニューラルネットワークの学習において、入力から出力へ向かう順伝播(フィードフォワード)と、誤差を出力から入力へ戻して重みを更新する逆伝播(フィードバック)が何回行われるのかは、機械学習を理解する上で非常に重要な疑問です。結論から申し上げますと、これらの処理が行われる回数は「データセットの総数」「バッチサイズ」「エポック数」という3つの要素によって数学的に決定されます。エポック数も全体の回数に直接関係しています。

回数を決定する3つの基本要素

ニューラルネットワークの学習プロセスは、手元にあるデータを少しずつ読み込み、誤差を修正するという作業の繰り返しです。処理の回数を決める要素について解説します。

データセットの総数

学習に使用するデータの全体の数を指します。例えば、画像認識の学習に1万枚の画像を用意した場合、データセットの総数は1万となります。

バッチサイズ

1回の重み更新(1回の順伝播と逆伝播のセット)を行うために、ネットワークにまとめて入力するデータの数を指します。1万枚のデータがある場合でも、1枚ずつ処理するのか、100枚ずつ処理するのかを指定する必要があります。

エポック数

用意したデータセット全体を、ネットワークが何周学習するかを示す数値を指します。1エポックとは、すべてのデータをちょうど1回ずつ学習し終えた状態を意味します。

処理回数を捉える比喩と計算式

順伝播と逆伝播の回数を、学校のテスト勉強に例えて考えてみましょう。

データセットの全体を「100問の問題集」とします。 バッチサイズを「10問」と設定します。これは、10問解くごとに答え合わせをして、自分の理解度を修正(逆伝播)することを意味します。 エポック数を「3」と設定します。これは、同じ問題集を最初から最後まで3周繰り返して解くことを意味します。

1エポックあたりの更新回数

問題集1周につき、何回答え合わせをするかを計算します。 100問 / 10問 = 10回 つまり、1エポックの中で順伝播と逆伝播のセットは10回(この回数をイテレーションと呼びます)行われます。

全体の更新回数

問題集を3周するため、全体の回数は以下のようになります。 10回 * 3エポック = 30回 学習が完了するまでに、順伝播と逆伝播のセットは合計30回行われることになります。

したがって、エポック数が増えれば増えるほど、全体の順伝播と逆伝播の回数も正比例して増加します。

計算問題:画像認識モデルの学習回数

ある人工知能に画像認識の学習を行わせる場面を想定します。以下の条件が与えられたとき、問1および問2の答えを計算してください。

条件 データセットの総数:50000枚の画像 バッチサイズ:100(1回の重み更新に使用する画像の数) エポック数:20(全データを学習する周回数)

問1:1エポックあたりの重み更新回数

すべての画像をちょうど1回ずつ読み込み終えるまでに、順伝播と逆伝播のセットは何回行われますか。専門用語でイテレーション数と呼ばれる数値を求めてください。

問2:学習全体を通した総更新回数

学習が完全に終了するまでに、順伝播と逆伝播のセットは合計で何回行われますか。

計算問題の解答と解説

それぞれの問題に対する解答と、その計算式を解説します。

問1の解答

解答:500回

計算式:50000 / 100 = 500

解説:50000枚のプリント(データ)を、100枚ずつの束(バッチ)に分けてホッチキスで留める作業を想像してください。すべてのプリントを束ね終えるには、ホッチキスを留める作業(重みの更新)を500回行う必要があります。算出された500回という数字が、1エポックにおけるイテレーション数となります。

問2の解答

解答:10000回

計算式:500 * 20 = 10000

解説:問1で求めた「プリント50000枚を100枚ずつ束ねる作業」を1セットとし、同じ作業を最初から最後まで20周(20エポック)繰り返します。1周あたり500回の作業を20回繰り返すため、学習全体での総更新回数は10000回となります。

数値の変更によるメリットとデメリット

もし上記の条件からバッチサイズを200に変更した場合、どのような影響が出るのかを事実に基づいて整理します。バッチサイズを2倍にすると、1エポックあたりのイテレーション数は250回に半減します。

メリット

  • 処理速度の向上:一度に計算するデータ量が倍になるため、並列計算の効率が上がり、学習にかかる全体の時間が短縮されます。

デメリット

  • 修正機会の減少:重みを更新する回数が半減するため、細やかな誤差の修正が行われにくくなります。
  • 負荷の増加:一度に読み込むデータ量が増えるため、コンピューターのメモリ消費量が大きくなります。

まとめ

順伝播と逆伝播が行われる総回数は、単一の数値ではなく、データ総数、バッチサイズ、エポック数の組み合わせによって決まります。

  1. データの総数をバッチサイズで割った数が、1エポックあたりの更新回数となります。
  2. 上記の数値にエポック数を掛けたものが、学習全体を通して行われる順伝播と逆伝播の総回数となります。

適切な数値を設定し、計算資源と学習の精度のバランスを取ることが、人工知能の構築において不可欠な作業です。

学習のステップ

  1. お手持ちのデータセットの総数を確認し、バッチサイズを32や64に設定した場合の1エポックあたりの更新回数(イテレーション数)を計算してみてください。
  2. ミニバッチ学習という用語を調べ、データを分割して学習する手法がなぜ標準的に用いられているのかを学習してください。
  3. エポック数を増やすことによって生じる過学習を防ぐための仕組みである、アーリーストッピング(早期終了)という技術の概念を確認してください。

ご自身の学習環境で具体的な数値を当てはめて計算してみると、より理解が深まると思います。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。