損失関数の基礎

損失関数についてClaude Opus 4.5に説明してもらいました。
自分は間違いを指摘したり、構成を整理しました。

損失関数の基礎

損失関数

具体例:損失関数の動作

ネットワークが「猫」の画像に対して予測を行う場合

予測 目標(正解) 損失 意味
猫: 0.95 猫: 1.0 0.05 良い予測 → 小さな損失
猫: 0.50 猫: 1.0 0.69 曖昧な予測 → 中程度の損失
猫: 0.05 猫: 1.0 3.00 悪い予測 → 大きな損失

損失が小さいほど予測が正確です。学習とは、この損失を最小化するように重みを調整することです。

損失関数(Loss Function)は、ニューラルネットワークの予測値と実際の正解値との「ずれ」を数値化する関数です。

損失関数の役割

ニューラルネットワークの学習は、損失関数を最小化する最適化問題として定式化されます。

$$\min_{\mathbf{w}} L(\hat{\mathbf{y}}, \mathbf{y}) = \min_{\mathbf{w}} L(f(\mathbf{x}; \mathbf{w}), \mathbf{y})$$

ここで \(\mathbf{w}\) はネットワークの重みパラメータ、\(f(\mathbf{x}; \mathbf{w})\) は入力 \(\mathbf{x}\) に対するネットワークの出力です。

学習の本質

ニューラルネットワークの学習とは、損失関数を最小化するような重み \(\mathbf{w}\) を見つけることです。勾配降下法では、損失関数の勾配 \(\frac{\partial L}{\partial \mathbf{w}}\) を計算し、勾配の逆方向に重みを更新します。

損失関数の定義

損失関数 \(L\) は、予測値 \(\hat{y}\) と目標値 \(y\) を入力として受け取り、非負の実数を出力する関数です。

$$L: (\hat{y}, y) \rightarrow \mathbb{R}^+$$

損失関数は以下の性質を持ちます。

  • \(L(\hat{y}, y) \geq 0\)(常に非負)
  • \(\hat{y} = y\) のとき \(L(\hat{y}, y) = 0\)(完全一致で損失ゼロ)
  • \(\hat{y}\) と \(y\) の差が大きいほど \(L(\hat{y}, y)\) も大きい

損失関数は誤差関数とも言います。

平均二乗誤差 (MSE: Mean Squared Error)

具体例:住宅価格予測でのMSE

3軒の住宅価格を予測した場合:

住宅 予測価格 \(\hat{y}\) 実際価格 \(y\) 誤差 \((\hat{y}-y)\) 二乗誤差
A 3000万円 3200万円 -200万円 40000
B 2500万円 2400万円 +100万円 10000
C 4000万円 4500万円 -500万円 250000

MSE = (40000 + 10000 + 250000) / 3 = 100000(万円²)

平均二乗誤差(Mean Squared Error, MSE)は、回帰問題で最もよく使われる損失関数です。全サンプルにわたる二乗誤差の平均を計算します。

平均二乗誤差(MSE)の標準定義

$$\text{MSE} = \frac{1}{n}\sum_{i=1}^{n}(\hat{y}_i – y_i)^2$$

\(n\): サンプル数、\(\hat{y}_i\): 第\(i\)サンプルの予測値、\(y_i\): 第\(i\)サンプルの目標値

MSEの役割

MSEは回帰問題において中心的な役割を果たします。その役割を詳しく見ていきましょう。

MSEの3つの役割

  1. 予測精度の評価:モデルがどれだけ正確に予測できているかを測定
  2. 学習の指針:最小化すべき目標として、重みの更新方向を決定
  3. モデル比較:異なるモデルの性能を公平に比較する基準

役割1:予測精度の評価指標

MSEは、モデルの予測がどれだけ正解に近いかを単一の数値で表現します。

具体例:2つのモデルの比較

同じ5つのサンプルに対する2つのモデルの予測:

サンプル 正解 \(y\) モデルA \(\hat{y}_A\) モデルB \(\hat{y}_B\)
1 10 9 8
2 20 21 22
3 15 14 18
4 25 26 24
5 30 29 27

MSE計算:

  • モデルA:\(\frac{1}{5}[(1)^2 + (1)^2 + (1)^2 + (1)^2 + (1)^2] = \frac{5}{5} = 1.0\)
  • モデルB:\(\frac{1}{5}[(2)^2 + (2)^2 + (3)^2 + (1)^2 + (3)^2] = \frac{27}{5} = 5.4\)

MSEが小さいモデルAの方が優れた予測をしています。

役割2:学習の目標関数

ニューラルネットワークの学習では、MSEを最小化する目標として使用します。

最適化問題としての定式化

重み \(\mathbf{w}\) を持つモデル \(f(\mathbf{x}; \mathbf{w})\) に対して:

$$\mathbf{w}^* = \arg\min_{\mathbf{w}} \frac{1}{n}\sum_{i=1}^{n}(f(\mathbf{x}_i; \mathbf{w}) – y_i)^2$$

勾配降下法により、MSEが減少する方向に重みを更新します:

$$\mathbf{w} \leftarrow \mathbf{w} – \eta \frac{\partial \text{MSE}}{\partial \mathbf{w}}$$

役割3:統計学的な正当性(最尤推定との関係)

MSEには深い統計学的な意味があります。

ガウス分布と最尤推定

観測値 \(y\) が予測値 \(\hat{y}\) を中心とするガウス分布に従うと仮定:

$$p(y | \hat{y}) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(y – \hat{y})^2}{2\sigma^2}\right)$$

このとき、負の対数尤度を最小化することは、MSEを最小化することと等価です:

$$-\log p(y | \hat{y}) = \frac{(y – \hat{y})^2}{2\sigma^2} + \text{const}$$

つまり、MSEの最小化 = 最尤推定(ガウスノイズの仮定下)

直感的な意味

「データに正規分布のノイズが含まれる」という仮定の下では、MSEを最小化することが統計学的に最も合理的な推定方法です。これがMSEが広く使われる理由の一つです。

なぜ「二乗」なのか?

誤差を測る方法は他にもありますが、なぜ「二乗」が選ばれるのでしょうか?

二乗誤差を使う4つの理由

  1. 正負の誤差を同等に扱う:過大予測も過小予測も同じ重みで評価
  2. 大きな誤差をより強く罰する:外れ値に敏感に反応
  3. 微分可能で滑らか:勾配降下法で最適化しやすい
  4. 解析的に扱いやすい:線形回帰では閉形式の解が存在

具体例:二乗 vs 絶対値

誤差が \((-2, -1, 0, +1, +3)\) の5サンプルの場合:

指標 計算 結果
平均絶対誤差(MAE) \(\frac{1}{5}(2 + 1 + 0 + 1 + 3)\) 1.4
平均二乗誤差(MSE) \(\frac{1}{5}(4 + 1 + 0 + 1 + 9)\) 3.0

MSEでは大きな誤差(3)の影響が \(3^2 = 9\) と増幅されます。

外れ値への注意

MSEは大きな誤差を二乗するため、外れ値に敏感です。

  • 1つの大きな誤差がMSE全体を支配することがある
  • 外れ値が多いデータでは、平均絶対誤差(MAE)やHuber損失を検討
損失関数 数式 特徴 適した場面
MSE \((\hat{y} – y)^2\) 大きな誤差を強く罰する 正規分布ノイズ、外れ値が少ない
MAE \(|\hat{y} – y|\) 全ての誤差を均等に扱う 外れ値が多い、ロバストな推定
Huber MSEとMAEの組み合わせ 小誤差はMSE、大誤差はMAE 外れ値に頑健かつ滑らか

ニューラルネットワークでのMSEの変形

ニューラルネットワークの学習では、微分計算を簡単にするために、係数 \(\frac{1}{2}\) を掛けることがあります:

学習用MSE(係数1/2付き)

$$L = \frac{1}{2n}\sum_{i=1}^{n}(\hat{y}_i – y_i)^2$$

または、単一サンプルの場合:\(L = \frac{1}{2}(\hat{y} – y)^2\)

なぜ 1/2 を掛けるのか?

係数 \(\frac{1}{2}\) は数学的な便宜のためです。微分すると:

$$\frac{\partial L}{\partial \hat{y}_i} = \frac{\partial}{\partial \hat{y}_i}\left[\frac{1}{2}(\hat{y}_i – y_i)^2\right] = (\hat{y}_i – y_i)$$

\(\frac{1}{2}\) があることで、微分時に現れる係数 2 が打ち消され、結果が単純な \((\hat{y}_i – y_i)\) になります。

なぜ「平均」なのに \(\frac{1}{n}\) ではなく \(\frac{1}{2}\) を使うのか?

機械学習の文献では、「平均二乗誤差」と呼びながら、実際には以下の形式がよく使われます:

機械学習でよく使われる形式

$$E = \frac{1}{2}\sum_{i=1}^{n}(t_i – y_i)^2$$

\(\frac{1}{n}\) ではなく \(\frac{1}{2}\) を使用

これには以下の理由があります:

理由1:オンライン学習(確率的勾配降下法)

確率的勾配降下法(SGD)では、1サンプルずつ重みを更新します。この場合、\(n=1\) なので「平均」の概念がなくなり、単純に:

$$E = \frac{1}{2}(t – y)^2$$

となります。\(\frac{1}{2}\) は微分時の係数2を打ち消すためだけに存在します。

理由2:定数係数は最適化に影響しない

損失関数 \(L\) と \(cL\)(\(c > 0\))は同じ点で最小値を取ります:

$$\arg\min_{\mathbf{w}} L(\mathbf{w}) = \arg\min_{\mathbf{w}} cL(\mathbf{w})$$

したがって、\(\frac{1}{n}\) でも \(\frac{1}{2}\) でも \(\frac{1}{2n}\) でも、最適な重みは変わりません。違いは学習率 \(\eta\) の調整で吸収されます。

理由3:歴史的・慣習的な理由

ニューラルネットワークの初期の文献(Rumelhart et al., 1986 など)では、逆伝播の導出を簡潔にするために \(\frac{1}{2}\) が採用されました。この慣習が現在も続いています。

用語の混乱に注意

厳密には:

  • MSE(Mean Squared Error):\(\displaystyle \frac{1}{n}\sum_{i=1}^{n}(t_i – y_i)^2\)(統計学的定義)
  • SSE(Sum of Squared Errors):\(\displaystyle \sum_{i=1}^{n}(t_i – y_i)^2\)
  • 機械学習での「二乗誤差損失」:\(\displaystyle \frac{1}{2}\sum_{i=1}^{n}(t_i – y_i)^2\) または \(\displaystyle \frac{1}{2n}\sum_{i=1}^{n}(t_i – y_i)^2\)

文献によって定義が異なるため、使用する際は係数を確認することが重要です。

実用上の注意

最適化の観点では、定数係数は損失関数を最小化するパラメータに影響しません。\(\frac{1}{2}\) の有無は、学習率の調整で吸収されます。しかし、勾配計算を簡潔にするため、多くの教科書やフレームワークでは \(\frac{1}{2}\) を含めた形式を使用します。

MSEの数学的性質

具体例:3サンプルのMSE計算

予測値 \(\hat{\mathbf{y}} = (0.8, 0.3, 0.6)\)、目標値 \(\mathbf{y} = (1.0, 0.0, 1.0)\) の場合:

$$\text{MSE} = \frac{1}{3}\sum_{i=1}^{3}(\hat{y}_i – y_i)^2$$
$$= \frac{1}{3}\left[(0.8-1.0)^2 + (0.3-0.0)^2 + (0.6-1.0)^2\right]$$
$$= \frac{1}{3}\left[0.04 + 0.09 + 0.16\right] = \frac{0.29}{3} = 0.0967$$

MSEの形状

MSEは \(\hat{y}\) に関して放物線(二次関数)の形状を持ちます:

  • \(\hat{y} = y\) で最小値 0
  • \(\hat{y}\) が \(y\) から離れるほど急激に増加
  • 滑らかで連続的な勾配を持つ(微分可能で凸関数)

001

多次元出力への拡張

ニューラルネットワークの出力が \(K\) 次元ベクトルの場合(例:10クラス分類)、MSEは:

多次元MSE

$$\text{MSE} = \frac{1}{n}\sum_{i=1}^{n}\sum_{k=1}^{K}(\hat{y}_{ik} – y_{ik})^2$$

\(K\): 出力次元数、\(\hat{y}_{ik}\): サンプル\(i\)のクラス\(k\)に対する予測

MSEの勾配

\(n\) サンプルに対するMSEの勾配は:

MSE勾配

$$\frac{\partial \text{MSE}}{\partial \hat{y}_i} = \frac{2}{n}(\hat{y}_i – y_i)$$

係数 \(\frac{1}{2}\) 付きの場合は \(\frac{1}{n}(\hat{y}_i – y_i)\)

具体例:XORとMNISTの損失関数

損失関数の理解を深めるために、2つの代表的な問題での損失関数を詳しく見ていきます。

XOR問題と2-2-1ネットワーク

XOR(排他的論理和)は、ニューラルネットワークの学習能力を示す古典的な問題です。

XOR問題の定義

入力 \(x_1\) 入力 \(x_2\) 出力 \(y\)(XOR)
0 0 0
0 1 1
1 0 1
1 1 0

XORは線形分離不可能なため、単層パーセプトロンでは学習できません。隠れ層を持つネットワークが必要です。

2-2-1ネットワークの構造

ネットワーク構成

  • 入力層:2ユニット(\(x_1, x_2\))
  • 隠れ層:2ユニット(\(h_1, h_2\))、活性化関数はシグモイド
  • 出力層:1ユニット(\(\hat{y}\))、活性化関数はシグモイド

順伝播の計算:

$$h_1 = \sigma(w_{11}x_1 + w_{12}x_2 + b_1)$$
$$h_2 = \sigma(w_{21}x_1 + w_{22}x_2 + b_2)$$
$$\hat{y} = \sigma(v_1 h_1 + v_2 h_2 + c)$$

ここで \(\sigma(z) = \frac{1}{1+e^{-z}}\) はシグモイド関数

XOR学習の損失関数

XORは二値分類問題なので、以下の損失関数が使用できます。

選択肢1:二乗誤差損失(MSE)

$$L_{\text{MSE}} = \frac{1}{2}\sum_{i=1}^{4}(\hat{y}_i – y_i)^2$$

4つの入力パターン全てに対する二乗誤差の合計

選択肢2:二値交差エントロピー損失

$$L_{\text{BCE}} = -\sum_{i=1}^{4}\left[y_i \log(\hat{y}_i) + (1-y_i) \log(1-\hat{y}_i)\right]$$

分類問題ではこちらが一般的に推奨される

具体例:学習初期の損失計算(MSE)

ランダムな初期重みで、ネットワークが以下の出力を生成したとします:

入力 \((x_1, x_2)\) 正解 \(y\) 予測 \(\hat{y}\) 誤差 \((\hat{y}-y)\) 二乗誤差
(0, 0) 0 0.52 0.52 0.2704
(0, 1) 1 0.48 -0.52 0.2704
(1, 0) 1 0.51 -0.49 0.2401
(1, 1) 0 0.49 0.49 0.2401

損失計算:

$$L = \frac{1}{2}(0.2704 + 0.2704 + 0.2401 + 0.2401) = \frac{1}{2} \times 1.021 = 0.5105$$

初期状態では、ネットワークはほぼランダムな出力(約0.5)をしており、損失は大きい。

具体例:学習後の損失計算(MSE)

十分な学習後、ネットワークが以下の出力を生成したとします:

入力 \((x_1, x_2)\) 正解 \(y\) 予測 \(\hat{y}\) 誤差 \((\hat{y}-y)\) 二乗誤差
(0, 0) 0 0.02 0.02 0.0004
(0, 1) 1 0.97 -0.03 0.0009
(1, 0) 1 0.98 -0.02 0.0004
(1, 1) 0 0.03 0.03 0.0009

損失計算:

$$L = \frac{1}{2}(0.0004 + 0.0009 + 0.0004 + 0.0009) = \frac{1}{2} \times 0.0026 = 0.0013$$

学習によりネットワークはXORを正しく学習し、損失は約0.001まで減少。

XOR学習のポイント

  • XORは4サンプルしかないため、バッチ学習(全データを一度に使用)が一般的
  • 損失関数は4サンプル全ての誤差を合計
  • MSEでも学習可能だが、交差エントロピーの方が収束が速い場合が多い
  • 隠れ層がないと学習不可能(線形分離不可能性)

MNIST手書き数字認識の損失関数

MNISTは、0〜9の手書き数字を認識する10クラス分類問題です。

MNISTの問題設定

  • 入力:28×28ピクセルのグレースケール画像 → 784次元ベクトル \(\mathbf{x} \in [0, 1]^{784}\)
  • 出力:10クラスの確率分布 \(\hat{\mathbf{y}} \in [0, 1]^{10}\)、\(\sum_{k=0}^{9} \hat{y}_k = 1\)
  • 正解:One-Hotベクトル \(\mathbf{y} \in \{0, 1\}^{10}\)
  • 訓練データ:60,000枚
  • テストデータ:10,000枚

MNISTの損失関数:カテゴリカル交差エントロピー

多クラス分類では、ソフトマックス関数交差エントロピー損失を組み合わせます。

多クラス交差エントロピー損失

$$L = -\frac{1}{n}\sum_{i=1}^{n}\sum_{k=0}^{9} y_{ik} \log(\hat{y}_{ik})$$

\(n\): バッチサイズ、\(y_{ik}\): サンプル\(i\)のクラス\(k\)のOne-Hot値、\(\hat{y}_{ik}\): ソフトマックス出力

One-Hotベクトルでは正解クラスのみ1なので、実質的には:

$$L = -\frac{1}{n}\sum_{i=1}^{n} \log(\hat{y}_{i, c_i})$$

ここで \(c_i\) はサンプル \(i\) の正解クラス。つまり、正解クラスの予測確率の負の対数を最小化します。

具体例:1枚の画像「3」に対する損失計算

入力画像が数字「3」で、ネットワークの出力(ソフトマックス後)が:

クラス 0 1 2 3 4 5 6 7 8 9
One-Hot \(y_k\) 0 0 0 1 0 0 0 0 0 0
予測 \(\hat{y}_k\) 0.01 0.02 0.05 0.75 0.03 0.04 0.02 0.03 0.04 0.01

損失計算(この1枚に対して):

$$L = -\sum_{k=0}^{9} y_k \log(\hat{y}_k) = -[0 \cdot \log(0.01) + … + 1 \cdot \log(0.75) + … + 0 \cdot \log(0.01)]$$
$$= -\log(0.75) = 0.288$$

正解クラス「3」の確率が0.75と高いため、損失は比較的小さい。

具体例:誤分類の場合の損失

同じ画像「3」に対して、ネットワークが「8」と誤認識した場合:

クラス 0 1 2 3 4 5 6 7 8 9
One-Hot \(y_k\) 0 0 0 1 0 0 0 0 0 0
予測 \(\hat{y}_k\) 0.01 0.02 0.03 0.05 0.02 0.03 0.02 0.02 0.75 0.05

損失計算:

$$L = -\log(0.05) = 2.996$$

正解クラス「3」の確率がわずか0.05なので、損失は約3.0と非常に大きい。

ミニバッチ学習での損失

MNISTでは通常、ミニバッチ(例:32枚)単位で学習します。

具体例:バッチサイズ32での損失計算

32枚の画像に対する各サンプルの損失が以下の場合:

  • サンプル1〜10:正しく高確率で予測、各損失 ≈ 0.1〜0.3
  • サンプル11〜25:中程度の確率、各損失 ≈ 0.5〜1.0
  • サンプル26〜32:低確率(誤分類傾向)、各損失 ≈ 1.5〜3.0

バッチ損失:

$$L_{\text{batch}} = \frac{1}{32}\sum_{i=1}^{32} L_i = \frac{1}{32}(2.0 + 11.25 + 14.0) = \frac{27.25}{32} = 0.852$$

なぜMNISTでMSEを使わないのか?

MNISTでMSEを使う問題点

MNISTでMSEを使うこともできますが、いくつかの問題があります:

問題1:確率的解釈の欠如

MSEは出力を確率分布として扱いません。ソフトマックスの「合計1」という制約と相性が悪い。

問題2:勾配消失

ソフトマックス + MSEの組み合わせでは、予測が極端(0や1に近い)なときに勾配が小さくなります。

問題3:学習の非効率

完全に間違った予測(正解クラスの確率が0.01など)でも、MSEの勾配は小さく、修正が遅い。

問題 推奨損失関数 出力層活性化 理由
XOR(2-2-1) 二値交差エントロピー
またはMSE
シグモイド 二値分類、小規模データ
MNIST カテゴリカル交差エントロピー ソフトマックス 多クラス分類、確率出力

損失関数選択のまとめ

  • 回帰問題(連続値予測)→ MSE
  • 二値分類(XORなど)→ 二値交差エントロピー(またはMSE)
  • 多クラス分類(MNISTなど)→ カテゴリカル交差エントロピー

まとめ

本章のポイント

  1. 損失関数は予測と正解の「ずれ」を測定する関数
  2. MSEは \(\frac{1}{n}\sum_{i=1}^{n}(\hat{y}_i – y_i)^2\) で定義され、回帰問題に適する
  3. 係数 \(\frac{1}{2}\) は微分計算を簡潔にするための便宜
  4. MSEは放物線形状を持ち、滑らかな勾配で最適化しやすい
  5. 損失関数の微分が勾配降下法の基礎となる

広告

さくらのレンタルサーバ
ムームードメイン
Oisix(おいしっくす)
らでぃっしゅぼーや
珈琲きゃろっと
エプソムソルト
【FRONTIER】
AdGuard Ad Blocker
AdGuard VPN
AdGuard DNS




«       »
カテゴリーAI