Marktknigge oder gute Manieren im Minenfeld - Seite 36

 
HideYourRichess писал(а) >>

Jede Gerade kann in einem solchen Kreis unter einem beliebigen Winkel zur Horizontalen eingeschrieben werden.

Sieh an, sieh an!

Siehst du, nicht in jedem Winkel! - Es ist der richtige Winkel...

 
Neutron >> :

Jetzt sieht es so aus!

Wo ist die versprochene Schulungswolke?

Legen Sie ein Skalenraster auf das Diagramm und sagen Sie mir, was der Tangens des Neigungswinkels der Geraden ist.

Es handelt sich um die Bilder, die aus der ersten Differenz des fünfgliedrigen Sinus von X und der Gittervorhersage mit Zufallsgewichten (Anfangseinstellung der Gewichte +/-1) von Y gewonnen wurden. Der Rest ist noch in Arbeit und kommt bald.

 
Neutron >> :

Sieh an, sieh an!

Wie Sie sehen können, nicht irgendwer! - Es ist der richtige...

>> Ja, ja, ja.

 

Na bitte, es ist geschafft. Hier fehlt nur eine Trainingsstichprobe, denn die Trainingsstichprobe ist der Vektor X. Sie können ihn natürlich in das Diagramm einzeichnen, aber es wird eine gerade Linie sein, die das Diagramm in einem Winkel von 45" schneidet. Das Neuron wurde anhand von drei Proben trainiert:

1. Einfache erste Differenz 5sin - Vektor Y_simpl, Farbe grün (entspricht Nerz)

2. Hypertangens der ersten Differenz 5sin - blau

3. binäre Eingänge (durch 5sin) - lila


Die Tangenten der Geraden sind wie folgt:



Und doch stimmt etwas nicht. Oder ich habe die Aufgabe, die Sie mir gestellt haben, nicht verstanden.

Dieses Neuron wird auf jeden neuen Datenvektor X trainiert, derselbe Vektor wird als Abszissenachse des Diagramms verwendet. Wenn Sie es auf der Ordinate anzeigen...? Und warum?

Außerdem habe ich festgestellt, dass die Ergebnisse unterschiedlich ausfallen, wenn das Arbeitsblatt mit denselben Daten neu berechnet wird. Ist das so gewollt? Das heißt, die Ergebnisse sind sehr stark von den anfänglichen Einstellungen der Gewichte abhängig.

Nun, wenn ich nicht trainieren Neuron bei jedem Schritt, sondern nur lief es auf Daten-Vektor mit zufällig gewählten anfänglichen Gewichte, erhielt ich Zeichnungen mit einer Wolke in der Mitte (manchmal).

Jetzt bekommen Sie, was Sie sehen. Hier ist ein weiteres Bild.


Für alle Fälle füge ich die Matkad-Liste bei

Dateien:
neyron.rar  114 kb
 
paralocus писал(а) >>

Nun, da haben Sie es. Es gibt keine Trainingsstichprobe, denn die Trainingsstichprobe ist der Vektor X. Man kann ihn natürlich in das Diagramm einzeichnen, aber es wird eine Linie sein, die das Diagramm in einem Winkel von 45" schneidet.

Sie haben einen Trainingsvektor der Länge n, auf dem der NS trainiert, nur ein Muster n+1 zu erkennen. Wir haben einen Satz von Statistiken N>100, der einen Trainingssatz (genauer gesagt, einen Satz von Beispielen, wie NS trainiert wurde) der Länge N Stichproben bildet (dies ist kein Trainingsvektor, sondern ein Satz von Stichproben, der aus der verfügbaren Sinusreihe gewonnen wird, indem er jedes Mal um eine Stichprobe nach rechts bis zu N verschoben wird). Wir haben also N Werte, für die der NS trainiert wurde (dies sind n+1 Elemente der Trainingsvektoren) und wir haben auch N Werte, wie er sie gelernt hat. Legen Sie sie auf die Abszissen- bzw. Ordinatenachse und Sie erhalten die Wolke, die den Lernprozess charakterisiert. Es ist klar, dass diese Wolke nicht eine Neigung von 45 Grad haben wird. Dies ergibt sich aus der Tatsache, dass die Anzahl der Gewichte des Netzes - w - viel kleiner ist als die optimale Länge des Trainingsvektors P=w*w/d. Folglich ist das Gleichungssystem, das NS zur Ermittlung der optimalen Gewichte löst, überbestimmt und hat eine unendliche Anzahl von Lösungen. Daher wird eine Annäherung gesucht, die optimal ist im Sinne einer Minimierung des quadratischen Lernfehlers für alle Gleichungen. Wäre die Länge des Trainingsvektors gleich der Anzahl der Gewichte, dann würde man eine 100%ige Lernfähigkeit des Netzes erwarten, was aber im Sinne der Fähigkeit des Netzes, das angesammelte Wissen in der Zukunft zu verallgemeinern, nicht optimal ist und zu grandiosen Fehlern bei der Testprobe führt. Ein richtig trainiertes Gitter zeigt den Neigungswinkel der Trainingsprobe nahe dem Neigungswinkel der Testprobe im Wolkendiagramm an. Umgekehrt zeigt ein übertrainiertes Netz einen 45-Grad-Winkel für die Trainingswolke mit einer vernachlässigbaren Varianz und einen Null-Winkel mit unendlicher Varianz für die Testwolke. Dies ist genau das Ergebnis, das man erhält, wenn man versucht, ein System linearer algebraischer Gleichungen für ein einzelnes Perseptron genau zu lösen. Ich habe dies bereits oben erwähnt. Aus diesem Grund ist es sehr praktisch, bei der Fehlersuche in einem Netzwerk ein Wolkendiagramm zu verwenden (was man in MQL nicht kann).

Die Tatsache, dass sich der Neigungswinkel von Versuch zu Versuch ändert und sogar negativ wird, deutet eindeutig darauf hin, dass Ihr Mädchen ihr geheimes Leben lebt und nicht trainierbar ist. Sie brauchen eine Lobotomie :-)

P.S. Speichern Sie cdjb-Dateien mit der Erweiterung *.mcd für 2001i MathCad, sonst kann ich sie nicht lesen.

 
Hier, gespeichert als *.mcd für Matcad12 und 11. Ich habe keine anderen Optionen für mcd-Dateien.
Dateien:
mathcad.rar  40 kb
 

Ich werde jetzt einen Blick darauf werfen.

Übrigens, so rechnet meine Freundin die 5er-Reihe aus:

Es handelt sich um ein zweischichtiges NS mit zwei gültigen Eingaben (ohne konstante Vorspannung), k=2, mit 2 nichtlinear aktivierten Neuronen in der versteckten Schicht und einem linearen Neuron (ohne Aktivierungsfunktion) in der Ausgabe. Die Trainingsstichprobe ist in rot und die Teststichprobe (Vorhersagen) in blau dargestellt. Wiederholung des Trainings an jeder Probe. Die Statistik umfasst 200 Experimente. Die Tangenten der Winkel werden im Feld Plot angegeben.

 

Es gibt viele Dinge in Ihrem Code, die ich aus lauter Herzensgüte nicht verstanden habe. Aber nach dem, was ich bisher verstanden habe, entspricht das Folgende nicht meinen Vorstellungen:

Sie sollten genau die kumulative Summe über alle Trainingsepochen P durch die Quadrate der Abweichungen S[k] haben . Was ich sehe, ist lediglich eine Neuzuweisung von Variablen. Es gibt keine anfängliche Initialisierung der Gewichte mit Zufallszahlen.

Ich verstehe immer noch nicht, welches Unterprogramm Sie mit method() und ranif() eingeführt haben und wo es zu suchen ist?

Ich habe Ihren Code ein wenig vereinfacht (siehe Datei).

Dateien:
modif1_4.zip  16 kb
 
Ich bin gerade an den Computer gekommen. Das ist die falsche Datei für Sie... in der morgendlichen Eile, um es zu befestigen. Ich werde das jetzt kommentieren und ranif() posten - es ist eine eingebaute Funktion von Matcad - sie gibt einen Vektor der im ersten Parameter angegebenen Länge mit gleichmäßig verteilten Zufallszahlen im Bereich zwischen dem zweiten und dritten Parameter zurück.
 

Ausführlich kommentiert und dabei einige Fehler korrigiert

Das ist es, was sie zeichnet:


Ich füge die Datei in den drei Formaten 11, 12 und 13 (*.xcmd) bei

Jetzt sehe ich mir Ihre Korrekturen an... Eigentlich hätte ich mir erst die Korrekturen ansehen sollen, bevor ich einen Kommentar abgebe... -:)

Was Sie zwei Posts weiter oben geschrieben haben, darüber denke ich nach. Die Hauptsache für mich ist, zu verstehen, so dass das "Bild" in meinem Kopf gebildet, dann werde ich alles tun.

Dieses Bild hat sich bisher als nicht ganz richtig erwiesen - ich habe "Learning by doing" falsch verstanden, und es gibt noch kein neues Bild.

Dateien:
neyron_1.rar  197 kb