バイアス誤差と分散誤差
バイアス誤差と分散誤差
適当なモデルにより、「真の」プロセスのふるまいをモデル化する、というアプローチ
データをもとにしたモデリング(data-driven modeling)という枠組み
入出力の関係を表現するモデルを、データにもとづいて作成する
(制御工学的な表現だが)以下のようにイメージするとよい
https://gyazo.com/1e0e45259cacc3ba2b9c4011059a575d
この図における記号
$ uは入力
$ y_uは「真の」プロセスに$ uを入力したときの出力
$ nは、データの測定・観測時のノイズ(雑音)
$ yは実際に観測される(ノイズが乗った)出力データ($ y = y_u + n)
$ \hat{y}はモデルに$ uを入力したときの出力
$ eは実際の出力データとモデル出力の誤差($ e = y - \hat{y})
ある入力$ uに対して、「真の」プロセスの出力$ y_uは唯一に定まるが、モデルは学習に用いるデータによって変わるため、モデルの出力$ \hat{y}は用いる学習データによってばらつく
ここで、誤差$ eの二乗の期待値(データの変動に対しての期待値)について展開すると($ nが$ y_uや$ \hat{y}と独立であることを利用して)
$ E[e^2\rbrack = E[(y - \hat{y})^2\rbrack
$ = E[(y_u + n - \hat{y})^2\rbrack
$ = E[(y_u - \hat{y})^2\rbrack + E[n^2\rbrack
すなわち、出力データとモデル出力の誤差の二乗の期待値は、真の出力とモデル出力の差の二乗の期待値と、ノイズの二乗の期待値(ノイズの分散)に分解できる
ここで、右辺第一項をさらに分解すると
$ E[(y_u - \hat{y})^2\rbrack = E[(y_u - E[\hat{y}\rbrack - ( \hat{y} - E[\hat{y}\rbrack))^2\rbrack
$ = E[(y_u - E[\hat{y}\rbrack)^2\rbrack + E[(\hat{y} - E[\hat{y}\rbrack)^2\rbrack
$ = (y_u - E[\hat{y}\rbrack)^2 + E[(\hat{y} - E[\hat{y}\rbrack)^2\rbrack
このように、モデルの誤差(の二乗)は、2つに分解できる
これの第一項をバイアス誤差(の二乗)、第二項を分散誤差という
(model error)$ ^2 = (bias error)$ ^2 + variance error
バイアス誤差(bias error)
バイアス誤差:$ y_u - E[\hat{y}\rbrack
モデルの表現能力に関する誤差
例)真の関数が5次のプロセス($ xの5乗の項を含む)なのに、3次のモデル($ xの3乗の項までしかもたないモデル)で近似しようとする、など
モデルが簡単すぎて表現能力が不十分だと、たとえパラメータが最適であってもプロセスのふるまいを完全に表現することはできない
バイアス誤差とモデルの複雑さ(パラメータ数)の関係
https://gyazo.com/fd38d50730a927b597cd06f33135a7de
図の引用:O.Nelles, “Nonlinear System Identification” (2001)
パラメータが増えるほどバイアス誤差は小さくなる(モデルの表現能力が高まる)
ニューラルネットワーク(多層パーセプトロン)などのuniversal approximator ならばパラメータを増やすことで任意の非線形プロセスをバイアス誤差なしでモデル化できる
分散誤差(variance error)
分散誤差:$ E[(\hat{y} - E[\hat{y}\rbrack)^2\rbrack
有限でノイズの乗ったデータからパラメータ推定が行われることに起因
データには雑音(ノイズ)が乗っているのに、モデルのパラメータが増えるとそのようなデータにもピッタリ合わせてしまって誤差が大きくなる
データが有限個なので、「データのない範囲」における情報(どの範囲にどのように線を引けばよいかを示すためのデータ)がないため、データのない範囲の正確さが保証されない
バイアス誤差と逆で、モデルが複雑なほど分散誤差は大きい
https://gyazo.com/7bd40769edc83ac06bd11e813b7b8f6b
図の引用:O.Nelles, “Nonlinear System Identification” (2001)
分散誤差は$ \sigma^2 \frac{m}{N}に比例する
$ \sigma^2:ノイズの分散
$ m:モデルのパラメータの数
$ N:学習データの数
つまり、
モデルが複雑(パラメータが多い)であるほど分散誤差は大きくなる
ノイズの分散が大きいほど分散誤差は大きくなる
学習データ数が多いほど分散誤差は小さくなる
この性質はモデルのタイプにほぼ依存しない(データ数が大きいとき)
バイアス誤差と分散誤差のトレードオフ
(model error)$ ^2 = (bias error)$ ^2 + variance error
バイアス誤差と分散誤差のトレードオフにより最適なモデルの複雑さが決まる
https://gyazo.com/e80b912190ba3ceec164ecd38c5ffda9
図の引用:O.Nelles, “Nonlinear System Identification” (2001)
モデルを複雑にするとバイアス誤差は小さくなるが分散誤差は大きくなるので、全体の誤差は大きくなっていく
つまり、モデルは簡単すぎても複雑すぎてもいけない
どこかに「最適な複雑さ(optimal complexity)」があり、そのときのモデルが、最も汎化能力が高いモデルであるといえる
ただし、上述の通り、分散誤差はノイズの分散と学習データ数にも依存するので、データに付加されているノイズの強さと、データの量によって、最適な複雑さは変化する
とくに、データがたくさんあると分散誤差は小さくなり、モデルが複雑であっても全体の誤差を小さくできる(ビッグデータを用いることの意義)
どうやってこのトレードオフを考慮し、汎化能力の高いモデルを作るか?
実際にはバイアス誤差・分散誤差はわからない
汎化能力の検証の基本:データの学習用・検証用への分割
異なる複雑さのモデルをたくさんつくって、テストデータに対する性能の良いモデルを選択する