Eigene Lernverfahren/-algos und Neuronen implementieren

Haben Sie Fragen zur Bedienung bestimmter Features von MemBrain? Sind Sie nicht sicher, welches Häkchen was bewirkt? Möchten Sie wissen, ob eine bestimmte Funktionalität in MemBrain vorhanden ist oder nicht?

Dann stellen Sie Ihre Fragen hier!
Post Reply
User avatar
NNTUM
Posts: 10
Joined: Wed 22. Jul 2009, 23:24

Eigene Lernverfahren/-algos und Neuronen implementieren

Post by NNTUM »

Hi,

ich benutzt MemBrain momentan sehr gern da es sehr bedienfreundlich ist und die wichtigsten Funktionen die ich benötige enthält. Jedoch würde ich für meine aktuelle Studienarbeit gerne einerseits noch andere Lernverfahren (alles Supervised Learning Algorithmen) testen die jedoch in MemBrain (noch) nicht implementiert sind. Im JavaNNS (der Uni Stuttgart glaub ich) wären zwar einige noch dabei, aber dafür ist die Bedienung der Software bei weitem nicht so angenehm und vorallem müsste ich meine Lerndaten neu anpassen :)
Dies wäre jedoch nur mein kleineres Anliegen, da ich wohl dennoch mit den Teachern "RPROP" und "Backprop mit Momentum" ausreichend bedient bin.

Mein sehr sehr seeeeehr viel größeres Anliegen wäre die Möglichkeite eine "eigene Art" von Neuronen zu implementieren. (Nein nein, die idee ist nicht auf meinem Mist gewachsen, ich wills nur umsetzen :D )
Und zwar würde ich gerne Rekurrente Netze verwenden die ein besseres Kurzzeitgedächtnis als Elman-/Jordan-Netze (also "normale" Recurrent Neural Networks) haben. Bei diesen lässt sich im Normalfall ja nur ein "Gedächtnis" von etwa 10 Schritten verwirklichen. Nun bin ich in der Literatur und über eine Doktorarbeit nun auf LSTM-Neuronen gestoßen (LSTM = Long-Short-Term-Memory).
Dürfte dem ein oder andren vllt bekannt sein, mal mein Kurzversuch einer Erklärung (hoffentlich hab ichs richtig verstanden):

LSTM-Neuronen sind i.d.R. wie gewöhnliche rekurrente Neuronen aufgebaut mit einer Verbindung zu sich selbst (also eigener Ausgang zu eigenem Eingang!). Zur klaren Abgrenzung wird das Neuron auch einfach Block genannt. Zusätzlich besitzen sie aber noch die Möglichkeit den "Schreib- und Lesezugriff" auf sich selbst zu kontrollieren. D.h. es werden nicht zwangsläufig alle Daten die am Eingang des Neurons ankommen auch verarbeitet (entspricht Schreibzugriff). Genauso wird nicht immer der Ausgabewert des Neurons an die nachfolgenden Neuronen weitergegeben - auch wenn der Schwellenwert erreicht ist (entspricht Lesezugriff). Diese Zugriffe werden wiederum durch Neuronen gesteuert die am Eingang und Ausgang des Blocks sitzen und "Gates" genannt werden. Die Entscheidung ob die Gates "öffnen" oder "schließen" erfolgt wie bei normalen Neuronen auch durch einnen Schwellenwert der Gates.

Hier mal zwei Bildchen davon:
Image Image Quelle

Hoffe das war verständlich genug. Nun nochmal meine Frage: gibts eine Möglichkeit, dass man das selber in MemBrain implementiert (über AngelScript sicher nicht, oder?)?

/* Edit: Kann bei Interesse übrigends auch versuchen ausführliche Lektüre bzgl LSTM zur Verfügung zu stellen. Hab meine Infos aus der Dissertation "Generalisierung bei Neuronalen Netzen geringer Komplexität" von Josef Hochreiter. */

Grüße,
Jonathan

P.S.: Sorry, dass ich zwei Threads gleichzeitig starte, aber so bleibts dann wenigstens übersichtlicher und eindeutig zu welcher Frage die Antworten gehören.
________________________________________________
"Sooooo, this is engineering, huh? [...] Engineering - where the noble semi-skilled laborers execute the vision of those who think and dream... Hello Oompa Loompas of science!" :D
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Eigene Lernverfahren/-algos und Neuronen implementieren

Post by Admin »

Hallo,

habe Deinen Thread zur Kenntnis genommen, brauch' aber ein bisschen mehr Zeit zum Antworten. Antwort folgt so bald wie möglich.
NNTUM wrote:P.S.: Sorry, dass ich zwei Threads gleichzeitig starte, aber so bleibts dann wenigstens übersichtlicher und eindeutig zu welcher Frage die Antworten gehören.
Das ist genau richtig so ;)

Viele Grüße,
Thomas Jetter
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Eigene Lernverfahren/-algos und Neuronen implementieren

Post by Admin »

NNTUM wrote:Hoffe das war verständlich genug. Nun nochmal meine Frage: gibts eine Möglichkeit, dass man das selber in MemBrain implementiert (über AngelScript sicher nicht, oder?)?
Nein, die Skript-Sprache ermöglicht (bisher) keine Eigenimplementierung von Neuronen-Typen.
Das ist zwar prinzpiell denkbar. Die Skriptsprache wäre mächtig genug dazu, objektorientiert ist auch und schnell sowieso, da die Skripte vor der Ausführung in einen sehr effizienten Bytecode übersetzt werden, es ist also keine Interpretersprache. Allerdings wäre die Integration einer solchen Option in MemBrain alles andere als trivial. Trotzdem stellt das eine höchst interessante Idee dar, über die ich gerne nochmal nachdenken werde. Auf die Schnelle ist hier aber auf jeden Fall nichts zu erwarten, das wäre ein größeres Projekt.

Etwas anderes möchte ich Dir aber noch als Versuch ans Herz legen, falls Du es noch nicht ausprobiert hast: Es gibt in MemBrain auch das Konstrukt der 'Decay-Neuronen', die man auch komfortabel über einen Menüpunkt im 'Extras'-Menü einfügen kann. In der MemBrain Hilfe gibt es dazu auch einen beschreibenden Abschnitt ('Neurons in MemBrain - Adding Decay Neurons').
Diese Decay-Neuronen haben ein parametrisierbares 'Trägkeitsverhalten', das Informationen über langfristige Änderungen abbilden kann.
Schon versucht?

Viele Grüße und weiterhin viel Erfolg!
Thomas Jetter
Post Reply