多クラス・ロジスティック回帰 2026年3月23日
ソフトマックス関数・交差エントロピー損失・勾配降下法を用いた多クラス分類への拡張を、完全な導出とインタラクティブ・デモで学ぶ。
Regression Classification GLM
2クラスから多クラスへ
ロジスティック回帰 では、2値 の結果 y ∈ { 0 , 1 } y \in \{0, 1\} y ∈ { 0 , 1 } をシグモイド関数でモデル化しました。しかし現実の問題には、手書き数字の分類(0〜9)や生物種の判別など、3つ以上のクラスを持つケースが多くあります。
ロジスティック回帰を K K K クラスに拡張するにはどうすればよいでしょうか?
y ∈ { 1 , 2 , … , K } ⟷ 多クラス・ロジスティック回帰 y \in \{1, 2, \ldots, K\} \quad \longleftrightarrow \quad \text{多クラス・ロジスティック回帰} y ∈ { 1 , 2 , … , K } ⟷ 多クラス・ロジスティック回帰
問題設定
各クラス k = 1 , 2 , … , K k = 1, 2, \ldots, K k = 1 , 2 , … , K に対して、線形予測子 を定義します:
z k = w k ⊤ x + b k z_k = \mathbf{w}_k^\top \mathbf{x} + b_k z k = w k ⊤ x + b k
ここで x = ( x 1 , x 2 , … , x n ) \mathbf{x} = (x_1, x_2, \ldots, x_n) x = ( x 1 , x 2 , … , x n ) は特徴量ベクトル、各クラス k k k は固有の重みベクトル w k \mathbf{w}_k w k とバイアス b k b_k b k を持ちます。
ソフトマックス関数
シグモイド関数の代わりに、ソフトマックス関数 を用いて K K K 個のロジットを確率に変換します:
P ( Y = k ∣ x ) = e z k ∑ j = 1 K e z j P(Y = k \mid \mathbf{x}) = \frac{e^{z_k}}{\sum_{j=1}^{K} e^{z_j}} P ( Y = k ∣ x ) = ∑ j = 1 K e z j e z k
これにより2つの重要な性質が保証されます:
各確率は正 : P ( Y = k ∣ x ) > 0 P(Y = k \mid \mathbf{x}) > 0 P ( Y = k ∣ x ) > 0 (すべての k k k について)
確率の和は1 : ∑ k = 1 K P ( Y = k ∣ x ) = ∑ j e z j ∑ j e z j = 1 \displaystyle\sum_{k=1}^{K} P(Y = k \mid \mathbf{x}) = \frac{\sum_j e^{z_j}}{\sum_j e^{z_j}} = 1 k = 1 ∑ K P ( Y = k ∣ x ) = ∑ j e z j ∑ j e z j = 1
予測クラスは最も確率の高いものとなります:
y ^ = argmax k P ( Y = k ∣ x ) \hat{y} = \underset{k}{\operatorname{argmax}} \; P(Y = k \mid \mathbf{x}) y ^ = k argmax P ( Y = k ∣ x )
K = 2 K = 2 K = 2 のとき、ソフトマックスは2値ロジスティック回帰 のシグモイド関数に帰着します。
One-Hot エンコーディングと尤度
正解ラベルをベクトルで表現するために、one-hot エンコーディング を使います:クラス k k k が正解なら y k = 1 y_k = 1 y k = 1 、それ以外は y k = 0 y_k = 0 y k = 0 。p k = P ( Y = k ∣ x ) p_k = P(Y = k \mid \mathbf{x}) p k = P ( Y = k ∣ x ) とおくと、
正解ラベルが観測される尤度は:
P ( y ∣ x ) = ∏ k = 1 K p k y k P(\mathbf{y} \mid \mathbf{x}) = \prod_{k=1}^{K} p_k^{\,y_k} P ( y ∣ x ) = k = 1 ∏ K p k y k
y k = 1 y_k = 1 y k = 1 となるのは1つだけなので、この積は正解クラスの確率を取り出します。対数を取ると:
log P ( y ∣ x ) = ∑ k = 1 K y k log p k \log P(\mathbf{y} \mid \mathbf{x}) = \sum_{k=1}^{K} y_k \log p_k log P ( y ∣ x ) = k = 1 ∑ K y k log p k
交差エントロピー損失
対数尤度の符号を反転させると交差エントロピー損失 が得られます:
L = − ∑ k = 1 K y k log p k \mathcal{L} = -\sum_{k=1}^{K} y_k \log p_k L = − k = 1 ∑ K y k log p k
これはロジスティック回帰 の2値交差エントロピー損失の自然な一般化です。正解クラスの予測確率が小さいほど、損失は大きくなります。
勾配の導出
勾配降下法で最適化するために、∂ L ∂ w k \frac{\partial \mathcal{L}}{\partial \mathbf{w}_k} ∂ w k ∂ L と ∂ L ∂ b k \frac{\partial \mathcal{L}}{\partial b_k} ∂ b k ∂ L を求めます。**連鎖律(チェインルール)**を使います:
∂ L ∂ z k = ∑ i = 1 K ∂ L ∂ p i ⋅ ∂ p i ∂ z k \frac{\partial \mathcal{L}}{\partial z_k} = \sum_{i=1}^{K} \frac{\partial \mathcal{L}}{\partial p_i} \cdot \frac{\partial p_i}{\partial z_k} ∂ z k ∂ L = i = 1 ∑ K ∂ p i ∂ L ⋅ ∂ z k ∂ p i
ステップ 1 — 損失の確率に対する微分:
∂ L ∂ p i = − y i p i ( i = 1 , 2 , … , K ) \frac{\partial \mathcal{L}}{\partial p_i} = -\frac{y_i}{p_i} \qquad (i = 1, 2, \ldots, K) ∂ p i ∂ L = − p i y i ( i = 1 , 2 , … , K )
ステップ 2 — ソフトマックスの微分(ここが難所です!):
ソフトマックスの微分では、分子と分母の両方 が z k z_k z k に依存するため注意が必要です。クロネッカーのデルタ δ i k \delta_{ik} δ ik (i = k i = k i = k のとき δ i k = 1 \delta_{ik} = 1 δ ik = 1 、それ以外は 0 0 0 )を用いると:
∂ p i ∂ z k = δ i k e z i ∑ j e z j − e z i e z k ( ∑ j e z j ) 2 = p i ( δ i k − p k ) \frac{\partial p_i}{\partial z_k} = \frac{\delta_{ik} \, e^{z_i} \sum_j e^{z_j} - e^{z_i} \, e^{z_k}}{\left(\sum_j e^{z_j}\right)^2} = p_i(\delta_{ik} - p_k) ∂ z k ∂ p i = ( ∑ j e z j ) 2 δ ik e z i ∑ j e z j − e z i e z k = p i ( δ ik − p k )
ステップ 3 — 連鎖律で合成:
∂ L ∂ z k = ∑ i = 1 K ( − y i p i ) ⋅ p i ( δ i k − p k ) = − ∑ i = 1 K y i ( δ i k − p k ) \frac{\partial \mathcal{L}}{\partial z_k} = \sum_{i=1}^{K} \left(-\frac{y_i}{p_i}\right) \cdot p_i(\delta_{ik} - p_k) = -\sum_{i=1}^{K} y_i(\delta_{ik} - p_k) ∂ z k ∂ L = i = 1 ∑ K ( − p i y i ) ⋅ p i ( δ ik − p k ) = − i = 1 ∑ K y i ( δ ik − p k )
∑ i y i = 1 \sum_i y_i = 1 ∑ i y i = 1 かつ δ i k \delta_{ik} δ ik が第 k k k 項を選び出すことから:
∂ L ∂ z k = p k − y k \frac{\partial \mathcal{L}}{\partial z_k} = p_k - y_k ∂ z k ∂ L = p k − y k
驚くほどシンプルで美しい結果です — 勾配は予測確率と正解ラベルの差にすぎません!
ステップ 4 — ∂ z k ∂ w k = x \frac{\partial z_k}{\partial \mathbf{w}_k} = \mathbf{x} ∂ w k ∂ z k = x 、∂ z k ∂ b k = 1 \frac{\partial z_k}{\partial b_k} = 1 ∂ b k ∂ z k = 1 より:
∂ L ∂ w k = x ( p k − y k ) , ∂ L ∂ b k = p k − y k \frac{\partial \mathcal{L}}{\partial \mathbf{w}_k} = \mathbf{x}(p_k - y_k), \qquad \frac{\partial \mathcal{L}}{\partial b_k} = p_k - y_k ∂ w k ∂ L = x ( p k − y k ) , ∂ b k ∂ L = p k − y k
勾配降下法による更新
パラメータは反復的に更新されます:
w k ← w k − η x ( p k − y k ) \mathbf{w}_k \leftarrow \mathbf{w}_k - \eta \, \mathbf{x}(p_k - y_k) w k ← w k − η x ( p k − y k )
b k ← b k − η ( p k − y k ) b_k \leftarrow b_k - \eta \,(p_k - y_k) b k ← b k − η ( p k − y k )
ここで η \eta η は学習率です。2値ロジスティック回帰 の勾配と比較すると、構造はまったく同じで、K K K クラスに拡張されただけです。
インタラクティブ・デモ
2次元空間で3クラスの多クラス・ロジスティック回帰を体験しましょう。決定領域 タブではモデルが入力空間をどのように分割するかを、ソフトマックス確率 タブでは各クラスの P ( Y = k ∣ x ) P(Y = k \mid \mathbf{x}) P ( Y = k ∣ x ) を可視化します。
Decision Regions Softmax Probabilities
Start Gradient Descent Reset Params
Learned Parameters Class w₁ w₂ b Class 0 0.3000 0.3000 0.0000 Class 1 0.3000 -0.3000 0.0000 Class 2 -0.3000 0.0000 0.0000
Class 0 Class 1 Class 2
How It Works 1. Logit for each class k: zk = wk,1 x1 + wk,2 x2 + bk
2. Softmax converts logits to probabilities: P(Y = k | x) = exp(zk ) / Σj exp(zj )
3. Cross-entropy loss (minimized by gradient descent): L = −(1/N) Σi log P(Y = y(i) | x(i) )
操作ガイド
グラフをクリック してデータ点を追加(下のボタンでクラスを選択)
勾配降下法を開始 して、決定境界がリアルタイムに形成される様子を観察
データ点にマウスをホバー すると、各クラスのソフトマックス確率の内訳を表示
ソフトマックス確率タブ に切り替えて、各クラスの確率ヒートマップを確認 — 3つの確率は常に合計1になります
重なり合うクラスタを追加 して、モデルが曖昧な領域をどう処理するか観察
2値ロジスティック回帰との関係
K = 2 K = 2 K = 2 のとき、ソフトマックス関数は次のように簡約されます:
P ( Y = 1 ∣ x ) = e z 1 e z 0 + e z 1 = 1 1 + e − ( z 1 − z 0 ) = σ ( z 1 − z 0 ) P(Y = 1 \mid \mathbf{x}) = \frac{e^{z_1}}{e^{z_0} + e^{z_1}} = \frac{1}{1 + e^{-(z_1 - z_0)}} = \sigma(z_1 - z_0) P ( Y = 1 ∣ x ) = e z 0 + e z 1 e z 1 = 1 + e − ( z 1 − z 0 ) 1 = σ ( z 1 − z 0 )
これは実効的な重み w = w 1 − w 0 \mathbf{w} = \mathbf{w}_1 - \mathbf{w}_0 w = w 1 − w 0 を持つロジスティック回帰 のシグモイド関数そのものです。
GLM との関係
2値ロジスティック回帰と同様に、多クラス・ロジスティック回帰も GLM の枠組み に位置づけられます:
構成要素 選択 分布 カテゴリカル分布(マルチヌーイ) リンク関数 ソフトマックス(一般化ロジット) 線形予測子 各クラスに z k = w k ⊤ x + b k z_k = \mathbf{w}_k^\top \mathbf{x} + b_k z k = w k ⊤ x + b k
分類後のモデル評価には、感度・特異度・ROC 曲線 を one-vs-rest 方式で適用できます。
まとめ
多クラス・ロジスティック回帰は、シグモイド関数をソフトマックス関数に置き換えることで、2値分類を K K K クラスに拡張します。交差エントロピー損失は自然に一般化され、勾配 p k − y k p_k - y_k p k − y k は2値の場合と同じ美しい形を保ちます。ソフトマックスの微分が導出の最も難しい部分ですが、商の微分法とクロネッカーのデルタを丁寧に適用すれば、最終結果は簡潔で計算効率の良いものになります。