Spiking Neural Network
Un réseau neuronal à impulsions (SNN) transmet des informations sous forme d’impulsions chronométrées, à la manière des neurones biologiques, pour une IA neuromorphique à faible consommation. Au programme : neurones et entraînement.
Un réseau neuronal à impulsions (SNN) est un réseau neuronal dont les neurones communiquent par des événements discrets de type tout ou rien, appelés impulsions, qui se rapprochent du mode de signalisation des neurones biologiques. Chaque neurone accumule les impulsions entrantes dans un potentiel de membrane interne qui décroît lentement, et n’émet sa propre impulsion que lorsque ce potentiel franchit un seuil. L’information réside dans les neurones qui s’activent et le moment où ils le font : les SNN traitent ainsi les données à mesure qu’elles arrivent et ne calculent que lorsqu’une impulsion se produit. Cette parcimonie événementielle les rend intéressants pour l’IA en périphérie à faible consommation sur des puces neuromorphiques, et les rend naturellement adaptés aux caméras événementielles, qui signalent elles aussi les changements sous forme d’événements asynchrones. En 1997, Wolfgang Maass a décrit les SNN comme la troisième génération de modèles de réseaux neuronaux, après les unités à seuil et les réseaux à activations continues.
Fonctionnement des neurones à impulsions#
Le modèle le plus utilisé est le neurone à intégration et décharge avec fuite (LIF). À chaque pas de temps, son potentiel de membrane diminue d’une fraction fixe, les impulsions d’entrée pondérées sont ajoutées et, si le potentiel atteint le seuil, le neurone émet une impulsion puis se réinitialise. Un neurone recevant une entrée faible n’atteint jamais le seuil, tandis qu’un neurone recevant une entrée forte s’active souvent : la fréquence de décharge encode donc l’intensité de l’entrée. La simulation ci-dessous alimente trois neurones LIF avec différents courants d’entrée constants :
import torch
# Three leaky integrate-and-fire neurons, each driven by a constant input current
current = torch.tensor([0.15, 0.3, 0.6])
decay, threshold = 0.8, 1.0 # fraction of potential kept per step, firing threshold
potential = torch.zeros(3)
spike_counts = torch.zeros(3)
for step in range(20):
potential = decay * potential + current # leak, then integrate the input
spikes = (potential >= threshold).float() # fire where the threshold is crossed
potential = potential * (1 - spikes) # reset neurons that fired
spike_counts += spikes
print(f"Spikes in 20 steps: {spike_counts.tolist()}")Le code affiche Spikes in 20 steps: [0.0, 4.0, 10.0]. Avec une entrée de 0.15, le potentiel se stabilise à 0.15 / (1 − 0.8) = 0.75, sous le seuil : ce neurone ne s’active donc jamais. Une entrée de 0.3 produit 4 impulsions, et une entrée de 0.6 franchit le seuil tous les deux pas, pour un total de 10 impulsions. Des bibliothèques comme snnTorch proposent ce type de couches LIF sous forme de modules PyTorch pouvant être entraînés sur GPU.
Encodage de l’information dans les impulsions#
Les données doivent être converties en impulsions pour qu’un SNN puisse les exploiter, et le choix du codage influe à la fois sur la précision et sur la vitesse :
- Codage par fréquence : Une valeur devient une fréquence de décharge, comme dans la simulation ci-dessus. Cette méthode est robuste, mais nécessite de nombreux pas de temps pour représenter précisément une valeur.
- Codage temporel : Une valeur est représentée par le moment où une impulsion se produit, par exemple des impulsions plus précoces pour les pixels plus lumineux ; l’information est ainsi transmise avec très peu d’impulsions.
- Capteurs événementiels : Les caméras de vision neuromorphique produisent un événement semblable à une impulsion chaque fois que la luminosité d’un pixel change, avec une résolution temporelle à la microseconde et sans fréquence d’images fixe, de sorte que leurs données peuvent alimenter directement un SNN.
Entraînement des SNN#
Une impulsion est une fonction en escalier dont la dérivée est nulle presque partout : la rétropropagation standard ne peut donc pas propager les gradients à travers elle. Trois approches permettent de contourner ce problème. La conversion de RNA en SNN entraîne un réseau classique avec des activations ReLU, puis associe chaque activation à une fréquence de décharge. L’entraînement par gradient de substitution conserve l’impulsion abrupte lors de la propagation avant, mais remplace sa dérivée par celle d’une fonction lisse lors de la rétropropagation ; le modèle est ensuite entraîné par rétropropagation à travers le temps, comme un réseau neuronal récurrent (RNN). La plasticité dépendante du temps d’impulsion (STDP) est une règle locale inspirée de la biologie qui renforce une synapse lorsque l’impulsion d’entrée précède l’impulsion de sortie ; elle apprend sans étiquettes. La plupart des SNN récents à haute précision sont entraînés directement avec des gradients de substitution, qui nécessitent beaucoup moins de pas de temps que les réseaux convertis ; la conversion reste la voie la plus simple à partir d’un modèle existant.
Matériel neuromorphique#
Les SNN économisent le plus d’énergie sur les puces conçues à cet effet. Les processeurs neuromorphiques placent la mémoire à proximité de nombreux petits cœurs, communiquent par messages d’impulsions et ne calculent qu’à l’arrivée d’impulsions ; comme celles-ci sont binaires, chaque événement synaptique nécessite une addition plutôt qu’une multiplication. TrueNorth d’IBM (2014) regroupait un million de neurones sur une seule puce, SpiNNaker de l’Université de Manchester utilise de vastes réseaux de cœurs ARM, et Loihi 2 d’Intel alimente Hala Point, un système de recherche de 2024 doté de 1 152 processeurs Loihi 2 et de 1,15 milliard de neurones. Sur les GPU classiques, conçus pour les calculs matriciels denses, les SNN sont généralement plus lents que les réseaux conventionnels équivalents.
SNN et réseaux neuronaux conventionnels#
- Signaux : Les réseaux conventionnels, notamment les réseaux neuronaux convolutifs (CNN) et les Transformers, transmettent des valeurs continues à chaque neurone au cours d’une seule propagation avant. Les SNN transmettent des impulsions binaires sur de nombreux pas de temps, et la plupart des neurones restent silencieux à tout moment donné.
- Précision : Les réseaux conventionnels restent en tête des benchmarks d’images standard, et les SNN ont surtout réduit l’écart grâce à l’entraînement par gradient de substitution et à des architectures reprises des modèles conventionnels.
- Efficacité : Sur du matériel neuromorphique, les SNN consomment beaucoup moins d’énergie avec des entrées parcimonieuses et événementielles, comme les flux de caméras événementielles et l’audio toujours actif.
Applications#
- Vision événementielle et robotique : Dans une étude de 2024 publiée dans Science Robotics, des chercheurs de TU Delft ont fait voler un drone doté d’un réseau de vision et de commande entièrement à impulsions sur Loihi d’Intel, qui convertissait les données brutes d’une caméra événementielle en commandes de mouvement à 200 Hz.
- Détection en continu : La détection de mots-clés, la reconnaissance gestuelle et la détection d’anomalies dans les capteurs bénéficient des SNN, qui consomment presque aucune énergie en l’absence de changement.
- Détection d’objets : SpikeYOLO, un détecteur à impulsions d’ECCV 2024 créé par Xinhao Luo, Man Yao et leurs collègues, s’appuie sur la base de code Ultralytics et simplifie l’architecture Ultralytics YOLOv8 à l’aide de blocs commandés par les impulsions. Il atteint 48,9 % de mAP50-95 sur COCO avec un entraînement à valeurs entières et une inférence commandée par les impulsions.










