機械学習でよく使われる損失関数についてどれくらい知っていますか?

機械学習でよく使われる損失関数についてどれくらい知っていますか?

機械は損失関数を通じて学習します。これは、特定のアルゴリズムが与えられたデータをどれだけ適切にモデル化できるかを評価する方法です。予測値が実際の結果から大きく外れると、損失関数は非常に大きな値になります。いくつかの最適化関数の助けを借りて、損失関数は徐々に予測値の誤差を減らすことを学習します。この記事では、いくつかの損失関数と、機械学習および深層学習におけるその応用について紹介します。

[[243642]]

損失関数と最適化

すべての機械学習アルゴリズムに適した単一の損失関数は存在しません。特定の問題に対する損失関数の選択には、選択した機械学習アルゴリズムの種類、導関数の計算の容易さ、データセット内の外れ値の割合など、多くの要因が関係します。

学習タスクの種類に基づいて、損失関数は回帰損失と分類損失の 2 つのカテゴリに大まかに分類できます。分類タスクでは、手書きの数字画像の大規模なデータセットを 0 から 9 のいずれかに分類するなど、カテゴリ値の数が限られているデータセットから出力を予測する必要があります。回帰問題は、家の面積、部屋数、部屋の大きさから家の価格を予測するなど、連続値の予測を扱います。

  1. 注記
  2. n – トレーニング例の数。
  3. i - データ セット内の i 番目のトレーニング例。
  4. y(i) – i番目のトレーニング例のグラウンドトゥルースラベル。
  5. y_hat(i) – i番目のトレーニング例の予測。

回帰損失

1. 平均二乗誤差/二乗損失/L2損失

数式:

平均二乗誤差

名前が示すように、平均二乗誤差 (MSE) は、予測値と実際の観測値の差の二乗の平均を測定します。エラーの平均サイズのみを考慮し、方向は考慮しません。ただし、二乗により、真の値からの偏差が大きい予測値は、偏差が小さい予測値よりも重いペナルティを受けることになります。さらに、MSE の数学的特性は優れているため、勾配の計算が容易になります。

  1. numpyをnpとしてインポートする
  2. y_hat = np .array([0.000, 0.166, 0.333])
  3. y_true = np .array([0.000, 0.254, 0.998])
  4. def rmse(予測値、ターゲット):
  5. 差異=予測- 目標
  6. 差異 差異の二乗= 差異 ** 2
  7. 差の二乗の平均= 差の二乗.mean()
  8. rmse_val = np .sqrt(差の二乗平均)
  9. rmse_valを返す
  10. print("d は: " + str(["%.8f" % elem for elem in y_hat]))
  11. print("p は: " + str(["%.8f" % elem for elem in y_true]))
  12. rmse rmse_val = rmse(y_hat, y_true)
  13. print("rmsエラーは: " + str(rmse_val))

2. 平均絶対誤差/L1損失

数式:

平均絶対誤差

平均絶対誤差 (MAE) は、予測値と実際の観測値の間の絶対差の合計の平均を測定します。 MSE と同様に、このメトリックは方向を考慮せずにエラーの大きさを測定します。しかし、MSE とは異なり、MAE では勾配を計算するために線形計画法などのより複雑なツールが必要です。さらに、MAE は二乗を使用しないため、外れ値に対してより堅牢です。

  1. numpyをnpとしてインポートする
  2. y_hat = np .array([0.000, 0.166, 0.333])
  3. y_true = np .array([0.000, 0.254, 0.998])
  4.  
  5. print("d は: " + str(["%.8f" % elem for elem in y_hat]))
  6. print("p は: " + str(["%.8f" % elem for elem in y_true]))
  7.  
  8. def mae(予測値、ターゲット):
  9. 差異=予測- 目標
  10. absolute_differences = np.absolute (差異)
  11. 平均絶対差= 絶対差.平均()
  12. 平均絶対差を返す
  13. mae mae_val = mae(y_hat, y_true)
  14. print ("mae エラーは: " + str(mae_val))

3. 平均バイアス誤差

他の損失関数と比較すると、この関数は機械学習の分野ではあまり一般的ではありません。これは MAE に似ていますが、唯一の違いはこの関数では絶対値を使用しないことです。この関数を使用する際に注意すべき点は、正の誤差と負の誤差が互いに打ち消し合う可能性があることです。実際のアプリケーションではそれほど正確ではありませんが、モデルに正のバイアスがあるか負のバイアスがあるかを判断できます。

数式:

平均偏差誤差

2. 分類の損失

1. ヒンジ損失/マルチ分類SVM損失

つまり、一定の安全間隔(通常は 1)内で、正しいクラスのスコアは、すべての誤ったクラスのスコアの合計よりも高くなる必要があります。そのため、最大マージン分類ではヒンジ損失がよく使用され、最も一般的に使用されるのはサポートベクターマシンです。微分可能ではありませんが、凸関数であるため、機械学習でよく使用される凸最適化器が簡単に使用できます。

数式:

ヒンジ損失

次の例を考えてみましょう。3 つのトレーニング例があり、3 つのカテゴリ (犬、猫、馬) を予測したいと考えています。アルゴリズムが予測する各カテゴリの値は次のとおりです。

ヒンジ損失/マルチ分類SVM損失

次の 3 つのトレーニング サンプルのヒンジ損失を計算します。

  1. ## 最初のトレーニング例
  2. 最大(0, (1.49) - (-0.39) + 1) + 最大(0, (4.21) - (-0.39) + 1)
  3. 最大値(0, 2.88) + 最大値(0, 5.6)
  4. 2.88 + 5.6
  5. 8.48 (非常に間違った予測による大きな損失)
  6. ## 2番目のトレーニング例
  7. 最大(0, (-4.61) - (3.28) + 1) + 最大(0, (1.46) - (3.28) + 1)
  8. 最大値(0, -6.89) + 最大値(0, -0.82)
  9. 0 + 0
  10. 0(正しい予測として損失ゼロ)
  11. ## 3番目のトレーニング例
  12. 最大(0, (1.03) - (-2.27) + 1) + 最大(0, (-2.37) - (-2.27) + 1)
  13. 最大(0, 4.3) + 最大(0, 0.9)
  14. 4.3 + 0.9
  15. 5.2 (非常に間違った予測による高い損失)

交差エントロピー損失/負の対数尤度:

これは分類問題で最も一般的な設定です。予測された確率が実際のラベルから逸脱するにつれて、クロスエントロピー損失は徐々に増加します。

数式:

クロスエントロピー損失

実際のラベルが 1 (y(i)=1) の場合、関数の後半部分は消えますが、実際のラベルが 0 (y(i=0)) の場合、関数の前半部分は消えることに注意してください。つまり、真の値クラスの実際の予測確率の対数を掛け算するだけです。また、クロスエントロピー損失により、信頼性は高いが間違っている予測に大きなペナルティが課されることにも注意することが重要です。

  1. numpyをnpとしてインポートする
  2. 予測= np .array([[0.25,0.25,0.25,0.25],
  3. [0.01,0.01,0.01,0.96]])
  4. ターゲット= np.array ([[0,0,0,1],
  5. [0,0,0,1]])
  6. def cross_entropy(予測、ターゲット、イプシロン= 1e -10):
  7. 予測= np .clip(予測、イプシロン、1. - イプシロン)
  8. N =予測形状[0]
  9. ce_loss = -np.sum(np.sum(ターゲット * np.log(予測 + 1e-5)))/N
  10. ce_lossを返す
  11. クロスエントロピークロスエントロピー損失= クロスエントロピー(予測、ターゲット)
  12. print ("クロスエントロピー損失は: " + str(cross_entropy_loss))

[この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id: Almosthuman2014)」からのオリジナル記事です]

この著者の他の記事を読むにはここをクリックしてください

<<:  人工知能とビッグデータを開発する際に留意すべき12のこと

>>:  ディープラーニングとニューラルネットワーク: 注目すべき 6 つのトレンド

ブログ    

推薦する

AI教育を普及させるために「幼少期から始める」という考え方は、学校、親、社会にますます受け入れられつつあります。

[[254737]]小中学生の91.7%が、AI関連のコンテンツについて学ぶことに多少なりとも非常...

AIの中心的な難しさの1つ:感情分析の一般的な種類と課題

感情分析または感情 AI は、商用アプリケーションでは意見マイニングと呼ばれることが多く、自然言語処...

...

10の古典的なソートアルゴリズム

[[432257]]ソースコードはこちら GitHub: https://github.com/na...

合成データとAIの「非現実的な」世界を探る

最近、アクセンチュアは「メタバースで出会う:テクノロジーとエクスペリエンスの連続体のビジネスを再構築...

ロボット工学が環境に優しい建物にどのように役立つか

建設業界は、他の多くの業界と同様に、より環境に優しくなる瀬戸際にあります。環境に優しいプロジェクトに...

我が国のドローン産業の発展の現状と課題の分析

[[422841]]ドローンは我が国の現在の戦略的新興産業の一つであり、近年、技術、製品、アプリケー...

業界の資金調達が活発化しています!自動運転技術は物流分野で初めて導入される可能性

2019年、自動運転分野は谷間に向かうかに見えましたが、わずか数か月で業界は徐々に再び熱を帯び始め、...

2020年におすすめの優れた人工知能システム

優れた AI システムは、企業に大きな競争上の優位性をもたらすことができます。理論的には、AI と機...

AIベースのクラウド管理ツールではコンテキストが重要

AI を活用したクラウド管理ツールはまだ導入の初期段階にありますが、IT 業界の専門家は、このような...

...

Googleは、自社のBardを含むチャットボットの使用には注意するよう従業員に警告している。

ロイター通信は6月19日、事情に詳しい4人の関係者の話として、グーグルの親会社アルファベットはチャッ...

物流と輸送における人工知能の将来的な役割

大手物流組織はすでに配送に人工知能 (AI) を活用しています。現在、多くの企業がこのデータを収集し...

AI+サイエンス: PaddlePaddle をベースにした AlphaFold2 でタンパク質構造予測を実現

1958 年、FHC クリックは、生物学における重要なセントラルドグマである DNA -> R...

...