Odpowiedz

2

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:

A CONVERGENCE CRITERION FOR SELF-ORGANIZING MAPS , masters thesis, Benjamin h. ott (University of Rhode island)

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ź:

popsom

5

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ę.

+0

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 ... –

+1

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

+0

Jest również ładnie napisany kod C dla SOM w pakietach open source 'class' (wersja podstawowa),' kohonen', 'popsom' ... – FXQuantTrader