Systemvoraussetzungen
- Windows 2000 / XP / Vista / 7
- 1,0 GHz CPU
- 256 MB RAM
- 20 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
verfügbare Lernalgorithmen
Momentan verfügt MemBrain über folgende Lernalgorithmen.
Überwachtes Lernen:
- Standard Backpropagation (nur Vorwärtslinks werden trainiert)
- Standard 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
- 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)
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)
Version verfügbar.
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 C-Code generiert, der mit jedem beliebigen 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 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. 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
Die erwähnte Code-Bibliothek ist im Installationspaket von MemBrain enthalten, sie wird
bei der Installation in ein eigenes Unterverzeichnis 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
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.
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 |
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.
|