機械学習

損失関数の評価,バイアス-バリアンスと過学習のトレードオフ

投稿日:


損失関数をバイアス項、バリアンス項、削減不能誤差の和に分解できることと、
損失は削減不能誤差より下回らないこと、バイアス項、バアリアンス項のトレードオフが起こること、
を読んだ。過学習っていうのはこういうことなのか、と腑に落ちたので記念に記事を書いてみる。

(式変形は細かいところで間違ってるのと、おっさんのチラシの裏なので参考にしないでください)

2乗損失の期待値の式変形

モデルを作った後、訓練データ、テストデータそれぞれの全データについて、
2乗損失の期待値(MSE)を求め、モデルの当てはまりの良さを調べるらしい。
2乗損失を以下のように式変形する。条件付き期待値\(E(t|x)\)ってなんだ...。
\begin{eqnarray}
L(y(x),t)^2 &=& (y(x)-t)^2 \\
&=& (y(x)-E(t|x)+E(t|x)-t)^2 \\
&=& \left( \left( y(x)-E(t|x)\right) + \left( E(t|x) - y(x)\right) \right)^2 \\
&=& (y(x)-E(t|x))^2 + 2(y(x)-E(t|x))(E(t|x)-t) + (E(t|x)-t)^2 \\
\end{eqnarray}
2乗損失の期待値(MSE)は以下。
第2項は\(x\)、\(t\)で積分するとゼロになる!
\begin{eqnarray}
E[L(y(x),t)^2] &=& E[ (y(x)-E(t|x))^2 + 2(y(x)-E(t|x))(E(t|x)-t) + (E(t|x)-t)^2 ] \\
&=& E[ (y(x)-E(t|x))^2 + (E(t|x)-t)^2 ]
\end{eqnarray}
和の期待値は期待値の和なので、
\begin{eqnarray}
E[L(y(x),t)^2] = E[ (y(x)-E(t|x))^2 ] + E[(E(t|x)-t)^2 ]
\end{eqnarray}
\(x\)の出処がテストデータではなく訓練データですよ、と明示するために、
以下みたいな書き方に改める。この式の中で\(y(x;D)\)が学習で得られるモデル。
第2項は学習とは関係なく発生する数値。
\begin{eqnarray}
E_D[L(y(x;D),t)^2] &=& E_D[ (y(x;D)-E(t|x;D))^2 ] + \\
&& E_D[(E(t|x;D)-t)^2 ]]
\end{eqnarray}

第1項の式変形を続ける。括弧が多すぎて力尽きた..。
余計な項を足して引いて次の式変形の足しにするタイプ。
\begin{eqnarray}
E_D[ (y(x;D)-E(t|x;D))^2 ] &=& E_D[ ( \{ y(x;D)-E_D[(y(x;D))] \} ]
&+& \{ E_D[ y(x;D)] - E[t|x;D])^2 \} \\
&=& E_D [ \{ (y(x;D))-E_D[ y(x;D)] \}^2 ] + \\
&=& E_D [ \{ E_D[ y(x;D)-E[t|x;D] ] \}^2 ]
\end{eqnarray}

バイアス・バリアンスと削減不能誤差

以下はバリアンス項と書かれている。
モデル\((y(x;D)\)による予測が訓練データ集合によって変動する度合いの期待値。
異なる訓練データを使ったときにどの程度モデルが変化するかを表す。
過学習の度合い。
\begin{eqnarray}
E_D \bigl[ \bigl\{ (y(x;D))-E_D[ y(x;D)] \bigr\}^2 \bigr]
\end{eqnarray}

以下はバイアス項と書かれている。
複雑な事象を単純なモデルで近似したことによる誤差、と書かれてる。
例えば、3次関数+ノイズから発生するデータを直線で近似すると、モデルが単純すぎて値が大きくなる。
モデルが複雑になればなるほどバイアス項は減っていく様子。
未学習の度合い。
\begin{eqnarray}
E_D \bigl[ \bigl\{ E_D[ y(x;D)]-E[t|x;D] \bigr\}^2 \bigr]
\end{eqnarray}

で、一番最初に出てきたモデルと関係ない以下。
バイアス、バリアンス共に非負の値だから、2乗損失の期待値は以下より小さくなることはない。
奇跡的にバイアス、バリアンス共にゼロだったとしても、以下は学習とは関係なく発生する。
削減できない誤差。
\begin{eqnarray}
E_D\bigl[\bigl(E(t|x;D)-t\bigr)^2 ]\bigr]
\end{eqnarray}

結局よくわからない...。体感の結論..

訓練データを使ってモデルを複雑にしていけばいくほど、
モデルが訓練データにフィットするようになるが、
その訓練データにフィットしまくったモデルは、未知のテストデータを予測しづらくなる。

モデルの複雑度が"ある程度"のところまでは、バリアンスの上昇よりもバイアスの低下が効くから、
訓練データに対する2乗誤差、テストデータに対する2乗誤差ともに減少する。
モデルの複雑度が"ある程度"を超えると、バイアスの低下が頭打ちになる一方でバリアンスが上昇し、
訓練データに対する2乗誤差が低下する一方で、テストデータに対する2乗誤差が上昇する。

どう頑張っても、削減不可能な誤差が存在する。

条件付き期待値\(E(t|x)\)の意味を理解できずプロットすることは叶わなかった。

-機械学習
-,

Copyright© ikuty.com , 2019 AllRights Reserved Powered by AFFINGER4.