誤差の分解

機械学習における汎化誤差(Expected Loss = Generalization Error)は 3 つに分解できます。
テストデータに対する期待二乗誤差を例に説明します。

  • $x$:説明変数(入力データ)
    • 予測の対象となる特徴量
  • $y(x)$:予測モデル
    • 訓練データ $D$ から学習された関数で、入力 $x$ に対する予測値を出力する
    • データセット $D$ に依存するため、依存性を明示する場合は $y(x; D)$ と書く。訓練データが変われば $y(x)$ 自体も変わりうる
  • $h(x)$:理想的な予測モデル(真の関数)
    • ノイズを除いた、$x$ が与えられたときの目的変数の期待値 $h(x) = E[t\vert{}x]$ として定義される
    • データセットに依存しない、唯一の正解の関数
  • $t$:目的変数の真値(観測値)
    • 理想モデル $h(x)$ にノイズが加わったもので、同じ $x$ に対しても観測のたびにばらつきうる確率変数

$y(x; D)$

バイアス-バリアンス分解の文脈における $y(x; D)$ は次のように考えます。

  • $x$:予測したい入力点(テスト点)。$D$ とは独立に決められるもの
  • $D$:訓練に使うデータセットで真の分布から複数回サンプリングされうる

つまり、 同じ $x$ に対して、異なる訓練データセット $D_1, D_2, D_3, \dots$ で学習したモデルが、それぞれ異なる予測値 $y(x; D_1), y(x; D_2), \dots$ を出力します。

$x$ は固定して、$D$ の方を色々変えるイメージです。

具体的なイメージ

例えば、真の分布からデータセットを100回サンプリングしたとします。

\[D_1, D_2, \dots, D_{100}\]

それぞれで学習したモデルに、同じテスト点 $x_0$ を入力すると 100 個の予測値が得られます。

\[y(x_0; D_1),\ y(x_0; D_2),\ \dots,\ y(x_0; D_{100})\]

これらのばらつきが「バリアンス(分散)」であり、これらの平均と真の値とのズレが「バイアス」です。

分解前の式

\[\mathbb{E}[L] = \int \big( y(x) - h(x) \big)^2 p(x)\,dx \;+\; \iint \big( h(x) - t \big)^2\, p(x,t)\,dx\,dt\]

分解後の式

\[\mathbb{E}[L] = \underbrace{\int \Big( \mathbb{E}_D[y(x;D)] - h(x) \Big)^2 p(x)\,dx}_{\text{Bias}^2} \;+\; \underbrace{\int \mathbb{E}_D\Big[ \big( y(x;D) - \mathbb{E}_D[y(x;D)] \big)^2 \Big]\, p(x)\,dx}_{\text{Variance}} \;+\; \underbrace{\iint \big( h(x) - t \big)^2\, p(x,t)\,dx\,dt}_{\text{Noise}}\]

バイアス(Bias)

  • モデルの予測の平均値と、真の関数とのずれの大きさ
  • モデルが単純すぎる(表現力が足りない)ときに大きくなる
  • 例:本質的に非線形な関係を線形回帰で近似しようとすると、バイアスが大きくなる
  • アンダーフィッティングと関連が深い

バリアンス(Variance:分散)

  • 訓練データを変えたときに、モデルの予測がどれだけばらつくか
  • モデルが複雑すぎる(訓練データに過剰に適応してしまう)ときに大きくなる
  • 例:高次多項式回帰や深すぎる決定木は、訓練データの細かいノイズまで学習してしまいばらつきが大きくなる
  • オーバーフィッティングと関連が深い オーバーフィッティング過剰適合):モデルが複雑すぎて、訓練データのノイズや細かい変動まで学習してしまっている状態です

ノイズ(Noise / 既約誤差)

  • データ自体に本質的に含まれるランダムな誤差
  • 測定誤差や、説明変数だけでは説明しきれない要因によるもの
  • どんなに優れたモデルを使っても減らすことができない誤差(既約誤差、irreducible error)

トレードオフの関係

バイアスとバリアンスにはトレードオフの関係があります。

モデルの複雑さ バイアス バリアンス 状態
低い(単純) アンダーフィッティング
高い(複雑) オーバーフィッティング
適切 バランス バランス 汎化性能が良い

図で表すと、モデルの複雑さを横軸、誤差を縦軸にとったとき、バイアスは複雑さとともに減少し、バリアンスは複雑さとともに増加する、U字型の総誤差曲線を描くのが典型的なイメージです。

実務での対処法

この図が示す通り、モデルの複雑さを闇雲に上げても下げても最適にはならず、検証データ(バリデーションセット)での誤差を見ながら、この谷底(緑の点)に近づけていくのが一般的なアプローチです。正則化(L1/L2)、早期終了(early stopping)、交差検証などは、この最適な複雑さを見つけるための代表的な手法です。

  • バイアスが大きい場合:モデルを複雑にする(特徴量追加、より柔軟なモデル、正則化を弱める)
  • バリアンスが大きい場合:正則化を強める、データを増やす、モデルを単純化する、アンサンブル学習(バギングなど)を使う
  • ノイズ:データ収集プロセスの改善以外では基本的に減らせない

理想的な予測モデル $h(x)$

予想モデル($y(x)$)と理想的な予測モデル $h(x)$ の関係は、$h(x)$ はデータが生成される仕組み(真の関数)として先験的に存在するもので $y(x)$ の収束してほしい先です。

\[h(x) \;\; \xleftarrow{\text{理想的にはここに収束してほしい}} \;\; E_D[y(x;D)]\]

両者のズレがバイアスです。

$h(x)$ とノイズ

\[t = h(x) + \varepsilon\]
  • $h(x)$ は「$x$ が与えられたときに、$t$ が平均的にとる値」を完全に正確に出力するモデル。この意味では「間違いのないモデル」
  • 個々の観測値 $t$ は $h(x)$ ぴったりにはならず、ノイズ $\varepsilon$ の分だけ $h(x)$ からズレる。このズレは $h(x)$ の「間違い」ではなく、現象そのものが持つ本質的な不確実性(ノイズ)。

サイコロの例

  • $h(x) = 3.5$(サイコロの目の期待値)は完全に正しいモデル。何度計算しても $3.5$ という値自体は間違えようがない。
  • しかし実際に振ったときの出目 $t$ は $1〜6$ のどれかであり、$h(x)=3.5$ と一致することは絶対にない。
  • このズレ $(t - h(x))$ は $h(x)$ が「間違っている」からではなく、サイコロという現象自体が持つランダム性(ノイズ)による。

サイコロの例:ノイズは予測方法を変えても消えない

  • ノイズとは $x$ を固定しても $t$ が本質的に持つばらつきのこと
  • 期待値 $3.5$ を出すモデル → 個々の出目とズレる(誤差として直接見える)
  • $4$ が出ると一つの数字に賭けるモデル → 当たる確率 $1/6$、外れる確率 $5/6$(ノイズは「外れる確率」という形で現れる)
  • 予測の仕方を変えても、現象そのものが持つランダム性は変わらない
t = h(x) + \varepsilon

$h(x)$ をどう使う(期待値として出力するか、特定の値に賭けるか)を変えても、$\varepsilon$(ノイズ)自体は消えない。

ノイズが本当に0になる条件

予測方法の工夫ではなく、入力 $x$ に含まれる情報量を増やすことでのみノイズは減る。

  • 現状:$x$ = 「サイコロを振る」だけ → 出目は完全にランダム(ノイズ大)
  • $x$ に「力・角度・初速・空気抵抗など物理条件すべて」が含まれれば → 出目を一意に計算でき、以下が成り立つ
h(x) = t \quad \Longrightarrow \quad \text{Noise} = 0

まとめ

状況 ノイズは消えるか
予測方法を変える(期待値 → 個別の値を当てにいく) 消えない(外れる確率として表面化するだけ)
入力 $x$ の情報量を増やし $t$ を一意に決められるようにする 減る(極限では0になりうる)