1 pièce(s) jointe(s)
Algorithme intelligence artificielle
Bonsoir,
le sujet ne vise pas c# en particulier mais les raisons pour lesquelles je l'ai posté ici sont que je ne sais pas vraiment oû le poster et que le code source est en c# donc cela sera peut etre facile de me comprendre :zoubi:
ça fait un moment que je m’intéresse à l'intelligence artificielle et j'ai fini par suivre des tutos anglais sur le net. j'ai commencé par comprendre le perceptron(un seul neurone) pour identifier la zone d'appartenance d'un point selon ces coordonnées. jusque la pas de problème...
Mais pour certains problèmes, un seul neurone ne suffit pas, il faut implémenter plusieurs neurones et plusieurs couches(entrée, caché, sortie) donc le calcul pour produire un résultat change.
d’après ce que j'ai appris pour pour produire un résultat(fonction feedforward), if faut faire ceci :
-toutes les entre sont connecté a chaque neurone de la couche cache:
-neurone couche cache = sigmoid(entree1*poidsLiaison1 + entree2*poidsLiaison2....+poidsBiaisCoucheNeurone)
-toutes les couches cachés sont connectés a chaque sortie :
-neurone couche sorti = sigmoid(Neurocache1*poidsLiaison1 + NeuroCache2*poidsLiaison2....+poidsBiaisCoucheNeurone)
------> est ce que cela est correcte?
Alors la suite et magique car on entraîner le système pour qu'il puisse donner un bon résultat n'importe quel données du même genre.
cela se passe ainsi d’après mon apprentissage:
1-on effectue le même processus que dans la fonction feedforward
2-on récupère l'erreur de la sortie:
-resutat attendu - resultat sorti
3-on récupère le gradient:
-gradient = lr(pour la supervisation) * erreur sorti * derivee sigmoid(sortie)
4-on récupère le deltas:
-deltas = gradient * entree venant de la couche cache
5-on ajuste les poidsLiaison entre la couche cache et la couche sorti:
-poidsLiaison += deltas
6-on ajuste les bias de la couche sorti:
- bias += gradient
7-on récupère les erreurs de la couche cachée:
-erreur couche cache = poidsLiaison * erreurs sortie
8- on calcul le gradient:
- gradient = lr(pour la supervisation) * erreur couche caché * derivee sigmoid(neurone couche caché)
9-on récupère le deltas:
-deltas = gradient * entree
10-on ajuste les poidsLiaison entre la couche cache et la couche sorti:
-poidsLiaison += deltas
11- on ajuste les biais de la couche caché :
-biais += gradient
voila c'est très difficile à expliquer et je ne suis pas sur si c'est le calcule correcte pour l'entrainement et ni d'ailleur pour la fonction feedforward. c'est justement pour cette raison que je viens solliciter votre aide.
au départ j'ai utilisé des matrice pour les poids de liaison mais je préfère le faire a ma façons(voir code) car j'aime pas effectuer des calcul sur des matrices, ça me fait mal à la tete.
!!! avant ou après entrainement j'obtient des résultats quasi identique pour différentes données et je ne comprends pas comment ça se fait...
Projet : Pièce jointe 514638
D'avance merci pour votre attention