えんじにあのじゆうちょう

勉強したことを中心にアウトプットしていきます。

二乗和誤差とクロスエントロピー誤差

はじめに

ニューラルネットワークの誤差関数でよく使われる二乗和誤差とクロスエントロピー誤差ですが、どういった違いがあるのか、一度自分なりに整理してみようと思います。

二乗和誤差

二乗和誤差は真のy_iと予測した\hat{y_i}の差分二乗の和を誤差の値として利用します。
数式としては上記の説明ほぼそのままで、以下のようになります。
 L(\omega) = \frac{1}{2}\sum(y_i - \hat{y_i})^2

式の通りで誤差の和を最小にするので、すべての(y_i, \hat{y_i})が最も近くなるような\omegaを求めていくことになります。

クロスエントロピー誤差

クロスエントロピーは二乗和誤差よりも理解しにくいです。少し順を追って紐解いていきます。

自己エントロピー(情報量)

自己エントロピーはある事象が発生したときに受け取る情報の大きさを表します。
事象をx、その事象が起こる確率をP(x)とすると、次の式で定義されます。

I(x)=-\log_2(P(x))

事象xの情報量は-\log_2(P(x))で計算できる、という意図です。
\logのグラフは以下のようになります。

f:id:marufeuillex:20190901204301p:plain
log_e

実際にはこれにマイナスがかけられますので、珍しい情報だと情報量は大きく、逆にありきたりな情報のときは情報量が少ない、と認識すると良さそうです。

エントロピー(平均情報量)

自己エントロピーの期待値は以下の式で表現され、これがエントロピーと呼ばれます。

H=-\sum_{i}^{n}P(x_i)\log_2(P(x_i))

平均的にどのくらいの情報量を受け取るか、という指標値になります。

クロスエントロピー

クロスエントロピーはある事象がそれぞれ異なる確率分布で発生する確率とその情報量を計算することで求められます。
確率が離散値の場合、事象xが真の確率分布で発生する確率をP(x)、事象xが予測された確率分布で発生する確率をQ(x)以下の様な式で表現されます。(連続値の場合、ざっくりというと\sum\intになる感じです)

H(P(x), Q(x)) = -\sum P(x_i)\log{Q(x_i)}

誤差関数としての利用

見ての通りクロスエントロピーは、事象xの発生確率PおよびQに関する関数です。
つまり、分類モデルの予測に利用できると考えられます。

先程の数式H(P(x), Q(x))のみかたを少し変えてみましょう。P(x)を真の値yQ(x)をモデルが予測した値\hat{y}とすると、

H(y, \hat{y}) = -\sum y\log{\hat{y}}

となります。

ところで分類モデルの教師データの正解ラベルは例えば分類クラスが2つの時は正解が1つ目のときは(1, 0)のような形になります。
間違っても(0.3, 0.7)のような形にならず、確実に片方(どれか1つ)だけが1でそれ以外は0となります。

つまり、先程の式は結局正解ラベルに対する予測値の-log{\hat{y}}を最小にするパラメータ\omegaを求める問題に帰着します。

ちなみに数式上現れませんがあくまで確率なので、仮に今回y_{right}が正解のとき、y_{right}\fallingdotseq \hat{y_i}にどんどん近づく、つまり1に近づくわけですが、逆を返すと、それ以外のy_{i}の確率はどんどん0に近づき、-log{\hat{y_{i}}}は大きな値になっていきます。
つまりこれは、正解には近づくが、それ以外とは距離を可能な限り大きく取ることでしっかり分類できる\omegaを探索していると言えるのかと思います。

まとめ

二乗和誤差は全てのデータに対しての当てはまりが良いパラメータ\omegaを求めるものでした。そのため、回帰問題で利用されやすいかと思います。
一方のクロスエントロピー誤差は正解に対しては極力近づけ、それ以外に対しては可能な限り距離を置くようなパラメータ\omegaを求めるものでした。そのため、分類問題で利用されやすいようです。

渡しの場合、鵜呑みにしてなんとなく使ってしまっていた誤差関数ですが、中身を見ていくとなるほどなぁ、という気持ちです。