【分かりやすく】シグモイド関数とソフトマックス関数について解説【ディープラーニング】
ディープラーニングにおける「シグモイド関数」と「ソフトマックス関数」について、数学を極力使用せずに解説します。
「シグモイド関数」と「ソフトマックス関数」って何?
「シグモイド関数」「ソフトマックス関数」は、ディープラーニングにおいて
計算結果を出力する
役割をもつ、非常に重要な関数です。また、2つの関数の違いは
シグモイド関数 → 2値分類(〇か✕か)をしたいときに使う
ソフトマックス関数 → 多値分類(例:犬か猫か狼かを判定)をしたいときに使う
となります。
どう使う?
この二つの関数の使い方について説明します。
そもそも、ディープラーニングのメイン機能は「データにフィットする関数を作る」ことです。
2値分類の例を下に示します。
データ点が二色(紫、黄)に分けられています。ディープラーニングは、これらの点を
このようにきれいに分割できる線を引くことができます。
しかし、線を引いたところで、実用的には全く嬉しくありません。上のグラフを例にすると、本来の目的は
あるデータが「紫」か「黄」かを判定する
ことだからです。そこで登場するのが「シグモイド関数」や「ソフトマックス関数」です。
上の例は2値分類のため、使用するのは「シグモイド関数」になります。
シグモイド関数の方がシンプルなので、まずはシグモイド関数から説明します。
シグモイド関数
シグモイド関数は、以下のような数式で表せます(意味は分からなくても大丈夫です)。
これをグラフにすると、以下のようになります。
これがどういう意味を持つかについて説明します。
まずはyに注目してください。値が0~1になっていますね。
これは、「yは確率値である」ことによるものです。y=0.2なら20%、といった具合です。
何故確率を使うのかというと、分類を簡単に行うためです。今回の場合、
とあらかじめ決めておきます。
そうすることで、yの値が出た瞬間に分類ができるようになります。
対してxについてですが、こちらは値の範囲に意味はありません。
xは「ディープラーニングの結果」を表します。
つまり、ディープラーニングの結果をシグモイド関数のxに代入すると、yという確率値が出てくるということになります。
そして、yの値が出てくることで、「紫」か「黄」の分類ができることになります。
これが、シグモイド関数の役割です。
ソフトマックス関数
続いて、ソフトマックス関数について説明します。
先ほど説明した「シグモイド関数」は、2値分類用の関数です。3値以上の多値分類では、厳密に適用することは難しいです。
(例えば、3値分類にシグモイド関数を適用したいとき、yの境界を0.3333333.....と0.66666666....で分けるということになり、境界値付近の処理が厄介になってしまいます)
そこで登場するのがソフトマックス関数です。
ソフトマックス関数は以下の式で表されます(こちらも意味は理解しなくて大丈夫です)
ややこしい式ですね。これを3値分類の時用に変換すると、次のようになります。(i=1,2,3)
簡単にいうと、「分類する3つのものについてディープラーニングを通して結果(x)を出し、それぞれの値に対して全体における割合を計算する」ということです。
イメージは下のようになります。
ソフトマックス関数を使用することで、何値分類であっても分類を行うことができるのです。
これが、ソフトマックス関数の役割です。
まとめ
最後にまとめです。
・「シグモイド関数」と「ソフトマックス関数」は、ディープラーニングの結果を実用化するためのもの
・2値分類であればシグモイド関数を、3値以上の多値分類であればソフトマックス関数を使う
ここまで読んでくださり、ありがとうございました。