Lubię zatrzymywać wykonywanie, gdy partia SOM staje się zbieżna. Jakiej funkcji błędu można użyć do określenia zbieżności?Kryterium zbieżności dla (partii) SOM (mapa samoorganizująca się, inaczej "Mapa Kohonena")?
Odpowiedz
Mówiąc o zbieżności dla SOM, dla danej wielkości mapy (n x m), chcesz wiedzieć, czy wystarczająca liczba iteracji algorytmu została uruchomiona w celu zapewnienia, że mapa jest "stabilna". To znaczy, mówiąc luźno, czy nowe dane wejściowe (obserwacje) do mapy zostaną umieszczone w tych samych wektorach neuronów/kodów kodów, jeśli mapa zostanie wielokrotnie przekwalifikowana? (Ignorując kwestię faktu, że układ mapy może się zmieniać, gdy trenuje się za każdym razem, co jest w porządku, o ile klastry są nadal ułożone w stabilny sposób).
Aby udzielić odpowiedzi na pytanie, czy wykonano wystarczającą liczbę iteracji, zapoznaj się z dokumentami naukowymi wymienionymi poniżej. Oba artykuły poruszają także kwestię, jaka wielkość mapy jest odpowiednia (jakie wartości n x m pomagają zapewnić zbieżność SOM?).
Jednym z tradycyjnych metod, które były popularne w dokumentach podane są tutaj:
Statistical tools to assess the reliability of self-organizing maps (Bodt, Cottrell, Verleysen)
Niedawno ten sposób doszło, który wygląda dość obiecująco:
Ta teza, moim zdaniem, była naprawdę dobrze napisana i przyjemna do przeczytania. Miło też jest, że te badania zostały napisane jako test zbieżności SOM w (raczej nieznanym) pakiecie w R, o nazwie popsom
. Sprawdź:
Jestem prawie pewny, że masz na myśli funkcję kosztu, a nie funkcję błędu.
SOM nie wymaga funkcji błędu (ani funkcji kosztu).
Na najwyższym poziomie taksonomii Machine Learning, SOM jest Uczenie Nienadzorowane technika --no wektora docelowego, a więc nie "target-wektor" minus "value_at_the_current_iteration", aby zminimalizować.
Innym sposobem myślenia o tym: rolą funkcji kosztowej jest minimalizacja niektórych kosztów; w ML jest to różnica między obliczeniem modelu a dostarczonymi danymi. W SOM, żadne dane nie są dostarczane do algorytmu w tym celu.
(Rozumiem, że jest to nieco mylące, ponieważ dane wejściowe, z których tworzona jest sieć, są często określane jako "dane szkoleniowe" - prawdopodobnie taka jest rola danych wejściowych w nadzorowanych technikach ML, które są znacznie bardziej powszechne Prawdopodobnie jest to również mylące, ponieważ Teuvo Kohonen, osoba przypisana do "wymyślania" SOM, początkowo nazywała je klasą sieci neuronowych - i oczywiście NN jest nadzorowaną techniką i opiera się na funkcji kosztowej (często gradientowe zejście.))
Wreszcie, aby się upewnić, sprawdziłem swój własny kod SOM, a także kod z podręcznika ML Marslanda "Machine Learning: Algorithmic Perspective". Zarówno w moim kodzie, jak iw jego, jedynym kryterium zatrzymania, niezależnie od wartości dla "maksymalnych iteracji", użytkownik podał, gdy wywołał główną funkcję.
- 1. Konwersja Java Mapa Scala Mapa
- 2. Implementacja samoorganizującej się mapy (SOM)
- 3. tworzenie i gromadzenie się mapa Mapa mapą ... w Scala
- 4. Mapa Ruby() dla pojedynczego obiektu
- 5. Mapa modułu prywatnego dla architektury
- 6. Mapa JQuery vs Mapa JavaScript vs For-loop
- 7. Mapa Mathematica North America
- 8. Mapa przewijania VS (Minimapa)
- 9. Mapa funkcja ifPresent
- 10. Zoomable mapa świata politycznego
- 11. MongoDB mapa zredukować tutoriala
- 12. Mapa mutex C++ 11
- 13. Scala Mapa konwersja
- 14. Groovy mapa błąd składni
- 15. Efektywna mapa Hash Użyj
- 16. Dwukierunkowa mapa w kakao
- 17. Kątowy odpowiednik jQuery $ .mapa?
- 18. Ulotka Pusta mapa
- 19. Mapa Wartości w Collectors.groupingBy()
- 20. mapa vs unordered_map dla kilku elementów
- 21. Mapa z kluczem tylko - dla zawiera sprawdzanie
- 22. mapa pasta (p) „0P
- 23. Klikalna mapa obrazu C#
- 24. Mapa STL na siebie?
- 25. Mapa cieplna lub wykres dla macierzy korelacji
- 26. mapa wektorów w STL?
- 27. Mapa dwukierunkowa w Javie?
- 28. Mapa korelacji ciepła
- 29. Futures - mapa vs flatmap
- 30. Dostęp wartość mapa indeksem
Dzięki bardzo. Zastanawiam się, czy znasz jakieś dobre odniesienie do implementacji SOM serii. Znajduję wiele seryjnych implementacji SOM w sieci, ale nie w partiach.W mojej implementacji średni koszt (odległość między danymi treningowymi a neuronami) spada, ale koszt wzrasta w przypadku niektórych neuronów ... Kod musi być niewidoczny ... –
Oto jeden w C++ (na to nie patrzyłem) : http://www.cis.hut.fi/research/som_lvq_pak.shtml; i tutaj jest implementacja Pythona (http://www-ist.massey.ac.nz/smarsland/MLBook.html); link do strony domowej do podręcznika ML Stephena Marslanda; na tej stronie umieszcza on cały kod użyty w książce (przewiń do sekcji 9, zobaczysz kod SOM). – doug
Jest również ładnie napisany kod C dla SOM w pakietach open source 'class' (wersja podstawowa),' kohonen', 'popsom' ... – FXQuantTrader