Samstag, 27. April 2024, 08:15 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Nasenbär

unregistriert

1

Montag, 26. Mai 2003, 19:27

Reduktionsschicht

Hallo,
ich habe folgendes Problem und würde mich über Hilfe sehr freuen. Ich möchte ein Netz mit einer Reduktionsschicht erstellen. Bisher habe ich nur mit einer Schicht experimentiert. Dabei habe ich die Hiddenschicht immer nach folgender Formel berechnet. (Quadratwurzel aller Inputs) *2, so gelesen bei H. Uhlig, das habe ich dann als ungefähren Wert genommen und weiter getestet. Wie setze ich jetzt eine Reduktionsschicht sinnvoll ein, nehme ich die gleiche Anzahl an Units und verteile sie auf zwei Ebeben und spielt es dabei eine Rolle, ob ich alle Daten in einer Schablone verwende (habe dann sozusagen eine zweite Hiddenschicht) oder mehrere Inputschablonen nehme? Auf jeden Fall habe ich festgestellt, dass ich schlechtere Ergebnisse erhalte, wenn die Reduktionsschicht weniger Units enthält als die darauffolgende Hiddenschicht. Für einen keinen Tip wäre ich sehr dankbar, Allen noch einen schönen und hoffendlich erleuchtenden Abend.... Andreas

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

2

Dienstag, 27. Mai 2003, 21:34

RE: Reduktionsschicht

Hallo,

wie zumeist bei NN sind allgemeine Antworten schwierig. Eines würde ich aber schon sagen: mit je weniger Units das NN auskommt, desto besser. Es mag sein, dass eine Erhöhung der Zahl der Units das Ergebnis im Trainingszeitraum verbessert - aber wie sieht es dann mit der Generalisierung aus...

Ich empfehle daher, mit möglichst wenigen Units zu beginnen (auch in der Hiddenschicht) und dann gflls. zu prüfen, ob mehr Units etwas bringen. Ich sehe auch nicht, warum (nach Uhlig) mehr Inputs auch mehr Hiddenunits erfordern.

Eine Aufteilung in mehrere Schablonen bewirkt, dass die Anzahl der Verbindungsgewichte geringer ist - insofern auch eine (wünschenswerte) Reduzierung der Architektur.

Viele Grüße
Andreas Knöpfel

Nasenbär

unregistriert

3

Mittwoch, 28. Mai 2003, 08:50

Guten Tag Herr Knöpfel,
durch das ziehen der Quadratwurzel aller Inputs steigt die Anzahl der Hiddenunits nicht sehr schnell an, im Vergleich zur Anzahl der Inputs, und dann habe ich im Training mit der Anzahl der Units weiter experimentiert.
Aber meine eigentliche Frage war, ich vermute es ist nicht so ganz verständlich geschrieben, ob ich bei Verwendung einer Reduktionsschicht die Anzahl der Hiddenunits vergrößern sollte, oder ob es zumindest einen "erprobten Richtwert" für die benötigte Anzahl gibt, die ich dann im Trainig entsprechend anpassen kann.
Die andere Frage ging mehr in die Richtung, ob es Auswirkungen auf die Zahl der Units in der Reduktionsschicht haben sollte, wenn ich die Inputs in Schablonen aufteile oder sie in einer Schablone belasse.
MfG und einen schönen Tag Andreas

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

4

Mittwoch, 28. Mai 2003, 10:15

Hallo,

>>ob ich bei Verwendung einer Reduktionsschicht die Anzahl der Hiddenunits vergrößern sollte

- eine gewisse Erhöhung der Anzahl der Hiddenunits (z.B. von 3 auf 5) könnte sinnvoll sein, da durch die "Reduktionsschicht" ohnehin eine höhere Abstraktion vom NN erfordert wird, so dass Überoptimierung nicht so leicht auftritt. Einen allgemein gültigen Richtwert hierfür kann ich jedenfalls leider nicht bieten, da es von der Aufgabenstellung und Zielsetzung abhängt. Prinzipiell gilt: je mehr Units, desto mehr kann das NN die Muster "abspeichern". Umgekehrt, je weniger Units, desto grober wird das Raster.

>>ob es Auswirkungen auf die Zahl der Units in der Reduktionsschicht haben sollte, wenn ich die Inputs in Schablonen aufteile oder sie in einer Schablone belasse.

- Sie müssen nur beachten, dass die Gesamtzahl der "Reduktionsunits" (RU) von der Anzahl der Schablonen abhängt. Wenn Sie "3" einstellen, hat das NN bei einer Schablone insgesamt 3 RUs, bei 5 Schablonen dagegen 15 RUs. Insofern sollte der eingestellte Wert desto geringer sein, je mehr Schablonen verwendet werden. Wenn Sie bei einer Schablone 5 RUs verwenden, würden Sie bei 3 Schablonen vielleicht auf 2-3 RUs absenken.

Vielleicht haben andere User ansonsten noch Erfahrungswerte hierzu.

Viele Grüße
Andreas Knöpfel

Registrierungsdatum: 2. September 2002

Beiträge: 433

Wohnort: Freiburg

5

Mittwoch, 28. Mai 2003, 11:59

Hallo Andreas,

ich kann mich dem Rat von Herrn Knöpfel nur anschliessen, weniger ist mehr... Verwende so wenige wie möglich Knoten, seien sie jetzt als Hidden oder in einer zusätzlichen Schicht angelegt. Auch würde ich die Faustformel von Herrn Uhlig wesentlich nach unten korrigieren. Es leidet einfach sehr die Generalisierungsfähigkeit. Aus diesem Grunde habe ich auch schon sehr, sehr lange keine Reduktionsschicht mehr verwendet...

Grüsse
Bernhard

Thomas

unregistriert

6

Mittwoch, 28. Mai 2003, 13:04

@Andreas

Ich würde auf jedem Fall anstatt zusätzliche Units einzufügen zunächst die Zahl der Schablonen erhöhen. Den selben Input mit mehreren Ref-Bezügen kann man ohne weiteres in einer Schablone lassen. Wird der Input jedoch weiterverarbeitet kann es schon Sinn machen dafür eine neue Schablone anzulegen.

Reduktionsschichten habe ich schon oft verwendet. Das kann sinnvoll sein. Solltest du GA-Optimierung verwenden, so ist es wichtig ist, dass man die Generalisierungsfähigkeit anhand eines zweiten Kontrollzeitraum, der außerhalb des Trainings- und Kontrollzeitraums liegt, prüft. Das ist deshalb wichtig, weil die Ergebnisse des Kontrollzeitraums in den Mittelwert, der zur Auswahl der Generationen bei GA-Optimierung herangezogen wird, mit einfließen. Das ist zwar wichtig für die Unterstützung des Trainings, führt aber dazu das tendenziell Generationen selektiert werden, die im Kontrollzeitraum gute Ergebnisse aufweisen. Die Auswahl muss insofern nicht repräsentativ für die Generalisierungsfähigkeit sein.

Wenn du ein NN was mit GA-Optimierung trainiert wurde neu trainierst und einen dritten Zeitraum zur Kontrolle anlegst, wirst du bei einem überoptimierten Netz sofort die Unterschiede sehen.

Die Auswahl der Generationen beim Training mit GA ist auch dann weniger stark auf den Kontrollzeitraum selektiert, wenn du die Zahl der Eltern, Nachkommen und Generationen beim Training heruntersetzt. Die einzelnen Generationen werden dann stärker in ihren Ergebnissen abweichen. Darunter können sich dann jedoch durchaus auch solche befinden, die in einem dritten Zeitraum besser generalisieren.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Thomas« (28. Mai 2003, 13:05)


Nasenbär

unregistriert

7

Sonntag, 1. Juni 2003, 13:14

Hallo,

zunächst vielen Dank an alle für die zahlreichen Antworten.

@Thomas

die Sache mit dem Kontrollzeitraum habe ich verstanden und wende sie auch an, mir ist aber noch eine andere Sache beim Aufbau eines Netzes nicht ganz klar, wenn ich ein Netz mit z.B. 4 Inputschablonen zusammenstelle, das Netz dann mit GA optimiere und mir das Netz heraussuche, welches mir am besten erscheint und dann die Inputs herauslösche, die von den GA harausgedrückt wurden, dann habe ich doch ein schlankes Netz, auf dem ich aufbauen kann. Betreibe ich Überoptimierung, wenn ich jetzt nach zwei oder drei weiteren Inputs suche, die das Netz noch besser generalisieren lassen? Natürlich optimiere ich nicht weiter mit GA, sondern versuche über die "normale" Netzbewertung herauszufinden, ob eine Verbesserung eingetreten ist. Wie gesagt, es würde mich interessieren, was ihr von dieser Herangehensweise haltet, bisher läuft es ganz gut, aber...

Als weiteren Punkt habe ich versucht mehrere Netze in ein Netz zu integrieren und daraus so eine Art Master zu machen. Ich hatte in diesem Zusammenhang gelesen, dass man nur Netze verwenden soll, die keinen linearen Output haben. Das ist mir von der Theoretischen Seite nicht ganz klar, vielleicht kann mich jemand in dieser Richtung "erleuchten".

Allen zusammen noch ein schönes Wochenende und vor allem gute Ideen...

Andreas