1

Je crée ANN à partir d'un tutoriel. Dans le didacticiel, le sigmoïde et dsigmoid sont les suivantes:Fonction sigmoïde et dérivée de la fonction sigmoïde dans ANN

sigmoid(x) = tanh(x) 

dsigmoid(x) = 1-x*x 

Cependant, par définition, dsignmoid est dérivée de la fonction sigmoïde, ainsi il devrait être (http://www.derivative-calculator.net/#expr=tanh%28x%29):

dsigmoid(x) = sech(x)*sech(x) 

Lorsque vous utilisez 1- x * x, l'entraînement converge, mais quand j'utilise le dérivé mathématiquement correct, ie. sech au carré, le processus de formation ne converge pas. La question est de savoir pourquoi 1-x * x fonctionne (modèle entraîné pour corriger les poids), et la dérivée mathématique sech (x) ne fonctionne pas (le modèle obtenu après le nombre maximum d'itérations contient des poids erronés)?

+0

Quelle est votre question? – Carcigenicate

+0

clarifié la question – johnlowvale

Répondre

2

Dans la première série de formules, le dérivé est exprimé en fonction de la valeur de la fonction, qui est

tanh'(x) = 1-tanh(x)^2 = dsigmoid(sigmoid(f)) 

Comme ce qui est probablement utilisé et mis en œuvre dans le code existant de cette façon, vous obtiendrez le mal dérivé si vous remplacez cela par la "bonne" formule.

+0

ouais, y = sigmoïde (x), dsigmoid devrait être appliqué sur x aussi pour obtenir gradient. d = dsigmoïde (x). Donc, dans le cas de Tanh, la formule est de cette façon – johnlowvale