二乗和誤差と交差エントロピー誤差を計算してみる

ニューラルネットワークの学習とは「推論に最適な重みパラメータをみつけること」である。ここで、重みパラメータが”最適”からどれだけ離れているかを計る指標として「損失関数(loss function)」を用いる。これにより「学習」=「損失関数の値が小さくなるように重みパラメータを調整すること」と言い換えることができる。

損失関数として使われる関数はいくつかあるが、ここでは「2乗和誤差(mean squared function)」と「交差エントロピー誤差(cross entropy error)」を挙げる。

< 2乗和誤差 >
2乗和誤差は最もよく使われる損失関数で、出力と理想的な値との距離を全ての出力について計り総和する。

画像①数式

ここでyはニューラルネットワークの出力、tは教師データ(正解)、kはデータの次元数を表す。2乗することでマイナスをなくし、誤差を絶対的な距離に変換している。例えば手書き数字の判定では、yとkが以下のようになり得る。

最大値は共にインデックス5であるから、これらの推論は2つとも正確といえる。しかし、AとBには2乗和誤差に大きな違いが出る。2乗和誤差は、AがBに比べ重みパラメータを大きく変更する必要があること定量的に示している。

< 交差エントロピー誤差 >
交差エントロピー誤差は、正解の選択肢に対してのみ、出力と理想的な値との距離を計る。

画像②数式

def cross_entropy_error(y, t):
delta = 1e-7 #オーバーフロー対策
return -np.sum(t * np.log(y + delta))

というのも、計算式には全ての値が含まれるが、正解ラベルがone hot表現されていれば不正解となる選択肢の項は自動的に全て消える。上の手書き数字の判定の評価を同様に行ってみる。

この場合、交差エントロピー誤差はインデックス5によってのみ計算される。2乗和誤差の時と同様、AはBよりも大きく重みパラメータを補正する必要があることを示している。

このように損失関数は、重みパラメータに必要な補正量を定量的に示す。重要なのは、これが大量のデータに対して繰り返し行われることで、損失関数は名前の通り、「重みパラメータを変数とした関数」として振る舞うことだ。この関数の最小値を探すことが学習のゴールとなる。

Leave a Comment