モデルのしくみ 中級
損失関数
Loss Function
モデルの予測が正解からどれだけずれているかを、1つの数値で表す仕組みです。学習とは、この値をできるだけ小さくするようにパラメータを調整していく作業のことを指します。
例学習曲線を見ると、学習データの損失は下がり続けているが、検証データの損失は途中から上がっている。
詳しく
損失関数(ロス関数)は、モデルの出力と正解を比べて、「どれくらい間違っているか」を1つの数値にする関数です。数値が大きいほど悪く、小さいほど良い状態を意味します。機械学習の学習は、この数値を小さくするためにパラメータを調整する作業だと言い換えられます。何を小さくするかを決めるので、損失関数の選び方がモデルの目指す方向を決めます。
しくみ
損失関数が必要な理由は、モデルに「良い・悪い」を伝える物差しがなければ、改善の方向が分からないからです。損失が計算できれば、勾配降下法と誤差逆伝播法で、パラメータをどちらへ動かせばよいかが求まります。
代表的な例は次のとおりです。
- 平均二乗誤差:数値の予測(気温、価格など)で使う。予測と正解の差を二乗して平均します。大きな外れほど強く罰します。
- 交差エントロピー損失:分類で使う。正解の選択肢に高い確率を割り当てているほど小さくなります。
大規模言語モデルの事前学習では、「次のトークンを当てる」問題の交差エントロピー損失が使われます。正解のトークンに高い確率をつけられたほど、損失は小さくなります。
具体例
ダーツで的の中心を狙う練習を考えます。的の中心からの距離が「損失」です。毎回、距離を測って「もう少し右」「少し上」と直していくと上達します。距離を測る物差しがなければ、練習のしようがありません。
物差しの選び方で、重視するものが変わります。たとえば、外れを二乗で数える物差しは大きな失敗を嫌い、差の絶対値を使う物差しは外れ値に引きずられにくい、といった違いがあります。
使うときの注意・よくある誤解
- 損失が小さい=本当に良いモデル、とは限らない:損失は学習の都合で選んだ代用の指標です。人にとって役立つか、安全かといった性質は、損失には直接現れません。そのため、別に評価(eval)が必要です。
- 学習用と検証用を分けて見る:学習用データの損失だけが下がり続け、検証用の損失が上がり始めたら、過学習のサインです。
- 目的に合わせて組み合わせる:複数の損失を重みづけして足し合わせることもあります。人の好みを学ばせる RLHF では、報酬モデルの出力を最大にするという別の目標を使います。
- 数値の大きさは比べにくい:異なる損失関数や、異なるデータで計算した値は、そのままでは比較できません。
関連する考え方
損失の値から勾配を求めるのが誤差逆伝播法、その勾配でパラメータを動かすのが勾配降下法です。この3つが、ニューラルネットワーク学習の中心をなしています。モデルの出来を測る手段としての評価は、損失とは別に用意するものと考えると整理しやすいです。
あわせて知りたい言葉
- 勾配降下法損失関数の値が小さくなる方向へ、パラメータを少しずつ動かして最適な値を探す方法です。ニューラルネットワークの学習で最も基本的に使われる手法で、山を下るような動きにたとえられます。
- 誤差逆伝播法ニューラルネットワークの出力の誤差を、出力側から入力側へさかのぼって伝え、各パラメータをどちらにどれだけ直せばよいかを効率よく求める方法です。現在の深層学習の学習の基本です。
- 過学習学習に使ったデータには非常によく合う一方で、初めて見るデータには通用しなくなる状態です。問題を丸暗記してしまい、本質的なパターンを学べていないときに起こります。
- 評価(eval)AI の出力がどれくらい目的に合っているかを、決めたテストケースと基準で測ることです。モデルやプロンプトを変えたときに、良くなったか悪くなったかを判断する根拠になります。
- 報酬モデル回答の良し悪しを数値で評価するよう学習させたモデルです。人間の好みをAIに伝える手段として、RLHFなどでモデルを調整するときに使われます。人の好みを数値に置き換える役割を担います。