機械学習をマスターする上でカギとなる、「損失関数」。機械学習モデルにおいて、予測値と正解値(正解データ)がどの程度近いかを示す指標となる関数です。
そのイメージをより具体的に持つため、簡単な例題をここで扱ってみましょう。解を導き出すのに少し時間がかかりますが、「偏微分」などの高度な数学は全く使いません。
2次関数など高校1年生レベルの数学をおさらいしながら解説していきます。一通り読めば、「数学を使って機械学習モデルを解く」というイメージがつかめるので、ぜひ解を導くところまで読み進めてください。
題材として「単回帰」と呼ばれる、1つの実数値の入力(x)から1つの実数値(y)を予測するモデルを取りあげます。具体的な処理内容としては、成年男子の身長x(cm)を入力値に、体重y(kg)を出力値とするようなモデルを考えることにします。モデルの内部構造は「線形回帰」と呼ばれるもので考えます。
線形回帰とは1次関数で予測するモデルのことで、入力データをx、出力データをyで表すとき、線形回帰の予測式は次のような形になります▼1(式1)。
y = w0+ w1x(式1)
最初に対象となるデータが以下の3つである場合で考えてみましょう。
実は、このデータはすぐに答えが出るように細工がしてあるので、下のように、式1にあたる式を簡単に出せます。
y = x - 105
では、次の表の5つが対象データの場合はどうでしょうか?
このように対象となるデータが一般的になると、多少標本数が増えただけで、どういう形で予測の式を作ったらよいかわからなくなってしまいます。ここで数学の考え方が必要になってくるのです。
まず、先のデータ系列を散布図で表示してみます。
次の図では、散布図にパラメーター値を固定したときのモデルの予測値▼2をプロットした直線も追記しています。
ytを正解値、ypをモデルによる予測値▼3とすると、回帰モデルでの誤差とは、上の図にあるように個々の点から予測値を表す直線に垂直に下ろした直線の長さ、つまり(yt - yp)にあたります。
ただし、誤差をそのまま使うと、マイナスの値をとることもあり、複数の点での誤差を考えるのが難しくなります。そこで、標本点ごとに正解値ytと予測値ypの差の2乗を計算し、すべての標本点での合計を損失関数として評価する考え方が生まれました▼4。
この考えが「残差平方和」と呼ばれ、線形回帰モデルでの標準的な損失関数の考え方になっています。