IA comment trouver le bon réseau neuronal ?

Un CV transparent et interactif

Comme évoqué dans les deux articles précédent :

un des principaux axes de recherche en IA sont les réseaux neuronaux.

Notre utilisation actuelle des réseaux en IA s’apparente un peu à celle de l’apprenti sorcier ou de la sélection naturelle : j’essaie un réseau pour répondre à une tache et si les résultats sont plutôt bons ou fiables, je valide celui-ci.

Mais que sait-on réellement de l’adéquation entre leurs architectures et leur performance à résoudre une tache?

Après avoir défini rapidement et simplement ce qu’est un réseau, nous allons voir comment la recherche mathématique tente de comprendre ou de faire un lien entre l’architecture d’un réseau et la tache que l’on souhaite résoudre.

Qu’est ce qu’un réseau neuronal

Les réseaux neuronaux ont été conçus, imaginés dans les années cinquante (le « Perceptron » de Frank Rosenblatt 1957) par mimétisme biologique. Ce n’est donc pas si récent que nous laisse croire le boom IA de ces 10 dernières années et c’est pour cela que j’ai déjà pu les étudier lors de ma maîtrise et de mon DEA

Comme leur nom l’indique, les réseaux neuronaux sont des modèles imitant le cerveau avec :

  • le neurone formel: automate qui calcule une sortie en fonction des entrées qu’il a reçus ;
  • des connexions entre les neurones : qui transportent les entrées et les sorties d’un neurone à l’autre.

Ces neurones artificiels peuvent être organisés en couche et reliés par couche ou tous reliés les uns aux autres (en étoile), voir même circulaire (les sorties redeviennent des entrées).

Fonctionnement d’un neurone

Pour mieux comprendre ce qu’est un neurone artificiel simplifions le au maximum en prenant comme exemple un neurone qui :

  • effectue la somme de ses entrées, dite fonction agrégante.
  • donne une sortie en fonction de la somme de ses entrées. Si celles-ci sont supérieures ou égales à 2 alors le neurone donne en sortie 1. C’est la fonction de seuillage ou d’activation.

Bien évidement les fonctions peuvent  être différentes :

  • de « somme » (nommée règle d’agrégation) :
    • somme pondérée,
    • distance pseudo-euclidienne
  • et « seuil » (la fonction de seuillage ou d’activation) :
    • La fonction sigmoïde,
    • La fonction tangente hyperbolique
    • La fonction de Heaviside
    • La fonction S (logique bayésienne)

Architecture des réseaux

Il nous faut maintenant placer les neurones cote à cote et les relier entre eux suivant une logique de circulation de l’information.

L’information peut alors circuler soit suivant des circuits divergents, convergents, réverbérants, parallèle…

On peut les organiser avec une couche d’entrée, une couche d’analyse (ou cachée) et une couche de sortie donnant des circuits très variés

En entonnoir :

On peut aussi concevoir des couches cachées convergentes alors que la sortie est divergente

Ou encore avec des neurones externes (de biais) :

Caractéristiques d’un réseau

Nous allons donc caractériser un réseau par :

  • son architecture :
    • Perceptron (multi couche ou non)
    • ou réseau totalement connecté
  • Le nombre de couches ou profondeurs
  • Le nombre de neurones par couche ou largeur
  • Les relations ou poids de chacune d’elle

Bien souvent on couple à ces caractéristiques à l’algorithme avec lequel le réseau apprend.

On leur donne alors des noms :

  • Adaptive heuristic critic (AHC)
  • Time delay neural network (TDNN)
  • Associative reward penalty (ARP)
  • Avalanche matched filter (AMF)
  • Backpercolation (Perc)
  • Artmap
  • Adaptive logic network (ALN)
  • Cascade correlation (CasCor)
  • Extended Kalman filter(EKF)
  • Learning vector quantization (LVQ)
  • Probabilistic neural network (PNN)
  • General regression neural network (GRNN)
  • convolutional
  • Brain-State-in-a-Box (BSB)
  • Fuzzy cognitive map (FCM)
  • Mean field annealing (MFT)
  • Recurrent cascade correlation (RCC)
  • Backpropagation through time (BPTT)
  • Real-time recurrent learning (RTRL)
  • Recurrent extended Kalman filter (EKF)
  • Additive Grossberg (AG)
  • Shunting Grossberg (SG)
  • Binary adaptive resonance theory (ART1)
  • Analog adaptive resonance theory (ART2, ART2a)
  • Discrete Hopfield (DH)
  • Continuous Hopfield (CH)
  • Chaos fractal
  • Discrete bidirectional associative memory (BAM)
  • Temporal associative memory (TAM)
  • Adaptive bidirectional associative memory (ABAM)
  • Apprentissage compétitif

Alors quel réseau choisir ?

Quelle est la meilleure architecture pour faire une tache ? Aujourd’hui comme je l’ai dit en introduction on fonctionne par essai – erreur et mimétisme. Pour la reconnaissance d’image le « convolution » semble le mieux marcher et d’ailleurs il s’inspire de la façon dont la rétine et le cerveau fonctionnent. Pour le texte et le langage c’est le récurrent (RCC)

Mais notre approche est très empirique…

Des mathématiciens se sont donc mis à la recherche les paramètres limites des dimensions des réseaux :

  • largeur (nb de neurone par couche)
  • profondeur (nb de couche)
  • et bien sur le nombre total de neurones d’un réseau (puissance de calcul nécessaire)

Le rapport largeur/profondeur

On sait depuis 1989 qu’en théorie un réseau d’une couche comportant toutes les connexions possibles peut répondre à toutes les demandes possibles…

Mais en pratique on ne sait pas l’implémenter facilement dès que le nombre de neurones devient important. Il est aussi très difficile de l’entraîner à donner les bonnes réponses…

Il faut donc plusieurs couches. Mais combien minimum ? Et avec combien de neurones minimum par couche ?

L’année dernière Rolnick et Max Tegmark du Massachusetts Institute of Technology ont montré que plus la profondeur augmentait moins on devait mettre de neurones par couche. Et que par conséquent on pouvait utiliser moins de neurones au total (puissance de calcul) pour la même tache.

En effet puisque c’est la relation entre les neurones qui est importante, on constate, mathématiquement que l’utilisation de 2 100 neurones en une couche équivaut à 210 neurones sur deux couches.

Selon Rolnick tout se passe comme ci la profondeur permettait d’associer le niveau inférieur dans une « synthèse ». Il trouve alors une similitude avec le fait d’exprimer quelque chose de compliqué par plein de choses simples.

Mais Johnson, mathématicien de l’Oklahoma State University, démontre en septembre 2018 qu’il y a une largeur minimum en dessous de laquelle on ne peut pas descendre.

Johnson a prouvé qu’un réseau de neurones échouera à la tâche lorsque la largeur des couches est inférieure ou égale au nombre d’entrées.

Application concrète

Imaginons que nous voulons classer des moutons suivant leur couleur (dans le cas des études de Jesse Johnson les moutons ont été teints avec des couleurs différentes.

Chacun des moutons peut être décrit avec trois entrées : une coordonnée « x » et un « y » pour spécifier sa position dans le champ et « c » pour sa couleur. Alors, dans ce cas, vous aurez besoin de trois neurones ou plus par couche pour résoudre le problème.

Cela nous permet donc de savoir par avance la puissance de calcul dont on a besoin pour résoudre une tache dont on connaît les paramètres d’entrée…

Pour continuer…

Nous sommes donc au début de la modélisation des réseaux et si nous avons fait des progrès l’année dernière quant à leur dimensionnement vis à vis de la tache à réaliser, l’impact de l’architecture du réseau ou des fonctions d’agrégation ou de seuillage utilisés reste inconnu…

Bibliographie pour des lectures approfondies

 

 

%d blogueurs aiment cette page :