過学習とは?意味・仕組みと評価データの混入を扱った論文(2026年11月時点)

過学習(かがくしゅう)

オーバーフィッティング / 過剰適合 / Overfitting

過学習とは、AI のモデルが学習に使ったデータに合わせすぎて、新しいデータで正しく予測できなくなる状態のこと。学習用と検証用のデータで損失を比べると見つけられる。

要するに

  • 学習用では損失が下がるのに検証用で上がっていけば、過学習のしるしになる
  • データを増やす、正則化、ドロップアウト、早期終了などで過学習を減らせる
  • LLM ではベンチマークの問題が学習データに混ざる汚染が、評価の妨げになる

最終確認

暗い面に置いた白い球の上に波打つようにかぶさるすりガラスの板と、板のふちに沿う紫の細い光、まわりの小さな球
目次8

ひとことで言うと

過学習は、AI のモデルが学習に使ったデータに合わせすぎて、新しいデータで正しく予測できなくなる状態だ。Google の機械学習の講座「Machine Learning Crash Course」は、学習用のデータを記憶するほどぴったり合わせたモデルと説明している。オーバーフィッティング、過剰適合とも呼ぶ。

身近な例として、Google の講座は過学習したモデルを、実験ではよく動くのに実際の世界では役に立たない発明にたとえている。

仕組み

過学習を見つける流れを、Google の講座をもとに書くと次のようになる。

  1. 元のデータを3つに分ける。モデルが学ぶ学習用(トレーニング セット)、学習中の出来を確かめる検証用(バリデーション セット)、最後に確かめるテスト用(テスト セット)だ。Google の用語集は、1つの例が2つ以上の組に入らないのが理想だとしている。
  2. 学習用のデータで学ばせ、検証用のデータで結果を見る。学習率(1回の更新で重みをどれだけ強く動かすかを決める数)を変える、特徴を足したり減らしたりするなどの手直しをしては、検証用のデータで測り直す。
  3. 損失(モデルの予測が正解からどれだけ外れているかの値)を、学習の回数に沿って学習用と検証用の2本の線で比べる。Google の講座によると、ある回数を過ぎて、学習用では損失が下がるか横ばいになるのに、検証用では上がっていくなら、過学習のしるしだ。
  4. 検証用のデータで良い結果が続いたら、テスト用のデータでもう一度確かめる。

Google の講座は過学習の原因として、学習用のデータが実際のデータを十分に表していないことと、モデルが複雑すぎることの2つを挙げている。

過学習を減らす主な方法を順に挙げる。

まず、データを増やす方法がある。Google の用語集は大きく多様な学習用のデータで学ばせることも過学習を減らせると書いている。画像が足りないときに、画像を回転、伸縮、反転させて例を増やすデータ拡張(data augmentation)も説明している。

正則化は、複雑なモデルに罰を与え、学習の中で単純にさせる方法だ。よく使う L2 正則化は重みを2乗して足した値を複雑さとして損失に加える。Google の講座によると、正則化の強さ(正則化率)を上げると過学習の可能性が下がり、0にすると過学習の危険がいちばん高くなる。

ドロップアウトは、ニューラルネットワークの学習中に、ユニット(ニューロンにあたる計算の単位)を結合ごとランダムに外す方法だ。2014年に JMLR に載った Srivastava、Hinton らの論文は、これでユニット同士が合わせすぎるのを防げると説明し、画像、音声認識、文書分類、計算生物学の教師あり学習の課題で性能が上がったと報告している。

早期終了は、検証用のデータの損失が上がり始めたところで学習を止める。Google の講座は速いがめったに最適ではない正則化の方法だとしている。

評価のしかたでは、交差検証という方法もある。scikit-learn のドキュメントによると、k 分割交差検証では学習用のデータを k 個に分け、k−1 個で学ばせて残りの1個で測ることを k 個の組それぞれで行い、その平均を成績とする。検証用のデータを別に取っておくより、学習に使えるデータを減らさずにすむ。

表で見る最新の状況

上の「過学習と評価データの混入に関わる論文」には、TRAIL が解説した論文から、言語モデルや画像生成モデルで、学習データへの合わせすぎや評価データの混入を扱った5本を古い順に並べた。LLM の分野では、ベンチマークの問題が学習データに入ってしまうことを汚染(コンタミネーション)と呼ぶ。

  • 2019年2月の GPT-2 の技術報告:学習データと評価集合で、8トークンの連続した並びが一致する割合を調べた。一部の課題では、重複による汚染のリスクがあると注意している。
  • 2020年5月の GPT-3 の論文:ベンチマークごとに、事前学習のデータと 13-gram が重なる例をおおまかな目安として除いた版を作り、点数を比べた。学習データから重なりを除く作業は、不具合で一部しかできなかったと書いている。PIQA と Winograd の結果には汚染の証拠がいくらか見つかり、印を付けた。
  • 2022年8月の DreamBooth の論文:被写体の写真を通常3〜5枚使って画像生成モデルを調整する。失敗の例の1つに、元の写真に近い場面を指示すると入力の写真に過適合する例を挙げている。
  • 2024年6月の LiveBench の論文:最近の数学の大会、arXiv の論文、ニュース、データセットをもとに問題を作り、毎月問題を足したり更新したりする評価だ。
  • 2024年7月の Llama 3 の技術報告:評価データとの重複を除く手順も報告に含めた。ただし、既知の評価の問題に対する手順で、知られていない混入がないことの証明ではない。

GPT-3 の論文は、ネットの規模のデータから汚染を正確に見つける方法は新しい研究の分野で、確立したやり方がないと書いている。汚染を除く手順を報告した論文でも、混入がまったくないとは言い切っていない。

過学習と学習不足(アンダーフィッティング)の違い

学習不足(アンダーフィット) ちょうどよい適合 過学習(オーバーフィット)
学習用のデータでの予測 よくない よい とてもよい
新しいデータでの予測 よくない よい よくない
Google の講座のたとえ 実験室でもうまくいかない製品 なし 実験室ではうまくいくが、実際の世界ではうまくいかない製品
主な原因 合わない特徴での学習、少なすぎる学習の回数、強すぎる正則化、少なすぎる隠れ層 なし 実際のデータを表していない学習用のデータ、複雑すぎるモデル
scikit-learn の例(コサインの曲線に多項式を当てはめる) 1次の式 4次の式でほぼ完全に近い 15次などの高い次数で、学習用のデータのノイズまで学ぶ

Google の講座は過学習の反対を汎化(新しいデータで正しく予測できること)と呼んでいる。目指すのは汎化するモデルだ。

仕事でどう関係するか

社内のデータで予測のモデルを作ってもらうとき

学習に使ったデータでの成績だけでは、モデルの良し悪しは分からない。Google の講座はデータを分けたあと、学習用のデータと同じ例を検証用とテスト用から消すように書いている。迷惑メールを判定する例では、学習用とテスト用を80対20に分けたところ、どちらでも99%の適合率(precision)が出た。調べると、テスト用に学習用と同じ例が多く入っていた。

外部の会社や社内の担当者に開発を頼むときは、次のように確かめられる。

プロンプト
この予測モデルの評価について教えてください。
・学習用、検証用、テスト用のデータをどう分けましたか
・学習用と同じ例が、検証用とテスト用に入っていないことを確かめましたか
・学習用と検証用の損失を、学習の回数に沿って比べたグラフはありますか

発表されたベンチマークの点数を読むとき

ベンチマーク(AI の性能を測る共通の問題)の問題が公開されていると、のちのモデルがその問題を学習で見てしまうことがある。LiveBench の論文は、ベンチマークのテストのデータが新しいモデルの学習データに入ることを、公平な評価の妨げとしている。発表の点数を読むときは、問題が作られた時期と、開発元が重なりを調べたかを確かめる。

ファインチューニングを頼む・自分で行うとき

ファインチューニング(学習済みのモデルを追加のデータで調整すること)でも過学習は起きる。OpenAI の API のドキュメントは、調整したモデルが初めは良くなっても、やがてデータセットを丸暗記してしまう例を過学習として挙げている。OpenAI は学習の1周(エポック)ごとにチェックポイント(途中のモデル)を作るが、現在、保存されて使えるのは最後の3エポックの分だけだ。調整の結果は学習に使っていない例で確かめる。

データが少ないとき

データを3つに分けると、学習に使える例が大きく減る。scikit-learn のドキュメントは、どの例を学習用と検証用に分けるかの偶然で結果が変わるとも書いている。交差検証は計算に時間がかかるが、データを無駄にしにくく、例がとても少ない問題で大きな利点があるという。ただし、最後に確かめるテスト用のデータは、交差検証でも別に残しておく。

注意点と限界

テスト用と検証用のデータも、使い回すうちにあてにならなくなる。Google の講座は同じデータで設定を何度も決めるほど、新しいデータでうまく予測できるという確かさが下がると書き、データを集めて検証用とテスト用を新しくすることを勧めている。scikit-learn のドキュメントによると、テスト用のデータを見ながら設定(ハイパーパラメーター)を調整すると、テスト用のデータにも過学習するおそれがある。テスト用の情報がモデルに漏れ、成績が汎化の性能を表さなくなる。

正則化を強くしすぎると、今度は学習不足になる。Google の用語集は、正則化率が高すぎることを学習不足の原因の1つに挙げている。早期終了は手軽だが、ちょうどよい正則化率で十分に学ばせたモデルほど良くなることは、Google の講座によるとほとんどない。

データを正しく分けても、学習用と実際のデータの性質が違えば、新しいデータでうまく予測できるとは限らない。Google の講座は、例が互いに影響しないこと、データが時間とともに大きく変わらないこと、学習用、検証用、テスト用、実際のデータが統計的に似ていることを、汎化の条件に挙げている。

よくある質問

過学習とは簡単に言うと何か

学習に使ったデータには強いが、新しいデータには弱いモデルになることだ。Google の講座は学習用のデータを記憶するほど合わせたモデルと説明している。

過学習はどうやって見つけるのか

学習用と検証用のデータで、損失を学習の回数に沿って比べる。学習用では損失が下がるか横ばいなのに、検証用では上がっていけば、過学習のしるしだ。

過学習とアンダーフィッティングの違いは何か

過学習は学習用のデータでは予測がよく、新しいデータでは悪い。アンダーフィッティング(学習不足)は、学習用のデータでさえ予測がよくない。Google の講座はこの2つと、ちょうどよい適合を並べて説明している。

過学習を防ぐにはどうすればよいか

大きく多様な学習用のデータを使う、正則化を入れる、ドロップアウトを使う、検証用のデータの損失が上がり始めたら学習を止める、といった方法がある。交差検証は、モデルが新しいデータにどれだけ通用するかを見積もる方法だ。どの方法でも、学習に使っていないデータで確かめることは変わらない。

LLM でも過学習は起きるのか

起きる。OpenAI のドキュメントは、ファインチューニングで調整したモデルがデータセットを丸暗記する例を過学習として挙げている。一方、GPT-3 の論文は最大の175B のモデルでも、重複を除いた検証用のデータと比べて、学習用のデータに大きく過学習してはいないと書いている。

データの汚染(コンタミネーション)とは何か

ベンチマークのテストの問題がモデルの学習データに入ってしまうことだ。モデルが問題を見たことがあると、点数が実力より高く出るおそれがある。GPT-3 の論文は汚染を調べたが、多くの場合で点数はほとんど変わらなかったと報告している。

関連する用語

出典

公開
執筆
TRAIL編集部(編集方針)