「この画像は犬70%、猫25%、鳥5%」——多クラス分類のAIがこうした確率を出せるのは、最後にソフトマックス関数が控えているからです。この記事では、複数の出力をまとめて確率分布に変換するという固有の役割を解説します。
📖 ひと言でいうと
ソフトマックス関数とは、複数の出力値を「それぞれ0〜1で、合計するとちょうど1(=100%)」になるように変換する関数です。変換後の値は確率分布として扱えるため、多クラス分類の出力層で標準的に使われます。
例えるなら「得点を得票率に換算する開票係」です。各候補(クラス)の得点がバラバラの大きさでも、全体に占める割合に換算すれば「A候補66%、B候補24%、C候補10%」のように比較しやすい形になります。厳密には単純な割合計算ではなく、指数関数を通してから正規化するため、大きい値がより強調されるという特徴があります。
🖼 1枚でわかるソフトマックス関数
📘 公式テキストの説明
複数の出力値の合計が1.0(=100%)になるように変換して出力する関数。この関数は、特に分類問題でよく用いられる。入力された各値(スコアやロジットとも呼ばれる)が、あるクラスに所属する確率として解釈されることが多い。ソフトマックス関数を通過した後の各値は0から1の範囲に収まり、その合計は必ず1になるため、確率分布として扱える。数学的には、ソフトマックス関数は指数関数を用いて各入力値を正規化し、その結果が新たな確率分布となる。特に多クラス分類の最後の層で利用されることが一般的。
かみくだくと、押さえるべきは「入力・変換・出力・場所」の4点です。入力はネットワークが出した生のスコア(ロジット)。変換は指数関数を使った正規化。出力は各値0〜1・合計1の確率分布。使う場所は多クラス分類の最後の層(出力層)。この4点がそろえばソフトマックス関数の説明として完成です。
🔍 しっかり理解する
変換の流れを追う
ソフトマックス関数の計算は、次の3ステップです。
式で書くと、i番目の出力は exp(xi) / (exp(x1) + exp(x2) + … + exp(xn)) です。指数関数を通す理由は主に2つあります。第一に、exp(x)は必ず正の値になるため、負のスコアが混ざっていても確率(0以上)として成立します。第二に、指数関数は値の差を拡大するため、スコアの大きいクラスがより際立ち、「最有力候補」がはっきりします。
具体的な数字で確かめる
3クラス分類でスコアが 2.0、1.0、0.1 だったとします。それぞれ指数関数にかけると約 7.39、2.72、1.11。合計は約11.21なので、割り算すると約 0.66、0.24、0.10 となります。確かに各値は0〜1で、合計は1です。「クラス1の確率66%」のように、そのまま確率として読めるようになりました。
もし指数関数を使わず単純に割合を取ると 2.0/3.1 ≒ 0.65、1.0/3.1 ≒ 0.32 のようになりますが、スコアに負の値があると破綻しますし、差の強調も起きません。指数関数を用いた正規化であることが、ソフトマックス関数の数学的な特徴です。
学習では交差エントロピーとセットで使う
多クラス分類の学習では、ソフトマックス関数の出力(予測の確率分布)と正解(正解クラスだけが1のone-hot表現)のずれを、交差エントロピー誤差関数で測るのが定番の組み合わせです。出力が確率分布になっているからこそ、「正解クラスの確率をどれだけ高く予測できたか」という自然な形で誤差を定義でき、勾配の計算もシンプルになります。「出力層はソフトマックス、損失は交差エントロピー」というペアで覚えておきましょう。
💡 具体例で考える
手書き数字認識(0〜9の10クラス分類)を考えます。ネットワークの最終層は10個のスコアを出しますが、たとえば「7」の画像を入れたとき、生のスコアは「7が8.2、1が5.1、9が3.0、…」のような裸の数値です。これをソフトマックス関数に通すと「7が0.93、1が0.04、9が0.01、…」という確率分布になり、「93%の自信で7」と読めるようになります。
確率になっていることは実運用でも重要です。たとえば最有力クラスの確率が0.4しかなければ「自信が低いので人間が確認する」といった判断ができます。また「1と7で迷っている(0.48対0.45)」のような迷い方まで見えるのは、合計1の分布として出力されているおかげです。
⚠️ よくある誤解・紛らわしい用語
- シグモイド関数との混同 — シグモイド関数は1つの値を0〜1に変換する関数で、2値分類の出力層向きです。ソフトマックス関数は複数の値をまとめて合計1の分布に変換する関数で、多クラス分類向きです。「合計が1になる」のはソフトマックスだけの性質です。
- 使う場所の誤解 — ソフトマックス関数は多クラス分類の最後の層(出力層)で使うのが一般的で、隠れ層の活性化関数として使うのは一般的ではありません。隠れ層の定番はReLU関数などです。
- 「確率=正しさの保証」ではない — 出力の0.93は「モデルの自信」であって、正解率93%を保証するものではありません。自信過剰なモデルもあり得ます。
- max関数との違い — 単に最大のクラスだけを1にするのではなく、全クラスに滑らかに確率を割り振ります。この「柔らかい(ソフトな)最大値の取り方」が名前の由来と説明されます。
📝 試験でのポイント
- 「複数の出力値の合計が1.0(=100%)になるように変換する」という表現は、ソフトマックス関数を特定する最大の決め手です。
- 「多クラス分類の最後の層で利用される」という使いどころは、シグモイド関数(2値分類)との対比で問われやすいポイントです。
- 「指数関数を用いて正規化する」という数学的な仕組みの記述も正誤判定の対象になり得ます。
- スコア(ロジット)という用語が入力側を指すことを覚えておくと、説明文の主語の取り違えを防げます。
📚 まとめ
ソフトマックス関数は、複数の出力値を指数関数で正規化し、各値0〜1・合計1.0の確率分布に変換する関数です。ネットワークが出す生のスコア(ロジット)を「各クラスに属する確率」として解釈できる形に整えるのが役割で、多クラス分類の出力層で標準的に使われ、学習では交差エントロピー誤差関数とセットになります。1つの値を変換するシグモイド関数との違い(2値対多クラス、合計1の有無)を明確にしておきましょう。
