#損失関数の役割
ニューラルネットワークを学習するときには、正解ラベルのあるデータをニューラルネットワークに入力し、その出力と正解ラベルを比較して、ニューラルネットワークの重みを更新していく。この時出力と正解ラベルから、ある指標となる値出力させるものが損失関数である。
損失関数は主に、ニューラルネットワークの悪さを表す値であるので、できるだけ値が小さくなるようにニューラルネットワークの重みを更新していくことになる。
#損失関数の種類
今回は、代表的な損失関数として
(分類)2乗和誤差、交差エントロピー誤差
(回帰)平均2乗誤差、平均絶対誤差
を紹介する。
###2乗和誤差
2乗和誤差は以下のような式によって計算される。
$$
E = \frac{1}{2}\sum_{k} (y_k - t_k )^{2}
$$
$y_k$はニューラルネットワークの出力、$t_k$は教師データを表している。
例えば5分類のニューラルネットワークの活性化関数としてソフトマックス関数を用いた時には、各ラベルに対して0~1が与えられる。(例)[0.1 , 0,7 , 0.05 , 0 , 0.05]
一方、正解ラベルが2の時は、[0 , 1 , 0 , 0 , 0]という教師データとなる。(one-hot表現)
これに対して2乗和誤差は
$$
(0.1)^{2} + (0.3)^{2} + (0.05)^{2} + (0)^{2} + (0.05)^{2} = 0.105
$$
となる。
この場合出力の2つ目が1に近づき、それ以外が0に近づくと、2乗和誤差が小さくなる。
ソフトマックス関数の出力は各ラベルの確率も捉えられるので、2乗和誤差が小さくなればなるほど、良いニューラルネットワークとなっていることが納得できる。
###交差エントロピー誤差
交差エントロピー誤差は以下のような式によって計算される。
$$
E = -\sum_{k} t_k \ log \ y_k
$$
先ほど同様、$y_k$はニューラルネットワークの出力、$t_k$は教師データを表している。
教師データは正解ラベルが1で、それ以外は0なので、正解ラベルに対応する出力のみが影響する。
活性化関数としてソフトマックス関数を用いた時には、出力が0~1となる。対数は以下のグラフのように0~1において、-∞〜0の値をとる。
交差エントロピー誤差にはマイナスが付いているので、2乗和誤差同様、出力が1に近づくと小さくなり、出力が0に近づくとかなり大きな値となる。
2乗和誤差と比較すると、他のラベルの値は影響を受けないが、正解ラベルに対応する出力が0に近いと無限に大きくなってしまう。
###平均2乗誤差(MSE)
ここからは主に回帰問題で用いられる損失関数だ。
平均2乗誤差は以下のような式によって計算される。
$$
MSE(y_i , \hat{y_i} )= \frac{1}{n}\sum_{i=1}^{n} (y_i - \hat{y_i} )^{2}
$$
$y_i$は実測値、$\hat{y_i}$は予測値である。
回帰問題においては一番基本的な関数である。このあと紹介する平均絶対誤差よりも外れ値の影響が大きくなる損失関数である。
###平均絶対誤差(MAE)
平均2乗誤差は以下のような式によって計算される。
$$
MAE(y_i , \hat{y_i} )= \frac{1}{n} \sum_{i=1}^{n} | y_i - \hat{y_i} |
$$
先ほどの平均2乗誤差よりも外れ値に強い。
なお、ここで紹介したのは一部であり他にも様々な損失関数を存在する。
#損失関数を使う理由
分類問題の精度だけを測りたいのであれば、損失関数を使わなくても正解率だけを考えれば良い。ではなぜ損失関数を用いるのか。それはパラメータの更新において重要だからである。
正解率を指標にしていると、パラメータを微妙に変化させた時には基本的に正解率が変化しない。つまり、パラメータを大きくするべきか、小さくするべきかがわからない。
ここで損失関数を用いてみると、パラメータを変化させると、出力も変化し、損失関数も変化する。損失関数の増減によって、パラメータを動かす方向を見つけることができる。
(詳しくは(勾配編)にて解説)
#まとめ
損失関数はニューラルネットワークにおいて用いられる評価関数で、ニューラルネットワークの良し悪しを表し、パラメータの更新に用いられる。
代表的な損失関数には2乗和誤差、交差エントロピー誤差、平均2乗誤差、平均絶対誤差などがある。