みんなのAI
機械学習AI論文
読み込み中…

学ぶ

🏅マイ実績

Chapter 11

ソフトマックス:結果を確信に変える

ソフトマックス(確率分布化)。出力を0〜1にし、和が1になるようにする。

チャプター別 ディープラーニング図

チャプターを進めるたびに、下の図が少しずつ埋まります。ここまでの構造です。

Softmaxスコア→確率(例: eを3とする)
スコア
3
1
0
→
中間
27
3
1
3のべき乗
3³=27
3¹=3
3⁰=1
→
確率
27/31
3/31
1/31
合計で割る
27÷31=27/31
3÷31=3/31
1÷31=1/31

3をかけると 27(3の3乗)

27/31=27 ÷ 31

ディープラーニングで見るソフトマックス

ソフトマックスは複数のスコア(数値)を確率に変換する関数です。すべての値が0から1の間になり、合計がちょうど1になるので、確率として読めます。

式は softmax(xi)=exi∑jexj\mathrm{softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}}softmax(xi​)=∑j​exj​exi​​ です。eの累乗(e ≈ 2.718)を使うため、最も大きいスコアが大幅に強調され、他は相対的に小さくなります。1位と2位の差がはっきりします。

例: スコア [3, 1, 0] → e³≈20, e¹≈2.7, e⁰=1 → 合計 ≈ 23.7 → 確率 ≈ [0.84, 0.11, 0.04]。スコア3は1の3倍でしたが、確率では約8倍になります!

ソフトマックスはほぼすべての分類モデルの最終層で使われます。「この写真は70%犬、25%猫、5%鳥」のようにクラスごとの確率とモデルの確信度が分かります。

学習時に交差エントロピー損失と組み合わせると、勾配がきれいに安定して計算されます。「正解クラスの確率を上げ、他を下げる」ようにモデルが自然に学習します。

ソフトマックスの「すべて正で合計1」という性質は確率分布の定義そのものです。スコアを確率に変換する最も自然な方法として、統計的にも理論的にも正当化されています。

画像分類: モデルの最終層がスコア(ロジット)[5.2, 2.1, 0.8, …] を出力し、ソフトマックスで [0.70, 0.25, 0.05, …] のクラスごとの確率に変換します。最も高い確率のクラスが最終回答です。

チャットボット・翻訳: ChatGPTが次の単語を選ぶとき、語彙(数万語!)のすべてにスコアをつけ、ソフトマックスで確率に変換し、その確率に基づいて単語をサンプリングします。高確率の単語が多く選ばれますが、時に低確率の単語も選ばれて多様性が出ます。

アテンション機構: 翻訳で「どの入力単語に注目するか」の関連度スコアをソフトマックスに通して確率(重み)にします。この重みで入力の重み付き平均を取り、最も関連する部分を強調します。

計算の順番: ① Z=W⋅X+bZ = W \cdot X + bZ=W⋅X+b(ロジット)を求める → ② eZe^ZeZ を計算(問題では e≈3e \approx 3e≈3)→ ③ Σ\SigmaΣ(合計)= すべてのeZe^ZeZを足す → ④ Y=eZΣY = \frac{e^Z}{\Sigma}Y=ΣeZ​(各値を合計で割る)。この順番で進めます。

空白の求め方: Yが空白なら「そのeZ÷Σe^Z \div \SigmaeZ÷Σ」を計算。eZe^ZeZが空白なら「Y×ΣY \times \SigmaY×Σ」。Zが空白ならeZe^ZeZから逆算。Σ\SigmaΣが空白ならすべてのeZe^ZeZを足すだけです。

検算: 計算後、すべてのYが0から1の間で合計が1になっているか確認しましょう。なっていなければ計算ミスです。また、問題が e≈3e \approx 3e≈3 を使うのか e≈2.718e \approx 2.718e≈2.718 を使うのかも確認してください。

ソフトマックスは数を0~1の範囲にし、合計が1になるようにする関数です。Z=W⋅X+bZ = W \cdot X + bZ=W⋅X+b を計算し、eZe^ZeZ を求め、それぞれを合計(Σ\SigmaΣ)で割ると確率のように使えます。

スコア(ZZZ) → 3Z3^Z3Z → 合計で割る → 確率(YYY)

XXX
1
1
⋅\cdot⋅
W
1
1
0
1
+
b
1
1
=
ZZZ
3
2
→
3Z3^Z3Z
27
9
→
Σ\SigmaΣ
36
→
YYY
3/4
1/4

多クラス分類の最後の層でよく使われます。

例: 計算の流れ(1通り)

Z1=1⋅1+1⋅1+1=3Z_1 = 1 \cdot 1 + 1 \cdot 1 + 1 = 3Z1​=1⋅1+1⋅1+1=3
Z2=0⋅1+1⋅1+1=2Z_2 = 0 \cdot 1 + 1 \cdot 1 + 1 = 2Z2​=0⋅1+1⋅1+1=2
3Z1=33=273^{Z_1} = 3^3 = 273Z1​=33=27
3Z2=32=93^{Z_2} = 3^2 = 93Z2​=32=9
Σ=27+9=36\Sigma = 27 + 9 = 36Σ=27+9=36
Y1=3Z1Σ=2736=34Y_1 = \frac{3^{Z_1}}{\Sigma} = \frac{27}{36} = \frac{3}{4}Y1​=Σ3Z1​​=3627​=43​
Y2=3Z2Σ=936=14Y_2 = \frac{3^{Z_2}}{\Sigma} = \frac{9}{36} = \frac{1}{4}Y2​=Σ3Z2​​=369​=41​

問題

Z=W⋅X+bZ = W \cdot X + bZ=W⋅X+b, eZ    (e≈3)e^Z \;\; (e \approx 3)eZ(e≈3), Y=eZΣY = \frac{e^Z}{\Sigma}Y=ΣeZ​ の順に計算し、空欄(?)を埋めなさい。

この問題では e を 3 として計算します。つまり eZ=3Ze^Z = 3^ZeZ=3Z です。(例:Z=1 → 3、Z=2 → 9)

スコア(ZZZ) → 3Z3^Z3Z → 合計(Σ\SigmaΣ)で割る → 確率(YYY)

X
1
1
·
W
1
0
0
1
+
b
1
2
=
Z
3
→
3Z3^Z3Z
9
27
→
Σ\SigmaΣ
36
→
Y
1/4
3/4
確率
0.25
0.75
1 / 10