機械学習者が知っておくべき5つの損失関数!

要約:私はこれらの5つの損失関数を知らないのですか? 機械学習のサークルでどのようにミックスしますか?

機械学習では、すべての機械学習アルゴリズムが、目的関数を最大化または最小化するプロセスに多かれ少なかれ依存していますが、主に機械学習モデルを測定するために使用される損失関数として最小化関数を参照します。予測能力。 最小値を見つける過程で、最も一般的な方法は勾配降下法です。

損失関数はモデルの長所と短所を見て最適化の方向性を与えますが、すべてのモデルで損失関数が利用できないことを知る必要があります。 損失関数の選択は、パラメータの数、異常値、機械学習アルゴリズム、勾配降下の効率、派生物を得ることの困難さ、および予測の信頼度に依存する。 この記事ではさまざまな損失関数を紹介し、各損失関数の長所と短所を理解するのに役立ちます。

機械学習のタスクが異なるため、損失関数は分類と回帰の2つのカテゴリに分類されます。回帰は数値結果を予測し、分類はラベルを与えます。 この記事では、回帰喪失関数の分析に焦点を当てています。 この記事のすべてのコードと画像はこの場所にあります!

回帰関数予測量、分類関数予測ラベル

回帰ロス関数

1.平均二乗誤差、二乗損失 – L2損失:

回帰損失関数で最も一般的に使用される誤差は、MSE(Mean Square Error)で、予測値と目標値の差の平方和です。

下の図は、二乗平均平方誤差値の曲線分布です。最小値は、予測値が目標値となる位置です。 誤差関数が増加するにつれて、損失関数がより急速に増加することがわかります。

MSE損失(Y軸)対予測(X軸)

2.平均絶対誤差 – L1損失関数:

平均絶対誤差(MAE)は、目標値と予測値の差の絶対値の合計であり、誤差の方向を考慮せずに予測値の平均誤差の大きさを表す、一般的に使用される別の回帰損失関数です(注:Average偏差誤差MBEは、残差の和である考慮する方向の誤差であり、範囲は0〜∞であり、その式は次のとおりです。

MAE損失(Y軸)対予測(X軸)

平均絶対誤差と平均二乗誤差(L1&L2)の比較:

一般に、平均二乗誤差で解く方が簡単ですが、二乗絶対誤差は外れ値より頑健です.2つの損失関数の詳細な分析をしましょう。

機械学習モデルにかかわらず、目的は目的関数を最小にする点を見つけることです。 各損失関数は、最小値を最小にします。 しかし、どちらが良い指標ですか? 上記のラップトップアドレスで自分でコードを実行して、メトリックを確認することができます。

次の図は、二乗平均平方根誤差と平均絶対誤差との比較です(二乗平均平方誤差は、平均絶対誤差で均一になるように意図されています)。

左グラフの予測値は目標値に非常に近く、誤差と分散は非常に小さいが、外れ値の存在により右のグラフの誤差は大きい。

平均二乗誤差(MSE)は、誤差が大きいときの平均絶対誤差(MAE)よりもはるかに大きいので、異常値に大きな重みを与え、モデルは異常値に起因する誤差を減らそうとします。全体のパフォーマンスは低下しました。

したがって、訓練データがより多くの異常値を含む場合、平均絶対誤差(MAE)がより有効である。 すべての観測値を処理すると、MSEで最適化すればすべての観測値の平均値、MAEではすべての観測値の中央値が得られます。 中央値は平均よりも異常値に対して頑健であり、平均絶対誤差は平均二乗誤差よりも異常値に対してより堅牢であることを意味する。

しかし、MAEにも問題がありますが、特にニューラルネットワークの場合、その勾配は極端な点で大きくジャンプしますが、小さな損失値でも大きな誤差が生じ、学習には役立ちません。プロセス。 この問題を解決するためには、極限点を解く過程で学習率を動的に下げる必要がある。 MSEは極端な点で良好な特性を有し、固定学習率で適時に収束することができる。 MSEの勾配は、損失関数が減少するにつれて減少し、最終的な訓練プロセス中により正確な結果を得ることができる(下図参照)。


実際のトレーニングプロセスでは、外れ値が実際のビジネスにとって重要である場合はMSEがより良い選択肢になり、外れ値が最も悪い可能性が高い場合はMAEがより良い結果をもたらします。

要約:L1損失は外れ値に対してより堅牢ですが、その導関数不連続は最適解を非効率的に見つけるプロセスを作ります; L2損失は外れ値に敏感ですが、最適化プロセスではより安定して正確です。 L1とL2のより詳細な比較は、この記事で見つけることができます。

しかし、実際には対処が困難な2つの問題が残っています。 たとえば、タスクのデータの90%は-150の目標値を満たし、残りの10%は0〜30の間にあります。 次に、MAE最適化モデルは予測値150を取得し、残りの10%(中央値になる傾向がある)を無視しますが、MSEの場合、異常値は大きな損失を引き起こし、モデルが0〜30の値が値です。 これらの2つの結果は、実際のビジネスシナリオで見たいものではありません。

3.Huber損失 – 滑らかな平均絶対誤差

フーバー損失は、二乗損失と比較して外れ値に影響されませんが、差別化可能な特性も維持されます。 これは絶対誤差に基づいていますが、誤差が小さい場合には二乗誤差になります。 超過パラメータδを使用して、このエラーのしきい値を調整することができます。 δが0になるとMAEに縮退し、δが無限になると縮退してMSEとなり、その表現は以下の通りであり、連続的で微分可能な区分的関数である。

ヒューバー損失については、δの選択が重要であり、外れ値を扱うモデルの挙動を決定する。 残差がδより大きい場合はL1損失が使用され、小さい場合は最適化のためにより適切なL2損失が使用されます。

ヒューバー損失関数は、MAEおよびMSEの欠点を克服し、連続微分で損失関数を維持できるだけでなく、誤差を低減したMSE勾配を使用して、外れ値に対してより正確かつ最小限の堅牢性を得ることができます。セックス

ヒューバー損失関数の良好な性能は、十分に訓練された超パラメータδに起因する。

4.Log-Cosh損失関数

Log-Cosh損失関数は、双曲線余弦を使用して予測誤差を計算するL2よりも滑らかな損失関数です。

log(cosh(x))は非常に小さい誤差に対しては(x ** 2)/ 2に非常によく似ており、大きな誤差に対してはabs(x)-log2に非常に似ているという利点があります。 これは、ログコッシュ損失関数が異常値の影響をあまり受けずにMSEの利点を持つことができることを意味します。 それはフーバーのすべての利点を持ち、あらゆる点で第二導電性である。 2次ガイダンスは、ニュートン法を用いたXGBoost最適化モデル(ヘッセ行列)など、多くの機械学習モデルで必要です。

XgBoostで使用される目的関数は、第1および第2の導関数への依存に注意を払う

しかし、Log-coshの損失は完全ではありません。大きな誤差の場合でも一定の勾配とヘッセ行列になります。

HuberおよびLog-cosh損失関数のPythonコード:

5.数量損失

現実世界の予測問題では、多くの場合、予測の不確実性を見たいと思っています。 特定の価値ポイントではなく値の間隔を予測することによって、特定のビジネスプロセスにおける意思決定に不可欠です。

分位損失関数は、結果の範囲を予測する必要があるときに特に有用なツールです。 通常、最小二乗回帰を使用して、主に残差の分散が一定であるという仮定に基づいて値の間隔を予測します。 しかし、多くの場合、線形モデルでは満足できるものではありません。 現時点では、回帰モデルを保存するには、分位損失関数と分位回帰が必要です。 これは予測された間隔に非常に敏感であり、不均一に分散した残差の下でも良好な性能を維持する。 ヘテロ分散データの下での分位損失の回帰性能を見るために2つの例を見てみましょう。

左:線形関係b / w X1とYは一定の残差分散を持つ。 右:線形関係b / w X2とYですが、Yの分散はX2とともに増加します。

上の図は、2つの異なるデータ分布を示しています。左のグラフは残差の分散が一定の場合で、右のグラフは残差の分散が変化する場合です。 上記の2つのケースは通常の最小二乗法を使用して推定します。オレンジ色の線はモデリングの結果です。 しかし、我々は価値の範囲を得ることができないし、提供する分位損失関数が必要である。

上図では、上下二点の点線は、0.05と0.95の分位損失で得られた値の間隔に基づいています。この図から、モデル化された予測の予測値の範囲がはっきりと分かります。

分位損失関数の理解

quantile regressionの目的は、与えられたプレディクタの条件分位を推定することです。 実際、分位回帰は平均絶対誤差の延長である。 分位点は、正または負の誤差をより大きくするかどうかを選択する価値があります。 損失関数は、分位数γに基づいて、オーバーフィットおよびアンダーフィッティングに異なるペナルティを課します。 たとえば、γの値を0.25に設定すると、過剰フィットが不利になり、予測値を中央値よりわずかに小さく保ちます。

γの値は通常0〜1であり、異なる分位数の損失関数が図に記載されています。正と負の誤差の不均衡の状態が分かります。

分位損失(Y軸)対予測(X軸)のプロット。

分位損失関数を使用して、ニューラルネットワークまたはツリーモデルの間隔を計算することができます。 次の図は、勾配リフトツリー回帰に基づいて値の範囲を計算しています。

分位損失を用いた予測間隔(勾配ブースト回帰)

予測値の90%の上限及び下限は、それぞれ0.95及び0.05のγ値を用いて計算される。

比較研究:

この記事の最後では、sinc(x)シミュレーションデータを使用して、さまざまな損失関数のパフォーマンスを比較しました。 元のデータに基づいてガウスノイズとインパルスノイズが追加されます(ロバスト性を説明するため)。 下の図は、さまざまな損失関数を使用するGBM回帰の結果です。ここで、ABCDプロットは、MSE、MAE、Huber、Quantile損失関数の結果です。

雑音の多いsinc(x)データに平滑化されたGBMをフィッティングする例:(E)元のsinc(x)関数、(F)MSEおよびMAE損失を伴う平滑化GBM、(G)Huber損失、δ= {4,2,1};(H)平滑なGBMは、α= {0.5,0.1,0.9}の分位損失と一致する。

MSEはある偏差を有するが、MAE損失関数の予測値は衝突ノイズの影響を受けにくく、Huber損失関数は超過パラメータの選択に敏感ではなく、対応する信頼区間で分位損失が与えられることがわかる。結果の良い見積もり。

私は友人がこの記事のより深いところで損失関数を理解し、より良い、そしてより速くタスクを完了するために将来の仕事で適切な機能を選ぶことを願っています。

この図のいくつかの損失関数の結果を1つのグラフに入れます。

著者:[方向]
オリジナルを読む
この記事はYunqi Communityのオリジナルコンテンツであり、許可なく複製することはできません。

元のリンク