Membrain-nn.de

Systemvoraussetzungen

  • Windows 7 / 8 / 10
  • 1,0 GHz CPU
  • 256 MB RAM
  • 30 MB HD

 

Mathematische Modellbildung

Das Neuronen- und Linkmodell von MemBrain ist so flexibel, dass vom einfachen, zeitinvarianten Feed-Forward-Netz bis hin zu Netzen mit diskret feuernden Neuronen, sowie beliebigen Rückkopplungen und Laufzeiten alles simulierbar ist. Auch direkte Rückkopplungen eines Neurons auf seinen eigenen Eingang sind möglich. 

Prinzipiell ist in MemBrain jedes Netz ein gültiges Netz. Durch die konsequent objektorientierte Umsetzung kann jedes einzelne Neuron und auch jeder einzelne Link (Link = Verknüpfung zwischen zwei Neuronen) in MemBrain unterschiedliche Eigenschaften haben. 

Links können beliebige logische Längen aufweisen, so dass echtes Laufzeitverhalten abbildbar wird.

Feed Forward  Netz Netz mit Rückkopplungen Chaotisches Netz mit ausgeprägten 
Linklängen und Laufzeiten

                                                Zum Vergrößern bitte auf die Bilder klicken.

Das exakte mathematische Modell für Neuronen und Links in MemBrain ist in der HTML-Hilfe zur Software dokumentiert.

verfügbare Lernalgorithmen

Momentan verfügt MemBrain über folgende Lernalgorithmen.

Überwachtes Lernen (auch für Autoencoder Sub-Netze und Convolutional Neural Networks):

  • Backpropagation (nur Vorwärtslinks werden trainiert)
  • Backpropagation mit Momentum (nur Vorwärtslinks werden trainiert)
  • Backpropagation mit Unterstützung für Rückkopplungslinks
  • Backpropagation mit Unterstützung für Rückkopplungslinks und mit Momentum
  • RPROP (Resilient Backpropagation) mit Unterstützung für Rückkopplungslinks
  • Levenberg-Marquardt (nur Vorwärtslinks werden trainiert)
  • Cascade Correlation mit Unterstützung für Rückkopplungslinks (basierend auf Backpropagation mit Momentum)
  • Cascade Correlation mit Unterstützung für Rückkopplungslinks (basierend auf RPROP)
  • Trial and Error mit Unterstützung für Rückkopplungslinks

Unüberwachtes Lernen:

  • 'Winner Takes it All' Algorithmus für SOMs ('Self Organizing Maps')

die MemBrain DLL

Die meisten Funktionen von MemBrain sind auch in einer DLL (Dynamic Link Library) verfügbar. Diese gibt es in zwei Ausführungen, 32 Bit und 64 Bit. 

Mit der MemBrain DLL können neuronale Netze, die mit MemBrain erstellt und trainiert wurden, in eigene Applikationen eingebunden werden, unabhängig von der verwendeten Programmiersprache. Außerdem bietet die DLL Funktionen um neue Netze von Grund auf zu erstellen oder auch bestehende Netze zu editieren. 
Die DLL unterstützt folgende Funktionen:

  • Laden einer beliebigen Anzahl neuronaler Netze zur selben Zeit
  • Zuweisen von Werten an die Eingangsneuronen der Netze
  • Ausführen von beliebig vielen Simulationsschritten
  • Zurücklesen der Ergebnisse von den Ausgangsneuronen der Netze
  • Erneutes Abspeichern der Netze in Dateien
  • Alle Funktionalitäten zum Trainieren der Netze, zum Erstellen, Laden, Importieren, Exportieren von Datensätzen und vieles mehr
  • Alle Funktionalitäten zum Erstellen und Editieren neuronaler Netze

Dadurch wird es möglich, neuronale Netze, die mit MemBrain erstellt wurden, auf einfache Weise in 
Produktivsysteme zu überführen, ohne dass MemBrain selbst dazu benötigt wird und ohne auf das TCP/IP Interface oder die Skript-Sprache von MemBrain zurückzugreifen. 
Außerdem können Applikationen entwickelt werden, die neuronale Netze an die jeweilige Aufgabenstellung angepasst dynamisch zur Laufzeit erstellen und/oder verändern.

Die MemBrain DLL ist im Installationspaket von MemBrain enthalten, sie wird bei der Installation in ein eigenes Unterverzeichnis kopiert. Im Download Bereich befindet sich ein Beispiel dafür, wie die DLL unter Excel VBA (Visual Basic for Applications) verwendet werden kann.

Für Java-Programmierer steht eine JNI Wrapper-DLL und eine zugehörige Java Klasse zur Verfügung, so dass die MemBrain DLL direkt von Java aus angesprochen werden kann. Die Java-Klasse enthält 
Kommentare, die erklären, wie die Dateien benutzt werden. Sowohl die Wrapper DLL als auch die Java-Klasse werden während der Installation automatisch in den DLL-Ordner der MemBrain-Installation kopiert. 

Für C# Anwender gibt es eine objektiorientierfte C# Wrapper Bibliothek, um die DLL zu nutzen (siehe Download Bereich).

Selbstverständlich kann die DLL auch unter C/C++ eingesetzt werden.

Eine ausführliche Dokumentation zur DLL findet sich in der zugehörigen Header-Datei "MemBrain_inc.h".

Automatische Code-generierung

MemBrain verfügt über einen Code-Generator, der aus einem aktuell geladenen neuronalen Netz wahlweise C oder C++ Code generiert, der mit jedem beliebigen C- bzw. C++ Compiler übersetzt und so in eigene Software (z.B. auf Embedded-Plattformen) eingebunden werden kann.

Vom einfachen Feed-Forward Netz bis zum rückgekoppelten Netz, das u.U. auch zeitvariante und/oder zufallsgesteuerte Elemente verwendet, kann alles im C-Code abgebildet werden.

Der Code für ein Netz besteht dabei aus einem festen Bibliotheksteil, der bei der Installation von MemBrain angelegt wird und zwei dynamisch für jedes Netz durch MemBrain erzeugten Dateien, einer Header- und einer Implementierungsdatei.

Die von MemBrain erzeugte Implementierungsdatei ergänzt die Bibliothek um netzspezifische Konstantendefinitionen. Die Header-Datei veröffentlicht einige wichtige Definitionen des Netzes und beinhaltet die Präprozessordirektiven, die den Bibliotheks-Code im Hinblick auf das generierte Netz optimieren. Dazu wird das Netz einer intensiven Analyse unterzogen, so dass nur die Teile der Bibliothek eingebunden werden, die wirklich benötigt werden. So erzeugt MemBrain stets Code, der exakt auf die im Netz benötigte Funktionalität zugeschnitten ist und auf diese Weise immer optimale Performanz bei minimalem Speicherbedarf bietet.

Der erzeugte C Code folgt einem 'Relaxed ANSI-C' Standard. Er ist dabei in allen wesentlichen Punkten ANSI-C konform, verwendet aber einige wenige Erweiterungen wie z.B. einzeilige Kommentare im C++-Stil. Der C++ Code verwendet bestimme Elemente der C++ Standardbibliothek wie z.B. Container (array). Im Hinblick auf die Einsetzbarkeit in Embedded-Systemen wird keine dynamische Speicherverwaltung verwendet.   

Der Code bietet die folgenden Möglichkeiten zum Einsatz des erzeugten Netzes:

  • Zurücksetzen und Initialisieren des Netzes
  • Zuweisen von Werten an die Eingangsneuronen des Netzes
  • Ausführen von beliebig vielen Simulationsschritten
  • Zurücklesen der Ergebnisse von den Ausgangsneuronen des Netzes
  • Bei Verwendung der C++-Variante: Einbinden beliebig vieler gleicher oder auch unterschiedlicher exportierter Netze.

Die erwähnten Code-Bibliotheken sind  im Installationspaket von MemBrain enthalten, sie werden bei der Installation in eigene Unterverzeichnisse kopiert. Die MemBrain Hilfe (über F1 erreichbar) enthält nähere Informationen zur Verwendung des Codes.

objektorientierte scriptsprache

MemBrain beinhaltet eine mächtige Skript-Sprache, die es erlaubt, häufig benötigte Operationen wie das Laden, Trainieren, Validieren und Speichern von Netzen zu automatisieren.

Weiterhin sind die meisten anderen Funktionen und Einstellungen von MemBrain über Skriptbefehle zugänglich. Deshalb stellen Skripte auch eine gute Möglichkeit zur Verfügung, MemBrain durch andere Software fernzusteuern oder auch auch Präsentationen zu erstellen, die neuronale Netze in Aktion zeigen.

MemBrain Skripte können auf vielfältige Art und Weise mit dem Benutzer interagieren. Dazu gehören Message-Boxen, Dialoge zum Öffnen und Speichern von Dateien, numerische und Text-Eingabefelder, Ausgaben im Trace-Fenster usw. 
Leistungsfähige mathematische Operationen sowie die umfangreichen Funktionen zum Dateizugriff erlauben es, MemBrain Skripte dazu zu verwenden, die Strategien zum Training und zur Validierung der Netze entsprechend den Vorstellungen des Benutzers zu optimieren. Zum Beispiel kann ein MemBrain Skript dazu benutzt werden, automatisch die besten Lernparameter und Netzkandidaten auszuwählen, basierend auf benutzerdefinierten Algorithmen.  

Weiterhin beinhaltet MemBrains Skriptsprache leistungsfähige Funktionen zum Erzeugen und 
Editieren von neuronalen Netzen. Damit steht auch der Entwicklung eigener evolutionärer Algorithmen 
zum Netzdesign auf Skriptbasis nichts mehr im Wege. 

Die MemBrain Skript-Sprache basiert auf der Scripting-Engine AngelScript, die eine C++/Java ähnliche Sprache mit strenger Typprüfung zur Verfügung stellt. Die Skripte werden von MemBrain vor der Ausführung  in sogenannten Byte-Code übersetzt, was eine optimale Ausführungsgeschwindigkeit sicherstellt.

MemBrain-Skripte können auf verschiedene Arten ausgeführt werden:

  • Manuell, über das Menü <Scripting> in MemBrain
  • Von der Kommandozeile, als Parameter zu MemBrain.exe
  • Durch ein spezielles Datei-Interface während MemBrain bereits läuft
  • Über den externen grafischen Quellcode Debugger von MemBrain

Detailierte Informationen über das Ausführen von Skripten enthält die Hilfe zu MemBrain.

Beispiele zu MemBrain-Skripten stehen im Download-Bereich zur Verfügung.

Quellcode Debugger für scripte

MemBrain verfügt über einen eigenen, leistungsfähigen grafischen Debugger für Scripte. Er bietet u.a. folgende Leistungsmerkmale.

    • Syntax highlighting
    • Leistungsfähiger Text Editor mit Blockeinrückung, Copy/Paste, Suchfunktion, Lesezeichen...
    • Compilieren, Bauen, Starten und Pausieren von Scripten aus dem Debugger heraus
    • Build Ausgabefenster: Direktes Navigieren über Compiler-Meldungen zum Source-Code via Mausklick
    • Debug Ausgabefenster
    • Variablenüberwachung
    • Grafische Breakpoints
    • Step Into, Step Over, Step Out
    • Anhängen des Debuggers an laufendes Script
    • Der Debugger kann auf der selben Maschine laufen wie MemBrain oder aber auf einem anderen Rechner innerhalb des LANs
    • Starten des Debuggers von MemBrain aus
    • Starten von MemBrain vom Debugger aus

Der folgende Screenshot zeigt den Debugger in Aktion:

Zum Vergrößern auf das Bild klicken

membrains automatische Netzanalyse

MemBrain muss nicht mitgeteilt werden, welche Netzarchitektur aufgebaut wird. Neuronen werden einfach in beliebiger Anzahl und an beliebigen Positionen platziert und ebenso beliebig verknüpft. Neben der Möglichkeit, Neuronen durch Ziehen einzelner Links zu verbinden, bietet MemBrain auch mächtige Editierfunktionen zum Einfügen tausender Links mit wenigen Mausklicks.

Die integrierte Netz-Analyse erkennt die logische Struktur des Netzes, wie z.B. Schichten und Rückkopplungen automatisch. Dies geschieht im Hintergrund wann immer die entsprechenden Informationen benötigt werden. Außerdem können diese Informationen auch visualisiert werden.

Beispielergebnis der Netzwerkanalyse

Zum Vergrößern auf das Bild klicken

 

Verschlüsselung

MemBrain verfügt über eine optionale, integrierte, passwortgesteuerte 256 Bit AES Verschlüsselung für Netze und Datensätze (Lessons). Auf diese Weise geschütze Dateien lassen sich von MemBrain und der MemBrain DLL ausschließlich mit dem korrekten Passwort entschlüsseln und öffnen.

Die angewandte AES Verschlüsselung stellt dabei eine der stärksten heute verfügbaren Verschlüsselungstechnologien dar.

Multi Core unterstützung

MemBrain bestimmt automatisch - abhängig von der erkannten Netzarchitektur - die optimale Nutzung der verfügbaren Rechnerkerne des Betriebssystems. So nimmt sich MemBrain immer nur soviel der abrufbaren Rechenleistung wie im Hinblick auf das momentan bearbeitete Netz sinnvoll anwendbar ist. Die Regeln zur Ermittlung der benutzten Rechnerkerne lassen sich durch den Benutzer modifizieren.

Darüberhinaus lässt sich die Prozesspriorität von MemBrain über das MemBrain Menü frei einstellen, so dass die Auslastung des Rechners durch MemBrain bei Bedarf in weiten Grenzen konfigurierbar wird. 

EinLesen von Bilddateien

MemBrain verfügt über eine Option, Pixeldaten aus Bilddateien aller gängigen Formate als Graustufenwerte einzulesen. Damit wird die Generierung von Eingangsdatensätzen aus Bildern erheblich vereinfacht. Vor dem Einlesen und Umwandeln in Graustufen werden die Bilder optional neu gesampelt, um eine ideale Anpassung hinsichtlich Auflösung und Format zu erzielen.

offenes TCP/IP interface

MemBrain verfügt über die Möglichkeit, sich mittels TCP/IP mit anderen MemBrain Instanzen oder auch mit zu MemBrain kompatiblen Geräte-Treibern zu verbinden. Dabei spielt es keine Rolle, ob die anderen Anwendungen auf entfernten Rechnern oder auf ein und demselben Computer ausgeführt werden.

Das TCP/IP Protokoll von MemBrain ist in einem eigenen Abschnitt in der zu MemBrain gehörenden kontextsensitiven HTML-Hilfe erläutert. 

Zum Vergrößern bitte auf 
das Bild klicken.

Der Screen-Shot zeigt eine Matrix von 160 x 120 Eingangs-Neuronen, über TCP/IP eingebunden in ein neuronales Netz. Die Neuronen werden vom 'MemBrain Picture Driver' veröffentlicht, der im Download-Bereich zur Verfügung steht.

Neuronen können in MemBrain als Graustufen-Pixel dargestellt werden, die Helligkeit ist dabei
proportional zu der momentanen Aktivität des Neurons. Dies verleiht der Eingangsmatrix das Aussehen
einer monochromen Bitmap.

weitere screenshots

Zum Vergrößern bitte auf die Bilder klicken.

Erkennung von handschriftlichen Ziffern mittels eines mehrstufigen Convolutional Neural Networks mit mehreren Pooling Layern

 

 Importieren von Neuronen über TCP/IP 
(Hier: Von einer zweiten MemBrain Instanz)
Konfiguration des 'winner takes it all' Lern- 
Algorithmus
Trainieren einer SOM (Hier: Map of Belief)
Training eines zeitvarianten Netzes, um zukünftige Werte der chaotischen Mackey-Glass Zeitreihe vorherzusagen. Umfangreiche HTML-Hilfe mit Einstiegstutorial
www.membrain-nn.de