Je pense que le plus simple est que tu oublie la fonction OU qui n'est qu'un exemple d'application et non le fonctionnement interne de l'algorithme.
En essayant de faire simple l'algorithme est le suivant :
J'ai en entrée un corpus du type (x,y,classe)^n, dans le cas 2D classe = +1 ou -1.
J'initialise W=[w0 w1 w2] les coordonné de ma droite séparatrice F(x) de façon aléatoire.
1) Je choisie une donnée aleatoirement.
2) ensuite je fais x*w2+y*w1+w0 = tmp et je regarde le signe de tmp,
- si celui ci correspond au signe de la classe de ma donnée je passe a la donnée suivante 1).
- sinon je met à jour W de la manière suivante :
w2 = w2+sigma*x*classe avec sigma au pif d'environ 0.05,
w1 = w1+sigma*x*classe
w0 = w0+sigma*classe
et je passe a la donnée suivante 1).
Je boucle tant que l'erreur est supérieur à 0.001 par exemple.
On voit bien qu'il n'y a pas de OU, ni de restriction au valeur 0 1, par contre cet algorithme permet d'apprendre la fonction OU.
Partager