Il n'y a pas de raison que les poids soient des multiples de 10, indépendamment de l'initialisation : pour des valeurs d'entrée et de sortie comprises entre 0 et 1 (voir dans l'ensemble {0,1} si on veut faire simple), l'erreur (valeur désirée - valeur obtenue) tend vers 0.
À chaque itération de l'apprentissage, le poids est modifié avec une partie de l'erreur pour répondre la sortie désirée. D'ailleurs, c'est bizarre, cette multiplication par 10.0. Si ça correspond au taux d'apprentissage, ça devrait être un truc entre 1 et epsilon, pour epsilon petit.
Si tu as testé cet exemple, je ne suis pas sur que le réseau ait appris grand chose : l'apprentissage est plutôt instable.
Pour plusieurs couches, regarde du côté de l'algorithme de rétropropagation du gradient : c'est la méthode classique. Il y a des travaux récents qui vont au delà, mais je ne suis pas à jour sur les détails.
Le problème quand tu as plusieurs couches, c'est que tu n'as pas accès directement à l'erreur sur la sortie désirée, il faut donc la (rétro)propager en passant la non-linéarité (d'où le choix de fonctions dérivables).
Mais dans ce cas là c'est soit 1 soit 0. La différence valeur désirée - valeur obtenue est donc soit 1 0 ou -1.
D'ailleurs oui, il y a un schéma avec l'erreur qui part de 50 et tend vers 0, mais comment calcule t on cette erreur ?
J'ai vu un article sur la retropropagation, mais je n'ai pas compris grand chose ...
Merci pour ta réponse ...