【PR】この記事には楽天アフィリエイト・Amazonアソシエイトの広告リンクが含まれます。商品やサービスは公式の仕様・条件と販売情報を確認して選んでおり、実機テストによる評価ではありません。 Amazonのアソシエイトとして、PROBEFOLIOは適格販売により収入を得ています。

過学習は、機械学習のモデルが学習用のデータに合わせすぎて、新しいデータで正しく予測できなくなる状態です。テスト勉強で問題集の答えを丸暗記し、少し形を変えた本番の問題で解けなくなるのに似ています。

この記事では、2026年9月25日に確認したGoogleの機械学習の教材などをもとに、過学習の見つけ方と、状況に合う対策の選び方を説明します。

この記事の目次
01

結論:検証用データで見つけ、原因に合わせて対策を選ぶ

Googleの機械学習の教材は、過学習を「学習用のデータに合わせすぎて(暗記して)、新しいデータで正しく予測できないモデルを作ること」と説明しています。

対策を選ぶ前に、学習に使わない検証用のデータを分けておき、過学習が起きているかを確かめることが出発点です。そのうえで、原因がデータ不足なのか、モデルが複雑すぎるのかで対策を選びます。

主な対策と向いている場面は、表「過学習の主な対策」のとおりです。

過学習の主な対策
対策何をするか向いている場面
データを増やす学習用の例を集め直す、追加するデータが少ない・偏っている
データの水増し画像の反転などで例を増やす画像・音声で集めるのが大変
モデルを小さくする層やニューロンを減らすデータに比べてモデルが大きい
正則化重みが大きくなりすぎないよう罰を足すモデルを保ったまま抑えたい
ドロップアウト学習中にニューロンをランダムに休ませるニューラルネットワーク
早期終了検証用の損失が上がり始めたら止めるどんなモデルでも手軽に
02

過学習とは:問題集の丸暗記にたとえる

問題集を何度も解くうちに、問題の中身ではなく「この問題の答えはウ」と答えの位置を覚えてしまうことがあります。問題集では満点でも、本番で少し形が変わると解けません。

過学習したモデルも同じです。学習用のデータの細かいくせや偶然のばらつきまで覚えてしまい、本当に大事な傾向をつかめていません。

そのため、学習用のデータでの成績だけを見ていると、過学習に気づけません。本番に近い、学習に使っていないデータで確かめることが欠かせません。

03

過学習が起きる2つの原因

Googleの教材は、過学習の原因を大きく2つに分けています。

  1. 学習用のデータが現実を代表していない:データが少ない、特定の時期や条件に偏っている、など。
  2. モデルが複雑すぎる:データの量に比べて、層や重みが多すぎる、など。

どちらの原因かで、効く対策が変わります。データが原因ならデータを直し、モデルが原因ならモデルを小さくするか、複雑になりすぎないよう抑えます。

04

見つける準備:データを3つに分ける

過学習を見つけるには、手元のデータを学習に使う分と、確かめる分に分けておく必要があります。よく使われるのは、学習用・検証用・テスト用の3つに分ける方法です。

学習用でモデルを学習させ、検証用で設定を調整し、最後にテスト用で1回だけ本番の成績を確かめます。テスト用を何度も使って調整すると、テスト用にも合わせすぎてしまうためです。

Googleの教材は、良く一般化するためには、分けたデータどうしの傾向が似ている必要があるとも説明しています。分け方が偏ると、確かめても意味がありません。

データの分け方
分けたデータ使い道注意
学習用重みを学習させる一番多く割り当てる
検証用設定を調整し、過学習を見つける学習には使わない
テスト用最後に本番の成績を1回だけ測る調整に使わない
05

見つけ方:学習用と検証用の損失の曲線を並べる

過学習は、学習の回数ごとの損失をグラフにした「損失の曲線」で見つけます。学習用と検証用の2本の曲線を並べて見るのがポイントです。

Googleの教材は、ある時点から、学習用の損失は下がるか横ばいなのに、検証用の損失が上がり始めたら過学習だと説明しています。2本の曲線が離れていく所が、過学習の始まりです。

曲線の形ごとの見方は、表「損失の曲線の見方」のとおりです。

損失の曲線の見方
2本の曲線の様子状態次にすること
どちらも下がって横ばいうまく学習できているそのまま使う
学習用は下がり、検証用が上がる過学習対策を選ぶ
どちらも高いまま学習不足(未学習)モデルを大きくする、学習を続ける
06

過学習以外の、損失の曲線の異常

損失の曲線がおかしいとき、原因が過学習とは限りません。Googleの教材は、曲線の形ごとに、次のような原因と対策を挙げています。

過学習だと思って対策を足す前に、表「損失の曲線の異常と原因」で、ほかの原因ではないかを確かめてください。データの問題を直さないまま対策を足しても、効果は出ません。

損失の曲線の異常と原因(Googleの教材より)
曲線の様子考えられる原因対策
不規則に上下して落ち着かないおかしな例が混ざっている、学習率が大きいデータを確かめる、学習率を下げる
途中で急に跳ね上がる入力に計算できない値(NaN)や外れ値の固まりデータの値を確かめる
四角い波のように同じ形を繰り返すデータがよく混ぜられていない例の順番をよく混ぜる
検証用だけが上がっていく過学習モデルを単純に、正則化を強く
07

例で見る:家賃の予測で起きる過学習

駅からの距離と広さから、家賃を予測するモデルを考えます。10件の物件だけで、とても複雑なモデルを学習させると、10件の家賃はほぼぴったり当てられるようになります。

ところが、新しい物件の家賃を予測させると、大きく外れることがあります。10件の中の「たまたま安かった物件」のようなばらつきまで覚えてしまったためです。

この場合、物件の数を増やすか、モデルを単純にして「距離が遠いほど安く、広いほど高い」という大きな傾向をつかませるほうが、新しい物件によく当たります。

08

状況別の選び方:どの対策から試すか

対策はたくさんありますが、状況によって効きやすいものが違います。自分の状況に近い行から試してください。

迷ったら、「データを見直す → モデルを小さくする → 正則化やドロップアウトを足す → 早期終了で止めどきを決める」の順で考えると、原因に近い所から手を打てます。

状況別に最初に試す対策
状況最初に試す対策次に試す対策
データが数百件しかないデータを集める・水増しするモデルを小さくする
データは多いがモデルが大きい正則化・ドロップアウト層やニューロンを減らす
学習を長く続けると悪くなる早期終了学習率を下げる
特定の時期・条件のデータだけ条件の違うデータを足す分け方を見直す
コードを書かずにツールで作るツールの検証の表示を見るデータの量と偏りを見直す
09

対策1:データを増やす・偏りを直す

一番効きやすい対策は、学習用のデータを増やすことです。例が多いほど、偶然のばらつきに引きずられにくくなり、大事な傾向をつかみやすくなります。

数を増やすだけでなく、偏りを直すことも大切です。夏のデータだけで学習したモデルは、冬に外れやすくなります。本番で出会う条件を、学習用のデータにも含めます。

データを集めるのが難しい場合は、次の節の水増しや、学習済みのモデルを使う転移学習も選択肢になります。

10

対策2:データの水増し

画像のデータなら、左右を反転する、少し回す、明るさを変える、といった加工で、1枚の写真から何枚もの例を作れます。これをデータの水増し(データ拡張)と呼びます。

TensorFlowの転移学習のチュートリアルでも、過学習を防ぐために、画像をランダムに反転・回転させる水増しを使っています。

ただし、加工で意味が変わってしまう場合は使えません。文字の画像を左右反転すると別の文字に見えるように、加工しても正解が変わらないかを確かめてから使います。

11

対策3:モデルを小さく、単純にする

データの量に比べてモデルが大きすぎると、細かいくせまで覚えてしまいます。層の数やニューロンの数を減らし、モデルを単純にするのが直接の対策です。

家賃の例のように、単純なモデルのほうが、新しいデータにはよく当たることがあります。「大きいモデルほど良い」とは限りません。

どこまで小さくするかは、検証用の損失を見ながら決めます。小さくしすぎると、今度は学習用でも当たらない学習不足になります。

12

対策4:正則化で重みを抑える

正則化は、重みが大きくなりすぎないように、損失に「罰」を足す方法です。重みが大きいほど損失が増えるので、モデルは必要以上に複雑な形を作りにくくなります。

Googleの教材は、代表的な方法としてL2正則化を説明しています。重みの2乗の合計を罰として足し、罰の強さは正則化の率という値で調整します。

正則化の率を高くすると過学習の危険は下がり、低くすると上がる、と説明されています。

罰が強すぎると、モデルが単純になりすぎて学習不足になります。検証用の損失が一番小さくなるように、強さを調整します。

13

対策5:ドロップアウトでニューロンを休ませる

ドロップアウトは、ニューラルネットワークの学習中に、ニューロンの一部をランダムに休ませる方法です。Googleの教材は、1回の更新ごとにランダムにユニットの出力を落とす正則化だと説明しています。

毎回違うニューロンが休むので、特定のニューロンだけに頼った覚え方ができなくなります。チームの誰が休んでも仕事が回るように、全員が仕事を覚えるのに似ています。

休ませる割合は0.0〜1.0で決め、大きいほど効きが強くなります。答えを出すとき(推論)は、全部のニューロンを使います。

14

対策6:早期終了で止めどきを決める

早期終了は、検証用の損失が上がり始めたら、そこで学習を止める方法です。損失の曲線で見た「2本が離れ始める所」で止めるイメージです。

一番手軽で、どんなモデルにも使えるのが利点です。実際には、「検証用の損失が何回続けて改善しなかったら止める」と決めておき、一番良かったときの重みを使います。

Googleの教材は、早期終了を「手軽だが、最善になることはまれ」な正則化の方法だと説明しています。手軽な分、ほかの対策の代わりにはなりにくい点を覚えておきます。

ほかの対策と組み合わせることも多く、「正則化やドロップアウトを入れたうえで、早期終了で止めどきを決める」という使い方が一般的です。

15

対策7:交差検証で評価のぶれを減らす

データが少ないと、検証用に分けたデータがたまたま簡単・難しい、ということが起きます。そうなると、過学習しているかどうかの判断もぶれます。

交差検証は、データをいくつかに分け、検証に使う部分を入れ替えながら何回か学習と評価をする方法です。結果を平均するので、評価のぶれが小さくなります。

交差検証は、過学習を直接直す方法ではありませんが、過学習を正しく見つけるための方法として役立ちます。

16

生成AIの微調整でも過学習は起きる

大規模言語モデルを自社のデータで微調整(ファインチューニング)するときも、過学習は起きます。少ない例で何度も学習させると、その例の言い回しばかりを返すようになり、ほかの質問への答えが崩れることがあります。

TensorFlowのチュートリアルも、学習済みのモデルは、先に土台を固定して新しい部分だけを学習させ、そのあとで一部を解いて微調整する順番を示しています。

LoRAのように、学習するパラメータを大きく減らす方法もあります。論文では、GPT-3の全体を微調整する場合と比べ、学習するパラメータを1万分の1にできたと報告されています。

17

コードを書かない人が確かめること

ノーコードの機械学習ツールや、表計算の予測機能を使う場合も、過学習の考え方は同じです。次の3つを確かめてください。

  1. 検証用のデータで成績を見ているか:ツールの画面で、学習用とは別のデータでの成績が表示されているかを見る。
  2. 学習用と検証用の成績の差が大きすぎないか:学習用だけが極端に良ければ、過学習を疑う。
  3. データの量と偏りは十分か:件数が少ない、特定の条件のデータだけ、という状態になっていないかを見る。

数字の意味が分からないときは、ツールの説明で「検証」「評価」の項目を探すと、どこを見ればよいかが分かります。

18

反対の失敗:学習不足にも気をつける

過学習を恐れて対策を強くしすぎると、今度は学習不足(未学習)になります。学習用のデータでも、検証用のデータでも当たらない状態です。

学習不足のときは、モデルを大きくする、学習を長くする、正則化を弱める、といった逆向きの手を打ちます。

目指すのは、学習用と検証用の両方でよく当たる、ちょうどよい所です。2本の損失の曲線を見ながら、行き過ぎと足りなさの間を探します。

19

使い始めた後も、定期的に確かめる

モデルを作った時点で過学習していなくても、使い続けるうちに当たらなくなることがあります。世の中の傾向が変わり、学習したときのデータと、今のデータがずれていくためです。

Googleの教材も、良く一般化するためには、データが時間とともに大きく変わらないことが必要だと説明しています。

使い始めた後も、新しいデータでの成績を定期的に確かめ、下がってきたら新しいデータで学習し直します。過学習の対策と同じく、「学習に使っていないデータで確かめる」ことが基本です。

20

過学習を防ぐための確認リスト

最後に、モデルを作るときの確認をまとめます。上から順に確かめてください。

  • 学習用・検証用・テスト用にデータを分け、テスト用は調整に使っていない
  • 学習用と検証用の損失の曲線を並べて見た
  • データの量と偏りを確かめ、足りなければ集める・水増しする
  • モデルの大きさがデータの量に見合っている
  • 正則化・ドロップアウト・早期終了のどれを使うかを決めた
QUICK ANSWERS

よくある疑問を、ここで。

使い始める前に、気になるところから。

過学習を一言でいうと?

学習用のデータに合わせすぎて(暗記して)、新しいデータで正しく予測できなくなる状態です。問題集の答えを丸暗記して、本番の問題が解けなくなるのに似ています。

過学習はどう見つけますか?

学習用と検証用の損失の曲線を並べて見ます。学習用の損失は下がるか横ばいなのに、検証用の損失が上がり始めたら過学習です。

一番効く対策はどれですか?

原因によります。データが少ない・偏っているならデータを増やすことが一番効きます。データは十分でモデルが大きいなら、正則化・ドロップアウト・モデルを小さくすることを試します。

未学習(学習不足)との違いは?

過学習は学習用では当たり新しいデータで外れる状態、未学習は学習用でも当たらない状態です。対策の向きが逆なので、損失の曲線でどちらかを見分けてから手を打ちます。

生成AIの微調整でも過学習は起きますか?

起きます。少ない例で何度も学習させると、その例の言い回しばかりを返すようになることがあります。学習の回数を抑え、検証用の質問で答えの質を確かめながら進めてください。

この記事を共有する

X(旧Twitter)(新しいタブで開きます)LINE(新しいタブで開きます)はてなブックマーク(新しいタブで開きます)

商品情報の提供:Supported by Rakuten Developers

SOURCES & EDITORIAL NOTE

出典と、この記事について

公式資料や、記事で参照した発表・報道をまとめています。仕様や料金は、利用する前に最新の案内をご確認ください。

確認した内容と条件は本文に記載しています。結果や使い勝手は、資料や環境によって異なります。編集方針を読む