モデルのしくみ 中級

損失関数

Loss Function

モデルの予測が正解からどれだけずれているかを、1つの数値で表す仕組みです。学習とは、この値をできるだけ小さくするようにパラメータを調整していく作業のことを指します。

例学習曲線を見ると、学習データの損失は下がり続けているが、検証データの損失は途中から上がっている。

詳しく

損失関数(ロス関数)は、モデルの出力と正解を比べて、「どれくらい間違っているか」を1つの数値にする関数です。数値が大きいほど悪く、小さいほど良い状態を意味します。機械学習の学習は、この数値を小さくするためにパラメータを調整する作業だと言い換えられます。何を小さくするかを決めるので、損失関数の選び方がモデルの目指す方向を決めます。

しくみ

損失関数が必要な理由は、モデルに「良い・悪い」を伝える物差しがなければ、改善の方向が分からないからです。損失が計算できれば、勾配降下法と誤差逆伝播法で、パラメータをどちらへ動かせばよいかが求まります。

代表的な例は次のとおりです。

  • 平均二乗誤差:数値の予測(気温、価格など)で使う。予測と正解の差を二乗して平均します。大きな外れほど強く罰します。
  • 交差エントロピー損失:分類で使う。正解の選択肢に高い確率を割り当てているほど小さくなります。

大規模言語モデルの事前学習では、「次のトークンを当てる」問題の交差エントロピー損失が使われます。正解のトークンに高い確率をつけられたほど、損失は小さくなります。

具体例

ダーツで的の中心を狙う練習を考えます。的の中心からの距離が「損失」です。毎回、距離を測って「もう少し右」「少し上」と直していくと上達します。距離を測る物差しがなければ、練習のしようがありません。

物差しの選び方で、重視するものが変わります。たとえば、外れを二乗で数える物差しは大きな失敗を嫌い、差の絶対値を使う物差しは外れ値に引きずられにくい、といった違いがあります。

使うときの注意・よくある誤解

  • 損失が小さい=本当に良いモデル、とは限らない:損失は学習の都合で選んだ代用の指標です。人にとって役立つか、安全かといった性質は、損失には直接現れません。そのため、別に評価(eval)が必要です。
  • 学習用と検証用を分けて見る:学習用データの損失だけが下がり続け、検証用の損失が上がり始めたら、過学習のサインです。
  • 目的に合わせて組み合わせる:複数の損失を重みづけして足し合わせることもあります。人の好みを学ばせる RLHF では、報酬モデルの出力を最大にするという別の目標を使います。
  • 数値の大きさは比べにくい:異なる損失関数や、異なるデータで計算した値は、そのままでは比較できません。

関連する考え方

損失の値から勾配を求めるのが誤差逆伝播法、その勾配でパラメータを動かすのが勾配降下法です。この3つが、ニューラルネットワーク学習の中心をなしています。モデルの出来を測る手段としての評価は、損失とは別に用意するものと考えると整理しやすいです。

あわせて知りたい言葉

「モデルのしくみ」の言葉をすべて見る