Page 1 of 1

Lernregel zuordnen

Posted: Sun 20. Nov 2016, 20:30
by ALTANre
Guten Abend,

ich beschäftige mich seit Kurzem mit Neuronalen Netzen und MemBrain und bin auch ziemlich neu hier in diesem Forum.

In der Literatur werden die verschiedensten Lernalgorithmen vorgestellt, mit Herleitung, Vor- und Nachteile etc. wie z.B. Levenberg-Marquardt oder Broyden-Fletcher-Goldfarb-Shanno (BFGS) :o . Meine Fragen wären nun:

- Gibt es irgendwo eine Art Auflistung der verschiedenen Lernregel mit Erklärung, Vor- und Nachteil, ggf. sogar Gleichungen, sodass man diese auch zuordnen kann? In MemBrain (Teach - Teacher Manager) werden einige aufgelistet, aber mit ganzen anderen Bezeichnungen bis auf RPROP und BP

- Gibt es fertige "Lernpakete", die ich in MemBrain importieren kann oder muss ich die Lernregel selber programmieren?

Viele Grüße :)

Re: Lernregel zuordnen

Posted: Tue 22. Nov 2016, 21:23
by TJetter
Hallo,
ALTANre wrote:- Gibt es irgendwo eine Art Auflistung der verschiedenen Lernregel mit Erklärung, Vor- und Nachteil, ggf. sogar Gleichungen, sodass man diese auch zuordnen kann? In MemBrain (Teach - Teacher Manager) werden einige aufgelistet, aber mit ganzen anderen Bezeichnungen bis auf RPROP und BP
Ich empfehle zum Einlesen in die verschiedenen Algorithmen gerne immer das Skript von D. Kriesel:
http://www.dkriesel.com/science/neural_networks
Die Zuordnung zu den Algorithmen in MemBrain sollte eigentlich anhand der Namen und der Parameter gelingen, wenn nicht, dann bitte im Einzelfall nochmal melden. Eine Kurzerklärung der Algorithmen befindet sich auch in der MemBrain Hilfe (über F1 erreichbar, z.B. wenn gerade der Teacher Manager Dialog offen ist).
ALTANre wrote:- Gibt es fertige "Lernpakete", die ich in MemBrain importieren kann oder muss ich die Lernregel selber programmieren?
MemBrain bietet umfangreiches Skripting, um jede beliebige übergeordnete Logik zu implementieren (Laden von Dateien, bearbeiten von Daten, Lernregeln auswählen, trainieren, verwenden, validieren usw.). Erweiterung mit eigenen Lernalgorithmen wird momentan jedoch nicht unterstützt (ich hoffe, ich habe die Frage richtig verstanden?)

Viele Grüße

Re: Lernregel zuordnen

Posted: Tue 22. Nov 2016, 22:49
by ALTANre
Guten Abend,

vielen Dank für die schnelle Rückmeldung :)

Sie haben die Frage richtig verstanden, es geht also nicht mit eigenen Lernprogrammen.

Ich hätte noch eine Frage zum Verständnis:
Wieso braucht man mindestens zwei Pattern zum Trainieren des Netzes? Ist es deshalb so, weil mehrere Fehlersummen gebraucht werden um den Fehler zu minimieren?

Viele Grüße

Re: Lernregel zuordnen

Posted: Thu 24. Nov 2016, 06:04
by TJetter
ALTANre wrote:Wieso braucht man mindestens zwei Pattern zum Trainieren des Netzes?
Das ist nicht der Fall,trainieren kann man auch mit einem einzigen Pattern. Ob das Sinn macht sei einmal dahingestellt.
Wo haben Sie denn beobachtet oder gelesen, dass man mind. zwei Pattern bräuchte?

Viele Grüße

Re: Lernregel zuordnen

Posted: Thu 24. Nov 2016, 17:00
by ALTANre
Ich meine hier in diesem Forum gelesen zu haben und habe es auch in MemBrain selber versucht, aber es kommt eine Fehlermeldung, wenn ich auf Extras-Normalization Wizard klicke, wenn ich normalisieren will.

fehlermeldung.JPG
Fehlermeldung
(19.12 KiB) Not downloaded yet

Re: Lernregel zuordnen

Posted: Fri 25. Nov 2016, 18:31
by TJetter
Grundsätzlich zu trennen sind das Training auf der einen Seite (ein Pattern reicht hier) und der Normalization Wizard. Letzterer möchte ja aus den Daten der aktiven Lesson für jedes Ein- und jedes Ausgabeneuron passende Normalisierungseinstellungen ermitteln. Dazu muss der Wizard aus der aktiven Lesson für jedes Neuron das Maximum und das Minimum ermitteln. Also benötigt der Wizard de fakto mindestens zwei Pattern, z.B. eines mit allen Maximalwerten und eines mit allen Minimalwerten. Oder eben eine realistische, große Lesson mit vielen Pattern, so dass über alles gesehen sinnvolle Minima und Maxima für jedes Neuron enthalten sind.

Viele Grüße

Re: Lernregel zuordnen

Posted: Sun 11. Dec 2016, 20:27
by ALTANre
Hallo zusammen :)

ich wollte neben RPROP noch andere Lernalgorithmen für meine Masterarbeit verwenden, wie z.B. Cascade Correlation (CC). Das Prinzip von CC ist doch, dass beim Lernprozess nacheinander Hidden-Neuronen hinzugefügt werden, um den Fehler zu minimieren.

Hierzu hätte ich einige Fragen:

- Beim Anwenden dieser Lernmethode,stoppt die Fehlerminimierung sehr schnell und dabei kommt die Meldung "The target net error has been reached". Die implementierten Hidden-Neuronen werden nicht gezeigt oder werden diese im Hintergrund von Membrain berechnet?

- So einen ähnlichen Fall gab es auch bei einem anderen MemBrain-User (viewtopic.php?t=89). Handelt es sich hierbei um einen Bug in einer älteren Version? Ich habe Membrain V07.01.00.00.

- So wie ich Membrain verstanden habe, muss man mehrmals den "Start Teacher", also auf das Symbol mit der Glühbirne und dem Ausrufezeichen auch mehrmals klicken, oder?

- Noch zuletzt, kann die das Diagramm mit der Fehlerkurve als Bilddatei exportiert werden?

Viele Grüße
Altan

Re: Lernregel zuordnen

Posted: Sun 18. Dec 2016, 12:46
by TJetter
Hallo und sorry für die etwas späte Antwort!
ALTANre wrote:- Beim Anwenden dieser Lernmethode,stoppt die Fehlerminimierung sehr schnell und dabei kommt die Meldung "The target net error has been reached". Die implementierten Hidden-Neuronen werden nicht gezeigt oder werden diese im Hintergrund von Membrain berechnet?
Bitte prüfen, was als 'Target Net Error' für den CC eingetragen ist. Per default sind das 0.05. Den Wert am besten auf 0 setzen.
Beim CC möchte man die minimal notwendige Architektur finden, um das Problem zu lösen. Deshalb ist es sinnvoll, den Target Net Error hier so zu setzen, dass der CC bei einem kleinen Net Error auch wirklich abbricht. Je nach Komplexität des zu erlernenden Problems kann der Net Error aber sehr schnell sehr kleine Werte erreichen (auch abhängig von der gewählten Net Error Function). Das wird wahrscheinlich hier der Fall sein, ich nehme an, es geht um ein recht einfaches neuronales Netz bzw. Problem?
Die Hidden-Neuronen werden sichtbar, wenn sie eingefügt werden, nichts geschieht 'im Hintergrund' oder ähnlich.
ALTANre wrote:- So einen ähnlichen Fall gab es auch bei einem anderen MemBrain-User (viewtopic.php?t=89). Handelt es sich hierbei um einen Bug in einer älteren Version? Ich habe Membrain V07.01.00.00.
Dieser Bug sollte seit langem behoben sein. Wenn es immer noch nicht funktioniert dann bitte mal das Netz und die Training-Lesson hier posten oder als PN schicken.
ALTANre wrote:- So wie ich Membrain verstanden habe, muss man mehrmals den "Start Teacher", also auf das Symbol mit der Glühbirne und dem Ausrufezeichen auch mehrmals klicken, oder?
Wenn Start Teacher einmal gedrückt wird, dann arbeitet der Teacher so lange, bis eines der Abbruchkriterien erfüllt ist. Das ist zum Einen immer der 'Target Net Error' (siehe oben). Beim CC Teacher gibt es allerdings noch ein weiteres Kriterium, nämlich die 'Maximum Number of Candidates to Add' (Button 'Advanced' in den Teacher Settings des CC).
ALTANre wrote:- Noch zuletzt, kann die das Diagramm mit der Fehlerkurve als Bilddatei exportiert werden?
Nein, das ist leider nicht möglich. Das ist aber ein guter Input, Danke! Ich werde es als Verbesserungsvorschlag aufnehmen, den Kurvenverlauf
exportierbar zu machen. Wahrscheinlich aber am besten als CSV, so dass man die Daten in ein Tabellenkalulationsprogramm importieren kann.

Viele Grüße

Re: Lernregel zuordnen

Posted: Sat 9. Sep 2017, 17:16
by ALTANre
Guten Tag,

zunächst einmal vielen Dank dafür, dass der Net Error Graph exportierbar ist und ist auf jedenfall besser als meine Screenshot-Paint-Skills :D

Demnächst fange ich mit der Masterarbeit an und will MemBrain für ein Beschichtungsprozess verwenden. Dabei ist Pulsfrequenz als einziger Input (200 bis 2000 Hz) und als Outputgrößen kommen diverse Schicht- bzw. Materialeigenschaften in Frage, wie z. B. Härte, Eindringmodul, Rauheit etc. Mittels eines KNNs will ich eine Funktionsapproximation machen. Mein Ziel ist es, z.B. den realen Verlauf der Härte in Abhängigkeit der Pulsfrequenz mit der approximierten Funktion zu vergleichen.

ich hätte einige Fragen zu einem bestimmten vorwärtsgerichteten Netztypen:

1.)
Die Radial Basis Function (RFB) beruht auf Minimum Euclidian Distance (MED) und wird zur Funktionsapproximation verwendet. Ich würde gerne ein RBF-Netz aufbauen und trainieren. In der Literatur steht, dass der Euklidische Abstand (normierte Differenz zwischen Input- und Gewichtsvektor) berechnet und dann in eine weitere Funktion (meistens Gauss-Glocke) eingesetzt wird. In der Software aber wird nur die MED als Aktivierungsfunktion aufgezeigt ohne irgendeine Gaussfunktion. Ich weiß noch, dass bei RBF-Netzen die Aktivierungsfunktionen auf IDENTICAL eingestellt werden müssen. Wie baue ich nun ein RBF-Netz in MemBrain auf?

2.)
Nach dem Training (überwachtes Lernen) würde ich gerne neue Inputs (kein Bestandteil des Trainingssatzes) eingeben und neue Outputs berechnen lassen. Zwar kann ich es über den Lesson Editor und Think on Input machen, aber es ist ziemlich umständlich. Gibt es einen Weg, diese neuen Inputs einlesen zu lassen, damit neue Outputs berechnet und als Excel ausgegeben bzw. exportiert werden können?


Viele Grüße

Altan

Re: Lernregel zuordnen

Posted: Thu 14. Sep 2017, 19:13
by TJetter
ALTANre wrote:Ich würde gerne ein RBF-Netz aufbauen und trainieren.
RBF Netzwerke werden von MemBrain momentan nicht unterstützt. Die MIN EUCLID DIST Activation Function existiert zwar in MemBrain, wird aber nur beim Aufbau von SOMs (Self Organizing Maps) verwendet. Diese werden unüberwacht trainiert und sind für das vorliegende Problem nicht geeignet.
ALTANre wrote:Nach dem Training (überwachtes Lernen) würde ich gerne neue Inputs (kein Bestandteil des Trainingssatzes) eingeben und neue Outputs berechnen lassen. Zwar kann ich es über den Lesson Editor und Think on Input machen, aber es ist ziemlich umständlich. Gibt es einen Weg, diese neuen Inputs einlesen zu lassen, damit neue Outputs berechnet und als Excel ausgegeben bzw. exportiert werden können?
Das geht sehr einfach und komfortabel über Skript:
viewtopic.php?f=13&t=232

Alternativ kann man die zu berechnende Lesson händisch in den Lesson Editor laden, diese als 'Net Error Lesson' auswählen, die Funktion 'Evaluate Net Error' ausführen und das Ergebnis aus dem Pattern Error Viewer als csv exportieren ("Export Validation" button). Das Ganze geschieht so ähnlich auch über das Skript, was ich empfehle zu verwenden. Da kann man sich nicht verklicken und alles geschieht automatisch.

Viele Grüße