バイアス・バリアンスとは?図解で分かりやすく数式まで徹底解説!!

スポンサーリンク
バイアス・バリアンスとはディープラーニング
この記事を読んで分かること
  • バイアス/バリアンスとは何か
  • バイアス-バリアンス分解をする理由
  • バイアス-バリアンス分解がやっていること

バイアス/バリアンスとは

バイアス/バリアンスとは、

機械学習の誤差(損失関数)を分解した成分

です。

 

機械学習の予測に対する誤差(損失関数)の期待値は、以下のように3つの成分に分けることができます。

 

機械学習の誤差の3つの成分
  • バイアス(Bias)
  • バリアンス(Variance)
  • ノイズ

 

$$(損失関数の期待値)=(バイアス成分) + (バリアンス成分) + (ノイズ成分)$$

 

このように損失関数を「バイアス」「バリアンス」「ノイズ」に分解することをバイアス-バリアンス分解といいます。

 

次はそれぞれの要素について説明していきます。

 

バイアスとは

バイアスとは、

モデルの表現力が不足していることによって生じる誤差

です。

 

バイアスは予測値と実測値の差を表します。

バイアスが高いと予測値が実測値から大きく離れてしまっています。

 

バイアスとは

 

バイアスが大きければ、モデルは未学習状態(アンダーフィッティング)であると判断できます。

 

バリアンスとは

バリアンスとは、

訓練データの選び方によって生じる誤差

です。

 

バリアンスは予測値の分散です。

バリアンスが高いとモデルの予測値同士が大きく散らばります。

 

バリアンスとは

 

バリアンスが大きいとモデルは過剰適合(オーバーフィッティング)であると判断できます。

 

ノイズとは

ノイズとは、

データの測定誤差などによって生じる誤差

です。

 

ノイズはデータを作成する時点で発生しています。

 

ノイズとは

データ自体の誤差であるため、機械学習では学習することのできない部分となります。

 

どうしてバイアス-バリアンス分解をするのか

機械学習においてモデルの予測精度を高めるためには、損失関数を最小化する必要があります。

しかし、損失関数をそのまま使うと最小化を考えることが難しいので、バイアス-バリアンス分解を行って要素ごとに分解します。

 

バイアス-バリアンス分解

 

ただし、バイアス-バリアンス分解ができるのは回帰タスク(二乗和誤差)のみ成立します。

 

バイアスとバリアンスはトレードオフ

機械学習モデルの精度を高めるためには、バイアスとバリアンスの両方を抑える必要があるのですが、この2つのはトレードオフの関係になっています。

 

バイアスとバリアンスはトレードオフ

 

バイアスを抑えようとするとバリアンスを大きくなってモデルの表現力が高くなりすぎてしまいます。

一方で、バリアンスを抑えようとするとバイアスが大きくなりモデルの表現力が下がってしまいます。

そのため、バイアスとバリアンスのバランスが取れたモデルが実用的なモデルとなります。

 

正則化などの手法を使って過剰適合を抑える(バリアンスを抑える)こともできます。

正則化についてはこちらの記事で説明をしています。

正則化とは?線形回帰の精度を上げるテクニック!!
正則化(Regularization)とは? 正則化(Regularization)は、過学習を防止するための手法で、モデルの学習時に利用されます。 過学習の原因の1つとして、機械学習のモデルが複雑すぎることが挙げられま...

 

バイアス-バリアンス分解を数式で説明

まず、損失関数(二乗誤差の期待値)を数式で表してみましょう。

変数は以下のように定義します。

$$D:データ集合、x:説明変数、y(x):予測モデル\\h(x):理想的な予測モデル、t:目的変数(実データの値)、E:期待値$$

 

すると損失関数は、このように表すことができます。

$$(損失関数)=第1項(予測値と理想値の差) + 第2項(理想値と実データの差)$$

損失関数

$$E\left( L\right) =\int \left\{ y\left( x\right) -h\left( x\right) \right\} ^{2}p\left( x\right) dx + \int \int \left\{ h\left( x\right) -t\right\} ^{2}p\left( x,t\right) dxdy$$

 

第2項は理想値(完璧なモデルの予測値)と実データの差を表す項なので、つまりノイズを表しています。

 

第1項は更に展開することができて、以下のような式で表されます。

$$損失関数の第1項(予測値と理想値の差) = バイアス + バリアンス$$

バイアス-バリアンス分解

$$\int \left\{ y\left( x\right) -h\left( x\right) \right\} ^{2}p\left( x\right) dx =
\\\int \left\{ E_{D}\left[ y\left( x;D\right) \right] -h\left( x\right) \right\} ^{2}p(x)dx +
\int E_{D}\left[ \left\{ y\left( x;D\right) -E_{D},\left[ y\left( x;D\right) \right] \right\} ^{2}\right] p\left( x\right) dx$$

 

バイアスの式では、予測値の平均が理想値からどれくらい離れているかを表しています。

バリアンスの式では、特定のデータが予測値全体からどれくらい離れているかを表しています。

 

これまでの数式をまとめると、以下のように整理できます。

バイアス、バリアンス、ノイズ項

$$(バイアス)^{2}=\int \left\{ E_{D}\left[ y\left( x;D\right) \right] -h\left( x\right) \right\} ^{2}p(x)dx $$

$$(バリアンス)=\int E_{D}\left[ \left\{ y\left( x;D\right) -E_{D},\left[ y\left( x;D\right) \right] \right\} ^{2}\right] p\left( x\right) dx$$

$$(ノイズ)=\int \int \left\{ h\left( x\right) -t\right\} ^{2}p\left( x,t\right) dxdy$$

 

まとめ

バイアス/バリアンスとは、機械学習の誤差(損失関数)を分解した成分です。

損失関数はバイアス-バリアンス分解することで、「バイアス」「バリアンス」「ノイズ」に分解することができます。

機械学習モデルの精度を高めるためには、バイアスとバリアンスの両方を抑える必要があるのですが、この2つのはトレードオフの関係になっています。

 

参考文献

コメント

タイトルとURLをコピーしました