名古屋出身ソフトウェアエンジニアのブログ

ロジスティック回帰と 2 クラスソフトマックス関数の一致

ロジスティック回帰

ロジスティック回帰モデルで、陽性 $y = 1$ である確率は次のように表されます:

$$ P(y = 1 \mid z) = \sigma(z) = \frac{1}{1 + e^{-z}} $$

反転した、すなわち陰性 $y = 0$ である確率は

$$ P(y = 0 \mid z) = 1 - P(y = 1 \mid z) = 1 - \frac{1}{1 + e^{-z}} = \frac{e^{-z}}{1 + e^{-z}} $$

です。

ここで、線形予測子 $z$ は入力特徴ベクトル $\mathbf{x}$ と重みベクトル $\mathbf{w}$ の内積に定数バイアスを加算したものです。

$$ z = \mathbf{w}^T \mathbf{x} + b $$

ソフトマックス関数

ソフトマックス関数は次の形で与えられ、多クラス分類問題に対して各クラスの確率を出します:

$$ P(y = i \mid z) = \frac{e^{z_i}}{\sum_{k=0}^{K-1} e^{z_k}} $$

ここで、 $K$ はクラスの総数であり、 $z_i$ はクラス $i$ の線形予測子

$$ z_i = \mathbf{W}^T_{i+1} \mathbf{x} + \mathbf{b}_{i+1} $$

です。

二値分類 $K = 2$ の場合、クラスは $0$ と $1$ の 2 つしかありません。したがって、ソフトマックス関数での、陽性クラス $y = 1$ の確率および陰性クラス $y = 0$ の確率は次のようになります:

$$ P(y = 1 \mid z) = \frac{e^{z_1}}{e^{z_0} + e^{z_1}} $$ $$ P(y = 0 \mid z) = \frac{e^{z_0}}{e^{z_0} + e^{z_1}} $$

ロジスティック回帰と 2 クラスソフトマックス関数の一致

ソフトマックス関数の入力 $z_0$ を $0$ に揃え、

$$ z_0 = 0 $$ $$ z_1 = z $$

とすることができます。

この状態でソフトマックス関数の確率は以下になります:

$$ P(y = 1 \mid z) = \frac{e^{z}}{e^{0} + e^{z}} = \frac{e^{z}}{1 + e^{z}} = \frac{1}{1 + e^{-z}} $$

同様に:

$$ P(y = 0 \mid z) = \frac{e^{0}}{e^{0} + e^{z}} = \frac{1}{1 + e^{z}} = \frac{e^{-z}}{1 + e^{-z}} $$

ロジスティック回帰の出力確率と 2 クラスソフトマックス関数の確率は一致することがわかります。

ソフトマックス関数の入力を変更してもいいのか

クラス $0$ とクラス $1$ のスコアを $z_0$ と $z_1$ としたとき、スコアを定数加算しても確率の比は変わりません。

たとえば、すべてのスコア $z_i$ に対して定数 $c$ を引いた場合:

$$ z_i' = z_i - c $$

この変換後の確率は次のように変わります:

$$ P(y = i \mid z) = \frac{e^{z_i - c}}{\sum_{j} e^{z_j - c}} $$

分子と分母から共通の $e^{-c}$ を取り除くと:

$$ P(y = i \mid z) = \frac{e^{z_i} \cdot e^{-c}}{\sum_{j} e^{z_j} \cdot e^{-c}} = \frac{e^{z_i}}{ \sum_{j} e^{z_j}} $$

このため、定数 $c$ を引いても確率自体は変わらないことがわかります。