Les principes de l'IA
Une intelligence répartie
1. Les grandes catégories
L’intelligence artificielle est un vieux fantasme de l’humanité, disposer d’une machine « pensante », c’est-à-dire d’un outil polyvalent capable de résoudre les problèmes à notre place.
Nous parlons toujours de machines, mais de machines capables d’imiter ce que nous pouvons faire. Plusieurs axes ont été explorés et continuent de l’être avec :
-
Les systèmes symboliques : effectuer des raisonnements logiques par des règles explicites.
-
Les systèmes connexionnistes : par imitation du cerveau et notamment des neurones.
-
Les systèmes évolutionnistes : avec les algorithmes génétiques, une bonne solution est « gardée en vie » et une mauvaise "meurt".
-
Les systèmes statistiques : tout repose sur des probabilités.
Nous allons principalement nous intéresser aux systèmes connexionnistes, domaine qui est probablement celui qui a fait un bond le plus important avec le deep learning (apprentissage profond) et dont l’usage tend à se généraliser partout avec l’arrivée des LLM (Large Language Models) comme OpenAI ChatGPT, Google Gemini, Claude d’Anthropic, « Le Chat » de Mistral AI…
Cette soudaine percée des IA dites génératives est directement liée à l’amélioration matérielle et notamment des GPU (Graphics Processing Unit), ces derniers à la base capables d’effectuer de nombreux calculs en parallèle pour des représentations graphiques s’avéraient aussi parfaits pour les types de calcul avec l’IA. Mais c’est également l’arrivée des Transformers, une couche de neurones dite d’attention capable d’améliorer la compréhension d’un texte qui a changé la donne avec les LLM.
2. Le neurone
a. Le neurone biologique
Dans ce chapitre, nous allons parcourir en détail le fonctionnement des réseaux de neurones, ces détails ne sont pas forcément indispensables à l’usage de l’IA, tout comme si vous effectuez du développement et que vous compilez un programme, vous n’avez...
Les différents apprentissages
1. La prédiction
a. Un problème linéaire
Dans l’exemple précédent, nous avions un neurone très simple qui pouvait prédire n’importe quel résultat pour la raison simple que la sortie souhaitée et l’entrée étaient linéaires (ou proportionnelles). Cela signifie que l’on pouvait déduire la sortie directement avec une seule entrée.
Si nous avions à représenter graphiquement dans un repère les différentes entrées (en abscisse) et sorties (en ordonnée), il serait très simple de constater ce que notre neurone peut arriver à faire.

Figure 8 - Une droite à trouver
En effet, dans la figure 8, nous comprenons très simplement que notre neurone doit trouver un poids qui lui permette de parcourir la droite ci-dessus représentant la division par 2 de l’entrée pour prédire n’importe quel résultat.
Si nous représentons notre neurone avec notre paramètre p1 initialement à 2, il aurait alors été graphiquement fait pour ne multiplier que par 2 avec une droite passant très au-dessus de la droite souhaitée.

Figure 9 - L’erreur graphiquement
Dans la figure 9, en pointillé, nous avons la prédiction de départ de notre neurone. Puis, dans la zone grise, nous avons l’erreur, c’est-à-dire l’écart entre le calcul effectué par le neurone et la valeur souhaitée. Notre but est donc qu’au cours des données d’entraînement, notre neurone apprenne à réduire cette erreur et donc que la zone grise soit la plus petite possible.
b. La régression linéaire
Nous sommes partis d’un problème très simple et linéaire mais, dans la réalité, cela sera rarement aussi simple, nous aurons des données et des sorties qui seront distribuées dans un espace donné.

Figure 10 - Des points un peu partout
Le but de notre neurone sera alors de pouvoir déterminer la droite qui sera caractéristique de l’ensemble des points (voir figure 10). C’est ce qu’on appelle une régression linéaire. Le but n’est plus alors de passer par chaque point exactement...
Couches de neurones
1. Principes
Nous avons vu le fonctionnement d’un neurone et les étapes qui ont été réalisées pour arriver à sa conception. Cependant, un neurone seul n’a pas beaucoup de capacité, il sait correctement effectuer une régression linéaire pour faire de la prédiction et nous pouvons également l’utiliser pour séparer deux ensembles et faire de la classification. Or, si on restait avec un seul neurone, l’IA n’aurait pas d’intérêt car ce principe est déjà « calculable » sans neurone, il est par exemple mathématiquement déjà possible d’établir directement une droite de régression à partir d’un ensemble de valeurs.
Pour que l’IA prenne vraiment sa place, nous allons nous appuyer sur quelque chose de beaucoup plus complexe que l’on appelle réseau de neurones en couches (layers en anglais). Chaque sortie d’un neurone peut maintenant devenir entrée d’un autre neurone. Par exemple en figure 23, nous avons pris 4 neurones.

Figure 23 - Un réseau de 4 neurones
Le résultat final de notre réseau devient maintenant interdépendant de tous les neurones qui le constituent. On considère qu’il est composé de 3 couches de neurone. La couche d’entrée (neurone 1), la couche cachée (neurones 2 et 3) et la couche de sortie (neurone 4) comme nous le voyons en figure 24.

Figure 24 - Une répartition en couches
Pour résumer :
-
La couche d’entrée : reçoit les données à analyser.
-
La couche cachée : apprend de son entraînement aux données.
-
La couche de sortie : fournit une réponse (modulée par la fonction d’activation).
Dans notre exemple en figure 23, nous avons positionné plusieurs entrées sur un seul neurone, nous pouvons parfaitement répartir cela différemment en n’ayant qu’une entrée par neurone (1, 2...) comme nous le faisons en figure 25.

Figure 25 - Une autre répartition
Il est important de comprendre qu’un neurone ne peut avoir qu’un seul résultat en sortie (nous avons vu le calcul effectué précédemment). Chaque sortie est en réalité...
Gestion de la perte
1. Principe
Jusqu’ici, nous avons vu un principe simple, le réseau de neurones est entraîné sur un jeu de données et lorsque nous constatons une divergence entre la réponse obtenue et la réponse souhaitée, nous appliquons une mise à jour des paramètres des neurones (poids et biais).
L’écart entre la réponse souhaitée et la réponse obtenue s’appelle la perte (loss en anglais).

Figure 32 - Une répartition trompeuse
Cette technique peut poser un problème d’efficacité, selon l’organisation de nos données, notre réseau de neurones peut converger rapidement vers une mauvaise solution. Par exemple, s’il se met à jour avec les premiers points à gauche de notre repère en figure 32, le réseau va s’éloigner d’une bonne estimation et il lui faudra alors plus de temps et de données pour revenir vers une meilleure délimitation d’un résultat.
2. Gestion stochastique
Jusqu’ici, à chaque perte, nous mettons à jour tous les paramètres des neurones. Mais pour éviter des sauts trop brutaux de valeurs, on va plutôt choisir de découper les données en lots (batch). Ainsi, on ne va calculer l’erreur que sur un ensemble de données en entrée et non pour chaque donnée. L’avantage étant que des valeurs qui seraient plus marginales n’impacteront plus autant le réseau.
Nous appelons cela une gestion stochastique de la perte.
Si nous définissons les données qui parcourent notre réseau au cours de son entraînement, nous avons pour i de 1 à n données.
(ei, si, ri) avec ei notre entrée, si notre résultat et ri la réponse attendue.
Si nous découpons notre problème en lot de taille m, donc nous aurons ( n / m )lots. On va considérer que chaque lot possède k données. Donc, nous pourrions considérer que la perte moyenne est pour i de 1 à k comme :
1/k * (∑ pertei)
Nous allons prendre un exemple plus concret, nous supposons que nous avons un échantillon avec des entrées, les résultats de notre réseau, les résultats attendus.
|
Entrée |
Résultat |
Résultat attendu... |