Deep Learning, heute eines der beliebtesten Gebiete im künstlichen neuronalen Netz, hat sich hinsichtlich seiner Genauigkeit bei Datensätzen als vielversprechend erwiesen. Wie ist es mit Spiking Neural Network zu vergleichen. Vor kurzem hat Qualcomm seinen nullten Prozessor für SNN vorgestellt. Daher habe ich mir überlegt, ob es einen Unterschied gibt, wenn stattdessen Deep Learning verwendet wird.
machine-learning
neural-networks
user3209559
quelle
quelle
Antworten:
Kurze Antwort:
Genau genommen beziehen sich "Deep" und "Spiking" auf zwei verschiedene Aspekte eines neuronalen Netzwerks: "Spiking" bezieht sich auf die Aktivierung einzelner Neuronen, während sich "Deep" auf die gesamte Netzwerkarchitektur bezieht. Im Prinzip gibt es also keinen Widerspruch zu einem spitzen, tiefen neuronalen Netzwerk (tatsächlich ist das Gehirn wohl ein solches System).
In der Praxis arbeiten die derzeitigen Ansätze für DL und SNN jedoch nicht gut zusammen. Insbesondere beruht Deep Learning, wie es derzeit praktiziert wird, typischerweise auf einer differenzierbaren Aktivierungsfunktion und kann daher diskrete Spike-Züge nicht gut handhaben.
Weitere Details:
Echte Neuronen kommunizieren über diskrete Spannungsspitzen. Beim Erstellen von Hardware hat Spiking einige Vorteile hinsichtlich des Stromverbrauchs, und Sie können Spikes wie Datenpakete (Address Event Representation oder VRE) weiterleiten, um die im Gehirn vorhandene Konnektivität zu emulieren. Das Dotieren ist jedoch ein lauter Prozess. Im Allgemeinen bedeutet eine einzelne Spitze nicht viel, daher ist es in der Software üblich, die Spikedetails zu abstrahieren und eine einzelne skalare Spitzenrate zu modellieren. Dies vereinfacht viele Dinge, insbesondere wenn Ihr Ziel maschinelles Lernen und nicht biologische Modellierung ist.
Die Schlüsselidee von Deep Learning besteht darin, mehrere Schichten von Neuronen zu haben, wobei jede Schicht auf der Grundlage der vorherigen Schicht immer komplexere Merkmale lernt. In einer Vision-Einstellung lernt beispielsweise die unterste Ebene einfache Muster wie Linien und Kanten, die nächste Ebene kann Kompositionen der Linien und Kanten (Ecken und Kurven) lernen, die nächste Ebene kann einfache Formen lernen und so weiter in der Hierarchie . Die oberen Ebenen lernen dann komplexe Kategorien (Menschen, Katzen, Autos) oder sogar bestimmte Instanzen (Ihr Chef, Ihre Katze, das Batmobil). Ein Vorteil davon ist, dass die Funktionen der untersten Ebene generisch genug sind, um auf viele Situationen angewendet zu werden, während die oberen Ebenen sehr spezifisch werden können.
Die kanonische Methode zum Trainieren von Spike-Netzwerken ist eine Form der Spike Timing Dependent Plasticity (STDP) , die Verbindungen basierend auf korrelierten Aktivitäten lokal verstärkt. Die kanonische Methode zum Trainieren eines tiefen neuronalen Netzwerks ist eine Form der Gradientenabstiegs -Rückausbreitung, bei der alle Gewichte basierend auf dem globalen Verhalten des Netzwerks angepasst werden. Gradientenabstieg hat Probleme mit nicht differenzierbaren Aktivierungsfunktionen (wie diskreten stochastischen Spitzen).
Wenn Sie sich nicht für das Lernen interessieren, sollte es einfacher sein, die Ansätze zu kombinieren. Man könnte vermutlich ein vorab trainiertes tiefes Netzwerk nehmen und nur den Feed-Forward-Teil (kein weiteres Lernen) als spikierendes neuronales Netz implementieren (vielleicht um es auf einen Chip zu setzen). Der resultierende Chip würde nicht aus neuen Daten lernen, sondern sollte die Funktion implementieren, für die das ursprüngliche Netzwerk trainiert wurde.
quelle
Die größte mir bekannte Anwendung von SNNs ist Spaun , dessen neuronale Netze mit dem Neural Engineering Framework und dem neuronalen Nengo-Simulator erstellt wurden .
Die Unterscheidung zwischen SNNs und Deep Learning, insbesondere in Spaun, ist eine Grauzone. Spaun verwendet modifizierte Deep-Learning-Techniken in seinem Bildverarbeitungssystem zur Ziffernerkennung. Im Wesentlichen wird eine Spitzenversion eines konstitutionellen neuronalen Netzwerks verwendet.
In jüngerer Zeit wurde die gleiche Technik zur Umwandlung von Deep-Learning-Ansätzen in Spike-Neuronen zur Verwendung in neuromorpher Hardware (wie Spinnaker und Brainstorm für geringere Latenz und höhere Energieeffizienz ) auf Convolutional Neural Networks angewendet .
Die Unterschiede gehen viel tiefer als das, was ich hier erwähnt habe (wie SNNs dynamische Systeme und andere nichtlineare Funktionen ohne Training approximieren können), aber leider gibt es keine einfache Möglichkeit, sie zusammenzufassen. Wenn Sie weitere Informationen wünschen, lesen Sie "Wie man ein Gehirn aufbaut" von Chris Eliasmith, um einen besseren Überblick darüber zu erhalten, wie SNNs zur Erstellung künstlicher Intelligenz verwendet werden.
quelle