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.
|