ディープラーニングを学習していると、ソフトマックス関数というのに出会うかもしれません。
この関数分かんないんだけど…ってなって、ディープラーニングの学習が行き詰ってしまったという人もいると思います。
この関数ってなんやねんという疑問に答えるために、今回はソフトマックス関数についてディープラーニングからの観点で解説します。
出力層の活性化関数
まず、ソフトマックス関数はどんな時に使うかを説明します。
機械学習の問題には以下の2種類があります。
- 分類問題
問題の答えを属性で分類するような問題
(例)男性、女性、その他 - 回帰問題
問題の答えを数値として予測するような問題
(例)明日の給料は1000円だ
ディープランニングの出力層では、どちらの問題に属するかで活性化関数を設定します。
分類問題では、恒等関数という関数を使います。
そして、回帰問題でソフトマックス関数を使います。
ソフトマックス関数は、入力データから数値を予測するような時に、ディープラーニングの出力層で使う活性化関数なのです!
関数の特徴
次に、ディープラーニングでのソフトマックス関数の特徴を見ていきます。
ソフトマックス関数の特徴としては以下の3つがあげられます。
- 出力が出力層のすべてのニューロンと関わる
- 出力の合計値が1になる
- 出力を確率のように解釈できる
まず、1つ目の特徴としては出力層のすべてのニューロンと出力がかかわっているということです。
ソフトマックス関数の式は以下のようになっています。
数式からざっくり考えると、出力層全ての数値を足した値でk番目の出力を割る関数となっています。
つまり、1つの出力に出力層全てのニューロンが関わっているということです。
次に2つ目は、出力の全てを足したら1になるという特徴です。
上記の式をもう一度見ていただきたいのですが、この式をよくよく考えてみると、全体の合計で1つの値を割るっていう動作は割合を求める式ですよね。
割合を求める式ということは出力を全て足したら1にならないといけないんです。
また、割合ということは確率のように解釈することも可能ということです。
例えば、出力値が0.25と0.75だったら、25%と75%と見ることもできるということです。
この特徴によって、出力の数値を確率によって出すといったことも可能となります。
まとめ
今回はソフトマックス関数について、解説しました。
今回の内容をまとめると
- 回帰問題で出力層の活性化関数として使う
- 出力の合計値が1となる
- 出力を確率のように解釈できる
のようになります。
これからディープラーニングを学びたいといった人やディープラーニングで行き詰ってしまったという人の参考に、少しでもなれれば嬉しいです。
コメント