Intelligence Artificielle
Avant propos
Cette partie est dédié à Intelligence Artificielle (IA), plutôt une partie de celle ci consacré à la vulgarisation et l'utilisation des neurones artificielles.
On découvrira les fondements de cette science, le perceptron, les réseaux de neurones, ... utilisation de la bibliothèque FANN (Fast Artificial Neural Network)..., et nous nous intéresserons à l'utilisation d'un réseau de neurones.
Le but n'est pas d'écrire un éième bibliothéque ou algorithme sur le fonctionnement d'un neurone perceptron avec retro-propagation avec fonction sigmoïd, ..., mais sans réinventer la roue car il existe déjà une multitude de code (FANN libre est portable sur 22 languages) c'est plutôt l'utilisation d'un réseau de neurones. Le RNA(réseau de neurone artificielles) est un outil mais faut il encore savoir s'en servir. Le meilleur ciseau à bois ne fait pas le sculpteur!
Les RNA, c'est quoi?
Les réseaux de neurones artificielles s'inspirent du fonctionnement du cerveau et du système nerveux. C'est une modélisation mathématique et algorithmique qui simule au plus prêt des connaissances actuelles ces unités de "calcul" que nous avons par milliards dans chacun de nous. Estimation de 1000 milliards par cerveau.
Aujourd'hui, les réseaux de neurones ont de nombreuses applications dans des domaines très variés :
- traitement d'image : compression d'images, reconnaissance de caractères et de signatures, reconnaissance de formes et de motifs, cryptage, classification, ...
- traitement du signal : traitement de la parole, identification de sources, filtrage, classification, ...
- contrôle : diagnostic de pannes, commande de processus, contrôle qualité, robotique, ...
- optimisation : allocation de ressources, planification, régulation de trafic, gestion, finance, ...
- simulation : simulation boîte noire, prévisions météorologiques
- classification d'espèces animales étant donnée une analyse ADN
- modélisation de l'apprentissage et perfectionnement des méthodes de l'enseignement
- approximation d'une fonction inconnue ou modélisation d'une fonction connue mais complexe à calculer avec précision
Description et modèle d'un neurone
Un neurone est une unité de calcul. Elle peut comporter 1 ou plusieurs entrèes et une sortie calculé (rien n'empèche de connecter lasortie vers d'autres neurones, cela ne fait quand même qu'une sortie).
- Chaque entrée (noté x) peut varié de 0 à 1, (-1 à 1 avec fonction sigmoïd) , la sortie idem
- Chaque entrée a un poids (noté W), valeur qui renforce plus ou moins la valeur d'entrée (pour imagé).
- Le resultat du calcul du neurone est autre que la somme des produits de toutes les entrées et de poids, le tout passé par un "filtre" que l'on appel fonction d'activation.
On pourra noté le resultat comme ci : y=Factivation ( ∑ xn x Wn )
(la notation n'est pas pure mathématique, certains vont grincer des dents, mais je vulgarise comme dis plus haut)
la fonction f(x) d'activation peut etre une fonction
- à seuil, resultat binaire, exemple si f ∑ >0.5 alors renvoi 1 , sinon 0, bien pour le binaire, mais pas super pour faire de l'approximation
- à Sigmoîd (on utilisera plutot ce genre de fonction)
- à tangante hyperbolique
Pour plus d'infos :
- https://fr.wikipedia.org/wiki/Neurone_formel
- le perceptron avec code en C et Pyton : https://fr.wikipedia.org/wiki/Perceptron
Vidéos sympa explicative (en Québécois)
L'apprentissage
Utilisé comme cela, on se doute bien qu'on ne peut avoir de résultat, on a des états entrée, on peut connaitre des états de sortie(tous ou une partie, voir aucun), mais pour les poids W, mystère. Il faut bien les initialiser à quelque chose pour que la magie opère!
C'est donc le but de l'apprentissage. Il faut apprendre à un neurone des resultats en fonction de ses entrèes. Le but consiste à faire une liste comme sur un tableau excel des entrées et des sorties, d'énumerer tous les cas possibles connus et d'envoyer le tout à apprendre.
A chaque phase(valeur + boucle suivant la precision d'erreur) d'apprentissage le neurone va mettre à jour les poids de chaque entrèe.
Exemple d'algortihme d'apprentissage : (cliquez sur l'image pour aller sur le site : https://tanmayonrun.blogspot.fr/2011/07/single-layer-perceptron-learning.html)
Limitation
L'utilisation d'un neurone est très limité, c'est pour cela qu'on l'associe à d'autres neurones pour créer un RNA.
C'est très bien pour faire des choses basiques, calcul binaire, comparaison, mémoire, decision "linéaire"... mais pas pour des problèmes plus complexes
Pourquoi? car un neurone est un peu "binaire" il ne peut séparer que 2 ensemble d'entrées/sortie, voir le graphe ci après.
LES RNA
Un reseau de neurones artificiel (RNA) est organisé d'une ou plusieurs couches de neurones. Ces couche neurones sont connectés entre elles, suivant plusieurs topologies differentes, chaque couche comportant plusieurs neurones.
Neurones biologiques
Modèle de reseau de neurones artificielles
un noeud = un neurone | Wn = poids
Utilisation d'un RNA
...
à suivre