機械学習の本を色々と読んでいるのですが、ふと交差エントロピーの数式を見て誤差が-∞になるじゃん、と今更気づいたので、実際に実装上どのようにして回避しているのかを調べました。
交差エントロピーは以下の式で表されます。
E=-\sum_{k}t_k\log {y_k}
結論から言うと、下記のサイトに答えはありました。どうやら、小さい数値を足しておくことでlog(0)を誤差に足してしまうことを防ぐようです。
http://tana-log.com/2017/04/02/post-198/
つまりは以下のコードを誤差関数として利用するということでした。
def numerical_diff(f, x): h = 1e - 4 # 0.0001 return (f(x + h) - f(x - h)) / ( 2 * h) |
以上です。理論と実装の狭間を少しずつ埋めていきたい。