Sauter au menu Sauter au contenu
PraedictIA

Comment fonctionnent les réseaux de neurones ?

Les différentes variantes de réseaux de neurones artificiels répondent à des exigences et à des besoins différents :

  • La rapidité d’exécution : certains cas d’usage requièrent une inférence et une réponse instantanée (p. ex. les véhicules autonomes, la détection des défauts de fabrication sur une chaîne de production, etc.) ;
  • Les restrictions en termes de mémoire de stockage, de mémoire volatile ou de capacité computationnelle : par exemple, l’application, sur un appareil portatif, d’un algorithme basé sur les réseaux de neurones artificiels, exige des caractéristiques totalement différentes de celles d’un environnement d’exécution infonuagique. Les appareils portatifs possèdent un espace de stockage limité, une mémoire volatile restrictive (pour ne pas épuiser toute la pile) et une capacité de calcul bien moindre que celle de la moyenne des environnements de développement disposant généralement d’une forte capacité de calcul ;
  • La nature des données utilisées : les données que les réseaux de neurones devront gérer définissent l’architecture des réseaux de neurones artificiels et les approches nécessaires à leur entraînement.

Les défis reliés à la création et à l’utilisation des réseaux de neurones

Plusieurs défis relèvent de l’utilisation des réseaux de neurones. L’un d’eux concerne les développeurs en début d’expérience, soit le choix des réseaux de neurones artificiels pour résoudre un problème donné. Il est possible de préférer une catégorie d’architecture de réseaux de neurones particulière selon le type de données à traiter (données temporelles, données discrètes, etc.) ou selon le type de problèmes à résoudre (régression, regroupement, etc.). Néanmoins, il n’existe aucune approche formelle permettant de déterminer au préalable et avec justesse le type exact de réseaux de neurones artificiels à utiliser. La création d’un modèle apprenant à base de réseaux de neurones est avant tout une approximation, puis un cycle d’essais-erreurs.

Il est aussi difficile de prédire avec exactitude la performance d’un réseau de neurones avant d’avoir fait quelques itérations par le biais des données exemples.

Le mode de fonctionnement

Il existe plusieurs types de réseaux de neurones artificiels et une multitude d’approches et de stratégies pour les entraîner. En voici les principales étapes :

  1. La préparation des données : chaque type de réseau de neurones possède une architecture particulière :
    • La distribution des neurones dans le réseau ;
    • Le nombre et le type de couches de neurones ;
    • Le type de liaisons entre les neurones. Dans certains types de réseau de neurones, tous les neurones sont liés entre eux et dans d’autres, les neurones sont partiellement liés ;
    • La nature même des données : données temporelles, etc ;
    • Le format des données : données visuelles, transactionnelles, etc.

    Les données destinées à être traitées au sein d’un réseau de neurones doivent toutes être formatées afin d’être correctement traitées.

  2. L’initialisation du réseau de neurones : les neurones de ce réseau sont liés par des liaisons ayant des valeurs appelées « poids », c’est-à-dire des valeurs initialisées d’une manière aléatoire lors de la création du réseau de neurones. Entraîner un réseau de neurones réfère à l’utilisation de données historiques (données d’entraînement) pour raffiner au fur et à mesure les poids durant la phase d’entraînement.

  3. La propagation vers l’avant (forward propagation) : dans un processus d’apprentissage supervisé, les données d’entraînement consistent en une collection de données constituée de couplets de « données » et de « résultat attendu », p. ex. image d’un chat couplée à l’étiquette « chat », image d’un chien couplée à l’étiquette « chien », image d’un ballon couplée à l’étiquette « ballon ».

    Durant la phase de propagation vers l’avant, les données (p. ex. les images du chat) seront propagées dans le réseau de neurones depuis la couche d’entrée jusqu’à la couche de sortie, en passant par les couches intermédiaires. La couche de sortie détermine le résultat de sortie (output) du réseau de neurones (p. ex. le réseau prédit que l’image de chat devrait être classée dans la classe « chien » avec une certitude de 76 %). La conversion d’un signal d’entrée en un résultat de sortie est une opération appelée « fonction d’activation ».

  4. La propagation vers l’arrière : à la couche de sortie, le réseau de neurones artificiels avait attribué une étiquette « chien » à l’image de chat introduite dans sa couche d’entrée. Sachant que les données d’entraînement sont accompagnées des résultats attendus (ou les résultats exacts), le réseau de neurones sera capable de reconnaître que le résultat de la propagation vers l’avant est une erreur. L’objectif consiste à réduire cette erreur durant les prochaines itérations du réseau de neurones, ce qui revient à corriger une fonction d’erreur à travers un algorithme appelé « descente de gradient » (gradient descent), donc à corriger les erreurs du réseau de neurones au fur et à mesure de son entraînement. Ce même algorithme va donc mettre à jour les poids reliant les neurones afin de créer un schéma reliant chaque image en entrée au bon neurone de sortie (ou à la bonne réponse).

  5. La phase d’entraînement : une fois tous les mécanismes d’entraînement en place, il ne reste qu’à exécuter une multitude d’itérations en utilisant les données d’entraînement pour raffiner le réseau de neurones artificiels.

  6. La phase d’inférence : une fois entraîné, le réseau de neurones est prêt à être utilisé. Durant cette phase, il sera alimenté de données réelles dont on ignore probablement la réponse. S’il a bien appris, il devrait fournir une bonne réponse aussi souvent que possible.

Après une certaine période de temps, il est important de mettre à jour l’apprentissage du réseau de neurones en le réentraînant avec de nouvelles données.

Qu’est-ce qu’un réseau de neurones ?