92
74

More than 5 years have passed since last update.

SoftMax(ソフトマックス)関数とは?文系の人にもわかりやすく

Last updated at Posted at 2019-01-03

この記事ではソフトマックス関数について、レベルを分けてできる限り分かりやすく説明していきます。

Wikipediaによると(https://en.wikipedia.org/wiki/Softmax_function)
「ソフトマックス関数は、非正規化されたベクターを取って、それを確率分布に正規化するもの」らしいです。

え?  これではよくわかりませんね。順を追って説明しましょう。

とりあえず、何が言いたいの

ざっくり言えば、ソフトマックス関数とは、出力されたごちゃごちゃした数字を和が綺麗に100%(1.0)になる数字に変えてくれる関数です。

画像を見て猫と犬かを当てるプログラムがあるとしましょう。

隠れ層を通過して無事、画像が猫か犬かの確率を表す数字が出力されたとします。

そこでソフトマックス関数が無いと、犬が2.0、猫が1.5などとプログラムは出力してしまいます。2.0と1.5では和が3.5です。これは全体の350%中、犬である確率が200%、猫である確率が150%と言っているのと同じことです。これでは分かりにくいですよね。

ソフトマックス関数があると、犬が0.62、猫が0.38などとプログラムは出力してくれます。これはソフトマックス関数が値を調整してくれるからです。どのように調整するかというと、犬と猫の和が1.0(100%)になるようにしてくれます。この例で言えば、犬は0.62、猫は0.38で、和が1.0になるようにソフトマックス関数は調整してくれます。これだと全体の100%中、犬である確率が62%、猫である確率が38%となり、とても分かりやすいですね。

まとめるとソフトマックス関数は、出力されたごちゃごちゃした数字を綺麗に、全体の確率が100%(1.0)になるように調整してくれる関数です

出力されたごちゃごちゃした数字(犬:2.0 猫:1.5) → 和が1になる見やすい数字に(犬:0.62 猫:0.38)

言い換えて説明すると、
出力されたごちゃごちゃした確率(犬:200% 猫:150%) → 和が100%になる見やすい確率に(犬:62% 猫:38%)

少し深く

では具体的にどのように調整しているのでしょうか。

ソフトマックス関数は、式にするとこうなります。

softmax (1) (1).png

では先ほどの例で計算してみましょう。

ソフト関数前の出力数は、犬が2.0、猫が1.5でした。これをソフトマックス関数に通すと

犬: S(2.0) = e^2 / (e^2+e^1.5) = 0.622459
猫: S(1.5) = e^1.5/ (e^2+e^1.5) = 0.377541

0.622459+0.377541=1.0(100%)となりました。これで犬である確率が約62%、猫である確率が38%に無事変換されました。

この式ではSをソフトマックス関数、yを出力された数字としています。また分母にあるΣ(シグマ)は全ての出力された数字の和を表しています。

なぜ62%+38%=100%は、200%+150%=350%と同じことを述べていると断定できるのでしょうか。それは2.0と1.5に同じ数を掛けたり割ったりしているからです。この例ではe^xで掛けて、(e^2+e^1.5)で割っています。よって式を通す前と通した後は同じ割合なのです。

92
74
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
92
74