J'écris un réseau neuronal de base en Java et j'écris les fonctions d'activation (actuellement je viens d'écrire la fonction sigmoïde). J'essaye d'employer double
s (comme apposé à BigDecimal
) avec des espoirs que la formation prendra réellement une quantité raisonnable de temps. Cependant, j'ai remarqué que la fonction ne fonctionne pas avec des entrées plus grandes. À l'heure actuelle ma fonction est:À quel point une fonction d'activation doit-elle être précise et quelle sera sa taille?
public static double sigmoid(double t){
return (1/(1 + Math.pow(Math.E, -t)));
}
Cette fonction retourne des valeurs très précises tout en bas quand t = -100
, mais quand t >= 37
la fonction retourne 1.0
. Dans un réseau de neurones typique lorsque l'entrée est normalisée, est-ce correct? Un neurone obtiendra-t-il des intrants sommant plus de 37? Si la taille de la somme des entrées introduites dans la fonction d'activation varie de NN à NN, quels sont les facteurs qui l'affectent? Aussi, est-il possible de rendre cette fonction plus précise? Existe-t-il une alternative plus précise et/ou plus rapide?