交差エントロピー誤差が-∞になるのを防ぐ


機械学習の本を色々と読んでいるのですが、ふと交差エントロピーの数式を見て誤差が-∞になるじゃん、と今更気づいたので、実際に実装上どのようにして回避しているのかを調べました。

交差エントロピーは以下の式で表されます。

$$E=-\sum_{k}t_k\log {y_k}$$

結論から言うと、下記のサイトに答えはありました。どうやら、小さい数値を足しておくことでlog(0)を誤差に足してしまうことを防ぐようです。

「ゼロから作るDeep Leaning」4章:ニューラルネットワークの学習

つまりは以下のコードを誤差関数として利用するということでした。

def numerical_diff(f, x):
    h = 1e-4 # 0.0001
    return (f(x+h) - f(x-h)) / (2*h)

以上です。理論と実装の狭間を少しずつ埋めていきたい。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です