スポンサーリンク

損失関数とは

損失関数

ディープラーニングで学習を行うときに、損失関数を決める必要があります。学習は、この損失関数の値が小さくなる方向に進むようになっています。なので、この損失関数を間違って規定してしまうと、学習がまともに進みません。

代表的な損失関数

2乗和誤差:出力が恒等関数である回帰問題でよく使われる損失関数です。

交差エントロピー誤差:クロスエントロピー誤差とも言います。出力がソフトマックスである分類問題でよく使われる損失関数です。

その他にも、様々な損失関数が使われます。重要なのは、解くべき問題に適した損失関数を使うことです。適さない損失関数を使うと、収束が遅かったり、収束値が不十分だったりということになります。

損失関数で重要なこと

ディープラーイングは、パラメータを少しずらすと損失関数の値がいくら変化するか、を見て学習を進めます。つまり微分を見るわけです。損失関数で重要なことは、できるだけ微分が0にならないことです。微分が0だと、どちらの方向にパラメータを動かせば良いのかわからないため、まともに学習が進みません。

最適化アルゴリズムについて

ディープラーニングは、損失関数の微分を頼りに学習を進めると言いましたが、その方法を最適化アルゴリズムと言います。最適化アルゴリズムにも色々あって、どのアルゴリズム使って学習を進めるかが、オプティマイザーというものを選択することによって決まります。例としては、最急降下法・SDG・モーメンタム・RMSPRop・Adamなどが挙げられます。これも、選択を間違えると、学習の進みが悪くなったり、損失値が十分下がらなかったりします。ただ、私の経験では、大抵Adamを選択しておけば、不都合は起きませんでした。

学習率

学習を進めるにあたり、学習率を設定する必要があります。この設定も間違えると、収束しなかったり、収束に時間がかかったりします。ただし、Adamなどのオプティマイザーを用いると、適切な値に調整しながら学習を進めてくれることになります。そういった調整機能がない場合は、学習率の決定は重要になります。学習がなかなか進まない場合、この学習率が原因の可能性もあるでしょう。

まとめ

ディープラーニングで学習をするには、損失関数とオプティマイザーと学習率の決定が必要になります。どれも、適切なものを選ばないと、学習がうまく進みません。経験を積んで、適したものを選べるようになりましょう。

タイトルとURLをコピーしました