Wie klassifiziere ich spiralförmige Daten?


Antworten:


11

Es gibt viele Ansätze für diese Art von Problem. Am naheliegendsten ist es , neue Funktionen zu erstellen . Die besten Funktionen, die ich finden kann, sind die Umwandlung der Koordinaten in sphärische Koordinaten .

Ich habe keinen Weg gefunden, dies auf dem Spielplatz zu tun, deshalb habe ich nur ein paar Funktionen erstellt, die dabei helfen sollen (Sündenfunktionen). Nach 500 Iterationen wird es gesättigt und schwankt bei 0,1 Punkten. Dies deutet darauf hin, dass keine weiteren Verbesserungen vorgenommen werden und ich höchstwahrscheinlich die verborgene Ebene breiter machen oder eine weitere Ebene hinzufügen sollte.

Kein Wunder, dass Sie nach dem Hinzufügen von nur einem Neuron zur verborgenen Schicht nach 300 Iterationen leicht 0,013 erhalten. Ähnliches geschieht durch Hinzufügen einer neuen Ebene (0,017, jedoch nach deutlich längeren 500 Iterationen. Auch keine Überraschung, da es schwieriger ist, die Fehler zu verbreiten). Höchstwahrscheinlich können Sie mit einer Lernrate spielen oder ein adaptives Lernen durchführen, um es schneller zu machen, aber das ist hier nicht der Punkt.

Geben Sie hier die Bildbeschreibung ein


Sphärische Koordinaten! Erinnerte mich an die Grundrechnung.
Souradeep Nanda

4
@SouradeepNanda Sie werden eine Menge Mathe-Sachen finden, die Leute in der Schule für nutzlos halten, extrem wichtig in ML
Salvador Dali

Nur für diejenigen, die neugierig sind wie ich, versuche ich, die Ergebnisse zu replizieren , aber die Dinge
laufen

4

Im Idealfall sollten neuronale Netze in der Lage sein, die Funktion selbst herauszufinden, ohne dass wir die sphärischen Merkmale bereitstellen. Nach einigen Experimenten konnte ich eine Konfiguration erreichen, in der wir nichts außer und benötigen . Dieses Netz konvergierte nach etwa 1500 Epochen, was ziemlich lang ist. Der beste Weg könnte also sein, zusätzliche Funktionen hinzuzufügen, aber ich versuche nur zu sagen, dass es immer noch möglich ist, ohne diese zu konvergieren.X.1X.2

Lösung ohne zusätzliche Funktionen


3

Durch Betrug ... thetaist , ist .Arctan(y,x)r(x2+y2)

Theoretisch sollten und funktionieren, aber in der Praxis sind sie irgendwie gescheitert, obwohl es gelegentlich funktioniert.x2y2

Geben Sie hier die Bildbeschreibung ein


Können Sie näher erläutern, wie Sie "betrogen" haben? Wie haben Sie diese Funktionen hinzugefügt? Hast du den Spielplatz von GitHub heruntergeladen und geändert? Oder gibt es einen direkteren Weg, dies zu tun?
Jim

Ich habe mich gefragt, wie ich diesen Hack auch anwenden soll. Versuchte es im Browser zu tun, hatte aber kein Glück damit. Dann entschied ich mich, den Quellcode zu teilen und fügte die neuen Eingabefunktionen hinzu. Sie können es hier sehen
Cankut

0

Vanille Tensorflow Spielplatz Spirallösung

Dies ist ein Beispiel für einen Vanille-Tensorflow-Spielplatz ohne zusätzliche Funktionen und ohne Änderungen. Der Lauf für Spiral lag je nach Epoche zwischen 187 und ~ 300. Ich habe die Lasso-Regularisierung L1 verwendet, um Koeffizienten zu eliminieren. Ich habe die Stapelgröße um 1 verringert, um zu verhindern, dass die Ausgabe überpasst. In meinem zweiten Beispiel habe ich dem Datensatz etwas Rauschen hinzugefügt und dann den L1 erhöht, um dies zu kompensieren.

Geben Sie hier die Bildbeschreibung ein


0

Die Lösung, die ich nach einer Stunde Probezeit erreicht habe, konvergiert normalerweise in nur 100 Epochen .

Ja, ich weiß, dass es nicht die glatteste Entscheidungsgrenze gibt, aber es konvergiert ziemlich schnell.

! [0,6% Testfehler

Ich habe ein paar Dinge aus diesem Spiralexperiment gelernt:

  • Die Ausgabeebene sollte größer oder gleich der Eingabeebene sein . Zumindest ist mir das bei diesem Spiralproblem aufgefallen.
  • Halten Sie die anfängliche Lernrate hoch , in diesem Fall 0,1, und verringern Sie dann die Lernrate um ein oder zwei Punkte (0,03), wenn Sie sich einem niedrigen Testfehler von 3-5% oder weniger nähern. Dies hilft bei der schnelleren Konvergenz und vermeidet das Umspringen der globalen Minima.
  • Sie können die Auswirkungen einer hohen Lernrate sehen, indem Sie das Fehlerdiagramm oben rechts überprüfen.
  • Für kleinere Stapelgrößen wie 1 ist 0,1 eine zu hohe Lernrate, da das Modell nicht konvergiert, wenn es um die globalen Minima springt.
  • Wenn Sie also eine hohe Lernrate (0,1) beibehalten möchten, halten Sie auch die Stapelgröße hoch (10). Dies führt normalerweise zu einer langsamen, aber gleichmäßigeren Konvergenz.

Zufälligerweise ist die Lösung, die ich gefunden habe, der von Salvador Dali sehr ähnlich .

Bitte fügen Sie einen Kommentar hinzu, wenn Sie weitere Intuitionen oder Argumente finden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.