# ロジスティック回帰：シグモイドと交差エントロピーを最尤推定から導く

> 分類の出力を確率として扱うためにシグモイド関数とロジット（対数オッズ）を導入し、ベルヌーイ分布の最尤推定から交差エントロピー誤差を導出する。勾配とヘッセ行列を計算して凸性を示し、閉じた解が存在せず微分による数値最適化が要る理由を明らかにする。
> https://rikai.mugen-giken.com/computer-science/math-for-ml/logistic-regression

## 0. この記事の要点

- 分類問題では出力が $0$ か $1$ のラベルです。ここに最小二乗法をそのまま当てはめると、確率の範囲を外れた予測が出るうえ、判定に無関係なはずの遠くの点が決定境界を動かしてしまいます。
- 線形なスコア $\boldsymbol{w}^{\mathsf{T}}\boldsymbol{x}$ を確率に変える写像としてシグモイド関数 $\sigma(z) = 1/(1+e^{-z})$ を使います。これは恣意的な選択ではなく、「対数オッズ（ロジット）が線形である」という仮定と同値です。
- 損失関数は手で選ぶものではありません。ベルヌーイ分布の最尤推定を書き下すと、負の対数尤度がそのまま交差エントロピー誤差になります。
- 勾配は $\nabla L(\boldsymbol{w}) = \sum_i (\mu_i - y_i)\boldsymbol{x}_i$ という驚くほど簡単な形になります。シグモイドの微分が交差エントロピーの微分と約分するからで、この約分が学習の速さを支えています。
- ヘッセ行列は $X^{\mathsf{T}}SX \succeq O$ なので $L$ は凸です。しかし停留条件は超越方程式で、線形回帰と違って閉じた解がありません。だから微分を使って数値的に探すしかない、というのが次章の勾配降下法につながります。
- データが線形分離可能なとき最尤推定量は存在せず、重みは発散します。$L^2$ 正則化を足すと最小点の存在と一意性が回復し、これはガウス事前分布による MAP 推定と一致します。

## 1. 動機：0 と 1 のラベルを直線で当てにいくと何が壊れるか

### 1.1. 分類問題の設定

[線形回帰と最小二乗法](/computer-science/math-for-ml/linear-regression) で扱ったのは、身長から体重を予測するような、出力が実数の問題でした。しかし現場で解きたい問題の多くは、そうではありません。

- このメールは迷惑メールか、そうでないか。
- この検査値の組を持つ患者は、その病気に罹患しているか、していないか。
- この画像に写っているのは猫か、猫でないか。

いずれも出力は「はい／いいえ」の 2 択です。こういう問題を **2 値分類問題** といいます。数学的には、特徴ベクトル $\boldsymbol{x} \in \mathbb{R}^{d}$ に対してラベル $y \in \{0, 1\}$ を予測する問題として定式化します。

ここで素朴な疑問が湧きます。ラベル $y$ も所詮は数値なのだから、線形回帰をそのまま使えばよいのではないか。$\hat{y} = \boldsymbol{w}^{\mathsf{T}}\boldsymbol{x}$ を最小二乗法で当てはめ、$\hat{y} \ge 0.5$ なら「はい」、そうでなければ「いいえ」と判定すればよさそうに見えます。実際にやってみると、何が起きるかがはっきりします。

### 1.2. 最小二乗法を $0/1$ ラベルに当てはめる

勉強時間 $t$（時間）から試験の合否 $y$（$1$ が合格）を予測する、次の 4 点のデータを考えます。

| $t$ | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| $y$ | 0 | 0 | 1 | 1 |

$\hat{y} = at + b$ を最小二乗法で当てはめます。$\bar{t} = 2.5$、$\bar{y} = 0.5$、$\sum_i (t_i - \bar{t})^2 = 2.25 + 0.25 + 0.25 + 2.25 = 5$、$\sum_i (t_i - \bar{t})(y_i - \bar{y}) = 0.75 + 0.25 + 0.25 + 0.75 = 2$ ですから、

$$
a = \frac{2}{5} = 0.4, \qquad b = 0.5 - 0.4 \times 2.5 = -0.5 .
$$

判定は $\hat{y} = 0.5$ すなわち $t = 2.5$ を境界とし、4 点すべてを正しく分類します。一見うまくいっています。しかし予測値そのものを見ると $\hat{y}(1) = -0.1$、$\hat{y}(4) = 1.1$ です。**負の確率と、$1$ を超える確率**が出てきました。「合格する確率は $-10\%$ です」と言われても意味が取れません。

これは見た目の問題にとどまりません。ここに「20 時間勉強して合格した」という、常識的にはまったく問題のない 1 点 $(t, y) = (20, 1)$ を追加します。$\bar{t} = 6$、$\bar{y} = 0.6$、$\sum_i (t_i - \bar{t})^2 = 25 + 16 + 9 + 4 + 196 = 250$、$\sum_i (t_i - \bar{t})(y_i - \bar{y}) = 3 + 2.4 - 1.2 - 0.8 + 5.6 = 9$ なので

$$
a = \frac{9}{250} = 0.036, \qquad b = 0.6 - 0.036 \times 6 = 0.384 .
$$

境界は $0.036t + 0.384 = 0.5$ すなわち $t = 3.22\ldots$ に移動しました。その結果、$t = 3$ の点は $\hat{y}(3) = 0.492 < 0.5$ となり、**もともと正しく分類できていた点が誤分類されます**。

なぜこうなるのでしょうか。二乗誤差 $(\hat{y}_i - y_i)^2$ は、$\hat{y}_i$ が $y_i$ から離れるほど罰を与えます。ところが分類の観点では、$t = 20$ の点について $\hat{y} = 1.1$ でも $\hat{y} = 5$ でも「合格側に十分入っている」という意味では同じく正解です。二乗誤差はこの「正解の側に深く入りすぎた」状態を誤差として数え、それを減らすために直線を寝かせてしまう。分類の目的関数として二乗誤差が不適切だ、ということです。

### 1.3. 何が必要か

以上から、必要なものが 2 つはっきりします。

1. **出力を $(0,1)$ に押し込める仕組み**。予測値を確率として読めるようにしたい。
2. **確率モデルから導かれる損失関数**。「$0.9$ と答えて正解だった」ことと「$0.55$ と答えて正解だった」ことの差を、恣意的でない基準で測りたい。

この 2 つを与えるのがロジスティック回帰です。1 番目にシグモイド関数（<Ref to="def-sigmoid" />）が、2 番目に最尤推定から出てくる交差エントロピー誤差（<Ref to="def-cross-entropy" />）が対応します。そして最後に、その損失関数を最小化する段になって初めて「微分」が本質的に必要になります。線形回帰では正規方程式という連立一次方程式を解けば済んだのに対し、ロジスティック回帰では閉じた解が書けないからです（<Ref to="rem-no-closed-form" />）。

<Figure caption="ロジスティック回帰の全体像。線形スコアを確率に変え、確率から損失を作り、損失の勾配で重みを直す。">
<Mermaid code={`flowchart LR
  A["特徴ベクトル x"] --> B["線形スコア z = w·x"]
  B --> C["確率 p = シグモイド(z)"]
  C --> D["負の対数尤度 = 交差エントロピー誤差 L"]
  D --> E["勾配 grad L = 総和 (p - y) x"]
  E --> F["重み w を更新"]
  F -.-> B`} />
</Figure>

## 2. 準備：記号と仮定

以下、データは $n$ 個の組 $(\boldsymbol{x}_1, y_1), \ldots, (\boldsymbol{x}_n, y_n)$ で与えられ、$\boldsymbol{x}_i \in \mathbb{R}^{d}$、$y_i \in \{0,1\}$ とします。**切片（バイアス）は特徴ベクトルに吸収**します。すなわち $\boldsymbol{x}_i$ の第 1 成分は常に $1$ であるとし、対応する重み $w_1$ が切片の役割を果たすものとします。こうしておくと式に切片が現れず、以後の計算がすべて $\boldsymbol{w}^{\mathsf{T}}\boldsymbol{x}$ の形に統一されます。

**計画行列** $X$ を、第 $i$ 行が $\boldsymbol{x}_i^{\mathsf{T}}$ である $n \times d$ 行列とします（[線形回帰と最小二乗法](/computer-science/math-for-ml/linear-regression) の <Ref to="computer-science/math-for-ml/linear-regression#def-design-matrix" text="計画行列" /> と同じ記法です）。ラベルを並べたベクトルを $\boldsymbol{y} = (y_1, \ldots, y_n)^{\mathsf{T}} \in \mathbb{R}^{n}$ と書きます。

確率については、各 $i$ について $y_i$ が $\boldsymbol{x}_i$ を与えたもとで条件付きに独立であることを仮定します。$\boldsymbol{x}_i$ 自体の分布は一切モデル化しません（この点は <Ref to="ex-gaussian-posterior" /> で再度触れます）。確率変数と期待値の基本については [確率変数と期待値](/mathematics/probability/random-variables) を参照してください。

ベクトルによる微分は成分ごとの偏微分を並べたもの、すなわち $\nabla f(\boldsymbol{w}) = (\partial f/\partial w_1, \ldots, \partial f/\partial w_d)^{\mathsf{T}}$ とし、ヘッセ行列は $(\nabla^2 f)_{jk} = \partial^2 f / \partial w_j \partial w_k$ とします。詳しくは [多変数関数の微分と偏微分](/mathematics/calculus/multivariable-differentiation) の <Ref to="mathematics/calculus/multivariable-differentiation#def-hessian" text="ヘッセ行列の定義" /> を参照してください。対称行列 $A$ について $A \succeq O$ は半正定値、$A \succ O$ は正定値を表します。

## 3. 出力を確率にする：シグモイド関数とロジット

### 3.1. シグモイド関数

<Definition id="def-sigmoid" title="シグモイド関数（標準ロジスティック関数）">
関数 $\sigma : \mathbb{R} \to \mathbb{R}$ を

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

で定める。これを**シグモイド関数**、または**標準ロジスティック関数**という。
</Definition>

名前の由来は、グラフが $S$ 字（ギリシャ文字シグマの語幹 sigma + eides「〜のような形」）を描くことです。もともとは 1838 年に Verhulst が人口の増加を記述する微分方程式 $\frac{dp}{dt} = p(1-p)$ の解として導入したものでした。この微分方程式自体が、次の性質 (3) と同じ形をしていることに注意してください。

<Figure caption="シグモイド関数のグラフ。z = 0 で 0.5 を通り、両端で 0 と 1 に漸近します。">
<svg viewBox="0 0 480 215" width="100%" role="img" aria-label="シグモイド関数のグラフ">
  <line x1="40" y1="20" x2="465" y2="20" stroke="currentColor" stroke-width="1" stroke-dasharray="4 4" opacity="0.35" />
  <line x1="40" y1="100" x2="465" y2="100" stroke="currentColor" stroke-width="1" stroke-dasharray="4 4" opacity="0.35" />
  <line x1="30" y1="180" x2="465" y2="180" stroke="currentColor" stroke-width="1.2" opacity="0.5" />
  <line x1="240" y1="10" x2="240" y2="192" stroke="currentColor" stroke-width="1.2" opacity="0.5" />
  <line x1="106.67" y1="177" x2="106.67" y2="183" stroke="currentColor" stroke-width="1.2" opacity="0.5" />
  <line x1="173.33" y1="177" x2="173.33" y2="183" stroke="currentColor" stroke-width="1.2" opacity="0.5" />
  <line x1="306.67" y1="177" x2="306.67" y2="183" stroke="currentColor" stroke-width="1.2" opacity="0.5" />
  <line x1="373.33" y1="177" x2="373.33" y2="183" stroke="currentColor" stroke-width="1.2" opacity="0.5" />
  <polyline fill="none" stroke="var(--sl-color-accent)" stroke-width="2.5" stroke-linecap="round" points="40,179.6 56.67,179.35 73.33,178.93 90,178.22 106.67,177.12 123.33,175.31 140,172.41 156.67,167.86 173.33,160.93 190,150.81 206.67,136.97 223.33,119.59 240,100 256.67,80.41 273.33,63.03 290,49.19 306.67,39.07 323.33,32.14 340,27.59 356.67,24.69 373.33,22.88 390,21.78 406.67,21.07 423.33,20.65 440,20.4 465,20.2" />
  <circle cx="240" cy="100" r="4" fill="var(--sl-color-accent)" />
  <text x="30" y="24" text-anchor="end" font-size="12" fill="currentColor">1</text>
  <text x="30" y="104" text-anchor="end" font-size="12" fill="currentColor">0.5</text>
  <text x="24" y="184" text-anchor="end" font-size="12" fill="currentColor">0</text>
  <text x="106.67" y="196" text-anchor="middle" font-size="11" fill="currentColor" opacity="0.8">-4</text>
  <text x="173.33" y="196" text-anchor="middle" font-size="11" fill="currentColor" opacity="0.8">-2</text>
  <text x="246" y="196" text-anchor="start" font-size="11" fill="currentColor" opacity="0.8">0</text>
  <text x="306.67" y="196" text-anchor="middle" font-size="11" fill="currentColor" opacity="0.8">2</text>
  <text x="373.33" y="196" text-anchor="middle" font-size="11" fill="currentColor" opacity="0.8">4</text>
  <text x="458" y="172" text-anchor="middle" font-size="13" fill="currentColor">z</text>
  <text x="180" y="16" text-anchor="end" font-size="13" fill="var(--sl-color-accent)">sigma(z)</text>
</svg>
</Figure>

<Proposition id="prop-sigmoid" title="シグモイド関数の基本性質">
<Ref to="def-sigmoid" /> の $\sigma$ について、次が成り立つ。

1. すべての $z \in \mathbb{R}$ について $0 < \sigma(z) < 1$ であり、$\sigma$ は $\mathbb{R}$ 上 $C^{\infty}$ 級かつ狭義単調増加で、$\lim_{z \to -\infty} \sigma(z) = 0$、$\lim_{z \to +\infty} \sigma(z) = 1$。
2. すべての $z$ について $\sigma(-z) = 1 - \sigma(z)$。特に $\sigma(0) = 1/2$。
3. すべての $z$ について $\sigma'(z) = \sigma(z)\bigl(1 - \sigma(z)\bigr) = \sigma(z)\,\sigma(-z) > 0$。
4. $\sigma : \mathbb{R} \to (0,1)$ は全単射であり、その逆関数は $\sigma^{-1}(p) = \log \dfrac{p}{1-p}$（$0 < p < 1$）で与えられる。
</Proposition>

<Proof of="prop-sigmoid">
**(1)** すべての $z$ について $e^{-z} > 0$ なので $1 + e^{-z} > 1 > 0$ であり、したがって $0 < \sigma(z) = 1/(1+e^{-z}) < 1$ です。$z \mapsto e^{-z}$ は $C^{\infty}$ 級で、分母 $1+e^{-z}$ は決して $0$ にならないので、商として $\sigma$ も $C^{\infty}$ 級です。狭義単調増加であることは (3) で示す $\sigma' > 0$ から従います。極限は、$z \to -\infty$ のとき $e^{-z} \to +\infty$ なので $\sigma(z) \to 0$、$z \to +\infty$ のとき $e^{-z} \to 0$ なので $\sigma(z) \to 1$ です。

**(2)** 定義から $\sigma(-z) = 1/(1+e^{z})$ です。一方

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

であり、分子分母に $e^{z}$ を掛けると $\dfrac{1}{e^{z}+1}$ となって $\sigma(-z)$ に一致します。$z = 0$ とすれば $\sigma(0) = 1 - \sigma(0)$、すなわち $\sigma(0) = 1/2$ です。

**(3)** $\sigma(z) = (1+e^{-z})^{-1}$ に合成関数の微分法を適用します。外側の微分が $-(1+e^{-z})^{-2}$、内側 $1+e^{-z}$ の微分が $-e^{-z}$ なので

$$
\sigma'(z) = -(1+e^{-z})^{-2} \cdot (-e^{-z}) = \frac{e^{-z}}{(1+e^{-z})^{2}} .
$$

他方、(2) の途中式より $1 - \sigma(z) = \dfrac{e^{-z}}{1+e^{-z}}$ なので

$$
\sigma(z)\bigl(1-\sigma(z)\bigr) = \frac{1}{1+e^{-z}} \cdot \frac{e^{-z}}{1+e^{-z}} = \frac{e^{-z}}{(1+e^{-z})^{2}}
$$

となり、両者は一致します。さらに (2) より $1 - \sigma(z) = \sigma(-z)$ なので $\sigma'(z) = \sigma(z)\sigma(-z)$ です。(1) より $\sigma(z) > 0$ かつ $\sigma(-z) > 0$ なので $\sigma'(z) > 0$ です。

**(4)** (3) より $\sigma$ は狭義単調増加なので単射です。(1) より $\sigma$ は連続で、値域は $(0,1)$ に含まれ、両端の極限が $0$ と $1$ なので、中間値の定理により $(0,1)$ のすべての値を取ります。よって $\sigma : \mathbb{R} \to (0,1)$ は全単射です。逆関数は $p = 1/(1+e^{-z})$ を $z$ について解けば求まります。両辺の逆数を取って $1 + e^{-z} = 1/p$、すなわち $e^{-z} = (1-p)/p$。両辺の対数を取って $-z = \log\dfrac{1-p}{p}$、したがって $z = \log\dfrac{p}{1-p}$ です。
</Proof>

性質 (3) は本記事全体で最も使う式です。**シグモイドの導関数がシグモイド自身の多項式で書ける**という事実が、後で勾配の計算をきれいにします（<Ref to="thm-gradient" />）。

### 3.2. なぜこの関数なのか — ロジットとベイズの定理

$(0,1)$ に値を取る単調増加な滑らかな関数はいくらでもあります。たとえば標準正規分布の累積分布関数 $\Phi$ でもよく、それを使ったモデルはプロビット回帰と呼ばれます。ではなぜシグモイドなのでしょうか。答えは <Ref to="prop-sigmoid" /> の (4) にあります。

<Definition id="def-logit" title="オッズとロジット">
$0 < p < 1$ に対し、$\dfrac{p}{1-p}$ を確率 $p$ の**オッズ**（odds）といい、その対数

$$
\operatorname{logit}(p) = \log \frac{p}{1-p}
$$

を **ロジット**（logit）または**対数オッズ**という。<Ref to="prop-sigmoid" /> (4) より $\operatorname{logit} = \sigma^{-1}$ である。
</Definition>

オッズは「起こる場合の数と起こらない場合の数の比」です。競馬の「3 倍」やスポーツの「2 対 1」と同じ言葉づかいで、$p = 0.75$ ならオッズは $3$、すなわち「3 対 1」です。確率は $[0,1]$ という有界区間に閉じ込められていますが、オッズは $(0, \infty)$ を、その対数であるロジットは $\mathbb{R}$ 全体を動きます。**確率を「線形に動かせる量」に変換する**のがロジットの役割です。

したがって、$\mu = \sigma(\boldsymbol{w}^{\mathsf{T}}\boldsymbol{x})$ と置くことは、両辺にロジットを施した

$$
\log \frac{\mu}{1-\mu} = \boldsymbol{w}^{\mathsf{T}}\boldsymbol{x}
$$

と**完全に同値**です。つまりロジスティック回帰の仮定は「確率が線形」でも「確率がシグモイド形」でもなく、**対数オッズが特徴の線形結合である**という一点に尽きます。シグモイドはその仮定を確率について解き直しただけのものです。

この仮定は、次の例が示すように、自然な状況で実際に成り立ちます。

<Example id="ex-gaussian-posterior" title="2 つの正規分布からシグモイドが出てくる">
クラス $y \in \{0,1\}$ の事前確率を $\pi_1 = P(y=1)$、$\pi_0 = 1-\pi_1$ とし、クラスごとの特徴の分布（クラス条件付き密度）を $p(\boldsymbol{x} \mid y=k)$ とします。<Ref to="computer-science/math-for-ml/bayesian-statistics#thm-bayes" text="ベイズの定理" /> より

$$
P(y=1 \mid \boldsymbol{x}) = \frac{p(\boldsymbol{x}\mid y=1)\pi_1}{p(\boldsymbol{x}\mid y=1)\pi_1 + p(\boldsymbol{x}\mid y=0)\pi_0} = \frac{1}{1 + \exp(-a)},
\qquad a = \log \frac{p(\boldsymbol{x}\mid y=1)\pi_1}{p(\boldsymbol{x}\mid y=0)\pi_0}.
$$

真ん中の変形は、分子分母を $p(\boldsymbol{x}\mid y=1)\pi_1$ で割って $\dfrac{p(\boldsymbol{x}\mid y=0)\pi_0}{p(\boldsymbol{x}\mid y=1)\pi_1} = e^{-a}$ を使っただけです。つまり**シグモイドは何の仮定も置かずに現れます**。$a$ が対数オッズそのものだからです。

残るのは「$a$ が $\boldsymbol{x}$ の 1 次式か」だけです。両クラスの分布が共通の共分散行列 $\Sigma$（正則）を持つ正規分布 $N(\boldsymbol{\mu}_1, \Sigma)$、$N(\boldsymbol{\mu}_0, \Sigma)$ のとき、正規化定数が約分して

$$
\begin{aligned}
a &= \log\frac{\pi_1}{\pi_0} - \tfrac12 (\boldsymbol{x}-\boldsymbol{\mu}_1)^{\mathsf{T}}\Sigma^{-1}(\boldsymbol{x}-\boldsymbol{\mu}_1) + \tfrac12 (\boldsymbol{x}-\boldsymbol{\mu}_0)^{\mathsf{T}}\Sigma^{-1}(\boldsymbol{x}-\boldsymbol{\mu}_0) \\[2pt]
&= (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_0)^{\mathsf{T}}\Sigma^{-1}\boldsymbol{x} \;-\; \tfrac12 \boldsymbol{\mu}_1^{\mathsf{T}}\Sigma^{-1}\boldsymbol{\mu}_1 + \tfrac12 \boldsymbol{\mu}_0^{\mathsf{T}}\Sigma^{-1}\boldsymbol{\mu}_0 + \log\frac{\pi_1}{\pi_0}
\end{aligned}
$$

となります。2 行目では 2 次の項 $-\tfrac12\boldsymbol{x}^{\mathsf{T}}\Sigma^{-1}\boldsymbol{x}$ が両方の括弧から出て**打ち消し合う**ことを使いました（共分散行列が共通でなければ消えません）。残ったのは $\boldsymbol{x}$ の 1 次式です。

1 次元で数値を入れてみます。$\mu_0 = 0$、$\mu_1 = 2$、分散 $1$、$\pi_1 = \pi_0 = 1/2$ とすると

$$
a = -\tfrac12 (x-2)^2 + \tfrac12 x^2 = 2x - 2,
\qquad P(y=1\mid x) = \sigma(2x-2).
$$

境界 $P = 1/2$ は $x = 1$、つまり 2 つの平均の中点です。ロジスティック回帰はこの $a$ の係数 $(-2, 2)$ を、$\boldsymbol{\mu}_k$ や $\Sigma$ を経由せずに直接推定するモデルだと読めます。
</Example>

<Remark id="rem-discriminative">
<Ref to="ex-gaussian-posterior" /> は「正規分布を仮定するとロジスティック回帰になる」と言っていますが、逆は成り立ちません。対数オッズが線形になるクラス条件付き分布は正規分布以外にもたくさんあり（指数型分布族の多くがそうです）、ロジスティック回帰はそれら全部をまとめて含みます。$p(\boldsymbol{x}\mid y)$ を作らずに $P(y \mid \boldsymbol{x})$ だけを直接モデル化するこの立場を**識別モデル**といいます。生成モデルとの比較は [確率論とベイズ統計の役割](/computer-science/math-for-ml/bayesian-statistics) で扱います。
</Remark>

### 3.3. ロジスティック回帰モデルと係数の読み方

<Definition id="def-logistic-model" title="ロジスティック回帰モデル">
パラメータ $\boldsymbol{w} \in \mathbb{R}^{d}$ に対し、特徴 $\boldsymbol{x} \in \mathbb{R}^{d}$ を与えたときのラベル $y \in \{0,1\}$ の条件付き分布を

$$
P(y = 1 \mid \boldsymbol{x};\boldsymbol{w}) = \sigma(\boldsymbol{w}^{\mathsf{T}}\boldsymbol{x}), \qquad
P(y = 0 \mid \boldsymbol{x};\boldsymbol{w}) = 1 - \sigma(\boldsymbol{w}^{\mathsf{T}}\boldsymbol{x})
$$

で定めるモデルを**ロジスティック回帰モデル**という。$z = \boldsymbol{w}^{\mathsf{T}}\boldsymbol{x}$ を**ロジット**または**スコア**、$\mu = \sigma(z)$ を**予測確率**と呼ぶ。2 つの式はまとめて

$$
P(y \mid \boldsymbol{x};\boldsymbol{w}) = \mu^{y}(1-\mu)^{1-y}, \qquad \mu = \sigma(\boldsymbol{w}^{\mathsf{T}}\boldsymbol{x})
$$

と書ける（$y=1$ を代入すれば $\mu$、$y=0$ を代入すれば $1-\mu$ になる）。すなわち $y$ は成功確率 $\mu$ のベルヌーイ分布に従う。
</Definition>

<Example id="ex-odds-ratio" title="係数はオッズの倍率である">
勉強時間 $t$ から合格確率を予測するモデルが $\log\dfrac{\mu}{1-\mu} = -3 + 1.2\,t$ と推定されたとします。係数 $1.2$ はどう読めばよいでしょうか。

$t$ を 1 増やすと対数オッズが $1.2$ 増える、すなわち**オッズが $e^{1.2} = 3.32\ldots$ 倍になる**、というのが正確な読み方です。確認します。

- $t = 2$：$z = -0.6$、$\mu = \sigma(-0.6) = 0.3543$、オッズ $= e^{-0.6} = 0.5488$。
- $t = 3$：$z = 0.6$、$\mu = \sigma(0.6) = 0.6457$、オッズ $= e^{0.6} = 1.8221$。オッズ比は $1.8221/0.5488 = 3.320 = e^{1.2}$。
- $t = 5$：$z = 3$、$\mu = 0.9526$、オッズ $= e^{3} = 20.09$。
- $t = 6$：$z = 4.2$、$\mu = 0.9852$、オッズ $= e^{4.2} = 66.69$。オッズ比はやはり $66.69/20.09 = 3.320 = e^{1.2}$。

**オッズ比はどこでも一定ですが、確率の増え方は一定ではありません。** $t : 2 \to 3$ では確率が $0.354 \to 0.646$（$+0.29$）と大きく動くのに対し、$t : 5 \to 6$ では $0.953 \to 0.985$（$+0.03$）しか動きません。すでに確率が $1$ に近いところでは、オッズを 3 倍にしても確率はほとんど増えないからです。「係数 $1.2$ は確率を $1.2$ 増やす」という読み方は誤りです。
</Example>

## 4. 損失をどこから持ってくるか：最尤推定と交差エントロピー誤差

### 4.1. 尤度

<Ref to="def-logistic-model" /> はデータの生成規則を確率で書いたモデルです。こうしたモデルのパラメータを決める標準的な原理が**最尤推定**、すなわち「手元のデータが最も起こりやすくなるパラメータを選ぶ」という方針です。

$\mu_i(\boldsymbol{w}) = \sigma(\boldsymbol{w}^{\mathsf{T}}\boldsymbol{x}_i)$ と書きます。§2 の条件付き独立性の仮定から、観測されたラベル列 $y_1, \ldots, y_n$ の同時確率、すなわち**尤度**は積になります。

$$
\mathcal{L}(\boldsymbol{w}) = \prod_{i=1}^{n} P(y_i \mid \boldsymbol{x}_i;\boldsymbol{w}) = \prod_{i=1}^{n} \mu_i^{\,y_i}(1-\mu_i)^{1-y_i}.
$$

積のままでは扱いにくいので対数を取ります。$\log$ は狭義単調増加なので、$\mathcal{L}$ を最大にする $\boldsymbol{w}$ と $\log\mathcal{L}$ を最大にする $\boldsymbol{w}$ は完全に一致します。さらに最適化の慣習に合わせて符号を反転させると、次の量が現れます。

<Definition id="def-cross-entropy" title="交差エントロピー誤差（負の対数尤度）">
データ $(\boldsymbol{x}_i, y_i)_{i=1}^{n}$ と <Ref to="def-logistic-model" /> に対し、$\mu_i = \sigma(\boldsymbol{w}^{\mathsf{T}}\boldsymbol{x}_i)$ として

$$
L(\boldsymbol{w}) = -\sum_{i=1}^{n} \Bigl[\, y_i \log \mu_i + (1-y_i)\log(1-\mu_i) \,\Bigr]
$$

を**交差エントロピー誤差**、または**負の対数尤度**という。$0 < \mu_i < 1$（<Ref to="prop-sigmoid" /> (1)）なので対数は常に定義され、$L(\boldsymbol{w}) > 0$ である。
</Definition>

### 4.2. 交差エントロピーという名前

「交差エントロピー」という呼び名は情報理論から来ています。有限集合上の 2 つの確率分布 $p, q$ に対し $H(p,q) = -\sum_{k} p_k \log q_k$ を交差エントロピーといいます。<Ref to="def-cross-entropy" /> の第 $i$ 項は、ラベルが定める分布 $p = (1-y_i,\; y_i)$（$y_i$ は $0$ か $1$ なので、これは一点に集中した分布です）とモデルの分布 $q = (1-\mu_i,\; \mu_i)$ の交差エントロピーそのものです。

さらに $H(p,q) = H(p) + D_{\mathrm{KL}}(p \,\|\, q)$ という分解があり、いまは $p$ が一点分布なのでそのエントロピーは $H(p) = 0$ です。したがって

$$
L(\boldsymbol{w}) = \sum_{i=1}^{n} D_{\mathrm{KL}}\bigl(\,\delta_{y_i} \,\big\|\, \mathrm{Ber}(\mu_i)\,\bigr)
$$

となります。**交差エントロピー誤差を下げることは、モデルの予測分布を観測されたラベルの分布に近づけることと同じ**だ、というのが情報理論側からの読み方です。

<Proposition id="prop-mle-ce" title="最尤推定と交差エントロピー最小化の同値性">
$\mathcal{L}$ を上の尤度、$L$ を <Ref to="def-cross-entropy" /> の交差エントロピー誤差とする。任意の $\boldsymbol{w} \in \mathbb{R}^{d}$ について $L(\boldsymbol{w}) = -\log\mathcal{L}(\boldsymbol{w})$ が成り立ち、したがって集合として

$$
\operatorname*{arg\,max}_{\boldsymbol{w}\in\mathbb{R}^{d}} \mathcal{L}(\boldsymbol{w}) = \operatorname*{arg\,min}_{\boldsymbol{w}\in\mathbb{R}^{d}} L(\boldsymbol{w})
$$

である（両辺が空集合になることも含めて等号が成り立つ）。
</Proposition>

<Proof of="prop-mle-ce">
$\mathcal{L}(\boldsymbol{w}) = \prod_i \mu_i^{y_i}(1-\mu_i)^{1-y_i}$ の各因子は <Ref to="prop-sigmoid" /> (1) より狭義正なので、$\mathcal{L}(\boldsymbol{w}) > 0$ であり対数が取れます。積の対数は対数の和なので

$$
\log \mathcal{L}(\boldsymbol{w}) = \sum_{i=1}^{n}\Bigl[\, y_i \log\mu_i + (1-y_i)\log(1-\mu_i) \,\Bigr] = -L(\boldsymbol{w}).
$$

$t \mapsto -t$ は $\mathbb{R}$ 上の狭義単調減少な全単射なので、$\mathcal{L}(\boldsymbol{w}) \ge \mathcal{L}(\boldsymbol{w}')$ と $L(\boldsymbol{w}) \le L(\boldsymbol{w}')$ は同値です（$\log$ の単調増加性と合わせて）。よって $\mathcal{L}$ の最大点全体と $L$ の最小点全体は集合として一致します。
</Proof>

つまり **損失関数は設計するものではなく、確率モデルから導かれるもの**です。§1.2 で二乗誤差がうまくいかなかったのは、二乗誤差が「出力が正規分布に従う」という別のモデルの負の対数尤度だったからだ、と言い換えることもできます（<Ref to="computer-science/math-for-ml/bayesian-statistics#prop-mle-least-squares" text="ガウス雑音の下での最尤推定" />）。$0/1$ のラベルは正規分布に従いません。

<Aside type="tip">
実装では $\log(1+e^{z})$ を素直に計算すると $z$ が大きいときに $e^{z}$ が桁溢れします。<Ref to="def-cross-entropy" /> の第 $i$ 項は $\log(1+e^{z_i}) - y_i z_i$ と 1 本にまとめられ（$\log\mu = -\log(1+e^{-z})$、$\log(1-\mu) = -\log(1+e^{z})$、および $\log(1+e^{-z}) = \log(1+e^{z}) - z$ から従います）、さらに $\log(1+e^{z}) = \max(z,0) + \log\bigl(1+e^{-|z|}\bigr)$ と書き換えれば指数の引数が常に $0$ 以下になり、安全に計算できます。
</Aside>

### 4.3. 最も簡単な場合を解く

<Example id="ex-intercept-only" title="切片だけのモデルは陽に解ける">
特徴を使わず切片だけを持つモデル、すなわち $d = 1$ で $\boldsymbol{x}_i = (1)$ の場合を考えます。$\mu_i = \sigma(b)$ は $i$ によらない定数です。$n$ 個のうち $k$ 個が $y_i = 1$ だとすると

$$
L(b) = -\bigl[\, k \log\sigma(b) + (n-k)\log(1-\sigma(b)) \,\bigr].
$$

微分します。<Ref to="prop-sigmoid" /> (3) より $\dfrac{d}{db}\log\sigma(b) = \dfrac{\sigma'(b)}{\sigma(b)} = 1-\sigma(b)$ であり、同じく $\dfrac{d}{db}\log(1-\sigma(b)) = \dfrac{-\sigma'(b)}{1-\sigma(b)} = -\sigma(b)$ です。よって

$$
L'(b) = -\bigl[\, k(1-\sigma(b)) - (n-k)\sigma(b) \,\bigr] = n\,\sigma(b) - k .
$$

$L'(b) = 0$ は $\sigma(b) = k/n$ と同値です。$0 < k < n$ なら $k/n \in (0,1)$ なので <Ref to="prop-sigmoid" /> (4) により解が一意に存在し

$$
\hat{b} = \operatorname{logit}\!\left(\frac{k}{n}\right) = \log\frac{k}{n-k}.
$$

たとえば $n = 100$、$k = 30$ なら $\hat{b} = \log(30/70) = \log(3/7) = -0.8473$ で、予測確率は $\sigma(-0.8473) = 0.30$、すなわち**経験的な正例率そのもの**です。最尤推定が「素直な答え」を返していることが確認できます。

一方 $k = 0$ または $k = n$ のときは $k/n$ が $(0,1)$ の外にあるので $L'(b) = 0$ に解はありません。$k = n$ なら $L(b) = n\log(1+e^{-b})$ は $b \to +\infty$ で $0$ に近づきますが、決して $0$ になりません。最尤推定量が存在しないのです。これは <Ref to="thm-separation" /> の最も簡単な場合です。
</Example>

## 5. 微分が要る：勾配とその意味

### 5.1. 勾配の公式

<Ref to="ex-intercept-only" /> ではパラメータが 1 個だったので微分して解けました。一般の $d$ ではどうなるでしょうか。まず勾配を計算します。

<Theorem id="thm-gradient" title="交差エントロピー誤差の勾配">
$\boldsymbol{x}_1,\ldots,\boldsymbol{x}_n \in \mathbb{R}^{d}$、$y_1,\ldots,y_n \in \{0,1\}$ を任意に固定し、$L$ を <Ref to="def-cross-entropy" /> の交差エントロピー誤差、$\mu_i(\boldsymbol{w}) = \sigma(\boldsymbol{w}^{\mathsf{T}}\boldsymbol{x}_i)$ とする。このとき $L$ は $\mathbb{R}^{d}$ 上 $C^{\infty}$ 級であり、

$$
\nabla L(\boldsymbol{w}) = \sum_{i=1}^{n} \bigl(\mu_i(\boldsymbol{w}) - y_i\bigr)\,\boldsymbol{x}_i
= X^{\mathsf{T}}\bigl(\boldsymbol{\mu}(\boldsymbol{w}) - \boldsymbol{y}\bigr)
$$

が成り立つ。ここで $X$ は第 $i$ 行が $\boldsymbol{x}_i^{\mathsf{T}}$ の $n\times d$ 計画行列、$\boldsymbol{\mu}(\boldsymbol{w}) = (\mu_1,\ldots,\mu_n)^{\mathsf{T}}$ である。
</Theorem>

<Proof of="thm-gradient">
$z_i = \boldsymbol{w}^{\mathsf{T}}\boldsymbol{x}_i = \sum_{j=1}^{d} w_j x_{ij}$、$\mu_i = \sigma(z_i)$ と置きます。$z_i$ は $\boldsymbol{w}$ の 1 次式なので $C^{\infty}$ 級、$\sigma$ も $C^{\infty}$ 級（<Ref to="prop-sigmoid" /> (1)）、$\log$ は $(0,\infty)$ 上 $C^{\infty}$ 級で $\mu_i, 1-\mu_i \in (0,1)$ なので、合成と有限和として $L$ は $C^{\infty}$ 級です。

第 $i$ 項を $\ell_i = -\bigl[y_i\log\mu_i + (1-y_i)\log(1-\mu_i)\bigr]$ と書き、連鎖律を $\mu_i \to z_i \to w_j$ の順に適用します。

**第 1 段：$\mu_i$ についての微分。**

$$
\frac{\partial \ell_i}{\partial \mu_i} = -\frac{y_i}{\mu_i} + \frac{1-y_i}{1-\mu_i}
= \frac{-y_i(1-\mu_i) + \mu_i(1-y_i)}{\mu_i(1-\mu_i)}
= \frac{-y_i + y_i\mu_i + \mu_i - \mu_i y_i}{\mu_i(1-\mu_i)}
= \frac{\mu_i - y_i}{\mu_i(1-\mu_i)} .
$$

途中で分母を $\mu_i(1-\mu_i)$ に通分し、分子の $y_i\mu_i$ と $-\mu_i y_i$ が打ち消し合うことを使いました。

**第 2 段：$z_i$ についての微分。** <Ref to="prop-sigmoid" /> (3) より $\dfrac{d\mu_i}{dz_i} = \sigma'(z_i) = \mu_i(1-\mu_i)$。

**第 3 段：$w_j$ についての微分。** $z_i = \sum_{j} w_j x_{ij}$ より $\dfrac{\partial z_i}{\partial w_j} = x_{ij}$。

3 つを掛け合わせると、第 1 段の分母 $\mu_i(1-\mu_i)$ と第 2 段の因子 $\mu_i(1-\mu_i)$ が**約分**して

$$
\frac{\partial \ell_i}{\partial w_j} = \frac{\mu_i - y_i}{\mu_i(1-\mu_i)} \cdot \mu_i(1-\mu_i) \cdot x_{ij} = (\mu_i - y_i)\,x_{ij}.
$$

約分が正当なのは $\mu_i(1-\mu_i) \ne 0$ だからで、これは <Ref to="prop-sigmoid" /> (1) の $0 < \mu_i < 1$ から従います。$i$ について和を取り、$j = 1,\ldots,d$ を並べれば

$$
\nabla L(\boldsymbol{w}) = \sum_{i=1}^{n}(\mu_i - y_i)\boldsymbol{x}_i .
$$

最後に、$\boldsymbol{x}_i$ が $X$ の第 $i$ 行であることから $\sum_i (\mu_i - y_i)\boldsymbol{x}_i = X^{\mathsf{T}}(\boldsymbol{\mu}-\boldsymbol{y})$ です（$X^{\mathsf{T}}$ の列が $\boldsymbol{x}_i$ なので、$X^{\mathsf{T}}$ とベクトルの積は列の線形結合になります）。
</Proof>

この公式は形が線形回帰と瓜二つです。最小二乗法の勾配は $X^{\mathsf{T}}(X\boldsymbol{w} - \boldsymbol{y})$ でした。違いは予測が $X\boldsymbol{w}$ から $\sigma(X\boldsymbol{w})$ に変わっただけです。「**残差（予測 $-$ 実測）を特徴で重み付けして足す**」という構造は共通しています。

<Corollary id="cor-calibration" title="切片を含むモデルの平均較正">
モデルが切片を含む、すなわちある $j_0$ についてすべての $i$ で $x_{i j_0} = 1$ であるとする。このとき $\nabla L(\boldsymbol{w}^{*}) = \boldsymbol{0}$ を満たす任意の $\boldsymbol{w}^{*}$ について

$$
\frac{1}{n}\sum_{i=1}^{n} \mu_i(\boldsymbol{w}^{*}) = \frac{1}{n}\sum_{i=1}^{n} y_i
$$

が成り立つ。すなわち予測確率の平均は、データ中の正例の割合に一致する。
</Corollary>

<Proof of="cor-calibration">
<Ref to="thm-gradient" /> より $\nabla L$ の第 $j_0$ 成分は $\sum_{i}(\mu_i - y_i)x_{ij_0}$ です。仮定より $x_{ij_0} = 1$ なので、これは $\sum_i (\mu_i - y_i)$ に等しくなります。$\nabla L(\boldsymbol{w}^{*}) = \boldsymbol{0}$ よりこの成分も $0$、すなわち $\sum_i \mu_i = \sum_i y_i$ です。両辺を $n$ で割れば主張を得ます。
</Proof>

<Ref to="cor-calibration" /> は、最尤推定されたロジスティック回帰が「全体としては当たっている」ことを保証します。100 人について平均 $0.3$ の確率を出したなら、実際に 30 人が正例だったということです。<Ref to="ex-intercept-only" /> はこの系の $d=1$ の場合にほかなりません。

### 5.2. きれいに約分することの意味

<Ref to="thm-gradient" /> の証明で起きた約分は、偶然ではありません。**シグモイドと交差エントロピーは、そう組み合わせるために選ばれた対**です。二乗誤差と組み合わせるとどうなるかを見れば、その意味がはっきりします。

<Example id="ex-squared-loss" title="二乗誤差だと勾配が消え、しかも凸でなくなる">
同じモデル $\mu_i = \sigma(\boldsymbol{w}^{\mathsf{T}}\boldsymbol{x}_i)$ に二乗誤差 $E(\boldsymbol{w}) = \frac12\sum_i (\mu_i - y_i)^2$ を使うと、<Ref to="thm-gradient" /> の証明の第 1 段だけが変わって $\partial E/\partial\mu_i = \mu_i - y_i$ となり、第 2 段の $\mu_i(1-\mu_i)$ は約分されずに残ります。

$$
\frac{\partial E}{\partial w_j} = \sum_{i=1}^{n} (\mu_i - y_i)\,\mu_i(1-\mu_i)\,x_{ij}.
$$

余分な因子 $\mu_i(1-\mu_i)$ が何をするかを、$d = 1$、$x = 1$、$y = 1$、$w = -10$ という「自信を持って間違えている」1 点で見ます。$\mu = \sigma(-10) = 4.5398\times 10^{-5}$ なので

- 交差エントロピーの勾配：$\mu - y = -0.99995$。
- 二乗誤差の勾配：$(\mu-y)\mu(1-\mu) = -4.5394\times 10^{-5}$。

その比は約 $22028$ 倍です。**最も大きく間違えている点で、二乗誤差はほとんど何も学習しません。** シグモイドが飽和して $\sigma' \approx 0$ になるからで、これが「勾配消失」と呼ばれる現象の最も単純な形です。

さらに悪いことに、この $E$ は凸でさえありません。同じ 1 点の設定で $s = \sigma(-w) = 1-\mu$ と置くと $E(w) = \frac12 s^2$ であり、$\dfrac{ds}{dw} = -\sigma'(-w) = -s(1-s)$（<Ref to="prop-sigmoid" /> (2),(3)）を使って

$$
E'(w) = s\cdot\frac{ds}{dw} = -s^{2}(1-s), \qquad
E''(w) = \bigl(-2s + 3s^{2}\bigr)\cdot\frac{ds}{dw} = s^{2}(1-s)(2-3s).
$$

$s \in (0,1)$ なので $E''$ の符号は $2-3s$ の符号、すなわち $s < 2/3$ かどうかで決まります。$s = 1/2$（$w=0$）では $E'' = 0.0625 > 0$ ですが、$s = 0.9$（$w = -\log 9 = -2.197$）では $E'' = -0.0567 < 0$ です。**変曲点 $w = -\log 2$ をまたいで凸性が入れ替わります。**

同じ 1 点で交差エントロピーは $L(w) = -\log\sigma(w) = \log(1+e^{-w})$ であり、$L'(w) = -(1-\sigma(w))$、$L''(w) = \sigma(w)(1-\sigma(w)) > 0$ なので狭義凸です。しかも $w \to -\infty$ で $L'(w) \to -1$ と、勾配が消えません。
</Example>

### 5.3. 閉じた解が無い

勾配が求まったので、最尤推定量は停留条件

$$
X^{\mathsf{T}}\bigl(\sigma(X\boldsymbol{w}) - \boldsymbol{y}\bigr) = \boldsymbol{0}
$$

を満たすはずです（$\sigma$ は成分ごとに作用させます）。ここが線形回帰との決定的な分かれ目です。

<Remark id="rem-no-closed-form">
線形回帰の停留条件は正規方程式 $X^{\mathsf{T}}X\boldsymbol{w} = X^{\mathsf{T}}\boldsymbol{y}$（<Ref to="computer-science/math-for-ml/linear-regression#thm-normal-equation" text="正規方程式" />）で、これは $\boldsymbol{w}$ について**連立一次方程式**です。$X^{\mathsf{T}}X$ が正則なら $\boldsymbol{w} = (X^{\mathsf{T}}X)^{-1}X^{\mathsf{T}}\boldsymbol{y}$ と、有限回の四則演算で書けます。

一方ロジスティック回帰の停留条件は、指数関数と多項式が混ざった**超越方程式**です。実際 $d=1$、$\boldsymbol{x}_i = (t_i)$ の場合ですら

$$
\sum_{i=1}^{n} \frac{t_i}{1+e^{-w t_i}} = \sum_{i=1}^{n} y_i t_i
$$

という形で、左辺は $w$ の初等関数ですが、これを $w$ について初等関数で解く一般公式は知られていません（$n=1$ に落として <Ref to="ex-intercept-only" /> のように解ける特殊な場合を除きます）。「初等関数で書けないこと」自体の厳密な証明は微分ガロア理論の話題になるのでここでは立ち入りませんが、実務上の帰結は明快です。**式変形で解を求めるのを諦め、数値的に探すしかありません。**

そして数値的に探すとき、いま立っている点 $\boldsymbol{w}$ から「どちらへ動けば $L$ が減るか」を教えてくれる唯一の局所情報が、勾配 $\nabla L(\boldsymbol{w})$ です。ここで初めて微分が計算道具ではなく**探索の羅針盤**になります。この探索を実際に回す方法が [勾配降下法](/computer-science/math-for-ml/gradient-descent)（<Ref to="computer-science/math-for-ml/gradient-descent#def-gradient-descent" />）で、多層のモデルに対して勾配を効率よく計算する仕組みが [ニューラルネットワークと逆伝播](/computer-science/math-for-ml/backpropagation) です。
</Remark>

### 5.4. 数値例

<Example id="ex-numeric-step" title="勾配を 1 ステップ手で回す">
§1.2 のデータ（$t = 1,2,3,4$、$y = 0,0,1,1$）に切片付きで当てはめます。$\boldsymbol{x}_i = (1, t_i)^{\mathsf{T}}$、$\boldsymbol{w} = (b, a)^{\mathsf{T}}$ です。

**初期点 $\boldsymbol{w} = (0,0)$。** $z_i = 0$ なので $\mu_i = \sigma(0) = 0.5$（<Ref to="prop-sigmoid" /> (2)）。損失は

$$
L(\boldsymbol{0}) = -\sum_{i=1}^{4}\log 0.5 = 4\log 2 = 2.7726 .
$$

残差は $\boldsymbol{\mu}-\boldsymbol{y} = (0.5,\, 0.5,\, -0.5,\, -0.5)$ なので、<Ref to="thm-gradient" /> より

$$
\nabla L(\boldsymbol{0}) = \begin{pmatrix} 0.5+0.5-0.5-0.5 \\ 0.5\cdot 1 + 0.5\cdot 2 - 0.5\cdot 3 - 0.5\cdot 4\end{pmatrix} = \begin{pmatrix} 0 \\ -2 \end{pmatrix}.
$$

切片方向の成分が $0$ なのは <Ref to="cor-calibration" /> の通りで、$\bar{\mu} = 0.5 = \bar{y}$ だからです。傾き方向は負なので、$a$ を増やせば損失が減ります。

**1 歩進める。** 学習率 $\eta = 0.1$ で $\boldsymbol{w} \leftarrow \boldsymbol{w} - \eta\nabla L(\boldsymbol{w}) = (0,\, 0.2)$ とします。$z_i = 0.2, 0.4, 0.6, 0.8$、$\mu_i = 0.5498, 0.5987, 0.6457, 0.6900$ となり

$$
L = -\bigl[\log 0.4502 + \log 0.4013 + \log 0.6457 + \log 0.6900\bigr] = 0.7981+0.9130+0.4375+0.3711 = 2.5197 .
$$

確かに $2.7726$ から減りました。新しい勾配は $\boldsymbol{\mu}-\boldsymbol{y} = (0.5498,\,0.5987,\,-0.3543,\,-0.3100)$ から

$$
\nabla L = \begin{pmatrix} 0.5498+0.5987-0.3543-0.3100 \\ 0.5498+1.1974-1.0630-1.2401 \end{pmatrix} = \begin{pmatrix} 0.4842 \\ -0.5559 \end{pmatrix}
$$

です。今度は切片成分が正になりました。傾きだけを上げたせいで全体の予測が押し上げられ、平均較正が崩れたためです。次の歩は切片を下げつつ傾きを上げる方向に進みます。
</Example>

上の計算を素直にコードにすると次のようになります。§4.2 の注意に従い、損失は $\log(1+e^{z}) - yz$ の形にまとめ、さらに $\log(1+e^{z}) = \max(z,0)+\log(1+e^{-|z|})$ と書き換えて桁溢れを避けています。

```python
import numpy as np

def softplus(z):                      # log(1 + exp(z)) を安全に計算
    return np.maximum(z, 0.0) + np.log1p(np.exp(-np.abs(z)))

def loss(w, X, y):
    z = X @ w
    return float(np.sum(softplus(z) - y * z))

def grad(w, X, y):                    # 勾配の公式そのもの
    mu = 1.0 / (1.0 + np.exp(-(X @ w)))
    return X.T @ (mu - y)

X = np.array([[1.0, 1.0], [1.0, 2.0], [1.0, 3.0], [1.0, 4.0]])
y = np.array([0.0, 0.0, 1.0, 1.0])

w = np.zeros(2)
print(loss(w, X, y), grad(w, X, y))   # 2.772588722239781  [ 0. -2.]

for _ in range(3):
    w = w - 0.1 * grad(w, X, y)
    print(w, loss(w, X, y))
```

出力される損失は $2.7726 \to 2.5197 \to 2.4706 \to 2.4305$ と単調に減っていきます。

## 6. 凸性：探索がうまくいく理由と、いかない場合

数値的に探すと決めたなら、次に確かめるべきは「探して見つかるのか」です。一般の関数では、勾配が $0$ になる点が局所最小・局所最大・鞍点のどれかは分かりません。しかし交差エントロピー誤差にはよい性質があります。

### 6.1. ヘッセ行列と凸性

<Theorem id="thm-convexity" title="交差エントロピー誤差の凸性">
<Ref to="thm-gradient" /> と同じ設定のもとで、$S(\boldsymbol{w}) = \operatorname{diag}\bigl(\mu_1(1-\mu_1), \ldots, \mu_n(1-\mu_n)\bigr)$ と置くと

$$
\nabla^{2} L(\boldsymbol{w}) = \sum_{i=1}^{n} \mu_i(1-\mu_i)\,\boldsymbol{x}_i\boldsymbol{x}_i^{\mathsf{T}} = X^{\mathsf{T}}S(\boldsymbol{w})X
$$

が成り立つ。この行列はすべての $\boldsymbol{w}$ で半正定値であり、したがって $L$ は $\mathbb{R}^{d}$ 上の凸関数である。さらに $\operatorname{rank} X = d$（$X$ の列が線形独立）ならば $\nabla^{2}L(\boldsymbol{w}) \succ O$ がすべての $\boldsymbol{w}$ で成り立ち、$L$ は狭義凸である。
</Theorem>

<Proof of="thm-convexity">
**ヘッセ行列の計算。** <Ref to="thm-gradient" /> より $\dfrac{\partial L}{\partial w_j} = \sum_i (\mu_i - y_i)x_{ij}$ です。$y_i$ は定数なので、これをさらに $w_k$ で微分すると $\mu_i$ だけが効いて

$$
\frac{\partial^{2} L}{\partial w_j \partial w_k} = \sum_{i=1}^{n} \frac{\partial \mu_i}{\partial w_k}\, x_{ij}
= \sum_{i=1}^{n} \sigma'(z_i)\,\frac{\partial z_i}{\partial w_k}\, x_{ij}
= \sum_{i=1}^{n} \mu_i(1-\mu_i)\, x_{ik} x_{ij}
$$

となります。2 番目の等号で連鎖律、3 番目で <Ref to="prop-sigmoid" /> (3) と $\partial z_i/\partial w_k = x_{ik}$ を使いました。$x_{ij}x_{ik}$ は行列 $\boldsymbol{x}_i\boldsymbol{x}_i^{\mathsf{T}}$ の $(j,k)$ 成分なので、行列としてまとめると $\nabla^2 L = \sum_i \mu_i(1-\mu_i)\boldsymbol{x}_i\boldsymbol{x}_i^{\mathsf{T}}$ です。$X$ の第 $i$ 行が $\boldsymbol{x}_i^{\mathsf{T}}$ であることから、これは $X^{\mathsf{T}}S X$ に等しくなります。

**半正定値性。** 任意の $\boldsymbol{v}\in\mathbb{R}^{d}$ について

$$
\boldsymbol{v}^{\mathsf{T}}\nabla^{2}L(\boldsymbol{w})\boldsymbol{v}
= \sum_{i=1}^{n}\mu_i(1-\mu_i)\,\boldsymbol{v}^{\mathsf{T}}\boldsymbol{x}_i\boldsymbol{x}_i^{\mathsf{T}}\boldsymbol{v}
= \sum_{i=1}^{n}\mu_i(1-\mu_i)\,(\boldsymbol{x}_i^{\mathsf{T}}\boldsymbol{v})^{2} \;\ge\; 0
$$

です。各項が非負なのは、<Ref to="prop-sigmoid" /> (1) より $0 < \mu_i < 1$ すなわち $\mu_i(1-\mu_i) > 0$ であり、$(\boldsymbol{x}_i^{\mathsf{T}}\boldsymbol{v})^2 \ge 0$ だからです。

**凸性。** $\boldsymbol{w}_0, \boldsymbol{w}_1 \in \mathbb{R}^{d}$ を任意に取り、$\boldsymbol{h} = \boldsymbol{w}_1 - \boldsymbol{w}_0$、$g(t) = L(\boldsymbol{w}_0 + t\boldsymbol{h})$ と置きます。$L$ は $C^{\infty}$ 級（<Ref to="thm-gradient" />）なので $g$ は $\mathbb{R}$ 上 $C^{2}$ 級で、連鎖律より $g''(t) = \boldsymbol{h}^{\mathsf{T}}\nabla^{2}L(\boldsymbol{w}_0+t\boldsymbol{h})\boldsymbol{h} \ge 0$ です。1 変数関数の 2 階導関数が非負なら凸なので $g$ は $[0,1]$ 上凸で、$g(t) \le (1-t)g(0) + t\,g(1)$、すなわち

$$
L\bigl((1-t)\boldsymbol{w}_0 + t\boldsymbol{w}_1\bigr) \le (1-t)L(\boldsymbol{w}_0) + t\,L(\boldsymbol{w}_1) \qquad (0\le t\le 1)
$$

が成り立ちます。$\boldsymbol{w}_0,\boldsymbol{w}_1$ は任意だったので $L$ は凸です。

**狭義凸性。** $\operatorname{rank}X = d$ と仮定し、$\boldsymbol{v}\ne\boldsymbol{0}$ とします。上の等式で $\boldsymbol{v}^{\mathsf{T}}\nabla^{2}L\boldsymbol{v} = 0$ が起きるとすると、すべての項が非負なので各項が $0$、つまり $\mu_i(1-\mu_i)(\boldsymbol{x}_i^{\mathsf{T}}\boldsymbol{v})^2 = 0$ です。$\mu_i(1-\mu_i) > 0$ なので $\boldsymbol{x}_i^{\mathsf{T}}\boldsymbol{v} = 0$ がすべての $i$ で成り立ち、これは $X\boldsymbol{v} = \boldsymbol{0}$ を意味します。$\operatorname{rank}X = d$ より $X$ の核は $\{\boldsymbol{0}\}$ なので $\boldsymbol{v} = \boldsymbol{0}$ となり矛盾します。よって $\boldsymbol{v}\ne\boldsymbol{0}$ ならば $\boldsymbol{v}^{\mathsf{T}}\nabla^{2}L\boldsymbol{v} > 0$、すなわち $\nabla^2 L \succ O$ です。このとき上の $g$ について $g'' > 0$ となり、$g$ は狭義凸、したがって $L$ も狭義凸です。
</Proof>

<Corollary id="cor-global-min" title="停留点は大域最小点">
<Ref to="thm-convexity" /> の設定のもとで、$\boldsymbol{w}^{*}\in\mathbb{R}^{d}$ が $\nabla L(\boldsymbol{w}^{*}) = \boldsymbol{0}$ を満たすならば、$\boldsymbol{w}^{*}$ は $L$ の大域最小点である。逆に大域最小点は停留点である。
</Corollary>

<Proof of="cor-global-min">
任意の $\boldsymbol{w}\in\mathbb{R}^{d}$ を取り、$\boldsymbol{h} = \boldsymbol{w}-\boldsymbol{w}^{*}$、$g(t) = L(\boldsymbol{w}^{*}+t\boldsymbol{h})$ と置きます。$g$ は $C^{2}$ 級なので、テイラーの定理（1 変数、ラグランジュ剰余）より、ある $\theta\in(0,1)$ が存在して

$$
g(1) = g(0) + g'(0) + \tfrac12 g''(\theta).
$$

ここで $g(1) = L(\boldsymbol{w})$、$g(0) = L(\boldsymbol{w}^{*})$、$g'(0) = \nabla L(\boldsymbol{w}^{*})^{\mathsf{T}}\boldsymbol{h} = 0$（仮定）、$g''(\theta) = \boldsymbol{h}^{\mathsf{T}}\nabla^{2}L(\boldsymbol{w}^{*}+\theta\boldsymbol{h})\boldsymbol{h} \ge 0$（<Ref to="thm-convexity" /> の半正定値性）です。したがって $L(\boldsymbol{w}) \ge L(\boldsymbol{w}^{*})$ が任意の $\boldsymbol{w}$ について成り立ちます。逆向きは、$L$ が微分可能なので大域最小点で勾配が消える（フェルマーの定理）ことから従います。テイラーの定理については [平均値の定理とテイラーの定理](/mathematics/calculus/mean-value-and-taylor) の <Ref to="mathematics/calculus/mean-value-and-taylor#thm-taylor" /> を参照してください。
</Proof>

これが、勾配だけを頼りに探索してよい理由です。局所最小に捕まる心配がなく、勾配が消えた場所が答えです。深層学習の損失関数は一般に凸ではないので、この保証はロジスティック回帰の大きな利点です。

### 6.2. 線形分離可能なとき最尤推定量は存在しない

凸性は「見つかれば大域最適」を保証しますが、「見つかる」ことは保証しません。実際、次のよくある状況で最小点は存在しません。

<Theorem id="thm-separation" title="線形分離可能なら最尤推定量は存在しない">
データ $(\boldsymbol{x}_i, y_i)_{i=1}^{n}$（$n \ge 1$）が**狭義に線形分離可能**であるとする。すなわち、あるベクトル $\boldsymbol{v}\in\mathbb{R}^{d}$ が存在して

$$
y_i = 1 \implies \boldsymbol{x}_i^{\mathsf{T}}\boldsymbol{v} > 0, \qquad
y_i = 0 \implies \boldsymbol{x}_i^{\mathsf{T}}\boldsymbol{v} < 0
$$

がすべての $i$ で成り立つとする。このとき <Ref to="def-cross-entropy" /> の $L$ について

$$
\inf_{\boldsymbol{w}\in\mathbb{R}^{d}} L(\boldsymbol{w}) = 0
$$

であるが、この下限は達成されない。さらに $L(\boldsymbol{w}_k)\to 0$ を満たす任意の点列 $(\boldsymbol{w}_k)$ は $\|\boldsymbol{w}_k\| \to \infty$ を満たす。
</Theorem>

<Proof of="thm-separation">
**(a) $L > 0$。** <Ref to="prop-sigmoid" /> (1) より $0 < \mu_i < 1$ なので、$y_i = 1$ の項 $-\log\mu_i$ は $\mu_i < 1$ より狭義正、$y_i = 0$ の項 $-\log(1-\mu_i)$ は $1-\mu_i < 1$ より狭義正です。$n \ge 1$ 個の狭義正の数の和なので $L(\boldsymbol{w}) > 0$ がすべての $\boldsymbol{w}$ で成り立ちます。

**(b) $L(t\boldsymbol{v})\to 0$。** $t > 0$ とし、$c_i = \boldsymbol{x}_i^{\mathsf{T}}\boldsymbol{v}$ と置きます。$\boldsymbol{w} = t\boldsymbol{v}$ のとき $z_i = tc_i$ です。$y_i = 1$ の項は <Ref to="def-sigmoid" /> より $\log\sigma(z) = -\log(1+e^{-z})$ なので

$$
-\log\sigma(tc_i) = \log\bigl(1+e^{-tc_i}\bigr) \xrightarrow{\;t\to\infty\;} \log 1 = 0
$$

です（仮定より $c_i > 0$ なので $e^{-tc_i}\to 0$）。$y_i = 0$ の項は <Ref to="prop-sigmoid" /> (2) より $1-\sigma(tc_i) = \sigma(-tc_i)$ なので

$$
-\log\bigl(1-\sigma(tc_i)\bigr) = -\log\sigma(-tc_i) = \log\bigl(1+e^{tc_i}\bigr) \xrightarrow{\;t\to\infty\;} 0
$$

です（仮定より $c_i < 0$ なので $e^{tc_i}\to 0$）。有限個の和なので $L(t\boldsymbol{v})\to 0$ です。

**(c) 下限と非達成。** (a) より $L > 0$、(b) より $0$ にいくらでも近づけるので $\inf L = 0$。しかし (a) より $L(\boldsymbol{w}) = 0$ となる $\boldsymbol{w}$ は存在しないので、下限は達成されません。

**(d) 発散。** $L(\boldsymbol{w}_k)\to 0$ かつ $(\boldsymbol{w}_k)$ が有界だと仮定します。ボルツァーノ・ワイエルシュトラスの定理より収束する部分列 $\boldsymbol{w}_{k_m}\to\boldsymbol{w}_{\infty}$ が取れます。$L$ は連続（<Ref to="thm-gradient" /> より $C^{\infty}$ 級）なので $L(\boldsymbol{w}_{\infty}) = \lim_m L(\boldsymbol{w}_{k_m}) = 0$ となり、(a) に矛盾します。よって $(\boldsymbol{w}_k)$ は有界ではありません。さらに、もし有界な部分列があれば、その部分列も $L \to 0$ を満たすので同じ議論で矛盾します。有界な部分列が存在しないことは $\|\boldsymbol{w}_k\|\to\infty$ にほかなりません。
</Proof>

<Example id="ex-separable-divergence" title="重みが発散する様子">
§1.2 のデータ（$t=1,2$ が $y=0$、$t=3,4$ が $y=1$）は $t = 2.5$ で分離できます。<Ref to="thm-separation" /> の $\boldsymbol{v}$ として $\boldsymbol{v} = (-2.5,\, 1)^{\mathsf{T}}$ を取れば $c_i = t_i - 2.5 = -1.5, -0.5, 0.5, 1.5$ となり、符号条件が満たされます。$\boldsymbol{w} = \alpha\boldsymbol{v}$ に沿って損失を計算すると次の通りです。

| $\alpha$ | 1 | 2 | 5 | 10 | 20 |
|---|---|---|---|---|---|
| $\|\boldsymbol{w}\|$ | 2.69 | 5.39 | 13.46 | 26.93 | 53.85 |
| $L(\boldsymbol{w})$ | 1.3510 | 0.7237 | 0.1589 | 0.01343 | 0.0000908 |

$\alpha = 1$ の値を手で確かめます。$z_i = -1.5, -0.5, 0.5, 1.5$ で、$y=0$ の 2 点の損失は $\log(1+e^{z})$、$y=1$ の 2 点の損失は $\log(1+e^{-z})$ ですから

$$
L = \log(1+e^{-1.5}) + \log(1+e^{-0.5}) + \log(1+e^{-0.5}) + \log(1+e^{-1.5}) = 2(0.2014 + 0.4741) = 1.3510 .
$$

損失は単調に $0$ へ向かい、それに応じて $\|\boldsymbol{w}\|$ は際限なく大きくなります。<Ref to="ex-numeric-step" /> の勾配降下法をいつまでも回し続けると、重みが延々と大きくなり続けるのはこのためです。実用上の困り事は、分離できてしまうデータでは予測確率がすべて $0$ か $1$ に張り付き、「どのくらい確信があるか」という情報が失われることです。特徴の数 $d$ がデータ数 $n$ より多いときはほぼ必ず分離できてしまうので、これは例外的な事態ではありません。
</Example>

### 6.3. 正則化で直す

<Theorem id="thm-ridge" title="L2 正則化つき最尤推定の存在と一意性">
$\lambda > 0$ とし、<Ref to="def-cross-entropy" /> の $L$ に対して

$$
L_{\lambda}(\boldsymbol{w}) = L(\boldsymbol{w}) + \frac{\lambda}{2}\|\boldsymbol{w}\|^{2}
$$

と置く。データ $(\boldsymbol{x}_i,y_i)_{i=1}^n$ には**何の条件も課さない**（分離可能でも、$X$ が列フルランクでなくてもよい）。このとき $L_{\lambda}$ は $\mathbb{R}^{d}$ 上でただ一つの大域最小点 $\hat{\boldsymbol{w}}_{\lambda}$ を持ち、それは方程式

$$
X^{\mathsf{T}}\bigl(\sigma(X\hat{\boldsymbol{w}}_{\lambda}) - \boldsymbol{y}\bigr) + \lambda\,\hat{\boldsymbol{w}}_{\lambda} = \boldsymbol{0}
$$

の唯一の解である。
</Theorem>

<Proof of="thm-ridge">
**存在。** <Ref to="thm-separation" /> の (a) より $L \ge 0$ なので $L_{\lambda}(\boldsymbol{w}) \ge \frac{\lambda}{2}\|\boldsymbol{w}\|^{2}$ です。一方 $\boldsymbol{w} = \boldsymbol{0}$ では $\mu_i = 1/2$ なので $L_{\lambda}(\boldsymbol{0}) = L(\boldsymbol{0}) = n\log 2$ です。そこで $R = \sqrt{2n\log 2/\lambda} + 1$ と取れば、$\|\boldsymbol{w}\| > R$ のとき

$$
L_{\lambda}(\boldsymbol{w}) \ge \frac{\lambda}{2}\|\boldsymbol{w}\|^{2} > \frac{\lambda}{2}R^{2} > n\log 2 = L_{\lambda}(\boldsymbol{0})
$$

となります。よって $L_{\lambda}$ の $\mathbb{R}^{d}$ 上の下限は、閉球 $\bar{B}(\boldsymbol{0},R) = \{\boldsymbol{w} : \|\boldsymbol{w}\|\le R\}$ 上の下限と一致します。$\bar{B}(\boldsymbol{0},R)$ は $\mathbb{R}^d$ の有界閉集合すなわちコンパクトで、$L_{\lambda}$ は連続なのでワイエルシュトラスの最大値・最小値定理により最小値を取る点 $\hat{\boldsymbol{w}}_{\lambda}$ が存在します。これは $\mathbb{R}^{d}$ 全体での大域最小点です。

**一意性。** $\|\boldsymbol{w}\|^{2}$ のヘッセ行列は $2I$ なので $\nabla^{2}L_{\lambda}(\boldsymbol{w}) = X^{\mathsf{T}}S(\boldsymbol{w})X + \lambda I$ です。任意の $\boldsymbol{v}\ne\boldsymbol{0}$ について <Ref to="thm-convexity" /> の半正定値性より

$$
\boldsymbol{v}^{\mathsf{T}}\nabla^{2}L_{\lambda}\boldsymbol{v} = \boldsymbol{v}^{\mathsf{T}}X^{\mathsf{T}}SX\boldsymbol{v} + \lambda\|\boldsymbol{v}\|^{2} \ge \lambda\|\boldsymbol{v}\|^{2} > 0
$$

です。いま $\boldsymbol{w}_1 \ne \boldsymbol{w}_2$ がともに大域最小点だとすると、どちらも停留点なので $\nabla L_{\lambda}(\boldsymbol{w}_1) = \boldsymbol{0}$ です。<Ref to="cor-global-min" /> の証明と同じテイラー展開を $\boldsymbol{h} = \boldsymbol{w}_2-\boldsymbol{w}_1 \ne \boldsymbol{0}$ に対して行うと、ある $\theta\in(0,1)$ について

$$
L_{\lambda}(\boldsymbol{w}_2) = L_{\lambda}(\boldsymbol{w}_1) + 0 + \tfrac12\boldsymbol{h}^{\mathsf{T}}\nabla^{2}L_{\lambda}(\boldsymbol{w}_1+\theta\boldsymbol{h})\boldsymbol{h}
\ge L_{\lambda}(\boldsymbol{w}_1) + \frac{\lambda}{2}\|\boldsymbol{h}\|^{2} > L_{\lambda}(\boldsymbol{w}_1)
$$

となり、$\boldsymbol{w}_2$ が最小点であることに矛盾します。よって最小点は一意です。

**方程式。** <Ref to="thm-gradient" /> と $\nabla\bigl(\frac{\lambda}{2}\|\boldsymbol{w}\|^{2}\bigr) = \lambda\boldsymbol{w}$ より $\nabla L_{\lambda}(\boldsymbol{w}) = X^{\mathsf{T}}(\sigma(X\boldsymbol{w})-\boldsymbol{y}) + \lambda\boldsymbol{w}$ です。$L_{\lambda}$ は凸（凸関数 $L$ と凸関数 $\frac{\lambda}{2}\|\boldsymbol{w}\|^2$ の和）なので <Ref to="cor-global-min" /> と同じ議論により、停留点であることと大域最小点であることは同値です。最小点が一意だったので、停留方程式の解も一意です。
</Proof>

<Remark id="rem-map" title="正則化はガウス事前分布である">
$\lambda$ という項は「大きな重みを罰する」という工学的な工夫に見えますが、確率の言葉では自然な解釈があります。$\boldsymbol{w}$ 自体を確率変数と見て、事前分布 $\boldsymbol{w} \sim N(\boldsymbol{0}, \tau^{2}I)$ を置きます。ベイズの定理より事後分布は $p(\boldsymbol{w}\mid \text{data}) \propto \mathcal{L}(\boldsymbol{w})\,p(\boldsymbol{w})$ なので、その負の対数は

$$
-\log p(\boldsymbol{w}\mid \text{data}) = L(\boldsymbol{w}) + \frac{1}{2\tau^{2}}\|\boldsymbol{w}\|^{2} + \text{const}
$$

です。これは $\lambda = 1/\tau^{2}$ とした $L_{\lambda}$ にほかなりません。**$L^2$ 正則化つきの最小化は、ガウス事前分布のもとでの MAP 推定（事後確率最大化）と同じ**です。$\tau$ を小さくする（重みが $\boldsymbol{0}$ の近くにあると強く信じる）ほど $\lambda$ が大きくなる、という対応も直感に合います。詳しくは [確率論とベイズ統計の役割](/computer-science/math-for-ml/bayesian-statistics) の <Ref to="computer-science/math-for-ml/bayesian-statistics#thm-l2-gaussian" text="L2 正則化はガウス事前分布の MAP 推定" /> を参照してください。
</Remark>

## 7. 演習

<Exercise id="exr-sigmoid-second" difficulty="易">
<Ref to="def-sigmoid" /> の $\sigma$ について、$\sigma''(z) = \sigma'(z)\bigl(1-2\sigma(z)\bigr)$ を示し、$\sigma$ が $z = 0$ に変曲点を持つことを確かめてください。

<Solution>
<Ref to="prop-sigmoid" /> (3) より $\sigma' = \sigma(1-\sigma) = \sigma - \sigma^{2}$ です。これを $z$ で微分すると、積の微分法（あるいは合成関数の微分法）により

$$
\sigma'' = \sigma' - 2\sigma\sigma' = \sigma'(1 - 2\sigma)
$$

を得ます。<Ref to="prop-sigmoid" /> (3) より $\sigma' > 0$ なので、$\sigma''$ の符号は $1-2\sigma(z)$ の符号だけで決まります。$\sigma$ は狭義単調増加で $\sigma(0) = 1/2$（同 (2)）ですから

- $z < 0$ のとき $\sigma(z) < 1/2$ なので $1-2\sigma(z) > 0$、すなわち $\sigma'' > 0$（下に凸）、
- $z = 0$ のとき $\sigma'' = 0$、
- $z > 0$ のとき $\sigma(z) > 1/2$ なので $\sigma'' < 0$（上に凸）

となります。$z = 0$ の前後で凹凸が入れ替わるので、$z = 0$ は変曲点です。$\sigma'(0) = \frac12\cdot\frac12 = \frac14$ なので、そこでの接線の傾きは $1/4$、これがシグモイドの最大傾斜です。
</Solution>
</Exercise>

<Exercise id="exr-odds" difficulty="標準">
ある病気の罹患確率について $\log\dfrac{\mu}{1-\mu} = -4 + 0.8\,x_1 + 1.5\,x_2$ というモデルが推定されました。$x_1$ は年齢を 10 歳単位で測った値、$x_2$ は喫煙者なら $1$、非喫煙者なら $0$ を取る変数です。

1. 50 歳（$x_1 = 5$）の非喫煙者の罹患確率を求めてください。
2. 他の条件を固定したとき、喫煙者は非喫煙者に比べてオッズが何倍になりますか。
3. このモデルの上では、喫煙者であることは何歳分の加齢と同じだけオッズを押し上げますか。

<Solution>
**1.** $z = -4 + 0.8\times 5 + 1.5\times 0 = -4 + 4 = 0$ なので、<Ref to="prop-sigmoid" /> (2) より $\mu = \sigma(0) = 0.5$、すなわち $50\%$ です。

**2.** $x_2$ を $0$ から $1$ に変えると対数オッズが $1.5$ 増えるので、オッズは $e^{1.5} = 4.4817$ 倍になります。<Ref to="ex-odds-ratio" /> と同様に、これは $x_1$ の値によらず一定です。ただし確率が何倍になるかは $x_1$ に依存します。実際 $x_1 = 5$ では $\mu$ が $0.5 \to \sigma(1.5) = 0.8176$ と $1.635$ 倍にしかなりません。

**3.** 喫煙者 $(x_1, 1)$ と、より年配の非喫煙者 $(x_1 + \Delta, 0)$ の対数オッズが等しくなる $\Delta$ を求めます。

$$
-4 + 0.8x_1 + 1.5 = -4 + 0.8(x_1 + \Delta) \iff 1.5 = 0.8\,\Delta \iff \Delta = 1.875 .
$$

$x_1$ の単位が 10 歳なので **18.75 歳分**です。数値で確かめます。$x_1 = 5$（50 歳）の喫煙者は $z = -4 + 4 + 1.5 = 1.5$、$x_1 = 6.875$（68.75 歳）の非喫煙者は $z = -4 + 0.8\times 6.875 = -4 + 5.5 = 1.5$ で一致します。両者の罹患確率はともに $\sigma(1.5) = 0.8176$ です。

この計算が $x_1$ の値に依らないのは、対数オッズが $x_1$ と $x_2$ の**線形結合**だからです。交互作用項 $x_1x_2$ を入れたモデルではこの換算は年齢に依存し、一定の「歳数」では言い表せなくなります。

</Solution>
</Exercise>

<Exercise id="exr-pm-one" difficulty="標準">
ラベルを $\tilde{y}_i = 2y_i - 1 \in \{-1, +1\}$ と付け替えます。$z_i = \boldsymbol{w}^{\mathsf{T}}\boldsymbol{x}_i$ として、<Ref to="def-cross-entropy" /> の $L$ が

$$
L(\boldsymbol{w}) = \sum_{i=1}^{n} \log\bigl(1 + e^{-\tilde{y}_i z_i}\bigr)
$$

と書けることを示し、この表示から勾配を計算して <Ref to="thm-gradient" /> と一致することを確かめてください。

<Solution>
**表示。** 第 $i$ 項を場合分けします。$y_i = 1$（$\tilde{y}_i = +1$）のとき、<Ref to="def-cross-entropy" /> の項は $-\log\mu_i = -\log\sigma(z_i)$ です。<Ref to="def-sigmoid" /> の $\sigma(z) = 1/(1+e^{-z})$ より $-\log\sigma(z_i) = \log(1+e^{-z_i}) = \log(1+e^{-\tilde{y}_i z_i})$ です。

$y_i = 0$（$\tilde{y}_i = -1$）のとき、項は $-\log(1-\mu_i)$ です。<Ref to="prop-sigmoid" /> (2) より $1-\sigma(z_i) = \sigma(-z_i)$ なので

$$
-\log(1-\mu_i) = -\log\sigma(-z_i) = \log\bigl(1+e^{z_i}\bigr) = \log\bigl(1+e^{-(-1)z_i}\bigr) = \log\bigl(1+e^{-\tilde{y}_i z_i}\bigr)
$$

となり、どちらの場合も同じ式になります。

**勾配。** $u_i = -\tilde{y}_i z_i$ と置くと第 $i$ 項は $\log(1+e^{u_i})$ で、$\dfrac{d}{du}\log(1+e^{u}) = \dfrac{e^{u}}{1+e^{u}} = \sigma(u)$ です（分子分母を $e^{u}$ で割れば $\sigma$ の定義形になります）。連鎖律より $\dfrac{\partial u_i}{\partial \boldsymbol{w}} = -\tilde{y}_i\boldsymbol{x}_i$ なので

$$
\nabla L(\boldsymbol{w}) = -\sum_{i=1}^{n} \tilde{y}_i\,\sigma(-\tilde{y}_i z_i)\,\boldsymbol{x}_i .
$$

<Ref to="thm-gradient" /> と一致することを場合分けで確かめます。$y_i = 1$ のとき $-\tilde{y}_i\sigma(-\tilde{y}_iz_i) = -\sigma(-z_i) = -(1-\mu_i) = \mu_i - 1 = \mu_i - y_i$。$y_i = 0$ のとき $-\tilde{y}_i\sigma(-\tilde{y}_iz_i) = +\sigma(z_i) = \mu_i = \mu_i - y_i$。どちらも $\mu_i - y_i$ に等しく、一致します。

この表示は「$\tilde{y}_i z_i$（マージン）が大きいほど損失が小さい」という構造を露わにしており、サポートベクターマシンのヒンジ損失 $\max(0, 1-\tilde{y}_iz_i)$ と直接比較できる形になっています。
</Solution>
</Exercise>

<Exercise id="exr-strong-convexity" difficulty="難">
$\lambda > 0$ とし、<Ref to="thm-ridge" /> の $L_{\lambda}$ とその一意の最小点 $\hat{\boldsymbol{w}}_{\lambda}$ を考えます。任意の $\boldsymbol{w}\in\mathbb{R}^{d}$ について

$$
L_{\lambda}(\boldsymbol{w}) \;\ge\; L_{\lambda}(\hat{\boldsymbol{w}}_{\lambda}) + \frac{\lambda}{2}\bigl\|\boldsymbol{w}-\hat{\boldsymbol{w}}_{\lambda}\bigr\|^{2}
$$

を示し、これを使って $\|\hat{\boldsymbol{w}}_{\lambda}\| \le \sqrt{2n\log 2/\lambda}$ を導いてください。

<Solution>
**不等式。** $\boldsymbol{h} = \boldsymbol{w} - \hat{\boldsymbol{w}}_{\lambda}$、$g(t) = L_{\lambda}(\hat{\boldsymbol{w}}_{\lambda} + t\boldsymbol{h})$ と置きます。$L$ は $C^{\infty}$ 級（<Ref to="thm-gradient" />）、$\frac{\lambda}{2}\|\boldsymbol{w}\|^{2}$ は多項式なので $L_{\lambda}$ も $C^{\infty}$ 級で、$g$ は $C^{2}$ 級です。テイラーの定理より、ある $\theta\in(0,1)$ について

$$
L_{\lambda}(\boldsymbol{w}) = g(1) = g(0) + g'(0) + \tfrac12 g''(\theta).
$$

$\hat{\boldsymbol{w}}_{\lambda}$ は最小点なので $\nabla L_{\lambda}(\hat{\boldsymbol{w}}_{\lambda}) = \boldsymbol{0}$、したがって $g'(0) = \nabla L_{\lambda}(\hat{\boldsymbol{w}}_{\lambda})^{\mathsf{T}}\boldsymbol{h} = 0$ です。また <Ref to="thm-ridge" /> の証明で示した通り $\nabla^{2}L_{\lambda} = X^{\mathsf{T}}SX + \lambda I$ で、<Ref to="thm-convexity" /> より $X^{\mathsf{T}}SX \succeq O$ なので

$$
g''(\theta) = \boldsymbol{h}^{\mathsf{T}}\bigl(X^{\mathsf{T}}S X + \lambda I\bigr)\boldsymbol{h} \ge \lambda\|\boldsymbol{h}\|^{2}.
$$

以上を代入すれば $L_{\lambda}(\boldsymbol{w}) \ge L_{\lambda}(\hat{\boldsymbol{w}}_{\lambda}) + \frac{\lambda}{2}\|\boldsymbol{h}\|^{2}$ を得ます。この性質を**$\lambda$-強凸性**といい、狭義凸性より強い「二次関数で下から押さえられる」という主張です。

**上からの評価。** 不等式で $\boldsymbol{w} = \boldsymbol{0}$ と取ります。<Ref to="thm-ridge" /> の証明で見たように $L_{\lambda}(\boldsymbol{0}) = L(\boldsymbol{0}) = n\log 2$（$\mu_i = 1/2$ が $n$ 個）なので

$$
n\log 2 \;\ge\; L_{\lambda}(\hat{\boldsymbol{w}}_{\lambda}) + \frac{\lambda}{2}\|\hat{\boldsymbol{w}}_{\lambda}\|^{2} \;\ge\; \frac{\lambda}{2}\|\hat{\boldsymbol{w}}_{\lambda}\|^{2}
$$

です。最後の不等号では <Ref to="thm-separation" /> の (a) と $\frac{\lambda}{2}\|\hat{\boldsymbol{w}}_\lambda\|^2 \ge 0$ から $L_{\lambda}(\hat{\boldsymbol{w}}_{\lambda}) \ge 0$ であることを使いました。整理すると $\|\hat{\boldsymbol{w}}_{\lambda}\|^{2} \le 2n\log 2/\lambda$、すなわち $\|\hat{\boldsymbol{w}}_{\lambda}\| \le \sqrt{2n\log 2/\lambda}$ です。

データが線形分離可能でも重みがこの範囲に収まることが、<Ref to="thm-separation" /> の発散を正則化が確かに止めていることの定量的な証拠になります。$\lambda \to 0$ で上界が $\infty$ に発散するのも、正則化なしの状況と整合しています。
</Solution>
</Exercise>

## 参考文献

- C. M. Bishop, *Pattern Recognition and Machine Learning*, Springer, 2006 — 第 4 章「Linear Models for Classification」。§4.2 に <Ref to="ex-gaussian-posterior" /> の生成モデルからの導出、§4.3 にロジスティック回帰と IRLS がある。
- T. Hastie, R. Tibshirani, J. Friedman, *The Elements of Statistical Learning*, 2nd ed., Springer, 2009 — 第 4 章「Linear Methods for Classification」。線形分離可能な場合の非有界性や正則化の扱いも含む。[著者による公開版](https://hastie.su.domains/ElemStatLearn/)。
- S. Boyd, L. Vandenberghe, *Convex Optimization*, Cambridge University Press, 2004 — 第 3 章（凸関数と強凸性）、第 7 章（最尤推定を凸最適化として扱う例）。[著者による公開版](https://web.stanford.edu/~boyd/cvxbook/)。
- I. Goodfellow, Y. Bengio, A. Courville, *Deep Learning*, MIT Press, 2016 — 第 6 章。出力ユニットの選択と交差エントロピー損失の対応、および <Ref to="ex-squared-loss" /> の勾配飽和の議論。[公開版](https://www.deeplearningbook.org/)。
- J. Berkson, "Application of the Logistic Function to Bio-Assay", *Journal of the American Statistical Association* 39 (1944), 357–365 — "logit" という語が導入された論文。
- J. A. Nelder, R. W. M. Wedderburn, "Generalized Linear Models", *Journal of the Royal Statistical Society, Series A* 135 (1972), 370–384 — ロジスティック回帰を一般化線形モデルの一例として位置づけた論文。
- 久保拓弥『データ解析のための統計モデリング入門』岩波書店、2012 — 一般化線形モデルの枠組みからロジスティック回帰を扱う章。統計モデリングの実践側からの入門として読みやすい。

## Appendix: 多クラスへの一般化とニュートン法

**ソフトマックス回帰。** クラスが $K$ 個ある場合は、クラスごとに重み $\boldsymbol{w}_k \in \mathbb{R}^{d}$ を用意し

$$
P(y = k \mid \boldsymbol{x}) = \frac{\exp(\boldsymbol{w}_k^{\mathsf{T}}\boldsymbol{x})}{\sum_{l=1}^{K}\exp(\boldsymbol{w}_l^{\mathsf{T}}\boldsymbol{x})}
$$

とします。これを**ソフトマックス関数**といい、$K = 2$ のとき分子分母を $\exp(\boldsymbol{w}_0^{\mathsf{T}}\boldsymbol{x})$ で割れば $P(y=1\mid\boldsymbol{x}) = \sigma\bigl((\boldsymbol{w}_1-\boldsymbol{w}_0)^{\mathsf{T}}\boldsymbol{x}\bigr)$ となり、シグモイドに戻ります（重みの差だけが意味を持つので、パラメータには $K-1$ 個分の自由度しかありません）。損失はラベルを one-hot ベクトル $\boldsymbol{t}_i$（第 $y_i$ 成分だけ $1$）として $L = -\sum_i \sum_k t_{ik}\log \mu_{ik}$ で、これも交差エントロピーです。勾配は <Ref to="thm-gradient" /> と同じ形の

$$
\frac{\partial L}{\partial \boldsymbol{w}_k} = \sum_{i=1}^{n} (\mu_{ik} - t_{ik})\,\boldsymbol{x}_i
$$

になります（<Ref to="computer-science/math-for-ml/backpropagation#prop-softmax-ce" text="ソフトマックス＋交差エントロピーの勾配" />）。約分が起きる構造がそのまま保たれている、というのが要点です。

**ニュートン法と IRLS。** <Ref to="thm-convexity" /> でヘッセ行列まで求めてあるので、勾配だけでなく 2 階情報も使えます。ニュートン法の更新

$$
\boldsymbol{w} \leftarrow \boldsymbol{w} - \bigl(X^{\mathsf{T}}SX\bigr)^{-1}X^{\mathsf{T}}(\boldsymbol{\mu}-\boldsymbol{y})
$$

は、右辺を整理すると $\boldsymbol{w} \leftarrow (X^{\mathsf{T}}SX)^{-1}X^{\mathsf{T}}S\boldsymbol{z}$（$\boldsymbol{z} = X\boldsymbol{w} + S^{-1}(\boldsymbol{y}-\boldsymbol{\mu})$）という**重み付き最小二乗法**の形に書き換えられます。重み $S$ が反復ごとに更新されるので、これを **IRLS**（反復再重み付け最小二乗法）と呼びます。収束が速い一方、各反復で $d\times d$ 行列の逆行列（実際には連立一次方程式）を扱うため $d$ が大きいと重くなります。深層学習で 1 階の [勾配降下法](/computer-science/math-for-ml/gradient-descent) が使われるのは、この計算量の差が理由の一つです。
