Je bouge mes premiers pas dans les réseaux de neurones et pour ce faire j'expérimente avec un simple perceptron mono-couche, à sortie unique qui utilise une fonction d'activation sigmoïdale. Je mets à jour mes poids en ligne à chaque fois un exemple de formation est présentée à l'aide:Cela a-t-il un sens que les poids et les seuils augmentent proportionnellement à l'entraînement de mon perceptron?
weights += learningRate * (correct - result) * {input,1}
Ici weights
est un vecteur de longueur n qui contient également le poids du neurone de polarisation (- seuil), result
est le résultat comme calculé par le perceptron (et traité en utilisant le sigmoïde) quand donné le input
, correct
est le résultat correct et {input,1}
est l'entrée augmentée de 1 (l'entrée fixe du neurone de polarisation). Maintenant, quand j'essaie d'entraîner le perceptron à effectuer la logique ET, les poids ne convergent pas pendant longtemps, mais ils continuent à croître de la même façon et ils maintiennent un ratio de -1,5 avec le seuil, par exemple les trois poids sont en séquence:
5.067160008240718 5.105631826680446 -7.945513136885797
...
8.40390853077094 8.43890306970281 -12.889540730182592
Je m'attendrais à ce que le perceptron s'arrête à 1, 1, -1,5.
En dehors de ce problème, qui ressemble connecté à certaines fonctionnalités manquantes arrêter condition dans l'apprentissage, si je tente d'utiliser la fonction d'identité en fonction d'activation, je reçois des valeurs de poids oscillant autour de:
0.43601272528257057 0.49092558197172703 -0.23106430854347537
et je obtenir des résultats similaires avec tanh
. Je ne peux pas donner une explication à cela.
Merci
Tunnuz
Ok, la fonction d'étape a fait l'affaire. J'ai alors réalisé, en regardant 'correct' et' result' qu'une fonction d'étape est nécessaire pour les fonctions booléennes. – tunnuz