損失関数とは?種類・選び方・MSE/MAEの違いを実務向けに解説

損失関数とは、機械学習モデルの予測と正解のずれを数値で表し、モデルをどの方向に改善するかを決める関数です。学習では、損失関数が返す値をできるだけ小さくするように、モデルのパラメータを更新します。

ただし、損失関数は「小さければ必ず良い」という単純なものではありません。MSE(平均二乗誤差)のように大きな誤差を強く罰する関数もあれば、MAE(平均絶対誤差)のように外れ値の影響を抑えやすい関数もあります。この記事では、損失関数の意味、代表的な種類、評価指標との違い、実務での選び方、データリークや外れ値を含む運用上の注意点を整理します。

損失関数とは予測と正解のずれを数値化する仕組みです

モデルが出した予測値をŷ、実際の正解値をyとすると、損失関数はŷとyの差を入力し、モデルの誤りの大きさを返します。たとえば、商品の需要を100個と予測して実績が80個だった場合、予測誤差は20個です。損失関数は、この誤差をそのまま扱うのか、二乗するのか、分類の確率として評価するのかを定義します。

GoogleのMachine Learning Crash Courseでは、lossを「モデルの予測と実際の値の差を示す数値」と説明し、学習の目的をlossの最小化と整理しています。重要なのは、損失関数が単なる採点方法ではなく、学習アルゴリズムが改善の方向を判断するための信号になる点です。損失の形が変われば、同じデータでも学習されるモデルの傾向が変わります。

損失関数と評価指標は同じとは限りません

損失関数と評価指標は、どちらも予測の品質を数値化しますが、役割が異なります。損失関数は学習中にパラメータを更新するために使われることが多く、微分しやすさや最適化の安定性が重要です。一方、評価指標は、完成したモデルが業務上役に立つかを判断するために使います。

たとえば、売上予測モデルの学習にMSEを使い、完成後の報告ではRMSEや平均絶対誤差を確認することがあります。分類モデルでは、学習時に交差エントロピーを使いながら、導入判断では再現率、適合率、F1スコア、ROC-AUCなどを確認するケースがあります。「lossが下がったから導入してよい」と判断せず、最終的な業務KPIと照合することが大切です。

回帰で使われる代表的な損失関数の種類

回帰は、売上、需要、温度、所要時間、価格のような連続値を予測する問題です。代表的な損失関数は、誤差の大きさをどのように扱うかによって使い分けます。ここでは、実務で比較されることの多いMAE、MSE、RMSE、Huber lossを整理します。

MAE(平均絶対誤差)は平均的なずれを読み取りやすい

MAE(Mean Absolute Error)は、予測と正解の差の絶対値を平均します。式は「誤差の絶対値の合計 ÷ データ数」です。予測が実績より大きいか小さいかではなく、平均してどれくらい外れたかを同じ単位で表せるため、売上予測なら「平均で何円、何個外れたか」と説明しやすい指標です。

MAEは、MSEと比べると大きな誤差を過度に強調しません。入力ミスや一時的な障害による外れ値が含まれ、すべての外れ値をモデルに追従させたくない場合に候補になります。一方で、重大な欠品や安全上の異常のように「大きな誤差を絶対に避けたい」業務では、MAEだけでは重要な失敗を十分に重く扱えない可能性があります。

MSE(平均二乗誤差)は大きな誤差を強く罰します

MSE(Mean Squared Error)は、誤差を二乗してから平均します。誤差が1なら二乗後も1ですが、誤差が2なら4、誤差が10なら100になります。この性質によって、大きく外れた予測がモデルの学習に強く反映されます。Googleの公式資料でも、MSEは外れ値に対するペナルティがMAEより大きいと説明されています。

大きな誤差が業務上重要で、それが入力ミスではなく本当に起きる現象なら、MSEが適することがあります。たとえば、需要を大きく読み違えると欠品や廃棄が発生する場合です。ただし、異常値がデータ登録の誤りであれば、MSEはノイズへ過剰に引っ張られます。損失関数を変える前に、外れ値の原因、再現性、業務上の重要性を調べます。

RMSEは大きな誤差の影響を残しつつ元の単位に戻します

RMSE(Root Mean Squared Error)は、MSEの平方根です。MSEのように大きな誤差を重く扱いながら、最終的には予測対象と同じ単位で表示できます。売上金額なら円、需要なら個数、温度なら度という形で説明しやすいため、モデル比較や社内報告で使われます。

RMSEは外れ値の影響を受けるため、MAEと並べて確認すると判断しやすくなります。RMSEだけが大きい場合、平均的な誤差は小さいものの、一部のケースで非常に大きく外れている可能性があります。平均値だけでなく、最大誤差、分位点、重要顧客や繁忙期における誤差も合わせて確認します。

Huber lossは小さな誤差と大きな誤差の扱いを切り替えます

Huber lossは、誤差が小さい範囲では二乗誤差に近く、一定の境界を超えた大きな誤差では絶対誤差に近い形で扱う損失関数です。MSEほど外れ値に引っ張られず、MAEよりも滑らかに最適化しやすいという考え方で使われます。TensorFlowの`tf.keras.losses`にもHuberが用意されています。

ただし、Huber lossの境界値を無条件に決めればよいわけではありません。誤差の単位、通常時のばらつき、重大な異常の大きさを確認し、学習データのスケールと業務の許容誤差に合わせます。採用した理由と境界値を記録しておくと、モデル更新時の比較がしやすくなります。

分類では正解確率を扱う損失関数を使います

分類は、解約する・しない、画像が不良・良品、問い合わせが経理・人事・営業といったクラスを予測する問題です。分類モデルでは、正解クラスを当てたかだけでなく、正解クラスへどれくらい高い確率を与えたかも学習します。そのため、回帰のMAEやMSEとは異なる損失関数が選ばれます。

交差エントロピーは分類確率の誤りを評価します

二値分類ではBinary Crossentropy、多クラス分類ではCategorical CrossentropyやSparse Categorical Crossentropyが代表的です。直感的には、正解クラスに高い確率を与えた予測は小さな損失になり、誤ったクラスに高い確率を与えた予測は大きな損失になります。TensorFlowでは、ラベルの形式や出力層の設計に応じて対応する損失を選びます。

二値分類で0/1のラベルを使うのか、多クラス分類で整数ラベルを使うのか、one-hot形式のラベルを使うのかによって、選ぶ損失関数が変わります。出力層がsigmoidなのかsoftmaxなのかも合わせて確認します。損失関数とラベル形式が合っていないと、学習が進まない、精度が不自然になる、評価値を解釈できないといった問題につながります。

損失関数は候補を同じ条件で比較して決めます

損失関数の候補が複数ある場合は、データ分割、特徴量、モデル構造、学習回数、乱数シードをそろえ、損失関数だけを変えた比較を行います。学習loss、検証loss、業務用の評価指標を同じ実験表に記録すると、「最適化は安定したが業務指標は改善しなかった」「平均誤差は下がったが重要顧客の大外れが増えた」といった違いを発見できます。

たとえば需要予測では、MAEが小さいモデルとRMSEが小さいモデルが一致しないことがあります。MAEを重視したモデルは多くの商品の平均的な予測をそろえやすい一方、RMSEを重視したモデルは一部の大きな外れを減らす方向へ学習します。欠品の損失が大きいのか、過剰在庫の損失が大きいのかによって、最終的な採用モデルも変わります。数値の優劣だけでなく、予測を使う担当者が結果をどう行動へつなげるかまで確認します。

  • 候補の損失関数を同じ学習条件で比較する。
  • 学習loss・検証loss・業務KPIを別の列で記録する。
  • 平均だけでなく重要な顧客、商品、期間、クラス別の結果を見る。
  • 採用理由、採用しなかった候補、再評価の条件を実験ノートに残す。

この比較表は、モデルを更新するたびに再利用できます。データの期間やラベルの定義が変わったとき、以前のlossと現在のlossを機械的に比べるのではなく、同じ評価条件へ戻って差分を確認できるからです。損失関数の選択は一度決めて終わりではなく、データと業務の変化に合わせて見直す設計事項です。

損失関数の選び方はデータと業務の失敗コストから考えます

損失関数を選ぶときは、ライブラリの既定値をそのまま使うのではなく、予測対象、データの性質、業務で許容できる失敗を順番に確認します。次の3つの質問に答えると、候補を絞り込めます。

  • 予測対象は何か:連続値の回帰か、二値・多クラスの分類か。
  • 外れ値は何を意味するか:記録ミスや一時的なノイズか、それとも再現すべき重要な事象か。
  • どの失敗が高コストか:平均的な誤差を小さくしたいのか、重大な大外れを減らしたいのか。

回帰なら、外れ値の影響を抑えたい場合はMAEやHuber、重大な大外れを重く扱いたい場合はMSEやRMSEを候補にします。分類なら、ラベル数とラベル形式、陽性を取り逃すコスト、誤検知のコストを整理し、損失関数だけでなく閾値や評価指標も一緒に設計します。

損失関数で起きやすい失敗と対策

外れ値を削除してから損失関数を選んでしまう

外れ値があるとMSEの値が大きくなるため、都合の悪い行を削除したくなることがあります。しかし、繁忙期の急増、設備故障、キャンペーンによる需要変化など、実際に再現したい事象が外れ値として現れている場合があります。削除する前に、発生原因、再発可能性、予測対象期間の条件を確認し、除外・別モデル・重み付け・Huberなどの選択肢を比較します。

スケールの違うモデルのlossを直接比較する

売上を円で予測するモデルと、売上を千円単位に変換したモデルでは、MSEの数値のスケールが変わります。目的変数を標準化した場合も、lossの値だけを元の単位のモデルと比較できません。モデルを比較するときは、同じデータ分割、同じ前処理、同じ評価対象、同じ単位で指標を計算し、業務で解釈できる形に戻して確認します。

学習lossだけを見て本番投入を決める

学習データのlossが下がっても、未知データへの汎化性能が高いとは限りません。訓練lossだけが下がり、検証lossが上がっているなら過学習が疑われます。未使用のテストセットで最終評価を行い、業務KPI、重要な顧客・商品・期間別の誤差、導入後にデータが変わる可能性まで確認してから本番利用を決めます。

損失関数を決める前の実務チェックリスト

  • 予測対象が回帰か分類かを定義したか。
  • 正解ラベルの作り方、欠損、重複、入力ミスを確認したか。
  • 外れ値を削除するのか、重要な事象として残すのかを決めたか。
  • 学習時の損失と、報告・導入判断で見る評価指標を分けて定義したか。
  • データ分割、乱数シード、前処理、損失関数、評価指標を実験記録に残したか。
  • 本番で許容できる誤差と、許容できない失敗を業務担当者と合意したか。

損失関数は「誤差をどう扱うか」を決める設計です

損失関数は、モデルの予測と正解の差を学習可能な数値へ変換する仕組みです。MAEは平均的なずれを読み取りやすく、MSE・RMSEは大きな誤差を強く扱い、Huber lossは両者の性質を組み合わせます。分類では、正解クラスへ与えた確率を評価する交差エントロピーが代表的です。

実務では、損失の数値を小さくすることだけを目的にせず、外れ値の意味、失敗コスト、業務KPI、未知データへの汎化性能を一緒に確認します。最初から一つの関数に決め打ちせず、候補を同じ評価条件で比較し、なぜその損失関数を採用したのかを記録することが、再現性のある機械学習運用につながります。

よくある質問(FAQ)

ここでは、損失関数を実務で使うときによくある疑問に、結論から回答します。学習時の設定だけでなく、評価指標や業務上の失敗コストと合わせて確認してください。

Q. 損失関数とは何ですか?

損失関数とは、モデルの予測と正解のずれを数値化し、学習で小さくするための関数です。値が小さいほど予測が正解に近いことを示しますが、どのずれを重く扱うかは関数ごとに異なります。

Q. MSEとMAEはどう使い分けますか?

MSEは大きな誤差を強く罰したいとき、MAEは外れ値の影響を抑え、平均的なずれを分かりやすく扱いたいときに使います。故障や欠品など重大な大外れを減らす必要があるか、通常時の誤差を安定させたいかで候補を比較します。

Q. 損失関数と評価指標は何が違いますか?

損失関数はモデルのパラメータを学習するための最適化に使い、評価指標は完成したモデルを業務上の基準で比較するために使います。学習にはMSEを使いながら、報告ではMAEやRMSE、欠品率などを確認することもあります。

Q. 回帰と分類で損失関数は変わりますか?

変わります。連続値を予測する回帰ではMAE、MSE、Huber lossなど、クラスを予測する分類ではBinary CrossentropyやCategorical Crossentropyなどが代表的です。ラベル形式と出力層(sigmoidやsoftmax)までそろえて選びます。

Q. 外れ値がある場合は削除してから学習すべきですか?

すぐに削除するのではなく、外れ値が入力ミスなのか、繁忙期や故障など再現したい事象なのかを確認します。実際の重要事象なら、MAEやHuber lossを含む候補を比較し、除外した場合と残した場合の業務KPIを記録して判断します。

Q. 学習lossが下がっているのに本番精度が上がらないのはなぜですか?

学習データへの過学習、検証データとの分布差、損失関数と業務KPIの不一致などが考えられます。学習lossだけでなく検証loss、未使用のテストセット、重要な顧客や期間ごとの評価を確認し、必要なら損失関数と評価指標の組み合わせを見直します。

参考資料

会社紹介

株式会社riplaでは、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを、構想策定・要件定義から開発・改善まで一気通貫で支援。事業会社でIT・DXを経験したプロフェッショナルによる高い要件定義力・システム設計力を活かし、事業成果の最大化に伴走します。

また、当社独自の開発テンプレート「Boxシリーズ」による標準機能の高速開発と、AI駆動開発の独自フレームワーク「GoDD」による独自機能のAI実装を組み合わせることで、低コスト・短期間で開発を実現いたします。

もし、システム開発やプロダクト開発に関するご要望がございましたら、お気軽にお問い合わせください。

・サービス概要資料のURLはこちら >>>
・お問合せページのURLはこちら >>>
・お役立ち資料のURLはこちら >>>

執筆者プロフィール
張田谷凌央
張田谷凌央

株式会社ripla 代表取締役CEOとして、システムパッケージ活用、システム開発、データ分析、生成AI活用、SaaS開発、アプリ開発、EC構築など、幅広い領域で企業のDX推進と事業成長を支援している。事業会社でIT・DXを経験したプロフェッショナルが集う株式会社riplaにおいて、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを構想策定・要件定義から開発・改善まで一気通貫で支援し、単なるシステム納品にとどまらず、クライアントと同じ目線で事業成果の最大化に向けた伴走支援を行う。早稲田大学卒業後、ラクスル株式会社、LINEヤフー株式会社にて事業開発やDX推進などに従事した後、株式会社riplaを創業。