Jak sklasyfikować dane o kształcie spirali?

Odpowiedzi:

11

Istnieje wiele podejść do tego rodzaju problemu. Najbardziej oczywistym jest tworzenie nowych funkcji . Najlepsze funkcje, jakie mogę wymyślić, to przekształcenie współrzędnych na współrzędne sferyczne .

Nie znalazłem sposobu na zrobienie tego na placu zabaw, więc właśnie stworzyłem kilka funkcji, które powinny w tym pomóc (funkcje grzechu). Po 500 iteracjach będzie się nasycać i będzie się wahać z wynikiem 0,1. Sugeruje to, że nie będzie żadnych dalszych ulepszeń i najprawdopodobniej powinienem poszerzyć ukrytą warstwę lub dodać kolejną.

Nic dziwnego, że po dodaniu tylko jednego neuronu do ukrytej warstwy łatwo dostajesz 0,013 po 300 iteracjach. Podobnie dzieje się po dodaniu nowej warstwy (0,017, ale po znacznie dłuższych 500 iteracjach. Również nie jest zaskoczeniem, ponieważ trudniej jest propagować błędy). Najprawdopodobniej możesz grać z szybkością uczenia się lub uczeniem się adaptacyjnym, aby przyspieszyć, ale nie o to tutaj chodzi.

wprowadź opis zdjęcia tutaj

Salvador Dali
źródło
Współrzędne sferyczne! Przypomniał mi rachunek różniczkowy.
Souradeep Nanda,
4
@SouradeepNanda znajdziesz wiele rzeczy matematycznych, które ludzie uważają za bezużyteczne w szkole, niezwykle ważne w ML
Salvador Dali,
Tylko dla takich ciekawskich jak ja staram się powielać wyniki , ale sprawy nie idą tak gładko
kod
4

Idealnie sieci neuronowe powinny być w stanie samodzielnie znaleźć tę funkcję, bez zapewniania przez nas cech sferycznych. Po kilku eksperymentach udało mi się osiągnąć konfigurację, w której nie potrzebujemy niczego opróczX1 i X2). Ta sieć zbiegła się po około 1500 epokach, co jest dość długie. Więc najlepszym sposobem może być dodanie dodatkowych funkcji, ale staram się tylko powiedzieć, że nadal można się bez nich połączyć.

Rozwiązanie bez dodatkowych funkcji

Dheeraj Pb
źródło
3

Oszukiwanie ... thetajestarctan(y,x), r jest (x2)+y2)).

W teorii, x2) i y2) powinny działać, ale w praktyce jakoś zawiodły, chociaż czasami to działa.

wprowadź opis zdjęcia tutaj

anonisnotanon
źródło
Czy potrafisz opisać, w jaki sposób „oszukiwałeś”? Jak dodałeś te funkcje? Czy pobrałeś plac zabaw z GitHub i zmodyfikowałeś go? A może jest to bardziej bezpośredni sposób?
Jim
Zastanawiałem się, jak zastosować ten hack. Próbowałem to zrobić w przeglądarce, ale nie miałem z tym szczęścia. Następnie postanowiłem rozwidlić kod źródłowy i dodałem nowe funkcje wprowadzania. Możesz to zobaczyć tutaj
Cankut
0

waniliowe rozwiązanie spiralne tensorflow dla placów zabaw

To jest przykład waniliowego placu zabaw Tensorflow bez żadnych dodatkowych funkcji i modyfikacji. W zależności od modelu czas trwania Spirali wynosił od 187 do ~ 300 Epoki. Użyłem Lasso Regularization L1, aby wyeliminować współczynniki. Zmniejszyłem rozmiar partii o 1, aby uniknąć nadmiernego dopasowania produkcji. W drugim przykładzie dodałem trochę szumów do zestawu danych, a następnie podniosłem L1, aby to zrekompensować.

wprowadź opis zdjęcia tutaj

Jamin Quimby
źródło
0

Rozwiązanie Sięgnąłem po godzinie próby zazwyczaj zbiega się w odległości zaledwie 100 epok .

Tak, wiem, że nie ma tam najbardziej płynnej granicy decyzyjnej, ale zbiega się dość szybko.

! [Błąd testu 0,6%

Nauczyłem się kilku rzeczy z tego spiralnego eksperymentu:

  • Warstwa wyjściowa powinna być większa lub równa warstwie wejściowej . Przynajmniej tak zauważyłem w przypadku tego problemu spirali.
  • Utrzymuj wysoki współczynnik początkowego uczenia się , na przykład 0,1 w tym przypadku, a następnie, gdy zbliżasz się do niskiego błędu testu, na przykład 3-5% lub mniej, zmniejsz tempo uczenia się o jeden stopień (0,03) lub dwa. Pomaga to w szybszym zbliżaniu się i pozwala uniknąć przeskakiwania globalnych minimów.
  • Możesz zobaczyć efekty utrzymania wysokiego poziomu uczenia się, sprawdzając wykres błędów w prawym górnym rogu.
  • W przypadku mniejszych partii, takich jak 1, 0,1 jest zbyt wysokim wskaźnikiem uczenia się, ponieważ model nie zbiega się podczas przeskakiwania wokół globalnych minimów.
  • Tak więc, jeśli chcesz utrzymać wysoką szybkość uczenia się (0,1), utrzymuj również wysoki rozmiar partii (10). Zwykle zapewnia to powolną, ale płynniejszą konwergencję.

Przypadkowo rozwiązanie, które wymyśliłem, jest bardzo podobne do rozwiązania dostarczonego przez Salvadora Dali .

Dodaj komentarz, jeśli znajdziesz więcej intuicji lub uzasadnień.

dracarys3
źródło