J'ai essayé d'utiliser Brian2 dans l'article précédent, mais cette fois j'utiliserai BindsNET, qui est un logiciel capable d'implémenter SNN.
Le SNN (Spiking Neural Network) est plus proche de la neurophysiologie que l'actuel Deep Learning, et l'apprentissage est réalisé en utilisant la simulation de l'activité neuronale. SNN et BindsNET sont également présentés dans cet article.
GitHub:https://github.com/BindsNET/bindsnet Article: https://www.frontiersin.org/articles/10.3389/fninf.2018.00089/full Documentation: https://bindsnet-docs.readthedocs.io/
Alors que NEURON et Brian2 sont principalement utilisés pour les simulateurs, BindsNET sera principalement utilisé comme logiciel d'apprentissage automatique. BindsNET est basé sur PyTorch et peut également utiliser le GPU. Il semble que BindsNET puisse mettre en œuvre non seulement un apprentissage supervisé et non supervisé, mais également un apprentissage amélioré.
L'environnement est Ubuntu 16.04 CUDA 10 Anaconda Python 3.6 est.
pip install bindsnet
Vous l'avez maintenant installé. La version était 0.2.7.
Cependant, si cela reste tel quel, une erreur se produira lors de l'exécution de la démo. La solution de contournement était de changer la version de Pytorch et de la réinstaller sur pytorch == 1.2.0.
Tout d'abord, téléchargez-le avec git clone.
git clone https://github.com/BindsNET/bindsnet.git
Il existe différentes démos dans bindsnet / examples /. Pour le moment, nous allons lancer une démonstration d'apprentissage supervisé.
cd examples/mnist/
python supervised_mnist.py
Cela a pris environ 20 minutes, mais cela a fonctionné. J'ai pu utiliser le GPU avec l'option --gpu, mais cela ne s'est pas accéléré. (Plutôt un peu plus lent.) J'avais également peur que le score du test ne soit pas très bon.
Je vais également faire une démonstration d'apprentissage non supervisé (Diehl & Cook).
python eth_mnist.py
Cela semble prendre plusieurs heures.
D'autres démonstrations comprenaient des cartes auto-organisées (SOM), le calcul des réservoirs et un apprentissage amélioré.
Selon la Documentation, la méthode d'implémentation est (1) Création de réseau et (2) Définition de règles d'apprentissage Cela semble faire deux choses. Lors de la création d'un réseau, les neurones LIF, etc. sont définis comme des couches et connectés. Dans la définition des règles d'apprentissage, nous définissons des règles d'apprentissage telles que la loi Hebb et la loi STDP pour le couplage.
BindsNET ne peut pas résoudre l'ODE de la dynamique neuronale, mais il semble que l'apprentissage par SNN puisse se faire facilement. L'apprentissage automatique utilisant SNN fait encore l'objet de diverses études dans des domaines en développement, et BindsNET pourrait jouer un rôle majeur.
Recommended Posts