skip to content

過学習(オーバーフィッティング)の原因とは?

/ 11 min read

Table of Contents

「訓練データでは高い精度なのに、未知データでは精度が大きく低下する」という 過学習(オーバーフィッティング・カーブフィッティング) は、あるあるな話です。

バックテストは良くて、ライブでは使いものにならない話は、もう聞き飽きたことでしょう。

その先に行かなければなりません。

過学習について、予測誤差を構成する「バイアス(Bias)」「バリアンス(Variance)」「ノイズ(Noise)」 という3つの要素から考えてみます。

また、アンダーフィットとオーバーフィットの違いを整理しながら、ニューラルネットワークで過学習が起こる理由と、その代表的な対策であるアンサンブル学習についても解説します。

予測誤差は3つの要素で構成される

機械学習では、予測誤差は概念的に次の3つの要素で構成されると考えられています。

  • Bias(バイアス):モデルの表現力不足によって生じる誤差
  • Variance(バリアンス):学習データによってモデルが変化することで生じる誤差
  • Noise(ノイズ):データそのものに含まれる避けられない誤差

モデルの性能を向上させるには、バイアスとバリアンス を見る必要があります。

アンダーフィットとは

アンダーフィット(Under fitting)とは、モデルがデータの特徴を十分に学習できていない状態です。

例えば、

  • モデルが単純すぎる
  • 学習回数が不足している
  • モデルの容量が小さすぎる

といった場合に発生します。

この状態では、訓練データに対しても十分な精度が得られず、未知データに対する性能も向上しません。

アンダーフィットは高バイアス

アンダーフィットは、一般的に 高バイアス(High Bias) の状態と考えられます。

バイアスとは、モデルそのものが持つ「表現力の限界」による誤差です。

モデルが単純すぎるため、データの本質的な関係を表現できず、学習データを増やしても大きな改善は期待できません。

つまり、アンダーフィットの原因は、

モデルの表現力が不足していること

にあります。

オーバーフィットとは

一方で、モデルの表現力が高くなると、訓練データを必要以上に学習してしまうことがあります。

これが オーバーフィット(Over fitting) です。

オーバーフィットしたモデルは、

  • 訓練データでは非常に高い精度を示す
  • 未知データでは精度が低下する

という特徴があります。

ニューラルネットワークは高い表現力を持つため、適切な正則化を行わないと、この状態になりやすいモデルです。

オーバーフィットは高バリアンス

ニューラルネットワークの過学習は、多くの場合、高バリアンス(High Variance) として説明できます。

バリアンスとは、

学習データが少し変わるだけで、学習されるモデルが大きく変化する性質

を表します。

ニューラルネットワークは多数のパラメータを持つため、

  • 学習データ
  • 重みの初期値
  • ミニバッチの順序

などが少し変わるだけでも、最終的に得られるモデルは変化します。

例えば、私が構築している73特徴量・3層ニューラルネットワークでも、学習データをブートストラップサンプリングして複数回学習すると、モデルごとに重みの付き方や予測結果に違いが生まれます。

これは、高い表現力を持つニューラルネットワークが、本質的に高バリアンスなモデルであることを示しています。

Low/High Variance and Variance Reduction

高バリアンスを抑える方法

高バリアンスを抑える代表的な手法として、次のようなものがあります。

  • Weight Decay(L2正則化)… ない場合と比べると明らかに効果あり
  • Dropout … ない場合と比べると明らかに効果あり
  • Early Stopping
  • Data Augmentation
  • アンサンブル学習

これらはいずれも、モデルが訓練データに過度に適応することを防ぎ、未知データへの汎化性能を向上させることを目的としています。

その中でも、特に効果を実感しているのが アンサンブル学習 です。

アンサンブル学習とは

アンサンブル学習とは、複数のモデルを学習し、それらの予測を組み合わせる手法です。

一つのモデルだけで予測するよりも、複数のモデルの予測を平均した方が、偶然の誤差が打ち消され、より安定した予測が得られます。

その仕組みは、Variance Reduction 上図の通り、とてもシンプルです。

ニューラルネットワークでは、複数モデルの予測値を平均する Mean Ensemble がよく利用されています。

バギング(Bagging)

Mean Ensembleを実現する代表的な方法が バギング(Bootstrap Aggregating) です。

バギングでは、元の学習データからブートストラップサンプリングを行い、それぞれ異なるデータセットで複数のニューラルネットワークを学習します。

最後に、それぞれのモデルの予測を平均します。

モデルごとに学習するノイズや過学習の仕方は少しずつ異なるため、それらを平均することでランダムな誤差が相殺され、予測のばらつきが小さくなります。

現在構築している73特徴量・3層ニューラルネットワークでは、22個のモデルをバギングで学習し、Mean Ensembleを行っています。

単体モデルでは、一時的なノイズに反応して過剰にエントリーするケースが見られました。一方、22モデルの予測を平均すると、そのような 単体モデル特有の過剰なエントリーが抑えられ、より安定したシグナル になっています。

これは、各モデルが異なるデータで学習した結果、過学習の現れ方も少しずつ異なるためです。Mean Ensembleによって、それらのランダムなばらつきが平均化され、高バリアンスが低減された結果と考えています。

もちろん、すべての誤りがなくなるわけではありません。データそのものに偏りがある場合や、すべてのモデルが同じ誤ったパターンを学習した場合は、アンサンブルでも改善は限定的です。

それでも、単体モデルよりも予測が安定し、過剰なエントリーを抑えられる という点は、実運用において大きなメリットだと感じています。

ただし万能ではない

アンサンブル学習が効果を発揮するのは、モデルごとに異なる ランダムな誤差 です。

一方で、すべてのモデルが同じ誤ったパターンを学習してしまった場合は、平均してもその誤りは残ります。

つまり、

  • バイアスが原因の誤差は、アンサンブルではほとんど改善できません。
  • バリアンスが原因の誤差は、平均化によって小さくできます。

この点は、アンサンブル学習を理解する上で重要なポイントです。

まとめ

予測誤差は、「バイアス」「バリアンス」「ノイズ」の3つの要素で考えることができます。

アンダーフィットは高バイアスによって生じ、モデルの表現力不足が原因です。

一方、ニューラルネットワークの過学習は、多くの場合、高バリアンスとして説明できます。高い表現力を持つからこそ、学習データや初期条件の違いに敏感になり、未知データへの汎化性能が低下します。

そのため、Weight DecayやDropout、Early Stoppingなどで過学習を抑えつつ、バギングやMean Ensembleによって複数のモデルを平均化することは、高バリアンスを抑える有効な方法です。

73特徴量・3層ニューラルネットワークにバギングとMean Ensembleを組み合わせることで、予測の安定性や汎化性能の向上を確認できました。

過学習を「バイアス」と「バリアンス」の観点から理解すると、なぜこれらの手法が有効なのかが見えてきます。そして、この考え方はニューラルネットワークだけでなく、多くの機械学習モデルに共通する重要な基礎知識と言えるでしょう。