本文へスキップ
ひもとくAI

損失関数(誤差を測る)

レッスン 4/7

「最もよく当てはまる」を数値で表す

前のレッスンで、線形回帰は「データに最もよく当てはまるaaとbbを見つける」手法だと説明しました。しかし、「最もよく当てはまる」とは、具体的にどういう意味なのでしょうか。これを数値で表すために 誤差 という考え方を使います。

誤差とは、「モデルの予測値」と「実際の正解の値」との差のことです。

誤差=(予測値)−(正解の値)\text{誤差} = (\text{予測値}) - (\text{正解の値})

例えば、実際の点数が70点で、モデルの予測が65点なら、誤差は65−70=−565 - 70 = -5です。

ここで、統計の単元で学んだ分散の計算を思い出してください。「平均との差を2乗して平均する」という手順を踏みました。誤差についても同じ発想を使います。誤差をそのまま平均すると、プラスの誤差とマイナスの誤差が打ち消し合ってしまうため、誤差を2乗してから 平均します。これを 二乗誤差 と呼びます。

二乗誤差=(予測値−正解の値)2\text{二乗誤差} = (\text{予測値} - \text{正解の値})^2

次のスライドで、この二乗誤差を全データ分まとめた「損失関数」という考え方に進みます。

損失関数:モデルの「悪さ」を測る1つの数値

1件のデータだけでなく、すべてのデータに対する二乗誤差の平均をとったものを 損失関数(平均二乗誤差、MSE) と呼びます。

損失=1n∑i=1n(y^i−yi)2\text{損失} = \frac{1}{n}\sum_{i=1}^{n}(\hat{y}_i - y_i)^2

y^i\hat{y}_i(ハットが付いた y)はモデルによる予測値、yiy_iは実際の正解の値、nnはデータの件数です。右下の ii は「何件目のデータか」を表す番号で、y^1\hat{y}_1 なら「1件目の予測値」です。

∑\sum(シグマ)は「全部足す」という記号で、∑i=1n\sum_{i=1}^{n} は「ii を1から nn まで1つずつ変えながら、右側の式をすべて足す」と読みます。例えばデータが3件(n=3n = 3)なら、上の式は次と同じ意味です。

損失=(y^1−y1)2+(y^2−y2)2+(y^3−y3)23\text{損失} = \frac{(\hat{y}_1 - y_1)^2 + (\hat{y}_2 - y_2)^2 + (\hat{y}_3 - y_3)^2}{3}

予測が 3, 6, 8、正解が 2, 4, 9 なら、誤差は 1, 2, −1、2乗すると 1, 4, 1 なので、損失は 1+4+13=2\frac{1 + 4 + 1}{3} = 2 です。

この数式は、統計の単元で学んだ分散の数式と、形がほとんど同じであることに気づいたでしょうか。「平均との差」が「予測との誤差」に変わっただけです。

損失関数が表しているのは、「このモデル(このaaとbb)が、データ全体に対してどれくらい間違っているか」という1つの数値です。損失が小さいほど、モデルの予測はデータによく当てはまっている ということになります。

つまり、機械学習の「学習」とは、突き詰めれば「この損失をできるだけ小さくするようなaaとbbを探す」作業だと言えます。以前、「学習は予測→ズレの確認→調整の繰り返し」と説明しましたが、この「ズレ」の正体こそが、今回学んだ損失関数だったのです。

次のレッスンでは、この損失を実際にどうやって小さくしていくのか、「勾配降下法」という手法を覗いてみます。

演習

演習を読み込んでいます…