損失関数(categorical_crossentropy, mseなど)

Kerasにおける**損失関数(Loss Function)**は、モデルの予測結果と正解ラベルとの誤差を定量化する関数であり、モデルの学習において極めて重要な役割を果たします。損失関数は model.compile() 時に指定され、モデルがどのように誤差を評価し、それをもとに重みを更新するかを決定します。

以下に、Kerasでよく使われる代表的な損失関数を詳しく説明します。


1. categorical_crossentropy(カテゴリカル交差エントロピー)

使用場面:

  • 多クラス分類(ラベルがワンホットエンコーディングされている場合)

数式:

損失 LL は以下のように定義されます:

L=i=1Cyilog(y^i)L = -\sum_{i=1}^{C} y_i \log(\hat{y}_i)

  • CC: クラス数

  • yiy_i: 正解ラベル(ワンホットベクトル)

  • y^i\hat{y}_i: ソフトマックス出力(予測確率)

特徴:

  • 出力層には Softmax 活性化関数を使うのが一般的

  • ログの性質により、大きな誤差に対してより大きなペナルティを与える


2. sparse_categorical_crossentropy(スパースカテゴリカル交差エントロピー)

使用場面:

  • 多クラス分類(ラベルが整数形式である場合)

特徴:

  • categorical_crossentropyと同様の理論に基づくが、ラベル形式が異なる

  • ラベルがワンホットではなく、[2], [0], [1] のような整数インデックスで表現されている


3. mean_squared_error(平均二乗誤差, mse)

使用場面:

  • 回帰問題

数式:

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

  • yiy_i: 正解値

  • y^i\hat{y}_i: 予測値

  • nn: サンプル数

特徴:

  • 誤差の2乗を取ることで、大きな誤差に強いペナルティを与える

  • 出力が連続値である問題(価格予測、気温予測など)に適している


4. mean_absolute_error(平均絶対誤差, mae)

使用場面:

  • 回帰問題

数式:

L=1ni=1nyiy^iL = \frac{1}{n} \sum_{i=1}^{n} |y_i – \hat{y}_i|

特徴:

  • 平均二乗誤差に比べて外れ値に対して寛容

  • モデルの予測が外れ値を含む場合や、ロバストな指標が必要な場合に利用


5. binary_crossentropy(バイナリ交差エントロピー)

使用場面:

  • 2クラス分類(出力が1つのユニットでシグモイド関数を使う)

数式:

L=(ylog(y^)+(1y)log(1y^))L = -\left( y \log(\hat{y}) + (1 – y) \log(1 – \hat{y}) \right)

特徴:

  • 出力層に Sigmoid 活性化関数を使用

  • クラスが「0」または「1」の2値分類に最適


補足: Kerasにおける損失関数の指定方法

python
model.compile( optimizer='adam', loss='categorical_crossentropy', # または 'mse', 'binary_crossentropy' など metrics=['accuracy'] )

まとめ表

損失関数名 主な用途 出力層の活性化関数 ラベル形式
categorical_crossentropy 多クラス分類 Softmax ワンホット
sparse_categorical_crossentropy 多クラス分類 Softmax 整数
binary_crossentropy 2クラス分類 Sigmoid 0 or 1
mean_squared_error 回帰 なし(または線形) 実数値
mean_absolute_error 回帰 なし(または線形) 実数値

必要に応じて、ユーザー定義の損失関数もloss引数に関数として渡すことで使用可能です。

生成日:2025/05/22