đ€ RĂ©seaux neuronaux pour les nuls
On en parle partout de nos jours : santé, informations, robotique, smartphone, analyse de photo, etc⊠Tout le monde veut en utiliser et pourtant, la plupart des gens ignorent réellement comment ça marche en dessous.
Je vais essayer de dâexpliquer et de faire comprendre ce sujet complexe et compliquĂ© en 10 minutes ! đ
Avant de rentrer dans le coeur du sujet, prenons lâexemple du fonctionnement dâun ordinateur classiqueâŠ
1 â De lâordinateur aux neurones
Un ordinateur a un fonctionnement assez simple de maniĂšre gĂ©nĂ©rale. On lui donne des donnĂ©es dâentrĂ©es (clavier, souris et autres pĂ©riphĂ©riques), il fait alors un certain nombre dâopĂ©rations et on peut enfin voir des donnĂ©es de sorties (image, vidĂ©o, impressionâŠ). Lâusage semble assez simple donc, mĂȘme si sa composition est un peu plus compliquĂ©e, mais elle reste logique !
On reviendra sur cet exemple de lâordinateur plus tardâŠ
A contrario, le cerveau humain est beaucoup plus complexe ! Les meilleurs scientifiques de notre monde ont encore des difficultĂ©s pour comprendre comment fonctionne lâintĂ©gralitĂ© de notre cerveauâŠ
MAIS, il y a un composant de base de ce fonctionnement : les neurones.
Votre cerveau a des milliards de ces neurones. Tous ces neurones sont connectĂ©s les uns avec les autres pour crĂ©er ce grand rĂ©seau neuronal. Ils Ă©changent ensemble grĂące Ă des impulsions Ă©lectriques quâon appelle synapses.
Cette masse de synapses permet alors Ă notre cerveau de pouvoir rĂ©flĂ©chir et dâavoir une conscience.
Un neurone possĂšde un potentiel dâaction. Il sâagit dâun pique dâĂ©nergie, sâil est au-dessus dâun certain seuil, alors il va dĂ©clencher une succession de dĂ©clenchement vers dâautres neurones.
Certains ingĂ©nieurs se sont inspirĂ©s de ce systĂšme pour nos ordinateurs pour crĂ©er des rĂ©seaux neuraux artificiels. LâidĂ©e est de crĂ©er des noeuds qui sont des connexions similaires aux neurones dans notre cerveau.
Pour quâun rĂ©seau de neurones artficiel puisse ĂȘtre utilisĂ©, on dĂ©clenche un noeud avec une donnĂ©e dâentrĂ©e et ce noeud va dĂ©clencher dâautres noeuds auxquels il est connectĂ©.
En pratique, on préfÚre organiser un réseau de neurones artificiels (ANN) en couche.
Vous vous rappelez de lâexemple du fonctionnement dâun ordinateur ?
On organise les rĂ©seaux neuraux avec une couche de neurones dâentrĂ©es et de sorties bien dĂ©finie. On dĂ©finit aussi des liens directs entre les noeuds pour savoir oĂč se dirige lâinformation câest-Ă -dire comment elle se propage.
Pour finir, on assigne des nombres diffĂ©rents sur nos connexions que lâon appelle âpoidsâ (ou âweightâ pour les anglophones) pour que certaines connexions soient plus forte que dâautres comme les vrais neurones.
Enfin, on a une couche de neurones cachés (hidden layer) entre ceux qui définissent les entrées et les sorties. Ces neurones vont ainsi traiter les données.
Maintenant, on comprends un peu pourquoi quand on tape âneural networkâ dans Google, on voit des images avec plein de cercles reliĂ©es entre eux.
2 â Comment prĂ©dire une donnĂ©e ?
Avant de sortir la boule de cristal, on doit se poser la question dans quel cas peut-on utiliser un réseau neural.
Il est admit que si le problĂšme est statistique, alors un rĂ©seau neural pourra le rĂ©soudre. Pour des problĂšmes plus complexes, on combinera cette technique avec dâautres algorithmes (algorithmes gĂ©nĂ©tiques par exemple) mais ça⊠on en parlera une autre fois !
Pour utiliser un rĂ©seau neural, on doit par un phase dâapprentissage. Prenons un exemple oĂč toutes les donnĂ©es ne reflĂštent pas rĂ©alitĂ©, mais admettons quâon ait fait un sondage et quâon souhaite un modĂšle de rĂ©seau de neurones pour prĂ©dire un rĂ©sultat.
Il existe 3 types dâapprentissages :
- Lâapprentissage supervisĂ©
- Lâapprentissage non supervisĂ©
- Lâapprentissage par renforcement
Ici, nous Ă©tudirons seulement lâapprentissage supervisĂ©.
Pour quâun rĂ©seau neural soit efficace, il faut lâentraĂźner et cela, avec un enemble de donnĂ©es classifiĂ©es.
Imaginons quâon veuille dĂ©duire la prĂ©fĂ©rence politique dâun futur Ă©lecteur ! On aurait dĂ©jĂ plein dâinformations, mais pour celles dont il manque un paramĂštre, que fait-on ? On utilise un rĂ©seau de neurones ! đ
Voici à quoi nos données peuvent ressembler :
Pour faire simple, si on peut rĂ©duire notre problĂšme Ă un tableau Excel alors celui-ci peut ĂȘtre rĂ©solu par un ANN.
Ici, on voudrait dĂ©terminer le parti politique dâun homme de 35 ans qui gagne 49 000⏠avec un haut niveau dâĂ©tude.
Avant de commencer, il y a un Ă©lĂ©ment Ă considĂ©rer : il a trois valeurs diffĂ©rentes pour lâĂ©ducation, deux pour le sexe, et trois pour les partis politiques. Parce quâun rĂ©seau neural ne comprend que les chiffres, nous devons traduit âHaut/Moyen/Basâ en deux chiffres qui reprĂ©sentent ces 3 Ă©tats :
- Haut : 0.0 | 1.0
- Moyen : 1.0 | 0.0
- Bas : 0.0 | 0.0
On peut appliquer ce principe aux autres attributs. En informatique, il y a un principe fondamental : la normalisation des données.
La question quâon pourrait se poser serait : âmais alors, pourquoi on a pas fait -1.0 ou 0.0 ou 1.0 sur un seul chiffre pour dĂ©finir ces 3 Ă©tats ?â. LĂ on rentre dans un autre problĂšme de lâinformatique qui mĂ©riterait un article trĂšs long (et trĂšs chiant) sur lâencoding. Encoder une donnĂ©e câest traduire la rĂ©alitĂ© en chiffre.
La phase de normalisation est la plus importante dans le processus de crĂ©ation dâun rĂ©seau neural, il permet de traduire notre rĂ©alitĂ© par des chiffres afin quâun rĂ©seau neural puisse le comprendre.
A lâinitialisation de lâANN, lâensemble de nos neurones ont une valeur alĂ©atoire.
AprĂšs une phase de Normalisation, de mise en place de notre rĂ©seau neural, et dâun apprentissage rĂ©ussi, voici ce Ă quoi cela pourrait ressembler :
Utilisation dâun rĂ©seau neural spĂ©cialisĂ© pour notre petit exercice[/caption]
On peut remarquer quâen âSortieâ : il y a trois valeurs. Il sâagit lĂ de probabilitĂ©s de probabilitĂ©s !
Techniquement, ces chiffres ne sont pas réellement des probabilités, mais on peut les interpréter comme tel. On peut donc lire :
- La probabilitĂ© dâĂȘtre de Gauche
- La probabilitĂ© dâĂȘtre de Droite
- La probabilitĂ© dâĂȘtre Autre
Comme il y avait 3 possibilitĂ©s sur le parti politique et quâon voulait obtenir ce dernier, on a logiquement 3 sorties qui correspondent Ă ces 3 possibilitĂ©s.
De fait, la valeur la plus forte remporte Ă lâinterprĂ©tation.
Simple, non ? đ
Cet exemple a pour but de dâexpliquer le fonctionnement global dâun ANN. Bien sĂ»r, il existe bien dâautres maniĂšres dâapprĂ©hender cet outil pour rĂ©soudre bien des problĂšmes ! On a vu quâune petite partie de ce qui se fait de mieux de nos jours.
3 â Comment se calcule un neurone ?
Maintenant, faisons un zoom sur un seul neurone. Maintenant quâon a observĂ© comment un ANN fonctionne, on va Ă prĂ©sent regarder comment on calcule un neurone.
Quand on cherche sur Google pour trouver des informations sur du âneural networkâ on va forcĂ©ment tomber sur WikipĂ©dia et lĂ on va nous parler de Perceptron.
On risques fort dâĂȘtre perturbĂ© pendant des jours Ă essayer de comprendre clairement ce que on lit, voire mĂȘme dâembrouiller lâesprit.
WikipĂ©dia ne permet pas encore de comprendre le fonctionnement dâun ANN (Artificial Neural Network), il y a trop peu dâinformations Ă la portĂ© de tous.
Je vais simplifier au maximum parce que le but câest de comprendre les concepts principaux ! DĂ©solĂ© pour les puristes.
Il existe deux types de neurones, concentrons-nous sur un seul type : le neurone produit scalaire. Lâautre type est le neurone de distance.
Pour simplifier, un neurone est un joli cercle, un âPerceptronâ. Il en existe de plusieurs types.
Un neurone doit retenir un chiffre pour pouvoir se multiplier aux autres. Jusque lĂ , câest logique, on a des cercles avec des chiffres quâon additionne et multiplie entre eux pour obtenir des probabilitĂ©s sur un problĂšme donnĂ©.
Comme jâai expliquĂ© prĂ©cĂ©demment, un neurone possĂšde une valeur et les connexions entre chaque neurone ont une valeur nommĂ©e âpoidsâ (ou âweightâ dans la littĂ©rature). Cela veut donc dire quâon va pouvoir utiliser ces nombres.
Voici un gif qui rĂ©sume lâidĂ©e gĂ©nĂ©rale, que lâon va Ă prĂ©sent dĂ©tailler :
Pour calculer un Perceptron, voici trois Ă©tapes toute simples :
- On multiplie un Perceptron et son poids en lâadditionnant aux autres :
Cela donne : (0.10 x 4.0) + (0.20 x -5.0) + (0.30 x 6.0) = 1.20
- Chaque Perceptron a un âfaux neuroneâ, câest-Ă -dire une constante qui est importante pour lâapprentissage.
Cela donne : 2.0 + 1.2 = 3.2
Pour plus dâinformations sur cette constante, dirigez-vous dans la littĂ©rature des ANN pour avoir davantage dâexplications.
- On utilise une fonction dâactivation (quâon verra dans la section suivante) afin dâavoir un seuil sur le rĂ©sultat prĂ©cĂ©dent et ce, par rapport Ă une courbe. Cette Ă©tape est la sauce secrĂšte des ANN.
Donc cela donne : Activation(3.2) = 0.73
Et voilĂ , on a la valeur de notre Perceptron (neurone).
Sans rentrer dans le dĂ©tail, il existe de nombreuses fonctions dâactivations, celle qui est assumĂ©e par dĂ©faut est la fonction sigmoĂŻde.
Cette fonction a pour but dâĂ©tablir un seuil dâune valeur oĂč le neurone est stimulĂ© ou pas. Câest comme un signal Ă©lectrique, plus il est fort et plus on peut stimuler la lumiĂšre dâune ampoule.
Cette fonction dâactivation va alors stimuler le potentiel dâaction dâun neurone et, sâil est au-dessus dâun certain seuil il pourra propager son potentiel.
Le processus nâest pas si compliquĂ© quand on admet certains postulats, lorsquâon dĂ©bute dans le sujet il vaut mieux Ă©viter de se poser trop de questions. Il existe diffĂ©rents types de neurones, notamment un qui offert une mĂ©moire Ă long terme permettant une plus grande prĂ©cision dans de nombreux cas dâintelligence artificielle.
4-RĂ©tro-propagation ou BackPropagation
Pour permettre un meilleur apprentissage dâun ANN, il faut un mĂ©canisme capable de corriger une erreur de prĂ©diction. Il sâagit lĂ de la piĂšce manquante de notre exemple puisquâon a vu Ă quoi ressemble un ANN, puis comment calculer un neurone, mais comment un ANN peut Ă©voluer sâil se trompe sur le rĂ©sultat final ?
Pour cela, on utilise un algorithme qui sâappelle la rĂ©tropropagation (du gradient). Cette propagation dĂ©marre de la derniĂšre couche (Sortie) vers la premiĂšre (EntrĂ©e). Lâobjectif est de modifier les poids de lâensemble des connexions entre les neurones.
Sans rentrer dans le dĂ©tail mathĂ©matique, prenons lâexemple dâun enfant que lâon gronde afin de lui faire comprendre que son comportement nâest pas appropriĂ©. Dans cet exemple, la rĂ©troprogapagation transmet Ă son rĂ©seau neural lâapprentissage suivant : quâil ne faut plus casser les vases de mamie.
Sur le rĂ©seau neural, durant la phase dâapprentissage, on va vĂ©rifier si le parti politique de notre exemple est correct. Sâil ne lâest pas, alors on va effectuer un calcul pour modifier le poids des connexions et la valeur des neurones prĂ©cĂ©dents. Ainsi, le neurone qui est le plus responsable de lâerreur sera susceptible dâĂȘtre modifiĂ© davantage.
Au fur et Ă mesure de lâapprentissage, le nombre dâerreurs diminue : lâapprentissage est donc fini. On peut enfin utiliser notre ANN et lâutiliser pour calculer des probabilitĂ©s sur un problĂšme donnĂ©.
5 â Dâautres sujets Ă voir
Le domaine des réseaux neuraux artificiels est un champ trÚs vaste. A ce propos, voici différents sujets à explorer :
- BackPropagation : la correction des erreurs dâapprentissage
- DiffĂ©rentes fonctions dâactivations
- Deux autres paradigmes dâapprentissage : non supervisĂ© et renforcĂ©
- DiffĂ©rents algorithmes dâapprentissage
- Algorithm génétique
- Deep Learning
- Machine Learning
- Lâintelligence artificielle
- RĂ©seau Neural RĂ©current
- etcâŠ
Lâapplication des ANN sur le traitement dâinformation peut apporter de nouvelles opportunitĂ©s.
- Que ce soit dans la santĂ©, oĂč on peut maintenant dĂ©tecter rapidement un cancer grĂące Ă un rĂ©seau DeepLearning entraĂźnĂ© Ă voir des cellules cancĂ©reuses.
- Que ce soit dans la robotique, oĂč un programme explicite ne sera plus nĂ©cessaire. A lâaide des algorithmes gĂ©nĂ©tiques, on entraĂźne une IA a utiliser ses moteurs dans un espace virtuel avant dâĂȘtre dĂ©ployĂ© dans son armature.
- Que ce soit dans lâimagerie, pour dĂ©terminer le nom dâune plante voire si elle est commestible.
- Que ce soit dans les statistiques, pour prédire les comportements de masses et éviter une catastrophe.
- Que ce soit dans une ville, pour prédire si une agression pourrait avoir lieu à un moment précis à un endroit donné.
Ou encore mieux, pour pouvoir avoir des ennemis plus intelligents dans nos jeux vidéo ! Si on peut entraßner Mario à finir un niveau, alors on peut aller encore plus loin !
Les ANN ont ouvert une autoroute à la résolution de problÚmes, les opportunités fleurissent sur tous les marchés.