誤差の分解

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

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

分解前の式

\[\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字型の総誤差曲線を描くのが典型的なイメージです。

実務での対処法

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

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

$h(x)$ は特定の訓練データセット $D$ から学習されるものではなく、$h(x) = E[t \mid x]$ という、データを生成している真の確率分布 $p(t\vert{}x)$ そのものから定義される関数である。$D$ はあくまで有限個のサンプルにすぎず、$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になりうる)

y(x;D) の意味

セミコロン ; は、「変数」と「パラメータ・条件」を区別するための表記です。数学や統計学、機械学習でよく使われる慣習的な記法です。

y(x; D)
  • $x$(セミコロンの前):関数の「本来の入力変数」。予測したい対象そのもの。
  • $D$(セミコロンの後):その関数が「どの訓練データセットから学習されたか」という条件・パラメータ。$x$ が変わるたびに変わるものではなく、モデルを訓練する段階で1回だけ決まるもの。

なぜこの表記が必要か

もし単に $y(x, D)$ とカンマで書いてしまうと、$x$ と $D$ が同じ立場の「2つの独立変数」であるかのように見えてしまいます。しかしバイアス・バリアンス分解の文脈では、両者の役割は本質的に異なります。

記号 役割 「動く」タイミング
$x$ 予測したい入力点 予測のたびに変わる(テスト時にいろいろな $x$ に対して予測する)
$D$ 学習に使った訓練データセット モデルを訓練するときに1回だけ固定される。$D$ が違えば別のモデル $y(\cdot; D)$ になる

セミコロンを使うことで、「$D$ はこの関数の”設定”であり、$x$ こそが関数の本来の引数である」ということが視覚的に明確になります。

具体例

例えば、線形回帰でパラメータ $w$ を最小二乗法で推定する場合、

y(x; D) = w_0(D) + w_1(D)\, x

のように、係数 $w_0, w_1$ は訓練データ $D$ から決まる値であり、$x$ が入力されるたびに再計算されるものではありません。この「$D$ に応じてモデル全体(パラメータ)が決まり、$x$ はその決まったモデルへの入力である」という階層構造を表すのがセミコロンの役割です。

バイアス・バリアンス分解での重要性

この表記があるからこそ、以下の操作の意味が明確になります。

E_D[y(x;D)]

訓練データを様々に変えたときの、この点 $x$ における予測の平均。

E_D\Big[\big(y(x;D) - E_D[y(x;D)]\big)^2\Big]

バリアンス:同じ $x$ でも $D$ が違えば予測がどうばらつくか。

つまり「$x$ を固定したまま $D$ についてだけ期待値・分散をとる」という操作の意味が明確になります。もし $y(x)$ とだけ書いていたら、何に関して期待値をとっているのか(データについてなのか、$x$ についてなのか)が曖昧になってしまいます。