😽

【初心者】機械学習では〇〇関数がたくさんありすぎる【Python】

2021/08/25に公開

損失関数、評価関数、誤差関数、コスト関数、目的関数

機械学習を勉強していると、「なんとか関数」って単語がよく出てきます。
損失関数、評価関数、誤差関数、コスト関数、目的関数、、、

「なにがなんだか分かりません」
そんな方のために、機械学習で使われる〇〇関数の意味と使い分けをまとめました。

ニューラルネットワークの基本を知りたいかたは、こちら ↓ も併せてご覧ください。
https://zenn.dev/nekoallergy/books/904df952389317


Created by NekoAllergy

結論(忙しい人のための要約)

機械学習で使う〇〇関数は 5 つあります。

1. 損失関数(Loss function)

学習 STEP で、モデルが出した【予測値】と、実際の【正解値】がどれくらいズレているのかを計算するための関数です。
損失関数を使って出した値を最適化して、高精度の AI モデルを作るために使います。

2. 評価関数(Evaluation function)

評価 STEP で、モデルが出した【予測値】と、実際の【正解値】がどれくらいズレているのかを計算するための関数です。
作った AI モデルが、どれくらい良い AI モデルなのかを評価するために使います。

3. 誤差関数(Error function)

誤差関数は損失関数と同じ意味です。

4. コスト関数(Cost function)

損失関数に【正則化項】という計算を加えたものは、【コスト関数】と呼ばれます。
正則化とは、過学習(学習しすぎ)を抑えるために調整する計算のことです。

5. 目的関数(Objective function)

損失関数や誤差関数やコスト関数は、【目的関数】とも呼ばれます。
どの ○○ 関数も、関数が出した値を最適化していくことで、高精度なモデルを作るために使います。
このような、結果の値が最適化されていく関数は全て目的関数と呼びます。

まずは機械学習の流れをおさらい

上記の結論でも、いまいち理解しにくいと思います。
5 つの〇〇関数を理解するために、機械学習をする手順を 1 から簡単に解説します。
初心者でも分かりやすいように、厳密な定義や数式や方法は置いといて、 フワッと理解できることを目指して います。

モデルってなに?

機械学習ではまず、どんな 【モデル】 を作るか、を考えます。
モデルとは、入力値をもとに、中でいろいろな計算をして、出力値を導いてくれる【箱】のことです。このモデルが、最終的に【AI】と呼ばれるものになります。

たとえば?

たとえば、ネコの画像を入力すると、「これはネコです」と出力してくれる箱も立派なモデルです。

また、【AI の枠組み】や【AI がどんな形をしているか】や【AI の中でどんな計算をするか】を指してモデルと呼ぶこもあります。

モデルはどうやって作るの?

モデルを作るときは、【学習 STEP】⇒【評価 STEP】の流れで進めていきます。

学習の流れ

1. 学習 STEP

モデルは最初、作っただけの状態では 【ただの箱】 です。このモデルに、たくさんのデータを入力して【学習】をさせます。

学習とは、モデルにたくさんのデータを何度も見せることで、モデルが 【そのデータの特徴】 をどんどん覚えていくことです。学習が終わった時点で、ただの箱だったそのモデルが【AI】と呼ばれるように変わります。モデルをむりやり学習させて、AI に進化させてあげましょう。

まずモデルを作り、データを入れて結果を見てみます。モデルは最初は何もわからないので、かなり間違った予測を出力します。ネコの画像を入力しても、「これイヌだ」とか言ってきます。この予測値を、 正しい答えにどんどん近づけていくことが、モデルの学習 STEP でやること です。

出力を正しい答えに近づけていくために 【損失関数】(Loss function) という技を使います。損失関数とは、モデルが出した【予測値】と、実際の【正解値】がどれくらいズレているのかを計算するための関数です。

ここでいう正解値とは、 【AI に出してほしい本当の答え】 のことです。正解値からどれくらいズレているかという、ズレの大きさのことを【損失】(Loss)と呼びます。この Loss の値をできるだけ小さくすることができたら、【精度がいい AI】といえるでしょう。

Loss 値を最小化して、最適なモデルを完成させることが、【AI 作成のゴール】となります。モデルに入れるデータを変えてみたり、モデル内のパラメータを調整することで、【パフォーマンスが高い AI】を作りましょう。

2.評価 STEP

学習が終わったら、完成した AI モデルが 【どれくらい良い AI なのか】 を評価する必要があります。自分が作った AI が、どれくらいの性能を持っているのか気になります。

精度を測るために、 【これまでモデルに見せてないデータ】 をモデルに入れてみて、結果を確認してみます。モデルに 1 回も見せていないデータ(学習していないデータ)を 【未知のデータ】 と呼びます。AI に未知のデータを入力して、学習 STEP と同じように、出力値と正解値のズレ(差)を確認します。

このとき、 【評価関数】(Evaluation function) という技を使います。評価関数とは、モデルが出した【予測値】と、実際の【正解値】がどれくらいズレているのかを計算するための関数です。さっきの損失関数とやることは同じで、学習 STEP と評価 STEP で呼び名が違うだけです。最終的に、評価関数を使って出てきた値が、そのモデルの【精度】になります。

損失関数や評価関数には種類があります。どの関数を使うかによって、モデルの精度が変わってきます。使っているモデルや状況に適した損失関数と評価関数を選びましょう。

代表的な損失関数&評価関数 (回帰問題)

状況に適した損失関数と評価関数を選びましょう。

  1. 平均絶対誤差(MAE:Mean Absolute Error)
  2. 平均二乗誤差(MSE:Mean Squared Error)
  3. 平均二乗誤差の平方根(RMSE:Root Mean Squared Error)
  4. 平均二乗対数誤差(MSLE:Mean Squared Logarithmic Error)
  5. 平均二乗対数誤差の平方根(RMSLE:Root Mean Squared Logarithmic Error)
  6. 平均絶対パーセント誤差(MAPE:Mean Absolute Percentage Error)
  7. 平均二乗パーセント誤差の平方根(RMSPE:Root Mean Squared Percentage Error)
代表的な損失関数&評価関数 (二値分類問題)

状況に適した損失関数と評価関数を選びましょう。

  1. 正解率(Binary Accuracy)
  2. 適合率(Precision)
  3. 再現率(Recall)/感度(Sensitivity)
  4. 特異度(Specificity)
  5. F 値(F-measure、F-score)/F1 スコア(F1-score)
  6. 重み付き F 値(Weighted F-measure)/Fβ スコア(Fβ-score)
  7. LogLoss(Binary Logarithmic Loss)
  8. AUC(Area Under the ROC curve、ROC 曲線の AUC)
  9. PR-AUC(Area Under the Precision-Recall curve、AUC-PR)/AP(Average Precision)
  10. 多クラス分類問題の代表的な評価関数
  11. 正解率(Multi-class Accuracy)
  12. LogLoss(Multi-class Logarthimic Loss)

その他の ○○ 関数

ここまでで、損失関数と評価関数については分かりました。
この 2 つ以外にもよく出てくる、【誤差関数】【コスト関数】【目的関数】についても紹介します。

まとめ

今回は機械学習で良く出てくる〇〇関数についてまとめました。
色々な解釈があるので、間違いがあればご指摘いただけると助かります。
皆さんの理解が一歩でも進むと嬉しいです。

人工知能/AI/機械学習をもっと詳しく

https://zenn.dev/nekoallergy/books/904df952389317
ニューラルネットワークの基本を知りたいかたは、こちら ↑ の本も併せてご覧ください。


ねこアレルギーのAI

ねこアレルギーの AI
YouTube で機械学習について発信しています。お時間ある方は覗いていただけると喜びます。

参考文献

https://atmarkit.itmedia.co.jp/ait/articles/2104/22/news022.html


Created by NekoAllergy

Discussion