【ディープラーニング】ソフトマックス関数とは?数値を「確率」に変える魔法の計算
こんにちは。ゆうせいです。
前回は、AIの予測のズレを測る「交差エントロピー」についてお話ししました。
その中で、「AIの出力を、確率に直してから計算する」という話が出てきましたね。
実は、ニューラルネットワークの計算結果というのは、そのままだと とか
といった、バラバラの数字(スコア)が出てきます。これを「猫である確率
%」のように、合計して
%(
)になるように整えてくれるのが、今回紹介する ソフトマックス関数(Softmax Function) です。
名前の中に「マックス(最大)」と入っていますが、なぜ「ソフト」なのでしょうか。
今回は、AIが最後の最後に行うこの重要な処理について、その仕組みと名前の由来を解説していきます。
そもそも、なぜ変換が必要なの?
ニューラルネットワークが計算した直後の生の数値(ロジットと呼びます)は、ルール無用の数字です。
- 猫スコア:
- 犬スコア:
- 鳥スコア:
これだと、どれくらい猫っぽいのか、直感的にわかりにくいですよね。しかも、マイナスのスコアなんて確率としてはありえません。
私たちが欲しいのは、こういう形です。
- 猫:
%
- 犬:
%
- 鳥:
%
- 合計:
%
どんな数字が来ても、必ずプラスにして、合計を にする。これをやってくれるのがソフトマックス関数です。
ステップ1:マイナスを消し去る(指数関数の力)
まず最初にやることは、マイナスの数字を消すことです。
単純に絶対値にするのではありません。自然対数の底 (ネイピア数
)という定数を使って、すべての数字を
の「乗数」にします。
という計算です。
(マイナス乗しても、小さいプラスの数になります!)
この計算をすることで、全ての数字が「プラス」になります。
さらに、 を使うことで、 「大きい数字はより大きく、小さい数字はより小さく」 強調されるという効果もあります。
ステップ2:合計して割る(シェアの計算)
全ての数字がプラスになったら、次は「割合」を出します。
これはケーキを切り分けるのと同じです。
- さっき計算した数値を全部足します(合計値を出す)。
- それぞれの数値を、合計値で割ります。
- 猫:
(87%)
- 犬:
(11%)
- 鳥:
(2%)
- 猫:
これで、合計すると必ず (100%)になる確率の完成です。
名前の由来:「ハード」じゃないから「ソフト」
さて、なぜ「ソフトマックス」という名前なのでしょうか。
それは、普通の「マックス(最大値)関数」と比較するとわかります。
ハードマックス(普通の最大値)
一番大きい数字だけを にして、あとは全部
にする方法です。
- 猫:
- 犬:
- 鳥:
これだと、白黒はっきりしすぎていて、「犬の可能性もちょっとはあるんだけどな...」という微妙なニュアンスが消えてしまいます。これは情報としては硬すぎる(ハード)のです。
ソフトマックス
一番大きい数字に高い確率を与えつつ、他の候補にも「可能性の余地」を残してあげる方法です。
- 猫:
- 犬:
- 鳥:
最大値(マックス)を選ぼうとしているけれど、完全に他の可能性を消すわけではない。だから「ソフト」なマックス関数なのです。
まとめ
いかがでしたか。
ソフトマックス関数は、AIの計算結果を人間が理解しやすい「確率」に翻訳してくれる通訳のような存在でした。
- 役割:バラバラの数値を、合計
の確率に変換する。
- 仕組み:
の力でプラスにして、合計で割ってシェアを出す。
- 名前:一番大きいやつを優遇するけど、他もゼロにはしないから「ソフト」。
この関数のおかげで、前回学んだ「交差エントロピー」の計算ができるようになるわけです。
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。