多クラス・ロジスティック回帰

ソフトマックス関数・交差エントロピー損失・勾配降下法を用いた多クラス分類への拡張を、完全な導出とインタラクティブ・デモで学ぶ。

RegressionClassificationGLM

2クラスから多クラスへ

ロジスティック回帰では、2値の結果 y{0,1}y \in \{0, 1\} をシグモイド関数でモデル化しました。しかし現実の問題には、手書き数字の分類(0〜9)や生物種の判別など、3つ以上のクラスを持つケースが多くあります。

ロジスティック回帰を KK クラスに拡張するにはどうすればよいでしょうか?

y{1,2,,K}多クラス・ロジスティック回帰y \in \{1, 2, \ldots, K\} \quad \longleftrightarrow \quad \text{多クラス・ロジスティック回帰}

問題設定

各クラス k=1,2,,Kk = 1, 2, \ldots, K に対して、線形予測子を定義します:

zk=wkx+bkz_k = \mathbf{w}_k^\top \mathbf{x} + b_k

ここで x=(x1,x2,,xn)\mathbf{x} = (x_1, x_2, \ldots, x_n) は特徴量ベクトル、各クラス kk は固有の重みベクトル wk\mathbf{w}_k とバイアス bkb_k を持ちます。

ソフトマックス関数

シグモイド関数の代わりに、ソフトマックス関数を用いて KK 個のロジットを確率に変換します:

P(Y=kx)=ezkj=1KezjP(Y = k \mid \mathbf{x}) = \frac{e^{z_k}}{\sum_{j=1}^{K} e^{z_j}}

これにより2つの重要な性質が保証されます:

  1. 各確率は正: P(Y=kx)>0P(Y = k \mid \mathbf{x}) > 0(すべての kk について)
  2. 確率の和は1: k=1KP(Y=kx)=jezjjezj=1\displaystyle\sum_{k=1}^{K} P(Y = k \mid \mathbf{x}) = \frac{\sum_j e^{z_j}}{\sum_j e^{z_j}} = 1

予測クラスは最も確率の高いものとなります:

y^=argmaxk  P(Y=kx)\hat{y} = \underset{k}{\operatorname{argmax}} \; P(Y = k \mid \mathbf{x})

K=2K = 2 のとき、ソフトマックスは2値ロジスティック回帰のシグモイド関数に帰着します。

One-Hot エンコーディングと尤度

正解ラベルをベクトルで表現するために、one-hot エンコーディングを使います:クラス kk が正解なら yk=1y_k = 1、それ以外は yk=0y_k = 0pk=P(Y=kx)p_k = P(Y = k \mid \mathbf{x}) とおくと、

正解ラベルが観測される尤度は:

P(yx)=k=1KpkykP(\mathbf{y} \mid \mathbf{x}) = \prod_{k=1}^{K} p_k^{\,y_k}

yk=1y_k = 1 となるのは1つだけなので、この積は正解クラスの確率を取り出します。対数を取ると:

logP(yx)=k=1Kyklogpk\log P(\mathbf{y} \mid \mathbf{x}) = \sum_{k=1}^{K} y_k \log p_k

交差エントロピー損失

対数尤度の符号を反転させると交差エントロピー損失が得られます:

L=k=1Kyklogpk\mathcal{L} = -\sum_{k=1}^{K} y_k \log p_k

これはロジスティック回帰の2値交差エントロピー損失の自然な一般化です。正解クラスの予測確率が小さいほど、損失は大きくなります。

勾配の導出

勾配降下法で最適化するために、Lwk\frac{\partial \mathcal{L}}{\partial \mathbf{w}_k}Lbk\frac{\partial \mathcal{L}}{\partial b_k} を求めます。**連鎖律(チェインルール)**を使います:

Lzk=i=1KLpipizk\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}

ステップ 1 — 損失の確率に対する微分:

Lpi=yipi(i=1,2,,K)\frac{\partial \mathcal{L}}{\partial p_i} = -\frac{y_i}{p_i} \qquad (i = 1, 2, \ldots, K)

ステップ 2 — ソフトマックスの微分(ここが難所です!):

ソフトマックスの微分では、分子と分母の両方zkz_k に依存するため注意が必要です。クロネッカーのデルタ δik\delta_{ik}i=ki = k のとき δik=1\delta_{ik} = 1、それ以外は 00)を用いると:

pizk=δikezijezjeziezk(jezj)2=pi(δikpk)\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)

ステップ 3 — 連鎖律で合成:

Lzk=i=1K(yipi)pi(δikpk)=i=1Kyi(δikpk)\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)

iyi=1\sum_i y_i = 1 かつ δik\delta_{ik} が第 kk 項を選び出すことから:

Lzk=pkyk\frac{\partial \mathcal{L}}{\partial z_k} = p_k - y_k

驚くほどシンプルで美しい結果です — 勾配は予測確率と正解ラベルの差にすぎません!

ステップ 4zkwk=x\frac{\partial z_k}{\partial \mathbf{w}_k} = \mathbf{x}zkbk=1\frac{\partial z_k}{\partial b_k} = 1 より:

Lwk=x(pkyk),Lbk=pkyk\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

勾配降下法による更新

パラメータは反復的に更新されます:

wkwkηx(pkyk)\mathbf{w}_k \leftarrow \mathbf{w}_k - \eta \, \mathbf{x}(p_k - y_k)
bkbkη(pkyk)b_k \leftarrow b_k - \eta \,(p_k - y_k)

ここで η\eta は学習率です。2値ロジスティック回帰の勾配と比較すると、構造はまったく同じで、KK クラスに拡張されただけです。

インタラクティブ・デモ

2次元空間で3クラスの多クラス・ロジスティック回帰を体験しましょう。決定領域タブではモデルが入力空間をどのように分割するかを、ソフトマックス確率タブでは各クラスの P(Y=kx)P(Y = k \mid \mathbf{x}) を可視化します。

-3-2-10123x₁-3-2-10123x₂
Iteration
0
Cross-Entropy Loss
0.0000
Accuracy
0.0%

Learned Parameters

Classw₁w₂b
Class 00.30000.30000.0000
Class 10.3000-0.30000.0000
Class 2-0.30000.00000.0000
Class 0Class 1Class 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=2K = 2 のとき、ソフトマックス関数は次のように簡約されます:

P(Y=1x)=ez1ez0+ez1=11+e(z1z0)=σ(z1z0)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)

これは実効的な重み w=w1w0\mathbf{w} = \mathbf{w}_1 - \mathbf{w}_0 を持つロジスティック回帰のシグモイド関数そのものです。

GLM との関係

2値ロジスティック回帰と同様に、多クラス・ロジスティック回帰も GLM の枠組みに位置づけられます:

構成要素選択
分布カテゴリカル分布(マルチヌーイ)
リンク関数ソフトマックス(一般化ロジット)
線形予測子各クラスに zk=wkx+bkz_k = \mathbf{w}_k^\top \mathbf{x} + b_k

分類後のモデル評価には、感度・特異度・ROC 曲線を one-vs-rest 方式で適用できます。

まとめ

多クラス・ロジスティック回帰は、シグモイド関数をソフトマックス関数に置き換えることで、2値分類を KK クラスに拡張します。交差エントロピー損失は自然に一般化され、勾配 pkykp_k - y_k は2値の場合と同じ美しい形を保ちます。ソフトマックスの微分が導出の最も難しい部分ですが、商の微分法とクロネッカーのデルタを丁寧に適用すれば、最終結果は簡潔で計算効率の良いものになります。

← 図鑑に戻る