「損失関数にはどんな種類があるのか?」「自分のタスクにはどの損失関数を使えばいいのか?」——機械学習を実践する多くの方が抱える疑問に、本記事は包括的に答えていきます。
回帰・分類・MSE・交差エントロピー・MAE——損失関数には多様な種類があり、それぞれの特徴と適切な使い場面を理解することが重要です。
本記事では、主要な損失関数を回帰・分類・その他のタスク別に整理した一覧を作成し、それぞれの数学的な定義・特徴・使いどころ・選び方まで詳しく解説していきます。
機械学習の実践において、損失関数の選択を根拠を持って行えるようになりたい方にとって、実用的な指針となる内容です。
損失関数の全体像——タスク別の分類と代表的な種類
それではまず、損失関数の全体像とタスク別の分類について解説していきます。
損失関数は大きく「回帰タスク用」「分類タスク用」「その他特殊タスク用」の3カテゴリに分類できます。
損失関数の全体分類マップ
| タスクカテゴリ | 代表的な損失関数 | 主な用途 |
|---|---|---|
| 回帰(連続値予測) | MSE・MAE・RMSE・Huber損失・Log-Cosh損失 | 価格予測・需要予測・回帰分析 |
| 二値分類(0/1) | 二値交差エントロピー・ヒンジ損失 | スパム判定・疾患有無・感情分類 |
| 多クラス分類 | カテゴリカル交差エントロピー・スパース交差エントロピー | 画像分類・文書分類 |
| 物体検出・セグメンテーション | Focal Loss・Dice Loss・IoU Loss | 医療画像・自動運転・物体認識 |
| 生成モデル | GAN損失・VAE損失(KL Divergence+BCE) | 画像生成・テキスト生成 |
| ランキング・推薦 | Triplet Loss・Contrastive Loss・BPR Loss | 情報検索・推薦システム |
損失関数の選択は「タスクの種類→データの特性→評価指標との整合性」という順で検討するのが適切なアプローチといえます。
損失関数選択の基本的な考え方
損失関数を選ぶ際の基本的な考え方を整理しておきましょう。
第一に、タスクの出力の性質(連続値か離散クラスか)によって大カテゴリが決まります。
第二に、データの特性(外れ値の多さ・クラス不均衡の程度)によって同じカテゴリ内での選択が変わります。
第三に、実現したい評価指標(何を最大化・最小化したいか)との整合性が重要な判断基準となります。
回帰タスクの損失関数一覧——MSE・MAE・Huber損失を詳しく解説
続いては、回帰タスクで使用する主要な損失関数について確認していきます。
回帰タスクでは予測値と正解値の「差」をどのように評価するかが損失関数設計の核心です。
MSE(平均二乗誤差)——最も標準的な回帰損失関数
MSE(Mean Squared Error・平均二乗誤差)は、予測値と正解値の差の二乗の平均を損失とする最も基本的な回帰損失関数です。
MSEの定義と特徴
MSE = (1/n) × Σ(予測値ᵢ − 正解値ᵢ)²
特徴:
・誤差を二乗するため大きな誤差に大きなペナルティを与える
・微分が容易で勾配降下法との相性が良い
・常に非負の値を返す(最小値は0:完全予測)
・外れ値の影響を受けやすい(外れ値の誤差が二乗されて増幅される)
適している場面:外れ値が少なく大きな誤差を重視したい回帰タスク
MSEは数学的に扱いやすく最もよく使われる回帰損失関数だが、外れ値が多いデータでは外れ値の影響が過大になるため注意が必要です。
MAE(平均絶対誤差)——外れ値に頑健な回帰損失関数
MAE(Mean Absolute Error・平均絶対誤差)は、予測値と正解値の差の絶対値の平均を損失とする関数です。
MAEの定義と特徴
MAE = (1/n) × Σ|予測値ᵢ − 正解値ᵢ|
特徴:
・誤差の絶対値を使うため外れ値の影響がMSEより小さい(外れ値に頑健)
・誤差が0の点で微分不可能(サブグラジェントを使う)
・損失の単位が元のデータと同じ(解釈しやすい)
・すべての誤差に対して均等なペナルティを与える
適している場面:外れ値が多いデータ・外れ値に引きずられたくない場合
Huber損失——MSEとMAEのハイブリッド
Huber損失は、誤差が小さい場合はMSEのように二乗誤差を使い、誤差が大きい場合はMAEのように絶対誤差を使うハイブリッドな損失関数です。
Huber損失の定義と特徴
Huber損失 =
|誤差| ≦ δ のとき:(1/2) × 誤差²
|誤差| > δ のとき:δ × |誤差| − (1/2) × δ²
(δ:切り替えのしきい値、ハイパーパラメータ)
特徴:
・小誤差域ではMSEの滑らかな微分を活用
・大誤差域ではMAEの外れ値頑健性を活用
・δの調整で外れ値への感度を制御できる
適している場面:外れ値があるが完全に無視したくない場合
Huber損失はMSEとMAEの長所を組み合わせており、外れ値の影響を受けながらも完全に無視しないバランスの取れた回帰損失関数として多くの場面で有効です。
回帰損失関数の比較まとめ
| 損失関数 | 外れ値への感度 | 微分可能性 | 推奨される場面 |
|---|---|---|---|
| MSE | 高い(外れ値に弱い) | 全域で微分可能 | 外れ値が少ない標準的な回帰 |
| MAE | 低い(外れ値に強い) | 誤差0で不可 | 外れ値が多い回帰・中央値予測 |
| RMSE | 高い | 全域で微分可能 | 元の単位で誤差評価したい場合 |
| Huber損失 | 中程度(δで調整) | 全域で微分可能 | 外れ値が一部あるデータ |
| Log-Cosh損失 | 中程度 | 全域で微分可能・滑らか | Huberより滑らかな近似が欲しい場合 |
分類タスクの損失関数一覧——交差エントロピーを中心に解説
続いては、分類タスクで使用する主要な損失関数について確認していきます。
分類タスクでは、モデルの出力(確率分布)と正解ラベル(真の分布)の差を測る損失関数が必要です。
二値交差エントロピー損失——2クラス分類の標準損失関数
二値交差エントロピー損失(Binary Cross-Entropy Loss・BCE)は、2クラス分類(正例/負例・0/1)において最もよく使われる損失関数です。
二値交差エントロピー損失の定義と特徴
BCE = −(1/n) × Σ[yᵢ×log(ŷᵢ) + (1−yᵢ)×log(1−ŷᵢ)]
yᵢ:正解ラベル(0または1)、ŷᵢ:モデルの予測確率(0〜1)
特徴:
・シグモイド関数の出力(確率)に対して使用する
・予測確率が正解ラベルと遠い場合に大きなペナルティを与える
・log関数を使うため予測確率が0や1に近いときの誤差を強く評価
適している場面:スパム判定・疾患有無・二値感情分類など2クラス問題
カテゴリカル交差エントロピー損失——多クラス分類の標準損失関数
カテゴリカル交差エントロピー損失(Categorical Cross-Entropy Loss)は、3クラス以上の多クラス分類タスクで最もよく使われる損失関数です。
モデルの最終層にSoftmax関数を使って各クラスへの確率を計算し、その確率分布と正解ラベルのOne-Hotベクトルとの差をクロスエントロピーで評価します。
多クラス分類タスクではカテゴリカル交差エントロピー損失+Softmax活性化関数の組み合わせが最も標準的な実装パターンとして広く採用されています。
Focal Loss——クラス不均衡問題への対応
Focal Lossは、Facebook AI Research(FAIR)が2017年に提案した損失関数で、クラス不均衡が著しいタスク(特に物体検出)向けに設計されています。
通常の交差エントロピー損失では「簡単なサンプル(背景など)」の損失が大量に蓄積されて「難しいサンプル(物体)」の学習を支配してしまう問題があります。
Focal Lossでは、正しく分類できているサンプル(簡単なサンプル)の損失に小さい重みを付けて抑制し、誤分類しやすい難しいサンプルの学習に集中できるようにします。
分類損失関数の選択ガイド
| 状況 | 推奨損失関数 | 理由 |
|---|---|---|
| 2クラス分類(均衡データ) | 二値交差エントロピー | 2クラス問題の標準・実装が簡単 |
| 多クラス分類(均衡データ) | カテゴリカル交差エントロピー | 多クラス問題の標準・Softmaxと相性良 |
| クラス不均衡が著しい | Focal Loss・重み付き交差エントロピー | 少数クラスへの集中学習が可能 |
| SVMスタイルの分類 | ヒンジ損失 | マージン最大化による分類境界の明確化 |
| セグメンテーション | Dice Loss・BCE+Dice | ピクセル単位のIoU最適化 |
特殊タスク向けの損失関数——生成モデル・ランキング・セグメンテーション
続いては、特殊なタスクに特化した損失関数について確認していきます。
深層学習の応用範囲が広がるにつれ、標準的な損失関数では対応できない特殊タスク向けの損失関数が数多く開発されてきました。
生成モデルの損失関数——GANとVAEの場合
GAN(敵対的生成ネットワーク)では、生成器と識別器がそれぞれ異なる損失関数で学習します。
識別器は「本物か偽物かを正確に判定する」という損失を最小化し、生成器は「識別器を騙せる品質の高い出力を生成する」という損失を最小化するという、互いに競合する最適化が行われます。
VAE(変分オートエンコーダ)では、「再構成誤差(出力と入力の差)」と「KLダイバージェンス(潜在分布の正規分布からのズレ)」を合算した損失関数が使われます。
Triplet Loss——類似度学習のための損失関数
Triplet Lossは、「アンカー・ポジティブ(同クラス)・ネガティブ(異クラス)」の3つのサンプルを使い、アンカーとポジティブの距離を近づけ、アンカーとネガティブの距離を遠ざける学習を行う損失関数です。
顔認識・画像類似度検索・異常検知など、クラスラベルではなく「似ているか似ていないか」を学習する問題に広く活用されています。
Triplet Lossはサンプルの「ペア」ではなく「トリプレット」を使うことで、埋め込み空間内での距離関係を直接最適化できる強力な類似度学習の損失関数です。
Dice Loss——医療画像セグメンテーションの定番損失関数
Dice Lossは、予測マスクと正解マスクのDice係数(重なり具合)を最大化する方向で学習する損失関数です。
医療画像のセグメンテーション(病変領域の抽出など)では対象領域(前景)が画像全体に占める割合が非常に小さいクラス不均衡があり、通常の交差エントロピー損失では前景の精度が上がりにくいという問題があります。
Dice Lossは前景と背景の面積に関わらず重なりの精度を直接評価するため、このようなクラス不均衡なセグメンテーションタスクに非常に効果的です。
損失関数一覧——選択の判断基準まとめ
【回帰タスク】
・外れ値が少ない:MSE(平均二乗誤差)が標準的選択
・外れ値が多い:MAEまたはHuber損失を選択
【分類タスク】
・2クラス分類:二値交差エントロピー損失
・多クラス分類:カテゴリカル交差エントロピー損失
・クラス不均衡:Focal Loss・重み付き交差エントロピー
【特殊タスク】
・セグメンテーション:Dice Loss・IoU Loss
・類似度学習:Triplet Loss・Contrastive Loss
・生成モデル:GAN損失・VAE損失(KLダイバージェンス)
まとめ
本記事では、主要な損失関数をタスク別(回帰・分類・特殊タスク)に整理した一覧を作成し、MSE・MAE・Huber損失・交差エントロピー・Focal Loss・Dice Loss・Triplet Lossなどの定義・特徴・使いどころまで詳しく解説してきました。
損失関数の選択はタスクの種類・データの特性・クラス不均衡の有無・評価指標との整合性という観点から根拠を持って行うことが、機械学習モデルの性能を最大化する重要な設計判断です。
「とりあえずMSEや交差エントロピー」という選択から一歩進んで、各損失関数の数学的特性とタスクの特性を照らし合わせた上での選択ができるようになることが、機械学習エンジニアとしてのスキルアップにつながります。
本記事の損失関数一覧と選択ガイドを参考に、実際のプロジェクトでの損失関数選択に役立てていただければ幸いです。