Normalisierung von In-und Output, Fehlerhinweis

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
UniPotLuc
Posts: 2
Joined: Mon 13. Oct 2014, 12:40

Normalisierung von In-und Output, Fehlerhinweis

Post by UniPotLuc »

Hallo liebe Forumgemeinde,
ich bin neu im Thema der neuronalen Netze und versuche gerade ein Netz zu erstellen, welches ganz simpel zwei Zahlen korrekt addiert. Das klingt wahrscheinlich eigenartig, aber ich möchte mein Verständnis vom Prinzip prüfen. Das Netz das mir dabei vorschwebte ist im Anhang. Es ist bewusst überdimensioniert weil ich am Ende sehen möchte, dass überflüssige Neuronen die Gewichtung null erhalten. Sinnigerweise sollen also die Shortcut-Neuronen 1 zu 6 und 2 zu 6 jeweils die Gewichtung 1 erhalten. Meine Aktivierungsfunktion ist "Identical".
Nun bin ich auf mehrer Probleme gestoßen:
1. Die Eingabe der Lessons: ich möchte gern ein .csv file mit Trainigs-Tripeln einlesen. Soweit ich aber die Lesson-Import Funktion verstanden habe ist es nur möglich eine einzelne Lesson pro csv file einzulesen anstatt verschiedene Lessons oder Patterns automatisiert aus einem csv einzulesen (eine lange Liste von Tripeln. Das kommt mir so unzweckmäßig vor, dass es aus meiner Sicht nur ein EIFOK sein kann. Wie kann ich eine Liste von Lessons importieren?
2. Nachdem ich per Hand einige Lessons eingetippt habe und die Lernroutine starte kommt die Warnung:
The data in the Lesson editor is out of range with respect to the Normalizsation Settings of the input or output neurons. Nachdem ich im Normalizsation Wizard alle Use-Normalize-checkboxen unchecked habe und neu starten wollte, trat die gleiche Warnung wieder auf und im Wizard war wieder Use Normalization gecheckt. Wenn ich die Warnung ignoriere kommt nach dem Training Käse raus. Was hat es mit dieser Normalisierung auf sich? Für mein Netz benötige ich eine y=x Aktivierungsfunktion und es darf nichts normalisiert werden. Wie kann ich das realisieren?
Ich würde mich freuen, wenn sie jemand meiner Fragen annehmen könnte.
Viele Grüße,
Lucas
Attachments
Summe.mbn
(1.49 KiB) Downloaded 688 times
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Normalisierung von In-und Output, Fehlerhinweis

Post by TJetter »

Hallo und herzlich Willkommen im Forum,
UniPotLuc wrote:1. Die Eingabe der Lessons: ich möchte gern ein .csv file mit Trainigs-Tripeln einlesen. Soweit ich aber die Lesson-Import Funktion verstanden habe ist es nur möglich eine einzelne Lesson pro csv file einzulesen anstatt verschiedene Lessons oder Patterns automatisiert aus einem csv einzulesen (eine lange Liste von Tripeln. Das kommt mir so unzweckmäßig vor, dass es aus meiner Sicht nur ein EIFOK sein kann. Wie kann ich eine Liste von Lessons importieren?
Das Missverständnis ist einfach erklärt: Ein einzelnes Trainingsmuster ist ein 'Pattern', d.h., ein Satz von Input- und Outputwerten, also ein Trainings- oder auch Validierungsbeispiel. Eine 'Lesson' ist ein Satz mit beliebig vielen Patterns. Wenn man also eine Lesson importiert oder exportiert, dann sind damit i.d.R. immer mehrere (meist viele) Pattern gemeint.
UniPotLuc wrote:2. Nachdem ich per Hand einige Lessons eingetippt habe und die Lernroutine starte kommt die Warnung:
The data in the Lesson editor is out of range with respect to the Normalizsation Settings of the input or output neurons. Nachdem ich im Normalizsation Wizard alle Use-Normalize-checkboxen unchecked habe und neu starten wollte, trat die gleiche Warnung wieder auf und im Wizard war wieder Use Normalization gecheckt. Wenn ich die Warnung ignoriere kommt nach dem Training Käse raus. Was hat es mit dieser Normalisierung auf sich? Für mein Netz benötige ich eine y=x Aktivierungsfunktion und es darf nichts normalisiert werden. Wie kann ich das realisieren?
Intern muss bei NNs zur Verarbeitung immer normalisiert werden. Die Häkchen 'Use Normalization' müssen deshalb bei Input- und Output-Neuronen immer dann gesetzt werden, wenn der angestrebte Ein- bzw. Ausgabebereich den natürlichen Wertebereich der gewählten Aktivierungsfunktionen über-/unterschreitet. Zusammen mit dem 'Use Normalization' Häkchen gibt man die Grenzen an, die für das jeweilige Neuron verwendet werden sollen. Diese sollten immer so groß wie nötig und so klein wie möglich gewählt werden. Im Vorliegenden Fall also für die Eingabeneuronen der Wertebereich der Summanden, für das Ausgabeneuron der Wertebereich der Summe.

Im Übrigen macht für die Hidden-Neuronen die 'Identical' Aktivierungsfunktion wenig Sinn. Hier sollte man immer die logistische Funktion oder den Tangens Hyperbolikus wählen.

Viele Grüße
Thomas Jetter
UniPotLuc
Posts: 2
Joined: Mon 13. Oct 2014, 12:40

Re: Normalisierung von In-und Output, Fehlerhinweis

Post by UniPotLuc »

Hi TJetter,
vielen Dank für deine Antwort. Das richtige Importieren der Lessons klappt jetzt. Vielen Dank für den Hinweis.
Ich kann die Grenzwerte für Normalisierung jetzt korrekt setzen und der Hinweis bleibt aus. Allerdings verstehe ich nicht so recht deine Anmerkung, dass "Identical" als aktivierungsfunktion im Hidden Layer für die Summenbildung unzweckmäßig ist. Angenommen ich würde die Shortcut Verbindungen entfernen und trotzdem eine Summe bilden wollen, dann muss der Informationsfluss über das Hidden Layer gehen. Logistische Funktionen und der Tangens Hyperbolicus würden jedoch die Infomation der Summanden je nach Grenzwert löschen, sodass das Output Layer im ungünstigen Fall nur die gewichtete Summe der Grenzwerte aus dem Hidden Layer bilden kann. Allerdings beobachte ich tatsächlich, dass der quadratische Fehler dann bei E5 sättigt, während er bei TanHyp langsam aber kontinuierlich sinkt. Könntest du mir das erklären?
Viele Grüße,
Lucas

PS: das beste Ergebnis für die Summation erhalte ich natürlich, wenn ich das Hidden Layer entferne, kein Wunder
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Normalisierung von In-und Output, Fehlerhinweis

Post by TJetter »

Hallo,

tatsächlich ist es so, dass auch die lineare Übertragungsfunktion bei -1 bzw. 1 abschneidet. Bei neuronalen Netzen wird grundsätzlich die (interne) Aktivierung der Neuronen auf diesen Bereich begrenzt (bzw. bei manchen Aktivierungfunktionen auch auf [0..1].
Das trifft natürlich nicht für die Links (Verknüpfungen) zu, diese können Gewichte beliebiger Größe aufweisen.
Deshalb müssen die Normalisierungsgrenzen für die Inputs und Outputs immer ausreichend groß gewählt werden, um alle Daten abbilden zu können. Bei den EIngängen also das Maximum der einzelnen Summanden, beim Ausgang die maximale Summe.
Nun ist natürlich eine Summation nicht der typische Anwendungsfall neuronaler Netze. Man hat es in der Praxis ja immer mit nichtlinearen Übertragungfunktionen zu tun. Diese können nur mit nichtlinearen Aktivierungsfunktionen realisiert werden. Deshalb macht es i.d.R. keinen Sinn, lineare Hidden-Neuronen zu verwenden. Im Fall einer linearen Ü-Funktion, die erlernt werden soll, ist das natürlich etwas anderes. Allerdings lässt die sich ja direkt als Gleichung hinschreiben, deshalb ist der EInsatz eines NNs hier natürlich in der Praxis nicht sinnvoll.

Grüße
Thomas Jetter
Post Reply