---
title: 4 - Modélisation d un cerveau
tags: ia, data
robots: noindex, nofollow
author: Julien Noyer
---
# Modélisation d'un cerveau : historique et concepts de base

Les travaux de [Frank Rosenblatt](https://en.wikipedia.org/wiki/Frank_Rosenblatt) sur les réseaux de neurones en **1958** ont ouvert la voie de la recherche en intelligence artificielle, mais ces travaux n'étaient que très peu suivi compte tenu des faibles puissances de calcule de l'époque, ils ont néanmoins répondu à une **volonté scientifique de découvrir le fonctionnement du cerveaux**.
Nous avons aujourd'hui la puissance de calcule nécessaire, mais la volonté de découvrir le fonctionnement a été **su-plantée par celle de vouloir copier le cerveau**. Cela semble tentant mais c'est une erreur de jugement, si la machine peut à l'aide d'hyperplans trouver un résultat elle doit aujourd'hui les analyser un par un quand **un cerveau active tous les neurones de son réseau au même instant**.
---
<br><br><br>
# La puissance de calcule
En 1958 [Frank Rosenblatt](https://fr.wikipedia.org/wiki/Frank_Rosenblatt) ne pouvait qu'imaginer une machine capable d'effectuer autant d'opération qu'un cerveau humain, mais les machines d'aujourd'hui et les avancées techniques sur la mise en place de neurones informatique rendent son rêve envisageable.

A l'époque donc créer un ordinateur intelligent était inaccessible simplement pour une question de puissance matériel mais n'était pas pour le moins théorisable avec les données scientifiques sur le cerveau dont on disposait :
- **Poids** : 1.4kg
- **Puissance** : +/- 1OO hertz
- **Nombre de neurones** : 86 milliards
- **Nombre de connexions synaptiques par neurone** : 10 000/seconde
- **Nombre d'opérations possibles par neurone** : 12
Une fois ces données établies et validées, il est simple de définir la puissance du cerveau avec le calcule suivant :
- 86G x 10K x 100 Hertz = 86 peta-Connexion/seconde
- 86PC/s x 12 = 1 exa-flops/seconde
<br>
> 1 peta = 1 milion de millard<br>
> 1 exa = 1 trillion (1 millard de millard)
---
<br><br><br>
# Comprendre le fonctionnement du cerveau
La création est avant tout nourrie par l'observation, pour créer un neurone artificiel il faut donc dans un premier temps observer le comportement d'un neurone humain. Les recherches scientifiques ont depuis longtemps défini que les neurones permettent d'analyser le monde qui nous entours via des connexions synaptiques.

L'image ci-dessus représente les [connexions synaptiques](https://fr.wikipedia.org/wiki/Synapse) entre les neurones d'un cerveau humain à un instant "T", ce même instant qui nous permet de reconnaitre le chiffre "2". Imaginer reproduire le même schéma avec un réseau de neurones est possible grâce à l'élaboration d'algorithmes complexes et l'utilisation de calculateurs puissants.
---
<br><br><br>
# Fonctionnement d'un neurone artificiel
Comme dans le cerveau humain, un neurone informatique a pour fonction de calculer un résultat, selon des données en entrée que nous allons lui enseigner avec une méthode spécifique. Nous reprenons les données du projet [MNIST](https://fr.wikipedia.org/wiki/Base_de_données_MNIST) et les hyperplans précédemment définis pour comprendre la mise en place d'un tel système.

Nous installons sur un neurone spécifique, le ou les hyperplans qui permettent de reconnaitre un chiffre en particulier, le "0" dans l'exemple ci-dessous et nous l'entrainons à reconnaitre des nouvelles images.
---
<br><br><br>
# Configurer un neurone
L'algorithme qui va permettre de définir l'hyperplan à nécessairement besoin d'analyser des paramètres et comme pour toutes fonctions il est possible d'ajuster ces paramètres afin de l'optimiser.

Dans notre cas lorsqu'un nous entrainons notre neurone avec des images de références, nous lui permettons d'identifier plus efficacement l'image en modifiant légèrement les formules de calculs utiliser dans notre algorithme.
Ce mode opératoire se rapproche du métier de mécanicien qui va par une suite de réglage va permettre d'optimiser la puissance du moteur. Où plus proche du sujet qui nous concerne, à celle de [Alan Turing](https://fr.wikipedia.org/wiki/Alan_Turing) lorsqu'il a utilisé [Bombe](https://fr.wikipedia.org/wiki/Bombe_(électromécanique)), l'ordinateur qui lui a permis de décrypter le [code Enigma](https://fr.wikipedia.org/wiki/Enigma_(machine)) ou faire des [recherches sur la biologie théorique](https://www.futura-sciences.com/sciences/actualites/chimie-structures-turing-biologie-synthetique-34072/).

---
<br><br><br>
# Tester des neurones artificiels
Notre neurone est connecté à **chacun des pixels de l'image** afin de calculer la valeur du noir de chaque pixel. Une fois l'image analysée le neurone à créer **un hyperplan de cette nouvelle image** qu'il est alors capable de **comparer** avec celui qu'il a en **référence**.

---
<br><br><br>
# Créer un hyperplan par critères d'évaluation
Pourquoi ne faire reconnaitre que la valeur du noir pour les chiffres alors que l'épaisseur du trait ou l'angle des chiffres peut nous donner des informations importantes ? Tout comme les neurones d'un cerveau humain nous cherchons à **faire travailler en parallèle plusieurs algorithmes** pour nous permettre d'**affiner nos réponses**.

Dans cette démonstration il faut prendre en compte que pour chaque neurone il faudra ajuster ou tout du moins configurer tous les paramètres nécessaires à la création des hyperplans. Cette démarche théorique nous permet de comprendre qu'en plus d'une méthode complexe de mise en place il faut ajouter un temps de paramétrage exponentiel.
---
<br><br><br>
# Créer des couches de neurones
Avec des neurones informatiques **entraînés à travailler ensemble** pour calculer un résultat nous nous rapprochons du fonctionnement d'un cerveau humain mais **nous n'avons pour le moment que trois neurones** mais suffisamment de principe pour **passer à une échelle supérieure**.

En étant capable de **découper les calcules** nous permettant de reconnaitre un chiffre nous pouvons imaginer un système en réseau de neurones qui seraient capables d'**effectuer des calcules en parallèles sur une même image**.
Cette mise en parallèle des calcules nous permet de mettre en place un **réseau de neurones à 3 couches** ce qui est très loin du [cortex cérébral](https://fr.wikipedia.org/wiki/Cortex_c%C3%A9r%C3%A9bral) d'un cerveau humain dont le réseau de neurone ne correspond qu'à une des **3 à 6 couches** qui le compose.

Loin de vouloir battre le calculateur de [Frank Rosenblatt](https://fr.wikipedia.org/wiki/Frank_Rosenblatt), nous restons sur une infrastructure légère de 410 neurones qui demande déjà une grande somme de calcule :
- **784 données** en entrée
- **410 neurones**
- **3 couches** successives
- **266 200 connexions** entre les neurones
---
<br><br><br>
# Créer un réseau de 86 milliards de neurones artificielles

Nous pourrions décliner cette démonstration sur plusieurs couches de neurones ou sur des milliards de neurones pour prouver théoriquement la possibilité que nous avons de dépasser la puissance de calcul d'un cerveau humain que nous n'aurions pas pu pour autant démontrer qu'une machine soit capable d'apprendre.
Les concepts que nous avons déclinés s'oriente sur le principe de classification en prenant pour point de départ des données organisées, bien souvent par une action humaine. Ces méthodes d'apprentissage supervisé donnent de très bons résultats dans différentes industries, mais arrivent à un point de rupture face à des problèmes d'identification d'images complexes, car mettre en place et tester ces méthodes prendraient un temps trop long.

Nous avons néanmoins aujourd'hui des processeurs graphiques - ou [GPU](https://fr.wikipedia.org/wiki/Processeur_graphique) - à la force de calcul impressionnante et il serait dommage de laisser cette puissance à la simple utilisation de carte graphique quand on peut y installer un réseau de neurones artificiels. Que faire alors, pouvons-nous conserver cette méthode d'apprentissage ?
---
<br><br><br>
# Ressources

Index des liens vers les sujets traités dans ce document :
- **Frank Rosenblatt** https://en.wikipedia.org/wiki/Frank_Rosenblatt
- **Connexions synaptiques** https://fr.wikipedia.org/wiki/Synapse
- **MNIST** https://fr.wikipedia.org/wiki/Base_de_données_MNIST
- **Alan Turing** https://fr.wikipedia.org/wiki/Alan_Turing
- **Bombe** https://fr.wikipedia.org/wiki/Bombe_(électromécanique)
- **Code Enigma** https://fr.wikipedia.org/wiki/Enigma_(machine)
- **Biologie théorique** https://www.futura-sciences.com/sciences/actualites/chimie-structures-turing-biologie-synthetique-34072/
- **Cortex cérébral** https://fr.wikipedia.org/wiki/Cortex_c%C3%A9r%C3%A9bral
- **GPU** https://fr.wikipedia.org/wiki/Processeur_graphique