Page 1 of 1

Aktivierungsfunktionen

Posted: Tue 11. Jan 2011, 21:10
by gparis
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!

Re: Aktivierungsfunktionen

Posted: Tue 11. Jan 2011, 21:30
by Admin
gparis wrote:kann ich eine lineare Aktivierungsfunktion in MemBrain irgendwie einstellen?
Doppelklick auf Neuron --> Activation Function Drop Down-Liste --> IDENTICAL oder IDENT. 0 TO 1 wählen.

'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

Re: Aktivierungsfunktionen

Posted: Tue 11. Jan 2011, 21:44
by gparis
Admin wrote:
gparis wrote:kann ich eine lineare Aktivierungsfunktion in MemBrain irgendwie einstellen?
Doppelklick auf Neuron --> Activation Function Drop Down-Liste --> IDENTICAL oder IDENT. 0 TO 1 wählen.

'IDENTICAL' bildet den eingestellten Normalisierungsbereich auf [-1 .. 1] ab, 'IDENT. 0 TO 1' bildet intern auf [0..1] ab.
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: Über Skript geht das auch, man muss dazu mit der Datenstruktur 'SNeuronProp' arbeiten , die die Eigenschaften eines beinhaltet.
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.

Ü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

Posted: Tue 11. Jan 2011, 21:54
by Admin
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)
Ich denke, Du musst das Tutorium nicht 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!

Re: Aktivierungsfunktionen

Posted: Fri 14. Jan 2011, 19:35
by gparis
Admin wrote:nach außen rechnet ein Input- oder Output-Neuron immer alles in den benutzerspezifischen Datenbereich (wie unter 'Normalization' des Neurons eingestellt) um.
Mit der Ident-Funktion und Normalisierung erreiche ich aber leider nicht das, was ich will - aber vielleicht setze ich sie auch falsch ein.

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
Da ich die Grenzen bei der Normalisierung auf 0 bis 1.25 gesetzt habe, nehme ich an, das MemBrain das Interval zwischen [0, 1.25] auf [-1, 1] "map't", aber da soll beim 1. Pattern nicht 0.625 sondern 0 herauskommen.

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?

Re: Aktivierungsfunktionen

Posted: Sat 15. Jan 2011, 17:46
by Admin
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