đŸ€– RĂ©seaux neuronaux pour les nuls

David Roman
10 min readJun 3, 2017

--

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

Entrées -> Opérations -> Sorties (gif)

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.

Interaction entre neurones (gif)

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.

Entrées + Cachées + sorties + Poids (gif)

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.

Maintenant, on comprend un peu mieux cette image !

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 :

Comment trouver le parti politique à partir d’informations qui n’ont presque aucun rapport ?

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 :

Processus de calcul d’un Perceptron

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.

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.

--

--