#06 人工知能入門 DNN基礎

損失関数——「どれだけ間違っているか」を測る

採点が必要な理由

学習とは「良い重みを探すこと」だと第3回で学びました。でも「良い」とはどういう意味でしょうか?

答えは「正解との差が小さい」 ことです。この「正解との差」を数値で表す仕組みが損失関数(Loss Function) です。損失関数が出力する値を損失値(ロス) と呼び、この値を小さくすることが学習の目標になります。


損失関数の役割

予測値 ──┐
          ├──→ [損失関数] ──→ 損失値(数値)
正解値 ──┘                    ↑できるだけ小さくしたい

損失値が大きい = 予測が外れている = 重みを修正する必要がある 損失値が小さい = 予測が当たっている = 重みはほぼ良い状態


平均二乗誤差(MSE)

Mean Squared Error(MSE)は、数値を予測する回帰タスクによく使われます。

MSE = (1/n) × Σ(予測値 - 正解値)²

具体例: 3つのデータで予測した場合

サンプル予測値正解値差の2乗
1100110-10100
29590+525
3200190+10100

MSE = (100 + 25 + 100) / 3 = 75


なぜ差を「2乗」するのか?

理由は2つあります。

① プラスとマイナスを打ち消させないため

差をそのまま足すと、「-10 と +10」が相殺されてゼロになってしまいます。2乗すると必ず正の値になり、大きな誤差が大きく評価されます。

② 大きな誤差をより重く罰するため

差が2倍になると2乗した値は4倍になります。大きなミスを厳しく評価することで、ひどい外れ値への感度が高まります。


クロスエントロピー損失

Cross-Entropy Loss は、分類タスク(犬か猫か、スパムか否か、など)によく使われます。

クロスエントロピー = -Σ(正解 × log(予測確率))

「log(対数)」が入っていて難しそうに見えますが、感覚はシンプルです。


なぜlogを使うのか

logの特徴を見てみましょう:

log(1.0) = 0     (完璧に予測できた → ペナルティ0)
log(0.9) ≈ -0.1  (少し外れた → 小さいペナルティ)
log(0.5) ≈ -0.7  (大きく外れた → 中程度のペナルティ)
log(0.1) ≈ -2.3  (ひどく外れた → 大きいペナルティ)
log(0.01)≈ -4.6  (最悪に外れた → 非常に大きいペナルティ)

予測確率が正解から遠ざかるほど、指数関数的にペナルティが大きくなるのがlogの効果です。「自信満々に間違えた」ときに特に大きく罰せられます。


具体例

猫の画像に対して「猫の確率」を予測した場合:

モデル猫の確率(予測)ロス
A0.9-log(0.9) ≈ 0.10
B0.5-log(0.5) ≈ 0.69
C0.1-log(0.1) ≈ 2.30

モデルAはほぼ正解(ロスが小さい)、モデルCは大きく外れている(ロスが大きい)という直感と一致します。


損失関数の選び方

タスクよく使う損失関数
回帰(数値を予測)平均二乗誤差(MSE)
2クラス分類バイナリクロスエントロピー
多クラス分類カテゴリカルクロスエントロピー
物体検出位置にMSE + 分類にクロスエントロピー

損失関数と学習の関係

損失関数は学習のコンパスです。

重みをランダムに初期化

順伝播で予測値を計算

損失関数で「どれだけ外れたか」を計算

「外れを減らす方向」に重みを修正(次回学習)

繰り返す

この「重みをどの方向に修正するか」を計算するのが次回学ぶ誤差逆伝播です。損失値が学習の「燃料」になります。


まとめ

  • 損失関数は「予測値と正解値のズレ」を1つの数値で表す仕組み
  • MSE(平均二乗誤差)は回帰に使う。差を2乗することで正負の相殺を防ぎ、大きな誤差を重く評価する
  • クロスエントロピーは分類に使う。logにより「確信を持って間違えた」ときに大きく罰せられる
  • 損失値を最小にすることが学習の目標

次回は「損失を下げるために重みをどう修正するか」——誤差逆伝播の仕組みを学びます。