月影

日々の雑感

損失関数とは?AIの「間違い」を測る仕組みを初心者向けに解説【機械学習】

 

損失関数とは?AIの「間違い」を測るモノサシ

AIが答えを出す「順伝播」の後、その答えがどれくらい正解からズレているかを評価しなければ、AIは賢くなれません。この「答え合わせ」の役割を担うのが損失関数(Loss Function)です。この記事では、AIが自らの間違いを数値で測るためのモノサシである損失関数について、具体例を交えて分かりやすく解説します。

1. 損失関数の役割:AIの予測の「ダメさ」を1つの数値にする

損失関数の目的は、AIの予測値と実際の正解値を比較し、その「隔たり」や「ズレ」を計算して、損失(Loss)または誤差(Error)と呼ばれる一つの数値で表現することです。

例えば、AIに明日の気温を予測させたとします。

  • AIの予測:25℃
  • 実際の気温(正解):27℃

この時、ズレは「2℃」です。この「2℃」というズレを、決められた計算方法で数値化したものが「損失」です。AIの学習目標は、この損失の値をできるだけ0に近づけることに他なりません。

2. 具体例で学ぶ:平均二乗誤差(MSE)

数ある損失関数の中で、最も基本的で理解しやすいのが平均二乗誤差 (Mean Squared Error, MSE) です。主に、気温や株価、テストの点数といった数値を予測する問題(回帰問題)で使われます。

シナリオ:勉強時間からテストの点数を予測するAI

ある学生の実際のデータが以下だったとします。

  • 正解値 ( y_{true}): 実際のテストの点数は 80点 でした。
  • AIの予測値 ( y_{pred}): AIは、勉強時間から点数を 60点 と予測しました。

計算ステップ

  1. 誤差(ズレ)を計算する
    まず、予測値から正解値を引きます。
     誤差 = y_{pred} - y_{true} = 60 - 80 = -20
  2. 誤差を二乗する
    次に、計算した誤差を2乗します。これにより、ズレがマイナスでもプラスに変換されます。
     損失 = (誤差)^2 = (-20)^2 = 400

結果: この予測における損失は 400 となりました。もしAIの予測が70点なら損失は  (70-80)^2 = 100、予測が85点なら損失は  (85-80)^2 = 25 となります。値が小さいほど、良い予測だったと言えます。

なぜ「二乗」するの?

誤差を二乗するのには2つの大きな理由があります。

  1. ズレの方向を無視するため: 予測が20点高くても(-20)、20点低くても(+20)、ズレの大きさは同じです。二乗することで、どちらも同じ「400」という正の値として扱えます。
  2. 大きなズレに大きなペナルティを与えるため: 誤差が10の場合、損失は100ですが、誤差が2倍の20になると、損失は4倍の400になります。これにより、AIは「大きな間違い」をより強く避けるように学習していきます。大きな間違いが出ないように数式を変更していきます。

3. 分類で学ぶ:交差エントロピー誤差(CEE)

猫か犬かを当てるような「分類問題」で、AIの「自信のなさ」や「うっかりミス」を厳しく判定するのが交差エントロピー誤差 (Cross-Entropy Error, CEE) です。数値そのものではなく、「正解である確率」をどれだけ外したかを測ります。

シナリオ:画像を見て「猫」か「犬」かを当てるAI

ある画像が、実際には 「猫」 だったとします。

  • 正解ラベル (y_{true}): 「猫」であることを示す 1.0(100%)の状態です。
  • AIの予測値 (y_{pred}): AIはその画像を見て、「猫である確率は 0.1 (10%)」 と予測しました。つまり、90%の自信で「これは猫じゃない(犬だ!)」と勘違いしています。

計算ステップ

  1. 正解の確率に注目する
    正解は「猫」なので、AIが予測した「猫である確率(0.1)」だけを計算に使います。
  2. 対数(log)をとってマイナスをかける
    ここで数学のマイナス「対数」が登場します。x軸の値が小さくなって予測が外れるほど、yの値が爆発的に大きくなる仕掛けです。
    誤差 = -log(y_{pred}) = -log(0.1) およそ 2.30

結果: この予測における損失は 約 2.30 となりました。もしAIが「猫である確率は 0.9 (90%)」と正解に近ければ、損失は -log(0.9) およそ 0.10となり、非常に小さくなります。逆に、もし「猫である確率は 0.01 (1%)」とさらに自信満々に間違えていたら、損失は-log(0.01) およそ 4.60と倍以上に跳ね上がります。

なぜ「log(対数)」を使うの?

これには、AIを「謙虚」に、かつ「正確」に育てるための知恵が詰まっています。

  1. 正解に 100% 近ければ損失は 0 になる: AIが完璧に「猫だ!」と当てた場合、log(1.0)は 0 なので、ペナルティは一切ありません。ご褒美ですね。
  2. 「自信満々な間違い」を全力で阻止するため: 分類問題で一番困るのは、AIが「これは絶対に犬だ!」と断言したのに実は猫だった、というケースです。予測確率が 0 に近づくほど、-logの値は無限大に向かって急上昇します。これにより、AIは「間違った答えに高い確率を出すこと」を死ぬほど恐れるようになり、慎重かつ正確に確率を出すよう学習が進むのです。

    横軸のxの値が小さくなる(左に行く)ほど、縦軸のyの値が大きくなっていきます。

4. 問題の種類で使い分ける損失関数

実際には、解きたい問題の種類に応じて、最適な損失関数を使い分けます。

  • 回帰問題(数値予測)
    平均二乗誤差 (MSE)平均絶対誤差 (MAE) が使われます。
  • 分類問題(カテゴリ予測)
    「猫」「犬」「鳥」のように、どれか一つのカテゴリを予測する問題では、交差エントロピー誤差 (Cross-Entropy Error) が使われます。これは、AIが「間違った答えにどれだけ大きな自信を持っていたか」を測るのに適したモノサシです。

まとめ:AI学習のコンパス

損失関数は、AIの予測がどれだけ「ダメだったか」を測るための重要なモノサシです。この関数によって計算された「損失」というたった一つの数値を道しるべにして、AIは次に紹介する「誤差逆伝播法」というプロセスで、賢くなるための具体的な改善(重みの更新)を行なっていきます。

つまり損失関数は、AIが学習の広大な海を航海する上で、「どちらの方向に進めば正解に近づけるか」を教えてくれるコンパスの役割を果たしているのです。

www.namuamidabu.com