Plan Analyse de l’architecture: couche L3 et L4: -> but en déduire la façon de s’interfacer avec la rétine du CEA -> comprendre comment un pseudo parallélisme et mis en œuvre au niveau de L3 ->comment L4 va scanner les sortie de L3-> on déduit de cela le «pattern» de scan des macrocellules Vision globale de l’application «apprentissage écriture»->architecture software python permettant: -la synthèse d’un jeu d’images binaires (lettres, chiffres,…) -l’extraction d’une base de «features» à partir du jeu d’images -l’émulation du système rétine (génération AER, pattern scan macrocellules,…) -l’apprentissage des «features» au niveau de L3 -l’apprentissage au niveau de L4 Point avancement actuel: -émulation portion rétine (32*32) -simulation d’une neurone de L3
Architecture réseau neurones (couche L3) Pattern de scan des macrocellules et scan pixel Buffer synchronie (9 bits) B U F E R PSP vers neuron 0 + RAM 0 (1) Seuil 0 D E M U X B U F E R PSP vers neuron 1 + FIFO RAM 1 Seuil 1 . Fréquence d’échantillonnage (mise à jour du potentiel post synaptique)d’un neuron deL3 en fct de la fréquence des données en entrée? Fin Fsys vers neuron 47 Contrainte: Le système admet au plus 1 donnée valide tous les 4 cycles (temps traitements DEMUX et temps lecture mémoire poids) =>Fsys>=4*Fin4*Tsys<=Tin (1): la mémoire RAM n’est pas RAZ avec le reset global
Architecture réseau neurones (couche L3) Le buffer de synchronie est un registre de «roue libre» initialisé sur le reset global Fenêtre scan buffer synchronie (9*Tsys) Macrocellule 0 Tsys (cycle horloge système) Fenêtre scan buffer synchronie (9*Tsys) Voisinage cellule 0 Macrocellule 1 1 Fenêtre scan buffer synchronie (9*Tsys) 8 9 Macrocellule 8 Fenêtre scan buffer synchronie (9*Tsys) Macrocellule 9
Architecture réseau neurones (couche L4) Buffer synchronie (48 bits) Fréquence d’échantillonnage (mise à jour du potentiel post synaptique)d’un neuron de L4 en fct de la fréquence des données en entrée? Bus_spikes_L3 (48 bits) B U F E R PSP + Seuil B U F E R PSP + . . Seuil B U F E R PSP + Seuil
Pattern de scan des macrocellules Pattern de scan macrocellules (round robin) ->0,1,2,3,………,47 7 8 15 Trame AER* Au vu de l’architecture De L3, on déduit le multiplexage Des macrocellules de la rétine qui sera mis en œuvre dans L2 L2 On travaille sur Une image statique (binaire) L3 (48 Neurones)
Pattern de scan d’une macrocellule Spike->pixel tON Scan de bas en haut et de droite à gauche pour générer un AER
Interface L2 –L3: trame AER 0,0 1,0 2,0 … 47,0 0,1 … 47,1 Tin Numéro macrocellule, Numéro pixel
Trame AER: lien format de trame avec le buffer de synchronie L3 La taille du buffer de va déterminer la fréquence de mise à jour du PSP On se met dans la configuration suivante: -on fournit une donnée tous les 6 cycles (Tsys)=> Tin=3*Tsys avec une donnée valide sur 2 La taille du buffer de synchronie est 9 bits -> taille fenêtre temporelle: 9*Tsys=3*Tin->potentiellement au plus 2 spikes par fenêtre (1 de la macrocellule associée, 1 de la macrocellule voisine) 3*Tin macrocellule 0 0,0 X X X macrocellule 1 (voisine) X 1,0 X X Il faut de préférence faire en sorte que la durée de la fenêtre de synchronie soit un multiple de la fréquence d’entrée car Le déphasage données/fenêtre restera constant ->il sera alors plus facile de déterminer l’évolution du PSP
Fonctionnement L3: Diagramme flux de données (comprendre le pseudo-parallélisme->à simuler) On choisit une configuration ds laquelle on fournit une donnée tous les 6 cycles Fenêtre scan synchronie (macrocellules+voisinage) 0,0 X X X ………………. 1 X 1,0 X X ………………. 2 X X 2,0 X ………………. 3 X X X 3,0 ………………. 0,0 X 1,0 . Tin=3*Tsys 47 47,0 Pour simplifier les choses n’est il pas préférable de neutraliser la synchronie car Cela va conditionner l’évolution du PSP et donc le temps de déclenchement
Fonctionnement L4: Diagramme flux de données 1 couleur=1 vecteur de spikes synchrones Tsys 47 63 Scan 47 neurones L3 L3 L4 (1 seuil commun)
Architecture software python: partie émulation rétine et L2 Génération AER (peut prendre en compte la scalabilité) Synthèse du jeu d’images Sélection macrocellules (16*16) À scanner (ROI (1)) (1): scalabilité processeur neuronal
Architecture software python: partie apprentissage L3 Synthèse du jeu d’images Extraction des motifs élémentaires pour décomposer une image Génération Pattern de spikes apprentissage 32*32 Apprentissage couche L3 (brian) Poids synaptiques
Architecture software python: partie validation L3 AER_L3_VHDL Comparaison pattern spike Pattern spike brian
Point avancement Pattern NS ROI+ Génération AER PSP + RAM poids B U F E R PSP + Seuil RAM poids Initialisation poids synaptiques pour reconnaître les pattern: NS,EO,…
Travail à faire Simulation de L3 sur une image globale: -Comprendre comment le pseudo-parallélisme est mis en œuvre? Apprentissage sur une neurone de L3 ou conservation de la configuration avec les 4 zones (4 features possibles, le fait de faire un apprentissage permet plus d’adaptabilité)
Fonctionnement L3 Modulation latence déclenchement 32*32 Δt Δt Δt Δt La couche L3 ajoute la temporalité c’est donc une sorte D’AER qu’on retrouve en sortie->Pb l’entrée de L3 n’est elle pas AER?
Question Quelle est la base de temps pour la mise à jour du potentiel post-synaptique? La mise à jour du potentiel post synaptique se fait en fonction de la fréquence d’entrée qui apporte les spikes au circuit. Il faut tenir aussi compte de la « bufferisation » pour la synchronie. Quelle est en nombre de cycles d’entrée la durée de la période de synchronie: -il faut regarder en fonction de la taille du registre de roue libre «shift_register» Concernant le pattern de spikes reçu par la neurone le bloc de synchronie va peut être l’altérer (du fait que le registre de roue libre est de taille 9 bits ce qui représente 2 cycles ¼ de la période de événements en entrée du processeur neuronal). Il faut faire un modèle python de la génération de pattern entre la couche 1 et 2.
Idée A partir du jeu de formes à reconnaitre, extraire les pattern élémentaires permettant de constituer une base pour la décomposition.
Apprentissage L4 Utilisation algorithme d’apprentissage supervisé par rétro-propagation du gradiant adapté au réseau de neurones à spike et au perceptron muti-couche Le but de SpikeProp est d’apprendre un ensemble de temps de déclenchement pour Un ensemble de pattern d’entrée. Le codage proposé est le suivant: pour les pattern de type A , la neurone affectée à A devra Être déclenchée en premier. Neurones affectée à ‘A’ Pattern entrée ‘A’ L4 (64 neurones-> 64 classes de pattern D’entrée) L3 (48)
Génération pattern entrée On aura 64 classes d’échantillons: échantillons pour ‘A’ En sortir de L3, les pattern de sortie des échantillons pour ‘A’ devront avoir un séquencement similaire (il faut en tenir compte pour la génération des «features» à partir de l’image globale) Pb potentiel pour la découpe des images en features (contrainte spatiales avec les zones de poids homogène) Il faut aussi garantir que les neurones de la couche L3 ne seront déclenchées qu’une fois (Nb spike par macrocellule)
Travail à faire -Simulation couche L3 pour valider le comportement d’une neurone: -génération «features»: OK -génération signaux initialisation poids: OK -benchmarking couche L3: en cours
-Travail sur la génération de l’image globale à partir des features définis de façon à générer des pattern de spikes cohérents par classe de caractère (ordre d’émission des spikes doit être similaire pour chacun des éléments de la classe) -constater si la «pseudo-bufferisation» est efficace (elle doit garantir la cohérence des pattern par classe de caractère) -Mis en œuvre de l’apprentissage avec un algorithme de rétro-propagation du gradiant. Le codage temporel mis en œuvre en sortie de L4 sera: l’instant de déclenchement le plus tôt.