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