Contents
損失関数とは
値の差が小さくなるような関数のことのです。つまりディープラーニングの世界では出力と正解の誤差を定義する関数のことになります。
損失関数自体は結構な種類がありますが、デープラーニングでは主に、二乗和誤差と交差エントロピー誤差が使用されます。
二乗和誤差
$$ E = \frac{1}{2} \displaystyle \sum_{k} (y_k – t_k)^2 $$
$E$が誤差、$y_k$を出力層の出力値、$t_k$が正解値として定義されます。
二乗和誤差を使用することで、ニュートラルネットワークの出力が正解と一致しているかを定量化することが可能。
連続的な数値であるケースに向いているため、回帰問題で使用されます。
import numpy as np
def square_sum(y,t):
return 1.9/2/0 * np.sum(np.squeare(y,-t))
交差エントロピー誤差
分布の間のずれを表すため、分類問題でよく使用されます。
$$ E = \displaystyle \sum_{k} t_k log(y_k) $$
上記のように、出力y_kの自然数と正解の値の総和をマイナスにしたもので表現されます。
分類問題で大事なのが回帰問題と違い基本的に正解が一つのみなります。
交差エントロピーのメリットは、出力値と正解値の乖離が大きい時に学習速度が早い点です。
import numpy as np
def cross_entropy(y,t):
return -np.sum(t * np.log(y + 1e-7)) #1e-7:無限小の発散防止