ソフトマックスSoftmax

複数の点数を合計100%の確率に変える計算

  • 基本
  • 5分で読める
  • 図 3点

ポイント

  • ソフトマックスは、ばらばらな点数を複数まとめて合計が100%になるよう配分する計算です。
  • 候補一つだけを見ても取り分は決まりません。ほかの候補の点数まで一緒に見る必要があります。
  • 配分したあとも順序はそのままです。点数が高いほうが取り分も大きくなります。
  • 点数の比率ではなく間隔を見て配分します。点数の間隔が数コマ開くだけでも取り分は何倍にも開きます。
  • 出てきたパーセントはモデルがどれだけ正しいかではなく、候補どうしの比率にすぎません。

たとえで理解する

商店ビル一棟に水道料金の請求書が一枚届きます。店ごとに水道メーターが別々に付いていて、管理人はそれぞれの目盛りを全部記録したあと合計を出し、各店が全体の何パーセントを使ったかを計算して、その比率で料金を分けます。

メーターに表示された数字だけでは払う額は決まりません。隣の店の目盛りまで全部集めて合計を作ってはじめて、自分の取り分が出てきます。自分の目盛りが先月と同じでも、隣の店が水をたくさん使った月には、自分の占める比率は小さくなります。

ソフトマックスがこの割り算です。モデルが候補ごとに書き留めた生の点数を全部集め、100%の中でそれぞれの取り分に分けます。目盛りに当たるその生の点数を、ロジットと呼びます。

くわしく

候補一つだけ見ても決まりません

モデルは次に来る断片を選ぶ前に、候補ごとに点数を付けておきます。この点数は目盛りのない生の数字なので、一つだけ切り取ってみても高いのか低いのかもわかりません。

ソフトマックスは候補全体を一つの束として計算します。点数をそれぞれ必ず正の値になるように変えて大きくしたうえで、その変えた値の合計の中で各候補が占める分を取り分として与えます。だからある候補の取り分は、自分の点数だけでなく、ほかの候補がどんな点数を受け取ったかによっても変わります。

競争相手が弱ければ同じ点数でも大きな取り分をもらえ、みな似たように高ければ取り分は細かく分かれます。候補の数が増えるほど一つ一つの取り分が小さくなるのも同じ理由です。

順序はそのまま、目盛りだけが変わります

割り算を経ても候補の順序は少しも変わりません。点数板で先んじていた候補は取り分でも先んじます。順位を決めようとする計算ではなく、人が読んで見比べられる目盛りに移そうとする計算だからです。

パーセントに変えておくと便利なことが多くあります。何パーセント以上の候補だけを残すという形で切れますし、確率に応じて無作為に一つを選んで答えに多様性を持たせることもできます。学習のとき正解とどれだけずれているかを測るのにも、確率の形が扱いやすいのです。

間隔を見て配分します

名前に付いた「ソフト」は、最高点一つだけを選んで独り占めさせないという意味です。一位に100%を与えて残りを0%にする代わりに、二位や三位にもいくらか残しておきます。おかげで際どく分かれた状況が結果にそのまま表れます。

かといって点数の比率をそのまま移すわけでもありません。ソフトマックスは点数の比率ではなく点数どうしの間隔を見ます。間隔が1なら取り分は約2.7倍、2なら約7倍、3なら約20倍に開きます。だから数コマ先んじた候補がかなり大きな取り分を持っていき、遅れた候補の取り分は急速に0に近づきます。すべての点数に同じ数を足しても結果は変わりません。点数の数コマの差で答えが事実上一つに固まってしまうことが起きる理由です。

温度の設定がこの広がり方を調節します。温度を下げると間隔がさらに広がって一位がほぼ全部持っていき、上げると間隔が狭まって下位の候補にも取り分が回ります。

最後の段階だけで使われるわけではありません

言語モデルでソフトマックスがいちばん目立つ場所は、次の断片を選ぶ直前です。しかしモデルの内側でも何度も使われます。

文の中のどの単語にどれだけ集中するかを決めるアテンションが代表例です。単語ごとに関連点数を付けたあと、その点数を100%の中で分けて集中の比率とします。複数の専門家の枝のうち、どこに仕事を任せるかを決める仕組みも、よくこの方式で重みを分けます。

写真を複数の種類に分けるモデルも、最後にこの計算を付けます。結果画面に出るパーセントが全部足して100%になるのは、このためです。

もう少し正確に

ソフトマックスは、点数一つ一つを必ず正の値に変えたあと、その値の合計でそれぞれを割る計算です。だからマイナスの点数も扱え、結果はすべて0と1の間に収まり、合計は常に1になります。

たとえがずれる点もあります。水道メーターは目盛りの比率がそのまま料金の比率になりますが、ソフトマックスは点数の比率ではなく点数どうしの間隔で配分します。上の図の2.5、1.6、0.7、0を比率どおりに分けると最初の店は約52%ですが、ソフトマックスでは約60%になり、目盛りが0の店も0%ではなく約5%をもらいます。間隔が大きければ先んじた店の取り分が何倍にも開き、間隔が小さければむしろ比率で分けるときより均等に分かれることもあります。また水道メーターの目盛りは実際に使った水の量という実体がはっきりしていますが、モデルの点数にはそうした実体がありません。だから取り分が90%と出たからといって、その答えが十回中九回正しいという意味ではありません。候補どうしでそれだけ先んじていたという印にすぎないのです。候補一覧に最初からない答えは、0%としても表れないという点も覚えておくとよいでしょう。

やってみる

よくある誤解

  • ソフトマックスが答えを選ぶと思われがちですが、実際には取り分を分けるだけで、選ぶ作業はそのあとの段階で別に行われます。

  • 90%と出れば十回に九回は正しいと見なされがちですが、実際には候補どうしの比率にすぎず、正解率とは違う値です。

  • 点数を比率のまま移すと思われがちですが、実際には点数の比率ではなく間隔を見て配分するので、間隔が数コマ開くだけで先んじた候補の取り分が何倍にもなり、点数が0やマイナスの候補も0より大きな取り分をもらいます。

ひとこと要約

つまり

ソフトマックスは、ばらばらな生の点数を水道メーターの目盛りのように集め、合計が100%になるよう取り分を分ける計算です。

誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新 2026-10-17