大きな画面での利用をおすすめします — アニメーションと操作がより快適になります。
入力

過学習と検証

過学習は、現在の標本だけに合う細部を学び、未知データへ一般化できなくなることです。検証では一部のデータをパラメータの当てはめから外し、そのスコアで学習時の改善が未知データにも通用するか調べます。

本課は同じノイズ付き 10 点へ多項式を当てはめます。9 次は学習誤差がゼロと表示されても、検証誤差は 3 次の 899 倍です。入れ子の正則化なしモデルクラスでは、厳密な最適学習誤差は容量を増やしても上がらないため、それだけで容量を選べません。実際の数値計算や非凸最適化で単調性が自動保証されるわけではありません。

過学習が起きる仕組み

元の関数は y = 0.8·sin(πx)、x ∈ [−1, 1] で、各測定へガウスノイズを加えます。関数の形は繰り返しますが、ある点のノイズは次の標本で再現するとは限りません。

d 次多項式は d+1 個の係数を持ち、次数が容量の操作項目です。1 次は直線しか描けず、曲線を捉えられない未学習の状態です。この区間の正弦は二つの折り返しを持ち、原点に関して奇対称です。その S 形を表せる最低次数は 3 ですが、正弦と完全に同じにはなりません。2 次項もノイズ付き当てはめを変えますが、本例での効果は小さいものです。

5、6、7 次へ増やすと、余った自由度が個別点のずれを追い始めます。その標本の縦残差は減っても、同じノイズを持たない検証点では誤差が増えます。

異なる x を持つ 10 点には、10 係数の 9 次多項式で補間できます。最小二乗は浮動小数点精度内で全点を通り、学習誤差は 0.0000。しかし点の間では約 ±353 の尺度まで振れ、表示域を出ます。そこにある検証点では大きく外れます。曲がること自体ではなく、この標本にしか合わない曲がり方が問題です。

ステップ実行

既定値は学習 10 点、検証 10 点、ノイズ σ = 0.25。各次数は、学習だけで当てはめる場面と、同じ曲線を検証する場面の二段階です。

点から曲線へ下ろす線は縦の残差で、二乗して平均します。x から y を予測する目的なので、曲線への最短の垂直距離ではありません。PCA の直交投影誤差は別の目的です。

次数学習 MSE検証 MSE観察
10.27110.1367直線では形を追えない
20.24820.1335改善は小さい
30.07030.0305検証最小、全体の傾向に沿う
40.06650.0475学習は減り、検証は増え始める
50.05430.0583標本の細部を追う
60.05010.0860二つの誤差が離れる
70.04830.1549検証は 3 次の約 5 倍
80.04371.2059約 ±29 の尺度まで振れ、枠外へ出る
90.000027.451210 係数で 10 点を通り、間で振動

検証で選ぶと 3 次の 0.0305、学習だけで選ぶと 9 次の検証 27.4512 で約 899 倍です。当てはめは検証点を使いませんが、選択には検証スコアを使ったので、最終の独立テストとしては扱えません。

学習誤差でモデルを選べない理由

d 次多項式は d+1 次の集合に含まれます。最高次係数をゼロにすれば戻れるため、同じデータと正則化なし二乗誤差で最適化した高次数の学習誤差は、同じかそれ以下です。これは実験的傾向ではなく包含関係です。

学習損失の低下は最適化の確認に役立ちますが、汎化改善の証明にはなりません。検証点はパラメータ最適化に入っていないので悪化しえます。それが有用な対照です。代わりに、その当てはめに使わない点を確保します。k-fold なら順に検証できますが、各 fold のモデルが自分の検証点も学習できるわけではありません。選択後は別途全体で再学習できます。

三つの対照実験

  • 小標本、8 点:7 次で補間し、検証誤差 0.8869 は最良の約 15 倍です。補間境界は n − 1 であり、「9 次は常に多すぎる」ではありません。
  • 多いデータ、20 点:同じノイズと 9 次でも最良の約 1.5 倍にとどまり、曲線は枠内です。10 係数では通常 20 個のノイズ付き点を全部通れません。過剰容量はデータと正則化に対する関係で、データ追加も常に解決を保証しません。
  • ノイズなし、σ = 0:点が真の関数上にあります。この実験では U 字が消え、5 次付近で表示誤差の底へ近づき、その後高次数の悪化がなく、検証は最高次数を選びます。ノイズなしなら過学習しないという定理ではありません。

きれいな点でも高次補間は間で振動しえます。Runge 現象がその例です。本例の正弦、節点、限られた次数では問題化しませんが、等間隔の節点が一般に Runge 現象を防ぐわけではありません。持ち帰るべきなのは検証の方法であり、「原因は常にノイズ」という診断ではありません。

境界ケース

  • 次数 n − 1:x が相異なれば任意の目標値を補間し、学習誤差は浮動小数点精度内でゼロです。ゼロだけでは信号とノイズの当てはめを区別できませんが、曲線が必ず無用という意味でもありません。
  • 次数が n 以上:不足決定系となり、全点を通る曲線は複数あります。どれを選ぶかは解法に依存します。本課は min(9, n − 1) で止めます。
  • ゼロノイズ:この実行では U 字が出ず、最高次数の検証誤差が最小になり、最高次数を選び、既定の 899 倍という結果は出ません。
  • 対数軸の床:実行のスコア範囲に応じ 2–4 桁の軸を使います。厳密なゼロは置けないので、床線に固定して ≈0 を付けます。
  • 枠外の曲線:2 次と 7 次はわずかに、8、9 次は大きく枠を出ます。描画を枠でクリップし、補間の拍では状態行でも知らせ、当てはめの問題を隠しません。

よくある間違い

  • 学習損失低下だけを改善と読む。本課ではモデル集合の包含により最適学習誤差が増えないため、検証が必要です。
  • テストを繰り返し見て選ぶ。通常は学習で当てはめ、検証で選び、判断を固定した後に最終テストを使います。人の選択もテスト情報を漏らします。
  • 単純なほど安全と思う。1 次の検証 0.1367 は 3 次の 4 倍超で、未学習にも費用があります。
  • 容量をいつもパラメータ数と同一視する。深さ、幅、木の構造、学習時間、正則化が関わり、大きいモデルの係数を制限する選択もあります。
  • 検証が悪ければ必ず小モデルにする。代表的なデータの追加や分布差の修正が必要な場合もあります。

モデルの範囲

実際の最小二乗を Chebyshev 基底上の Householder QR で解きます。9 次補間は浮動小数点精度で正確であり、記号計算上の厳密解ではありません。入力 1 特徴、多項式クラス、一つの学習/検証分割で、最終テスト、k-fold、正則化はありません。実際の手順は独立テストまで完了し、目的に応じて正則化と評価方法を選ぶ必要があります。