Ich habe auf dem Tensorflow-Spielplatz herumgespielt . Einer der Eingabedatensätze ist eine Spirale. Egal welche Eingabeparameter ich wähle, egal wie breit und tief das neuronale Netzwerk ist, ich kann die Spirale nicht anpassen. Wie passen Datenwissenschaftler Daten dieser Form an?
neural-networks
classification
tensorflow
Souradeep Nanda
quelle
quelle
Antworten:
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.
quelle
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.1 X.2
quelle
Durch Betrug ...Arctan( y, x ) r ( x2+ y2)- -- -- -- -- -- -- -- -√
theta
ist , ist .Theoretisch sollten und funktionieren, aber in der Praxis sind sie irgendwie gescheitert, obwohl es gelegentlich funktioniert.x2 y2
quelle
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.
quelle
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.
Ich habe ein paar Dinge aus diesem Spiralexperiment gelernt:
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.
quelle