どうも!ちょげです。
皆さんは損失関数というのを知っていますか?
損失関数とは、簡単に言うとニューラルネットワークを評価する関数です。
ディープラーニングでは、損失関数によって、ネットワーク内の重みとバイアスのようなパラメータが最適になっているかを調べ、パラメータを修正します。
しかし、ネットワークの評価は、損失関数を使わなくても、テストデータを用意して精度を調べれることによって出来ると思いませんか?
例えば、顔写真によって男性か女性かを識別するような場合だったら、テスト用に用意した顔写真が男性か女性かを識別させ、その正解率が高いか低いかのようにも評価は出来ます。
では、なぜ損失関数を使うのでしょうか?
損失関数を使うメリット

損失関数を使うメリットは、パラメータをどう変えれば良いのかの指標となるという点です。
というのも、損失関数は、「画像の認識率」や「識別の正解率」のような精度と違って、「あるパラメータの変化によるニューラルネットワークの性能の変化」が細かく判別できるからです。
例えば、画像認識のためのニューラルネットワーク内のある重みパラメータを少しだけ大きくしたとします。
「画像の認識率」を指標にすると、認識率が高くなったり低くなったりは、もちろんあるのですが、認識率が変動しないようなことが起こります。
認識率が変動しないとパラメータを少し大きくしたのが、正しいのかそうでないのか分からず、結果として、学習が停止してしまいます。
しかし、損失関数を指標にすると、重みパラメータの少しの変化からでも、微分を用いることによって、重みパラメータの変化が正しいのかそうでなかったのを判別できます。
そして、損失関数の指標を元に重みパラメータを更に大きくするのか、それとも小さくするのかを決定できます。
このように損失関数は、パラメータをどのように変化させれば、最適なニューラルネットワークになるのかの指標になるのです。
だから、ディープラーニングでは、精度ではなく損失関数を使うのです。
まとめ
今回の内容をまとめると、ディープラーニングで損失関数を使うのは、ネットワークの性能を表わせるのに加えて、どのようにパラメータを調整すればいいのかわかるからです。
少しでも参考になれば嬉しいです。
これからもディープラーニングに関する記事を出来るだけ分かりやすく投稿していきたいと思います。
コメント