【数式編】(損失関数)クロスエントロピー誤差
損失関数
前回の最終出力で がわかりました。
これらの値がそれぞれ、教師データの と同じ(か、ひじょうに近い値)であれば、期待した出力といえます。
しかし、重みやバイアスの初期値はいいかげん(ランダム)な値になっているため、初めから期待した出力になるわけではありません。
そこで、損失関数を使い、現時点での出力が期待する出力とどれだけ乖離しているか(誤差)を調べ、出力が期待する値になるように、重みやバイアスを調整していきます。
今回、出力層の活性化関数には を適用しているので、損失関数にはクロスエントロピー誤差(交差エントロピー誤差)を採用します。
教師データ
今回、教師データは one-hot 表現としています。
これは、正解のラベルが 1 でそれ以外は 0 となっているデータです。
例えば、 が正解ラベルの場合、次のようになります。
誤差の計算
具体的に誤差の計算をしてみましょう。
いま、期待する出力として、以下の出力を得たいとします。
つまり、りんごの出力(このニューラルネットワークでは )が最大になるようにしたいとします。
ところが、ニューラルネットワークの最終出力が次のような場合、損失関数の値はどのようになるでしょうか。
(出力層ではソフトマックス関数を適用しているので、出力の総和は 1 になっています。)
では、最終出力が次のようだった場合はどうなるでしょうか。
今回は、りんごの出力が最大になっています。
先ほどと比べて損失関数の値が小さくなっています。
さらに次のような場合はどうでしょうか。
今度はさらにりんごの出力値が大きくなっています。
先ほどと比べてさらに損失関数の値が小さくなっています。
まとめ
このように、正しい(期待する)出力に近ければ近いほど損失関数の値は小さくなっていきます。なので、損失関数の値が小さくなるような出力となるように、重みやバイアスなどのパラメータを調整すれば、正しい判断のできるニューラルネットワークになります。
また、ソフトマックス関数が出力を確率として求めていることを考えると、
2つめの例では 50% (0.5) の確率でりんごだと思っていて、
3つめの例では 90% (0.9) の確率でりんごだと思っている
と考えることができます。
損失関数の値は、ニューラルネットワークがどの程度(自信をもって)正しく判断しているかの目安になります。