定義
AI(人工知能)モデルが、用意されたすべての学習用データを最初から最後まで一度すべて見渡して学習するサイクルのことです。AIはデータセット全体を1周学習するたびに誤差を減らし、少しずつ精度を高めていきます。
問題集の「1周」とAIの学習法
試験勉強をするとき、分厚い問題集を最初のページから最後のページまで余すところなく解き終えることを「1周する」と言ったりしますよね。AIがデータを勉強するプロセスでも、まったく同じ考え方が使われます。
たとえば、AIに1万枚の写真を見せて猫を見分ける方法を学習させるとしましょう。AIが1万枚の写真をすべて一度ずつ見て、正解と見比べながらミスを確認し終えた状態、これこそが1エポックの学習を終えた状態です。もし10エポック学習させたなら、その1万枚の写真セットを最初から最後まで合計10回繰り返して復習したことになります。
コンピュータは人間と違って、複雑な写真やテキストのルールをたった一度見ただけでは完璧に理解できません。そのため、データ全体を何周も繰り返してニューラルネットワークのつながりの強さを微調整していく作業が、多くの場合で必要になります。ただし、データ量が膨大にある場合は1エポック前後で学習を終えることもあります。
もう少し正確に言うと:バッチとステップの関係
もう少し正確に説明すると、AIは1万枚という膨大なデータを一度に丸ごと詰め込むことはできません。コンピュータのメモリ容量には限界がありますし、全体を一度に計算してしまうとミスを修正するチャンスが1エポックに1度しか巡ってこず、学習の進みが遅くなってしまうからです。
そこで開発者は、データ全体を扱いやすい小さな塊に分割して、順番にコンピュータへ渡します。このとき、一度に渡すデータの塊のサイズをバッチサイズ(Batch Size)と呼びます。もし1万枚のデータを100枚ずつに小分けして学習する場合、100枚の塊を1回学習してミスを修正するプロセスを1回の「ステップ(Step)」または「イテレーション(Iteration)」と言います。
このように100枚の小分けセットを100回連続で学習し、用意された1万枚すべてを見終えたとき、はじめて1つのエポックが完了します。問題集1冊をいくつかの単元に分けて、1日何ページずつか解いて終わらせるのと同じ仕組みです。
エポックをひたすら増やしてはいけない理由
問題集を何百周も繰り返せば絶対に実力が上がりそうに思えますが、AIの世界ではそうとは限りません。エポック数が少なすぎると、データの本質的なルールすら身につかない未学習(アンダーフィッティング)が起きてしまいます。
逆にエポックを増やしすぎると、AIは問題の原理を理解する代わりに問題集そのものを丸暗記してしまうことがあります。これを専門用語で「過学習(オーバーフィッティング)」と呼びます。たとえば、練習用の猫の写真に写っている背景の汚れや照明の色まで正解の条件として覚えてしまい、いざ新しい猫の写真を見せられると正しく見分けられなくなってしまうのです。
そのため開発者は、学習を進めながら別の模擬試験用データ(検証データ)を解かせてみます。エポックが進む中で模擬試験の点数が上がらなくなったら学習をストップし、最もスコアが良かった時点のモデルを採用する早期終了(Early Stopping)というテクニックを使って、最適な学習回数を見極めています。
よくある誤解
エポック数を増やすほど、AIの性能は必ず良くなる。
エポック数が多すぎると、本質的な特徴だけでなく細かなノイズまで丸暗記してしまう過学習(オーバーフィッティング)が起き、未知の実データに対する性能がむしろ落ちてしまうことがあります。
日常で出会う場面
10万文の英語テキスト全体を1回ずつすべて読み込んで翻訳ルールを調整した場合、AIは1エポックを学習したことになります。
自動運転AIに100時間分の走行映像を50回繰り返し見せて運転パターンを学ばせるのは、50エポックの学習に相当します。
つまり ひとことで
エポックとは、AIが用意された学習データ全体を最初から最後まで一度すべて見渡して学習する「1周」のサイクルのことです。