ソフトマックス関数とは

そふとまっくすかんすうsoftmax function別名 ソフトマックス

1行定義

ソフトマックス関数とは、複数の数値をそれぞれ0から1の間の値に変換し、その合計がちょうど1になるようにする関数のことです。

くわしく

ソフトマックス関数は、ニューラルネットワークが出した複数の数値(スコア)を、確率の形に変換する関数です。主に多クラス分類の出力層で使われます。

計算のしかた

K個の入力z1, …, zKに対して、i番目の出力はexp(zi) / (exp(z1) + … + exp(zK))です。まず、各スコアを指数関数で正の値にします。次に、それぞれを全体の合計で割ります。

たとえば、画像が「犬」「猫」「鳥」のどれかを判定するモデルが、スコア1.0、0.0、−1.0を出したとします。ソフトマックス関数を通すと、およそ0.67、0.24、0.09になります。マイナスのスコアも0より大きい値になり、合計は1です。スコアの大小の順番もそのまま保たれます。

名前の由来と性質

最大のものだけを1、残りを0にする操作を、なめらかに(ソフトに)したものなので、この名前があります。指数関数を使うため、スコアの差が大きいほど、最大のクラスに確率が集中します。

すべての入力に同じ数を足しても、出力は変わりません。実装では、この性質を使って入力から最大値を引いてから計算し、指数関数の値が大きくなりすぎるのを防ぎます。

使いどころと注意点

出力層では、誤差関数の交差エントロピーと組み合わせるのが定番です。正解クラスの確率が大きくなるように学習が進みます。

2クラスのソフトマックス関数は、2つのスコアの差をシグモイド関数に入れたものと同じになります。一方、1枚の画像に複数のラベルを付けるマルチラベル分類には向きません。合計が1なので、あるクラスの確率が上がると、他のクラスの確率が下がるからです。この場合は、クラスごとにシグモイド関数を使います。

出力層以外でも使われます。TransformerのAttentionでは、どの単語にどれだけ注目するかの重みを、ソフトマックス関数で合計1にそろえています。

覚え方

「指数で正にして、合計で割る」と覚えます。

G検定での出題

出力が合計1の確率として読める性質、多クラス分類の出力層での使用と交差エントロピーとの組み合わせ、シグモイド関数との使い分け(1つを選ぶか、複数を付けるか)が問われます。

混同しやすい用語

用語意味
シグモイド関数どんな実数の入力も0から1の間の値に変換する、なめらかなS字形の関数

違いを表で比べる:シグモイド関数とソフトマックス関数

◯×チェック

  1. ソフトマックス関数の出力は、どの要素も0より大きく、すべてを足すと1になる。

    答えを見る

    答え ◯ 正しい

    指数関数の値は常に正で、それを全体の合計で割るためです。そのため確率として読めます。

  2. ソフトマックス関数を通すと、変換前のスコアが最も大きいクラスとは別のクラスが、最も大きい確率になることがある。

    答えを見る

    答え × 誤り

    指数関数は単調に増加するので、スコアの大小の順番は変換後も変わりません。

  3. ソフトマックス関数では、すべての入力に同じ数を足しても、出力される確率は変わらない。

    答えを見る

    答え ◯ 正しい

    exp(z + c) = exp(c) × exp(z)なので、分子と分母のexp(c)が打ち消し合います。

練習問題

ソフトマックス関数の問題(12問)
  1. 多クラス分類の実現方法
  2. 出力層の活性化関数の選択
  3. 活性化関数の形と勾配の伝わり方
  4. 回帰の出力層の活性化関数
  5. ソフトマックスとシグモイドの関係
  6. 正解以外の確率と損失の関係
  7. Attentionの出力の計算
  8. 内積をスケーリングする理由
  9. スケーリング後のスコアと重み
  10. 注意の重みのヒートマップ
  11. 文章生成の多様さの調整
  12. 蒸留におけるソフトターゲット

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

公開日: 最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術12

改訂履歴

表示設定

テーマ
文字の大きさ
問題演習