Comment classer des données de forme spirale?

9

Je déconne dans le terrain de jeu tensorflow . L'un des ensembles de données d'entrée est une spirale. Quels que soient les paramètres d'entrée que je choisis, quelle que soit la largeur et la profondeur du réseau neuronal que je fais, je ne peux pas s'adapter à la spirale. Comment les scientifiques des données adaptent-ils les données de cette forme?

Souradeep Nanda
la source

Réponses:

11

Il existe de nombreuses approches à ce type de problème. Le plus évident est de créer de nouvelles fonctionnalités . Les meilleures fonctionnalités que je peux proposer sont de transformer les coordonnées en coordonnées sphériques .

Je n'ai pas trouvé de moyen de le faire dans la cour de récréation, donc je viens de créer quelques fonctionnalités qui devraient aider à cela (fonctionnalités de péché). Après 500 itérations, il saturera et fluctuera à 0,1 point. Cela suggère qu'aucune amélioration supplémentaire ne sera apportée et je devrais probablement élargir la couche cachée ou ajouter une autre couche.

Pas étonnant qu'après avoir ajouté un seul neurone à la couche cachée, vous obtenez facilement 0,013 après 300 itérations. La même chose se produit en ajoutant une nouvelle couche (0,017, mais après 500 itérations beaucoup plus longues. Pas étonnant non plus car il est plus difficile de propager les erreurs). Vous pouvez très probablement jouer avec un taux d'apprentissage ou faire un apprentissage adaptatif pour le rendre plus rapide, mais ce n'est pas le point ici.

entrez la description de l'image ici

Salvador Dali
la source
Coordonnées sphériques! Cela m'a rappelé le calcul de premier cycle.
Souradeep Nanda
4
@SouradeepNanda, vous trouverez beaucoup de choses mathématiques que les gens trouvent inutiles à l'école extrêmement importantes en ML
Salvador Dali
Juste pour les curieux comme moi, j'essaie de reproduire les résultats , mais les choses ne se passent pas aussi bien
codevision
4

X1X2

Solution sans fonctionnalités supplémentaires

Dheeraj Pb
la source
3

thetaarctan(y,X)r(X2+y2)

X2y2

entrez la description de l'image ici

anonisnotanon
la source
Pouvez-vous expliquer comment vous avez "triché"? Comment avez-vous ajouté ces fonctionnalités? Avez-vous téléchargé le terrain de jeu depuis GitHub et l'avez-vous modifié? Ou existe-t-il un moyen plus direct de procéder?
Jim
Je me demandais comment appliquer ce hack aussi. J'ai essayé de le faire dans le navigateur mais je n'ai pas eu de chance avec ça. Ensuite, j'ai décidé de bifurquer le code source et ajouté les nouvelles fonctionnalités d'entrée. Vous pouvez le voir ici
Cankut
0

solution de spirale pour aire de jeux tensorflow

Ceci est un exemple de terrain de jeu Tensorflow vanille sans fonctionnalités ajoutées et sans modifications. La course pour Spiral se situait entre 187 et 300 époques, selon. J'ai utilisé la régularisation Lasso L1 pour éliminer les coefficients. J'ai diminué la taille du lot de 1 pour éviter que la sortie ne soit trop ajustée. Dans mon deuxième exemple, j'ai ajouté du bruit à l'ensemble de données, puis j'ai augmenté le L1 pour compenser.

entrez la description de l'image ici

Jamin Quimby
la source
0

La solution que j'ai trouvée après une heure d'essai converge généralement en seulement 100 époques .

Oui, je sais qu'il n'a pas la frontière de décision la plus fluide, mais il converge assez rapidement.

! [Erreur de test de 0,6%

J'ai appris quelques choses de cette expérience en spirale: -

  • La couche de sortie doit être supérieure ou égale à la couche d'entrée . C'est du moins ce que j'ai remarqué dans le cas de ce problème en spirale.
  • Gardez le taux d'apprentissage initial élevé , comme 0,1 dans ce cas, puis lorsque vous approchez d'une erreur de test faible comme 3-5% ou moins, diminuez le taux d'apprentissage d'un cran (0,03) ou deux. Cela aide à converger plus rapidement et évite de sauter autour des minima mondiaux.
  • Vous pouvez voir les effets du maintien d'un taux d'apprentissage élevé en consultant le graphique d'erreur en haut à droite.
  • Pour des lots plus petits comme 1, 0,1 est un taux d'apprentissage trop élevé car le modèle ne parvient pas à converger en sautant autour des minima mondiaux.
  • Donc, si vous souhaitez conserver un taux d'apprentissage élevé (0,1), maintenez également la taille du lot (10). Cela donne généralement une convergence lente mais plus fluide.

Par coïncidence, la solution que j'ai trouvée est très similaire à celle fournie par Salvador Dali .

Veuillez ajouter un commentaire, si vous trouvez plus d'intuitions ou de raisonnements.

dracarys3
la source