Ich habe im vorherigen Artikel versucht, Brian2 zu verwenden, aber dieses Mal werde ich BindsNET verwenden, eine Software, die SNN implementieren kann.
SNN (Spiking Neural Network) ist der Neurophysiologie näher als das derzeitige Deep Learning, und das Lernen wird mithilfe einer Simulation der neuronalen Aktivität durchgeführt. SNN und BindsNET werden auch in [diesem Artikel] vorgestellt (https://qiita.com/arakiii/items/b076a5c9e57c08c49a9a).
GitHub:https://github.com/BindsNET/bindsnet Papier: https://www.frontiersin.org/articles/10.3389/fninf.2018.00089/full Dokumentation: https://bindsnet-docs.readthedocs.io/
Während NEURON und Brian2 hauptsächlich für Simulatoren verwendet werden, wird BindsNET hauptsächlich als Software für maschinelles Lernen verwendet. BindsNET basiert auf PyTorch und kann auch GPU verwenden. Es scheint, dass BindsNET nicht nur überwachtes und unbeaufsichtigtes Lernen implementieren kann, sondern auch verbessertes Lernen.
Die Umwelt ist Ubuntu 16.04 CUDA 10 Anaconda Python 3.6 ist.
pip install bindsnet
Sie haben es jetzt installiert. Die Version war 0.2.7.
Wenn dies jedoch unverändert bleibt, tritt beim Ausführen der Demo ein Fehler auf. Die Problemumgehung bestand darin, die Version von Pytorch zu ändern und auf pytorch == 1.2.0 neu zu installieren.
Laden Sie es zuerst mit dem Git-Klon herunter.
git clone https://github.com/BindsNET/bindsnet.git
Es gibt verschiedene Demos in bindsnet / examples /. Lassen Sie uns vorerst eine Demo des überwachten Lernens durchführen.
cd examples/mnist/
python supervised_mnist.py
Die Fertigstellung dauerte ungefähr 20 Minuten, aber es funktionierte. Ich konnte die GPU mit der Option --gpu verwenden, aber es wurde nicht schneller. (Eher etwas langsamer.) Ich war auch besorgt, dass das Testergebnis nicht sehr gut war.
Ich werde auch eine Demo des unbeaufsichtigten Lernens durchführen (Diehl & Cook).
python eth_mnist.py
Dies scheint mehrere Stunden zu dauern.
Weitere Demonstrationen umfassten selbstorganisierende Karten (SOM), Reservoir-Computing und erweitertes Lernen.
Gemäß der Dokumentation ist die Implementierungsmethode (1) Schaffung eines Netzwerks und (2) Definition von Lernregeln Es scheint zwei Dinge zu tun. Beim Erstellen eines Netzwerks werden LIF-Neuronen usw. als Schichten definiert und verbunden. Bei der Definition von Lernregeln legen wir Lernregeln wie das Hebb-Gesetz und das STDP-Gesetz für die Kopplung fest.
BindsNET kann die ODE der Nervendynamik nicht lösen, aber es scheint, dass das Lernen durch SNN leicht durchgeführt werden kann. Das maschinelle Lernen mit SNN wird derzeit noch in verschiedenen Entwicklungsbereichen untersucht, und BindsNET könnte eine wichtige Rolle spielen.
Recommended Posts