Aktivierungsfunktionen

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
gparis
Posts: 11
Joined: Sun 2. Jan 2011, 16:24

Aktivierungsfunktionen

Post 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!
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Aktivierungsfunktionen

Post 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
Thomas Jetter
gparis
Posts: 11
Joined: Sun 2. Jan 2011, 16:24

Re: Aktivierungsfunktionen

Post 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.
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Aktivierungsfunktionen

Post 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!
Thomas Jetter
gparis
Posts: 11
Joined: Sun 2. Jan 2011, 16:24

Re: Aktivierungsfunktionen

Post 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?
Attachments
net1.zip
(473 Bytes) Downloaded 699 times
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Aktivierungsfunktionen

Post 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
Attachments
Berechnungen_IDENTICAL.zip
Berechnungen in Excel, passend zum Beispiel oben.
(8.69 KiB) Downloaded 716 times
Thomas Jetter
Post Reply