Come classificare i dati a forma di spirale?


9

Ho fatto casino nel parco giochi di Tensorflow . Uno dei set di dati di input è una spirale. Indipendentemente dai parametri di input che scelgo, non importa quanto sia ampia e profonda la rete neurale che creo, non posso adattarmi alla spirale. In che modo i data scientist si adattano ai dati di questa forma?


Risposte:


11

Esistono molti approcci a questo tipo di problema. Il più ovvio è creare nuove funzionalità . Le migliori caratteristiche che posso trovare sono quelle di trasformare le coordinate in coordinate sferiche .

Non ho trovato il modo di farlo nel parco giochi, quindi ho appena creato alcune funzionalità che dovrebbero aiutare in questo (sin funzioni). Dopo 500 iterazioni si saturerà e fluttuerà a 0,1 punti. Ciò suggerisce che non verranno apportati ulteriori miglioramenti e molto probabilmente dovrei allargare il livello nascosto o aggiungere un altro livello.

Non sorprende che dopo aver aggiunto solo un neurone allo strato nascosto si ottenga facilmente 0,013 dopo 300 iterazioni. Una cosa simile accade aggiungendo un nuovo livello (0,017, ma dopo 500 iterazioni significativamente più lunghe. Inoltre non sorprende poiché è più difficile propagare gli errori). Molto probabilmente puoi giocare con un tasso di apprendimento o fare un apprendimento adattivo per renderlo più veloce, ma non è questo il punto.

inserisci qui la descrizione dell'immagine


Coordinate sferiche! Mi ha ricordato il calcolo degli studenti.
Souradeep Nanda,

4
@SouradeepNanda troverai molte cose matematiche che le persone trovano inutili a scuola estremamente importanti in ML
Salvador Dali,

Solo per quelli curiosi come me, provo a replicare i risultati , ma le cose non vanno così bene
codevision


3

thetaarctan(y,x)r(x2+y2)

x2y2

inserisci qui la descrizione dell'immagine


Puoi approfondire come hai "tradito"? Come hai aggiunto queste funzionalità? Hai scaricato il parco giochi da GitHub e l'hai modificato? O c'è un modo più diretto per farlo?
Jim,

Mi chiedevo come applicare anche questo trucco. Ho provato a farlo all'interno del browser ma non ho avuto fortuna. Quindi ho deciso di fork il codice sorgente e ho aggiunto le nuove funzionalità di input. Puoi vederlo qui
Cankut

0

soluzione a spirale per parco giochi vaniglia tensorflow

Questo è un esempio di parco giochi Tensorflow alla vaniglia senza funzionalità aggiuntive e modifiche. La corsa per Spiral era tra 187 e ~ 300 Epoch, a seconda. Ho usato la regolarizzazione del lazo L1 in modo da poter eliminare i coefficienti. Ho ridotto la dimensione del lotto di 1 per evitare che l'output risultasse eccessivo. Nel mio secondo esempio ho aggiunto un po 'di rumore al set di dati, quindi ho aumentato L1 per compensare.

inserisci qui la descrizione dell'immagine


0

La soluzione che ho raggiunto dopo un'ora di prova di solito converge in sole 100 epoche .

Sì, lo so che non ha il limite di decisione più semplice là fuori, ma converge abbastanza velocemente.

! [0,6% errore di prova

Ho imparato alcune cose da questo esperimento a spirale: -

  • Il livello di output deve essere maggiore o uguale al livello di input . Almeno questo è quello che ho notato nel caso di questo problema a spirale.
  • Mantenere alto il tasso di apprendimento iniziale , come 0,1 in questo caso, quindi quando ci si avvicina a un errore di test basso come 3-5% o inferiore, ridurre il tasso di apprendimento di una tacca (0,03) o due. Questo aiuta a convergere più velocemente ed evita di saltare intorno ai minimi globali.
  • Puoi vedere gli effetti del mantenere alto il tasso di apprendimento controllando il grafico degli errori in alto a destra.
  • Per lotti di dimensioni inferiori come 1, 0,1 è un tasso di apprendimento troppo elevato poiché il modello non riesce a convergere mentre salta attorno ai minimi globali.
  • Quindi, se desideri mantenere un alto tasso di apprendimento (0,1), mantieni anche le dimensioni del lotto alte (10). Questo di solito dà una convergenza lenta ma più fluida.

Per coincidenza, la soluzione che ho trovato è molto simile a quella fornita da Salvador Dalì .

Aggiungi gentilmente un commento, se trovi altre intuizioni o ragionamenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.