目的関数、コスト関数、損失関数:それらは同じものですか?


回答:


130

これらは非常に厳密な用語ではなく、非常に関連しています。しかしながら:

  • 損失関数は通常、データポイント、予測、ラベルで定義された関数であり、ペナルティを測定します。例えば:
    • 二乗損失、線形回帰で使用l(f(xi|θ),yi)=(f(xi|θ)yi)2
    • SVMで使用されるヒンジ損失l(f(xi|θ),yi)=max(0,1f(xi|θ)yi)
    • 0/1損失、理論解析および精度の定義で使用l(f(xi|θ),yi)=1f(xi|θ)yi
  • 通常、コスト関数はより一般的です。これは、トレーニングセットでの損失関数とモデルの複雑さのペナルティ(正則化)の合計です。例えば:
    • 平均二乗誤差MSE(θ)=1Ni=1N(f(xi|θ)yi)2
    • SVMコスト関数(をおよびトレーニングセットと接続する追加の制約があります)ξ I CSVM(θ)=θ2+Ci=1NξiξiC
  • 目的関数は、トレーニング中に最適化する関数の最も一般的な用語です。たとえば、最尤アプローチでトレーニングセットを生成する確率は明確に定義された目的関数ですが、損失関数でもコスト関数でもありません(ただし、同等のコスト関数を定義できます)。例えば:
    • MLEは目的関数の一種です(最大化する)
    • クラス間の発散は目的関数になる可能性がありますが、1-Divergenceなどの人工的なものを定義してコストと命名しない限り、ほとんどコスト関数ではありません

簡単に言えば、私はそれを言うでしょう:

損失関数、目的関数の一種であるコスト関数の一部です


9
+1。私はこれのソースを見ていませんが、「目的」はその機能を最適化するためのあなたの目標または目的であるため、使用される用語であると推測しました。任意の機能を無効にすることができます。対照的に、「損失」と「コスト」の軽jor的な倍音は噛みつきます:最小化されるものを除いて、どちらかの用語を使用するのは間違っていると思います。これらの点はあなたの良い答えには暗黙的ですが、もう少し強調するに値します。
ニックコックス

1
「MLE」の「M」は、「最小」ではなく「最大」を表します。この質問はstackoverflowのから移行されたので、私はこれだけ知識をひけらかす詳細に言及し、私は前に間違った関数を最小化するのバグにかましてきた
テイラー

実際、目的関数は、損失関数(L1、L2など)の制約下で(通常、最小化または最大化することにより)最適化しようとする関数(線形関数など)です。例は、リッジ回帰またはSVMです。単純なOLSやロジットなど、損失関数なしで目的関数を最適化することもできます。
-g3o2

1
@ニックコックスは、「「損失」と「コスト」の軽over的な倍音は噛み付きます:最小化するものを除いて、どちらかの用語を使用するのは間違っていると思います」最悪の可能性のあるケースを見つけます(どんな制約にも従います)。これは、最悪の場合の分析に役立ちます。
マークL.ストーン

暗記以外に「損失」と「コスト」の違いをまっすぐに保つのは難しいと思います。問題は、単語の英語の定義が、どちらがどれであるべきかについての手がかりを与えないことであり、明白なニーモニックもありません。どんな提案も歓迎します。
スティーブン

8

Andrew Ng教授によると(11ページのスライドを参照)、

関数h(X)は仮説を表します。固定フィッティングパラメータシータの場合、これは機能Xの関数です。これは目的関数とも呼ばれます。

コスト関数Jは、フィッティングパラメーターthetaの関数です。J = J(シータ)。

Hastieらの教科書「統計的学習の要素」によると、p.37による:

「入力Xの値を与えられたYを予測するための関数f(X)を探します。」[...]損失関数L(Y、f(X))は「予測の誤差にペナルティを課す関数」です。

したがって、「損失関数」は「コスト関数」よりも少し一般的な用語のようです。そのPDFで「損失」を探す場合、「コスト関数」と「損失関数」を同義的に使用していると思います。

確かに、p。502

「[クラスタリング]の状況は、予測問題(教師あり学習)での損失またはコスト関数の仕様に多少似ています」。

おそらく、これらの用語は異なる学界で独立して進化したために存在します。「目的関数」は、Operations ResearchおよびEngineering Mathematicsで使用される古い用語です。「損失関数」は統計学者の間でより多く使用されているかもしれません。しかし、私はここで推測しています。


5
損失関数は、コスト関数ほど「一般的」ではありません。f(X)は、特にパラメーターの関数(つまりJ(theta))であり、特定のタイプのコスト関数になります(損失関数)。さらに、Hastieは単純化されており、追加の損失関数を想定しています。これにより、特定のクラスのコスト関数
-lejlot

私はこの質問に、理解しやすい情報源である学術文献からの参照で答えようとしました。「追加の損失関数」のポイントは正しいかもしれませんが、質問の範囲をはるかに超えており、ESLの本でこの特定の用語を見つけることができません
-knb

3
Eslは素晴らしい本ですが、Mlの知識の唯一の源ではありません。
レジュロット

これはNgまたはあなたからの「私は言うだろう」ですか?hはモデルです(仮説の場合はh)。目的は、hがうまく機能することです。目的関数はhがどれだけうまく機能するかを測定し、通常はhとは異なります。
ヨアヒムワーグナー

eslへのリンクが壊れています
Talespin_Kit

4

アンドリューNGの言葉で

「最後に、損失関数は、単一のトレーニング例に関して定義されました。単一のトレーニング例でどれだけうまくいっているかを測定します。次に、コスト関数と呼ばれるものを定義します。パラメータWとBに適用されるコスト関数Jは、各トレーニング例とターンに適用される損失関数の合計のmの1つで平均になります。」


3

「ディープラーニング」のセクション4.3-イアングッドフェロー、ヨシュアベンジョ、アーロンクールビル http://www.deeplearningbook.org/

「最小化または最大化する関数は、目的関数または基準と呼ばれます。最小化する場合、コスト関数、損失関数、またはエラー関数とも呼ばれます。本書では、これらの用語を同じ意味で使用します。一部の機械学習出版物は、これらの用語のいくつかに特別な意味を割り当てています。」

この本では、少なくとも、損失とコストは同じです。


0

あなたに短い答えを与えるために、私によると、彼らは同義です。ただし、最適化問題ではコスト関数がより多く使用され、パラメータ推定では損失関数が使用されます。


0

コスト関数と損失関数という用語は、エラー関数とも呼ばれる同義語です。より一般的なシナリオは、最初に目的関数を定義し、それを最適化することです。この目的関数は

  1. 事後確率を最大化する(例、単純ベイズ)
  2. フィットネス関数を最大化する(遺伝的プログラミング)
  3. 総報酬/価値関数を最大化する(強化学習)
  4. 情報ゲインの最大化/子ノードの不純物の最小化(CART決定木分類)5.平均二乗誤差コスト(または損失)関数の最小化(CART、決定木回帰、線形回帰、適応線形ニューロン、…
  5. 対数尤度を最大化、またはクロスエントロピー損失(またはコスト)関数を最小化ヒンジ損失を最小化(サポートベクターマシン)

0

実際には、このようにm個のトレーニングデータがある場合(x(1)、y(1))、(x(2)、y(2))、。。。(x(m)、y(m))損失関数L(ycap、y)を使用して、単一のトレーニングセットのycapとyの間の損失を見つけます使用するトレーニングセット全体のycapとyの間の損失を見つけたい場合コスト関数。

注:-ycapはモデルからの出力を意味し、yは期待される出力を意味します

注:-クレジットはAndrew ngリソースに行きます:コースラニューラルネットワークとディープラーニング


-1

損失関数は、単一のトレーニング例の誤差を計算しますが、コスト関数は、トレーニングセット全体の損失関数の平均です。


ニックコックスのリンクを見てください。
マイケルチャーニック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.