Hallo,
kann ich eine lineare Aktivierungsfunktion in MemBrain irgendwie einstellen? Ich habe angefangen, die Dokumentation über Skripte zu lesen, habe aber bis jetzt nichts darin gefunden.
Danke!
Aktivierungsfunktionen
Re: Aktivierungsfunktionen
Doppelklick auf Neuron --> Activation Function Drop Down-Liste --> IDENTICAL oder IDENT. 0 TO 1 wählen.gparis wrote:kann ich eine lineare Aktivierungsfunktion in MemBrain irgendwie einstellen?
'IDENTICAL' bildet den eingestellten Normalisierungsbereich auf [-1 .. 1] ab, 'IDENT. 0 TO 1' bildet intern auf [0..1] ab.
Über Skript geht das auch, man muss dazu mit der Datenstruktur 'SNeuronProp' arbeiten , die die Eigenschaften eines beinhaltet.
Viele Grüße
Thomas Jetter
Re: Aktivierungsfunktionen
Ich hätte gerne andere Grenzen gehabt (ich baue für morgen ein vorgegebenes Tutorium nach, in dem im einen Fall eine Aktivation von 1.25 herauskommen soll, werde aber einfach das Tutorium leicht abändern)Admin wrote:Doppelklick auf Neuron --> Activation Function Drop Down-Liste --> IDENTICAL oder IDENT. 0 TO 1 wählen.gparis wrote:kann ich eine lineare Aktivierungsfunktion in MemBrain irgendwie einstellen?
'IDENTICAL' bildet den eingestellten Normalisierungsbereich auf [-1 .. 1] ab, 'IDENT. 0 TO 1' bildet intern auf [0..1] ab.
Die hatte ich in der Doku entdeckt, werde aber nicht mehr bis morgen herausfinden können wie ich was daraus mache. Leider kann ich kein C++, ja noch nicht einmal objektorientiert programmieren, was die Sache erschwert.Admin wrote: Über Skript geht das auch, man muss dazu mit der Datenstruktur 'SNeuronProp' arbeiten , die die Eigenschaften eines beinhaltet.
Übrigens finde ich 1. MemBrain absolut genial, 2. noch genialer, dass Du Dir die Zeit nimmst, regelmäßig im Forum nachzuschauen und Leute auszuhelfen.
Re: Aktivierungsfunktionen
Ich denke, Du musst das Tutorium nicht abändern:gparis wrote:Ich hätte gerne andere Grenzen gehabt (ich baue für morgen ein vorgegebenes Tutorium nach, in dem im einen Fall eine Aktivation von 1.25 herauskommen soll, werde aber einfach das Tutorium leicht abändern)
Die angegebenen Intervalle sind nur das, was MemBrain 'Hinter den Kulissen', also intern daraus macht, wenn die Aktivität des Neurons an das nächste weitergegeben wird.
Davon bekommt man aber als Benutzer nichts mit, nach außen rechnet ein Input- oder Output-Neuron immer alles in den benutzerspezifischen Datenbereich (wie unter 'Normalization' des Neurons eingestellt) um.
Lediglich für Hidden-Neuronen lässt sich ein Normalisierungsbereich nicht angeben. Wenn man sich also die Aktivität eines Hidden-Neurons anzeigen lässt, dann wird diese sich immer maximal zwischen -1 und 1 bewegen (je nach Aktivierungsfunktion eben).
Allerdings kann man ja bei Neuronen die Anzeige des Aktivierungswerts auch abschalten (Doppelklick auf Neuron --> Apperarance...). Das bietet sich i.d.R. für Hidden-Neuronen an, da deren absolute Aktivität meist nicht von Interesse ist (kann bei Deinem Tutorial natürlich anders sein).
gparis wrote:Übrigens finde ich 1. MemBrain absolut genial, 2. noch genialer, dass Du Dir die Zeit nimmst, regelmäßig im Forum nachzuschauen und Leute auszuhelfen.
Danke für's Feedback, freut mich!
Viele Grüße und viel Erfolg!
Thomas Jetter
Re: Aktivierungsfunktionen
Mit der Ident-Funktion und Normalisierung erreiche ich aber leider nicht das, was ich will - aber vielleicht setze ich sie auch falsch ein.Admin wrote:nach außen rechnet ein Input- oder Output-Neuron immer alles in den benutzerspezifischen Datenbereich (wie unter 'Normalization' des Neurons eingestellt) um.
Ich hänge das Netzwerk, das ich nachbauen will, an. Das Zweck ist dabei nur, Studenten beizubringen, die Mathematik hinter simplen Netzwerken Schritt für Schritt beizubringen, und an dieser Stelle geht es nur um die "InputSum".
Ohne Normalisierung ist die Ausgabe bei den ersten 3 Patterns richtig, beim 4. aber nicht. In der angehängten Version verwende ich Normalisierung bei dem 1. Output-Neuron; dabei ist die Ausgabe beim 4. Pattern richtig, bei den 3 anderen falsch.
Die Ein- und Ausgabe sollte sein:
Code: Select all
In1 In2 O1 O2 O1-Ohne O1-Mit
0 0 0 0 0 0.625
1 0 0.75 0.25 0.75 1.094
0 1 0.50 0.25 0.50 0.938
1 1 1.25 0.50 1 1.250
Nachtrag: Ich habe mir aber gerade darüber Gedanken gemacht, wie man ein Interval auf ein anderes map't, und glaube, hier könnte die Quelle des Problems sein, denn ich konnte etwas ähnliches in Excel im Spreadsheet reproduzieren. Kann es möglicherweise sein, dass hier ein kleiner Bug steckt?
- Attachments
-
- net1.zip
- (473 Bytes) Downloaded 700 times
Re: Aktivierungsfunktionen
Hallo,
angehängt ein Excel-Sheet, in dem die Berechnungen passend zu Deinem Beispiel enthalten sind, zusammen mit erklärenden Kommentaren.
Wie Du siehst rechnet MemBrain hier durchaus korrekt.
Wenn es so noch nicht verständlich ist, dann frag einfach nochmal, welcher Wert Dir warum unplausibel erscheint.
Viele Grüße
angehängt ein Excel-Sheet, in dem die Berechnungen passend zu Deinem Beispiel enthalten sind, zusammen mit erklärenden Kommentaren.
Wie Du siehst rechnet MemBrain hier durchaus korrekt.
Wenn es so noch nicht verständlich ist, dann frag einfach nochmal, welcher Wert Dir warum unplausibel erscheint.
Viele Grüße
- Attachments
-
- Berechnungen_IDENTICAL.zip
- Berechnungen in Excel, passend zum Beispiel oben.
- (8.69 KiB) Downloaded 719 times
Thomas Jetter