モデリング●●●●○

過学習

Overfittingかがくしゅう

モデルが手元のデータの偶然まで暗記し、新しいデータへの予測が悪化する現象

概要

過学習(オーバーフィッティング)は、モデルが手元のデータに合わせすぎた結果、そのデータでは高い精度を出すのに、新しいデータに対する予測が悪化してしまう現象です。手元のデータには「本当の規則性」と「たまたまそうなっただけの偶然のばらつき」が混ざっています。モデルを複雑にすればするほどデータへの当てはまりは必ず良くなりますが、それは規則性だけでなく偶然の部分まで暗記し始めているからかもしれません。試験勉強にたとえるなら、過去問の答えを丸暗記して過去問では満点を取れるのに、初見の問題が解けない状態です。

統計モデリングや機械学習の目的は、手元のデータをうまく説明することではなく、まだ見ていないデータをうまく予測・説明することにあります。この「未知のデータに対する性能」を汎化性能と呼びます。過学習は汎化性能を静かに蝕むため、回帰分析から深層学習まで、モデルを作るすべての場面でつきまとう最重要の落とし穴です。

なぜ生まれたか

「当てはまりの良さ」がそのままモデルの良さの指標として使われていた時代、変数や項を増やせば増やすほど決定係数などの指標は改善し続けるため、複雑なモデルほど良いモデルに見えてしまうという問題がありました。ところがそうして作られたモデルを新しいデータに適用すると、単純なモデルより成績が悪いという逆転が頻繁に起こります。手元のデータは母集団と標本の関係でいえばあくまで標本であり、標本特有の偶然のゆらぎを含んでいます。複雑なモデルはそのゆらぎまで律儀に再現してしまうため、別の標本ではゆらぎの向きが変わり、予測が外れるのです。

この「当てはまりと汎化は別物である」という認識が明確になったことで、統計学と機械学習は評価の考え方を根本から改めました。モデルの良さは学習に使ったデータではなく、学習に使っていないデータで測る——この原則から交差検証のような評価手法や、複雑さにペナルティを課す正則化、AICなどの情報量規準が生まれています。過学習という概念は、これらの技法すべての出発点にあたります。

詳細

当てはまりすぎるとはどういうことか

典型例が多項式回帰です。10個のデータ点に直線を当てはめると多少の残差が残りますが、9次多項式を使えば10点すべてを厳密に通る曲線が引けます。誤差ゼロ——しかしその曲線はデータ点の間で激しく波打ち、新しい点の予測はでたらめになります。データに含まれるノイズまで「説明」しようとした結果、本当の構造から離れてしまったのです。逆に、明らかに曲線的な関係に直線しか当てはめないと、規則性を捉えきれない「未学習(アンダーフィッティング)」になります。良いモデルはこの中間、構造は捉えるがノイズは追わない複雑さにあります。

未学習(単純すぎ)適切な複雑さ過学習(複雑すぎ)××左: 構造を捉えきれない / 中: 構造だけ捉える / 右: ノイズまで暗記し新しい点(×)を外す
未学習・適切・過学習 — 同じデータへの3通りの当てはめ。過学習の曲線は全点を通るが、新しい点(×)を大きく外す

次数を自分で動かすと、「当てはまりは良くなるのに予測が壊れていく」瞬間を実際に観察できます。

⚡ 体験: 多項式の次数を上げて過学習させる
次数1の多項式を訓練データに当てはめる訓練データ(学習に使う)検証データ(学習に使わない)次数ごとの誤差19次数 →訓練誤差 0.191検証誤差 0.136

次数 1 は単純すぎて波の構造を捉えきれず、訓練誤差も検証誤差も大きいままです(未学習)。次数を上げてみてください。

過学習の兆候をどう見つけるか

過学習の定義そのものが検出法を示しています。学習に使ったデータでの誤差(訓練誤差)と、使っていないデータでの誤差(検証誤差)を分けて測ればよいのです。モデルを複雑にしていくと、訓練誤差は単調に下がり続けますが、検証誤差はある点までは下がり、その先で上昇に転じます。訓練誤差と検証誤差の差が開き始めたら過学習のサインです。この分割評価を系統的に行う手法が交差検証で、検証誤差が最小になる複雑さを選ぶことがモデル選択の基本になっています。なぜ誤差がこのようなU字を描くのかは、バイアスとバリアンスの分解によって理論的に説明できます。

過学習を抑える手立て

もっとも直接的な対策はデータを増やすことです。標本が大きくなるほど偶然のゆらぎは平均されて小さくなり、モデルが暗記できるノイズが減ります。それが難しい場合の代表的な手立てが正則化で、モデルの係数が大きくなりすぎることにペナルティを課し、当てはまりと単純さのバランス点を自動的に探させます。ほかにも、変数を減らす・モデルの次数を下げるといった複雑さの直接制御、決定木の枝刈り、ニューラルネットワークの早期終了やドロップアウトなど、分野ごとに多彩な手法がありますが、いずれも「手元のデータへの当てはまりを意図的に少し犠牲にして、汎化性能を守る」という同じ思想に立っています。

統計的推論における過学習

過学習は予測モデルだけの問題ではありません。重回帰分析で説明変数を増やしすぎれば、偶然の相関を「効果」として拾ってしまいますし、有意になる変数の組み合わせを探し回る行為はpハッキングと同じ構造——手元のデータの偶然への過剰適合——を持っています。また、検証用データの情報がうっかり学習側に混入するデータリーケージが起きると、検証誤差そのものが当てにならなくなり、過学習を見逃します。残差の確認などのモデル診断と合わせて、「このモデルは手元のデータの外でも通用するか」と問い続けることが、過学習との正しい付き合い方です。