【そんしつかんすう】

損失関数 とは?

最終更新:
💡 予測の誤りを、決めた計算方法で数値にする

機械学習で、予測などの結果をどのように評価するかを数式で表す関数。教師あり学習では予測と正解を比較する。関数の選び方で同じ誤差でも損失の値は変わり、学習時に小さくすることと未知のデータで良く働くことは区別する。

📌 このページのポイント
計算方法が違えば、損失も変わる 予測 7.2 正解 10 差の絶対値:2.8 絶対誤差 2.8 二乗誤差 2.8 × 2.8 = 7.84 MSE:各要素の二乗誤差を平均する
この1件なら、絶対誤差は2.8、平均二乗誤差は7.84。異なる計算方法の値をそのまま比べて、モデルの優劣を決めることはできない。
ひよこ ひよこ
損失って、予測と正解の差そのもの?
ペンギン先生 ペンギン先生
計算方法によるよ。予測7.2、正解10なら差の絶対値は2.8。この1件の二乗誤差は2.8の二乗で7.84になる。同じ予測でも、絶対誤差を使うか二乗誤差を使うかで点数が変わるんだ。
ひよこ ひよこ
MSEや交差エントロピーは何を計算する?
ペンギン先生 ペンギン先生
MSEは平均二乗誤差で、各要素の誤差の二乗を平均する。回帰で使う例だよ。分類の交差エントロピーでは、正解クラスに与える確率が小さいほど損失が大きくなる。ただしAPIの入力は確認しよう。PyTorchのCrossEntropyLossは、予測側に確率へ変換する前のlogitsを受け取るんだ。
ひよこ ひよこ
訓練の損失が0なら完璧?
ペンギン先生 ペンギン先生
学習に使ったデータでの値だけでは、未知のデータに対応できるかは分からないよ。0になったことだけで過学習とも断定できない。設定やモデルを選ぶ検証用データと、最後の評価に使うテスト用データを区別し、テスト結果を見ながら繰り返し調整しないようにしよう。
ひよこ ひよこ
クラスによって間違いの扱いを変えられる?
ペンギン先生 ペンギン先生
標準の関数にも調整の仕組みがあるよ。例えばPyTorchのCrossEntropyLossは、クラスごとの係数を指定できる。必要なら独自の式も作れるけれど、まず何を大きく罰したいかを明確にしよう。クラスごとの係数だけで、全ての間違いの組み合わせの費用を自由に表せるわけではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「損失関数」って出てきたら「予測の誤りを、決めた計算方法で数値にする」と思えばだいたいOK!
📖 おまけ:英語の意味
「Loss Function」 = 損失を計算する関数
💬 lossは損失。コスト関数や目的関数と同じ意味で使う資料もあるけれど、データ全体での集計や追加の項まで含める場合もある。式が何を計算しているか確認しよう。

参考資料

← 用語集にもどる