私は Java で基本的なニューラル ネットワークを作成しており、活性化関数を作成しています (現在、シグモイド関数を作成しています)。トレーニングに実際に妥当な時間がかかることを期待して、double
( に並べて) sを使用しようとしています。BigDecimal
ただし、関数がより大きな入力では機能しないことに気付きました。現在、私の機能は次のとおりです。
public static double sigmoid(double t){
return (1 / (1 + Math.pow(Math.E, -t)));
}
この関数は when までかなり正確な値を返しますが、関数が を返すt = -100
ときです。入力が正規化されている場合の典型的なニューラルネットワークでは、これで問題ありませんか? ニューロンは、入力の合計が ~37 を超えることはありますか? 活性化関数に与えられる入力の合計のサイズが NN ごとに異なる場合、それに影響を与える要因にはどのようなものがありますか? また、この機能をより正確にする方法はありますか? より正確かつ/またはより高速な代替手段はありますか?t >= 37
1.0