損失関数についてClaude Opus 4.5に説明してもらいました。
自分は間違いを指摘したり、構成を整理しました。
交差エントロピーと分類
前提知識
この記事では分類問題の損失関数を解説します。損失関数の基本概念とMSE(平均二乗誤差)については「損失関数の基礎」を参照してください。
1. 交差エントロピー損失
1.1 日常の例から理解する「確信度」と「ペナルティ」
まず、数式を見る前に、日常生活の例で交差エントロピーの考え方を理解しましょう。
具体例:天気予報の信頼性を評価する
2人の天気予報士がいます。ある日、実際には雨が降りました。
交差エントロピーの考え方:
- 予報士Aは「雨 90%」と予測し、実際に雨 → 損失は小さい(0.11)
- 予報士Bは「雨 20%」と予測し、実際に雨 → 損失は大きい(1.61)
- 正解に高い確率を与えていれば損失は小さく、低い確率を与えていれば損失は大きくなる
1.2 なぜMSE(平均二乗誤差)ではダメなのか?
「分類問題でもMSEを使えばいいのでは?」という疑問があるかもしれません。実際には交差エントロピーの方が分類に適している理由を見てみましょう。
具体例:犬か猫かを分類する
実際には猫(正解=1)の画像に対して、2つのモデルが異なる予測をしました:
MSEの問題:大きく間違えても学習が遅い
上の例でモデルBは完全に間違った予測(猫なのに1%しか猫と言っていない)をしています。
- MSE:勾配がわずか0.01 → ほとんど学習しない(勾配消失)
- 交差エントロピー:勾配が0.99 → 素早く修正される
なぜこうなる?MSEはシグモイド関数の導関数 \(\hat{y}(1-\hat{y})\) を含むため、\(\hat{y}\) が0や1に近いと勾配が消失します。交差エントロピーはこの問題を回避します。
1.3 具体例で見る交差エントロピー
具体例:メール分類での交差エントロピー
スパムメール判定(スパム=1、正常=0)の場合:
| メール | 予測確率 \(\hat{y}\) | 実際 \(y\) | 交差エントロピー損失 | 解釈 |
|---|---|---|---|---|
| A(スパム) | 0.95 | 1 | \(-\log(0.95) = 0.05\) | 正解に自信あり→小損失 |
| B(スパム) | 0.30 | 1 | \(-\log(0.30) = 1.20\) | 正解に自信なし→大損失 |
| C(正常) | 0.10 | 0 | \(-\log(0.90) = 0.11\) | 正解に自信あり→小損失 |
| D(正常) | 0.80 | 0 | \(-\log(0.20) = 1.61\) | 間違いに自信あり→大損失 |
ポイント:自信を持って間違えると、損失は非常に大きくなります。これがモデルに「間違った自信を持たない」よう促します。
1.4 なぜ分類問題に交差エントロピーを使うのか(まとめ)
交差エントロピーを使う3つの理由
理由1:勾配消失を回避
シグモイド/ソフトマックスと組み合わせると、勾配が単純な \((\hat{y} – y)\) になり、予測が0や1に近くても学習が進みます。
理由2:確率論的に正しい
交差エントロピー最小化 = 尤度最大化。つまり、「この予測分布がデータを生成した確率」を最大化することと同じです。統計学的に正当化された手法です。
理由3:自信過剰を罰する
間違った予測に高い確率(自信)を与えると、損失が急激に増大します。これにより、モデルは適切な確率を出力するようになります。
| 項目 | MSE | 交差エントロピー |
|---|---|---|
| 適した問題 | 回帰(連続値予測) | 分類(確率予測) |
| 出力の解釈 | 任意の実数 | 確率(0〜1の範囲) |
| 勾配消失 | シグモイドと組むと発生 | 発生しない |
| 間違いへの反応 | 線形的に増加 | 指数的に増加 |
| 計算式(2値) | \((\hat{y}-y)^2\) | \(-[y\log\hat{y}+(1-y)\log(1-\hat{y})]\) |
二値分類の交差エントロピー損失
$$L = -\frac{1}{n}\sum_{i=1}^{n}\left[y_i \log(\hat{y}_i) + (1-y_i) \log(1-\hat{y}_i)\right]$$
\(y_i \in \{0, 1\}\): 目標クラス、\(\hat{y}_i \in (0, 1)\): 予測確率
公式の意味を分解する
この公式は、目標値 \(y_i\) によって2つのケースに分かれます:
ケース1:\(y_i = 1\)(正例)の場合
$$L = -\log(\hat{y}_i)$$
正解が1のとき、予測確率 \(\hat{y}_i\) が1に近いほど損失が小さくなります。
- \(\hat{y}_i = 0.99\) → \(L = 0.01\)(正しく高確率で予測 → 小さな損失)
- \(\hat{y}_i = 0.5\) → \(L = 0.69\)(確信がない → 中程度の損失)
- \(\hat{y}_i = 0.01\) → \(L = 4.6\)(間違って低確率で予測 → 大きな損失)
ケース2:\(y_i = 0\)(負例)の場合
$$L = -\log(1 – \hat{y}_i)$$
正解が0のとき、予測確率 \(\hat{y}_i\) が0に近いほど損失が小さくなります。
- \(\hat{y}_i = 0.01\) → \(L = 0.01\)(正しく低確率で予測 → 小さな損失)
- \(\hat{y}_i = 0.5\) → \(L = 0.69\)(確信がない → 中程度の損失)
- \(\hat{y}_i = 0.99\) → \(L = 4.6\)(間違って高確率で予測 → 大きな損失)
交差エントロピーの形状
交差エントロピー vs MSE:なぜ分類に交差エントロピーが優れているか
MSEの問題点:勾配消失
シグモイド関数 + MSEの組み合わせでは、予測が大きく外れたとき(\(\hat{y} \approx 0\) または \(\hat{y} \approx 1\))、シグモイドの導関数が非常に小さくなり、勾配が消失します。
$$\delta = (\hat{y} – y) \cdot \hat{y}(1-\hat{y})$$
例:\(\hat{y} = 0.99\), \(y = 0\) の場合、\(\hat{y}(1-\hat{y}) = 0.0099\) となり、勾配が極めて小さくなります。
交差エントロピーの利点:勾配消失しない
シグモイド関数 + 交差エントロピーの組み合わせでは、出力層の勾配が:
$$\delta = \hat{y} – y$$
となり、シグモイドの導関数が打ち消されます。予測が大きく外れたとき(例:\(\hat{y} = 0.99\), \(y = 0\))、勾配は \(0.99\) と大きくなり、素早く学習できます。
具体的な比較:\(y = 0\), \(\hat{y} = 0.99\)(大きな誤り)の場合
| 損失関数 | 損失値 | 勾配(出力層) |
|---|---|---|
| MSE: \(\frac{1}{2}(\hat{y}-y)^2\) | \(0.49\) | \(0.99 \times 0.0099 = 0.0098\)(小さい) |
| Cross-Entropy: \(-\log(1-\hat{y})\) | \(4.6\) | \(0.99 – 0 = 0.99\)(大きい) |
交差エントロピーは、間違った予測に対して大きな損失と大きな勾配を与え、素早い学習を促進します。
交差エントロピーの微分
交差エントロピー損失を予測値 \(\hat{y}\) で微分すると:
$$\frac{\partial L}{\partial \hat{y}} = -\frac{y}{\hat{y}} + \frac{1-y}{1-\hat{y}}$$
導出の詳細
\(L = -[y \log(\hat{y}) + (1-y) \log(1-\hat{y})]\) を \(\hat{y}\) で微分:
$$\frac{\partial L}{\partial \hat{y}} = -\left[\frac{y}{\hat{y}} + (1-y) \cdot \frac{-1}{1-\hat{y}}\right] = -\frac{y}{\hat{y}} + \frac{1-y}{1-\hat{y}}$$
これを通分すると:
$$\frac{\partial L}{\partial \hat{y}} = \frac{-y(1-\hat{y}) + (1-y)\hat{y}}{\hat{y}(1-\hat{y})} = \frac{\hat{y} – y}{\hat{y}(1-\hat{y})}$$
シグモイド + 交差エントロピーの組み合わせ
シグモイド活性化関数 \(\hat{y} = \sigma(z) = \frac{1}{1+e^{-z}}\) と交差エントロピーを組み合わせると、入力 \(z\) に対する勾配が非常にシンプルになります:
$$\frac{\partial L}{\partial z} = \hat{y} – y$$
シグモイドの導関数 \(\hat{y}(1-\hat{y})\) が打ち消される!
導出
連鎖律により:
$$\frac{\partial L}{\partial z} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z} = \frac{\hat{y} – y}{\hat{y}(1-\hat{y})} \cdot \hat{y}(1-\hat{y}) = \hat{y} – y$$
シグモイド + 交差エントロピーの利点
この組み合わせにより:
- 勾配計算が単純(\(\hat{y} – y\) のみ)
- 勾配消失問題が解消される
- 実装が容易
- 最尤推定と等価(確率論的に正当化される)
2. One-Hotエンコーディングと多クラス分類
MNISTのような多クラス分類問題(0〜9の10クラス)では、One-Hotエンコーディングとソフトマックス関数を組み合わせた損失関数が使われます。
One-Hotエンコーディングとは
One-Hotエンコーディングは、カテゴリカルなラベルを、該当するクラスのみが1で他が0のベクトルで表現する方法です。
One-Hotエンコーディングの定義
\(K\) クラス分類問題において、クラス \(c\) のOne-Hot表現は \(K\) 次元ベクトルで:
$$\mathbf{y} = (y_1, y_2, …, y_K), \quad y_k = \begin{cases} 1 & (k = c) \\ 0 & (k \neq c) \end{cases}$$
このベクトルは、正解クラスの位置のみが「熱い(hot)」=1 であることから、One-Hotと呼ばれます。
具体例:MNISTでのOne-Hot表現
手書き数字認識(MNIST)では、0〜9の10クラスに対して:
| 数字 | One-Hotベクトル \(\mathbf{y}\) |
|---|---|
| 0 | \((1, 0, 0, 0, 0, 0, 0, 0, 0, 0)\) |
| 1 | \((0, 1, 0, 0, 0, 0, 0, 0, 0, 0)\) |
| 2 | \((0, 0, 1, 0, 0, 0, 0, 0, 0, 0)\) |
| 3 | \((0, 0, 0, 1, 0, 0, 0, 0, 0, 0)\) |
| … | … |
| 9 | \((0, 0, 0, 0, 0, 0, 0, 0, 0, 1)\) |
なぜOne-Hotエンコーディングを使うのか?
One-Hotエンコーディングの利点
- 順序の排除:数字の「3」は「2」より大きいという順序関係を持たせない(カテゴリとして等価に扱う)
- 確率的解釈:ネットワーク出力を「各クラスである確率」として解釈できる
- 勾配計算の単純化:交差エントロピー損失との組み合わせで、勾配が \(\hat{y}_k – y_k\) となる
- 多クラスへの自然な拡張:二値分類から多クラス分類へシームレスに拡張可能
ソフトマックス関数
多クラス分類では、出力層にソフトマックス関数を使用して、出力を確率分布に変換します。
$$\hat{y}_k = \frac{e^{z_k}}{\sum_{j=1}^{K} e^{z_j}}$$
\(z_k\): クラス \(k\) の入力(ロジット)、\(\hat{y}_k\): クラス \(k\) の予測確率
ソフトマックス関数の重要な性質:
- 全ての出力が正:\(\hat{y}_k > 0\)
- 出力の合計が1:\(\sum_{k=1}^{K} \hat{y}_k = 1\)(確率分布を形成)
- 最大のロジットを持つクラスが最大の確率を持つ
多クラス交差エントロピー損失(カテゴリカル交差エントロピー)
One-Hotエンコーディングとソフトマックスを組み合わせた損失関数は:
$$L = -\frac{1}{n}\sum_{i=1}^{n}\sum_{k=1}^{K} y_{ik} \log(\hat{y}_{ik})$$
\(n\): サンプル数、\(K\): クラス数、\(y_{ik}\): One-Hot目標値、\(\hat{y}_{ik}\): ソフトマックス出力
One-Hotベクトルでは \(y_{ik} = 1\) となるのは正解クラスのみなので、この損失は実質的に:
$$L = -\frac{1}{n}\sum_{i=1}^{n}\log(\hat{y}_{i,\text{正解クラス}})$$
ソフトマックス + 交差エントロピーの勾配
ソフトマックス関数と交差エントロピー損失を組み合わせると、出力層の勾配が非常にシンプルになります:
$$\frac{\partial L}{\partial z_k} = \hat{y}_k – y_k$$
予測確率から目標(One-Hot)を引くだけ!
3. 損失関数の微分と勾配降下法
勾配降下法では、損失関数の勾配を用いて重みを更新します。
$$w^{new} = w^{old} – \eta \frac{\partial L}{\partial w}$$
\(\eta\): 学習率(learning rate)
連鎖律による勾配計算
重み \(w\) に対する損失関数の勾配は、連鎖律を用いて計算します:
$$\frac{\partial L}{\partial w} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z} \cdot \frac{\partial z}{\partial w}$$
各項の意味:
- \(\frac{\partial L}{\partial \hat{y}}\): 損失の出力に対する感度(出力勾配)
- \(\frac{\partial \hat{y}}{\partial z}\): 活性化関数の導関数
- \(\frac{\partial z}{\partial w}\): 重み付き和の重みに対する導関数
4. MNISTでの具体例
MNIST手書き数字認識を例に、損失関数と学習の関係を見てみましょう。
MNISTデータセット
- 入力:28×28ピクセルのグレースケール画像(784次元ベクトル)
- 出力:10クラス(0〜9の数字)
- 訓練データ:60,000枚
- テストデータ:10,000枚
学習過程での損失変化
ミニバッチサイズ \(n=32\) で学習する場合の損失計算:
$$L = -\frac{1}{32}\sum_{i=1}^{32}\sum_{k=0}^{9} y_{ik} \log(\hat{y}_{ik})$$
| エポック | 訓練損失 | 検証精度 |
|---|---|---|
| 1 | 2.30 | 11.2% |
| 5 | 0.85 | 75.3% |
| 10 | 0.35 | 89.5% |
| 20 | 0.12 | 96.2% |
| 50 | 0.05 | 98.1% |
観察ポイント
- 初期の損失(約2.30)はランダム予測に相当(\(-\log(0.1) \approx 2.30\))
- 学習が進むにつれて損失は単調に減少する
- 損失が小さくなると精度が向上する
5. 損失関数の選択指針
適切な損失関数の選択は、学習の成功に重要です。
| 問題タイプ | 推奨損失関数 | 活性化関数 | 数式 |
|---|---|---|---|
| 回帰 | MSE | 線形 or なし | \(\frac{1}{n}\sum_{i}(\hat{y}_i-y_i)^2\) |
| 二値分類 | 二値交差エントロピー | シグモイド | \(-\frac{1}{n}\sum_{i}[y_i\log\hat{y}_i+(1-y_i)\log(1-\hat{y}_i)]\) |
| 多クラス分類 | カテゴリカル交差エントロピー | ソフトマックス | \(-\frac{1}{n}\sum_{i}\sum_{k}y_{ik}\log\hat{y}_{ik}\) |
注意点
- MSEは外れ値に敏感(大きな誤差が二乗されるため)
- 交差エントロピーは \(\hat{y} = 0\) または \(\hat{y} = 1\) で \(\log\) が発散するため、数値的安定性に注意
- 損失関数と活性化関数の組み合わせによって勾配の形が変わる
- バッチサイズ \(n\) で割ることで、学習率がバッチサイズに依存しにくくなる
まとめ
本章のポイント
- 交差エントロピーは分類問題に適し、確率的解釈が可能
- MSEより交差エントロピー:分類では勾配消失を回避できる
- One-Hotエンコーディングは多クラス分類の目標表現に使用され、MNISTなどで必須
- ソフトマックス + 交差エントロピーの組み合わせで勾配が \(\hat{y}_k – y_k\) となる
- シグモイド + 交差エントロピーの組み合わせで勾配が \(\hat{y} – y\) となる
- 損失関数の微分が勾配降下法の基礎となる
広告
さくらのレンタルサーバムームードメイン
Oisix(おいしっくす)
らでぃっしゅぼーや
珈琲きゃろっと
エプソムソルト
【FRONTIER】
AdGuard Ad Blocker
AdGuard VPN
AdGuard DNS