【DeepLeaning】エポックとは?

Deep Learning とは何なのか・・・まったく知らない状態から挑戦してみたいと思います!

エポックとは?

「エポック(epoch)」は、データセットを反復して学習する際の単位を指します。
一つのエポックは、学習アルゴリズムがデータセット全体を一度処理することを意味します。

データセットが大量のサンプルで構成されている場合、一度に全てのデータを学習するのではなく
ミニバッチと呼ばれる一部のデータサンプルのグループに分けて学習を行うことが一般的です。
ミニバッチ学習では、各ミニバッチごとに重みとバイアスの更新が行われます。

エポック数は、学習アルゴリズムがデータセット全体を何回反復するかを指定するハイパーパラメータです。
一般的に、エポック数を増やすほどモデルはより多くのデータを見ることができますが同時に計算コストも増加します。
エポック数は、モデルの適合度や過学習のリスクを調整するために調整されることがあります。

例えば、データセットが1,000のサンプルで構成されておりミニバッチサイズを「100」とする場合、一つのエポックは10回のミニバッチ学習に相当します。
つまり、データセット全体が10回反復されます。

由来

エポックという言葉・・・覚えにくいですよね😉

「エポック(epoch)」という用語は、機械学習の文脈でよく使われる言葉ですが、その由来や具体的な理由は特定の起源にはありません

一つの理由は、この用語が古くから使われていたためそのまま引き継がれている可能性があります。
また、エポックは学習アルゴリズムがデータセット全体を一度処理することを表しており反復学習の単位を示すのに適していると考えられています。
エポックという単語自体が「時間の区切り」や「周期」を意味する言葉であるためデータセット全体を繰り返し処理する学習のイメージに合致している・・・ということのようです。

エポックと試行回数は異なる存在

「試行回数(iterations)」は、ミニバッチ学習において、重みとバイアスの更新が行われる回数を指します。
一つの試行回数ミニバッチを1回処理することを意味します。
つまり、試行回数は学習アルゴリズムが重みを更新するたびにカウントされます。

一方、「エポック(epoch)」は、データセット全体を一度処理することを指します。
エポック数は、学習アルゴリズムがデータセット全体を何回反復するかを示します。
エポック数はミニバッチ数と試行回数によって計算されますが、
ミニバッチ数が異なる場合でも、エポック数はデータセット全体を反復する回数を表す統一された指標です。

カウント

カウントの仕方は「試行回数」と「エポック」同じのようです。

ちょっとわかりにくいのですが、エポック1回目の時の試行1回目(ミニバッチ1つ目)のデータと エポック2回目の時の試行1回目(ミニバッチ1つ目)のデータは
異なるようです。

つまり、エポックごとにデータはシャッフルされるということらしいです。