Kwantyzator konkurował zamiast średnich
Neural gas, wprowadzona przez Thomas Martinetza i Klausa Schultena w 1991 roku, jest algorytmem uczenia się bez nadzoru, który umieszcza zbiór wektorów odniesienia – węzłów – w chmurze danych tak, aby każdy węzeł ostatecznie reprezentował punkty danych najbliższe mu. Celem tego jest to samo, co k-means clustering, ale osiąga się to w inny sposób: zamiast aktualizować tylko jeden najbliższy węzeł na każdym kroku treningowym, neural gas aktualizuje wszystkie z nich, a ilość ruchu skalowana jest przez stopień, w jakim aktualny rang kolejnego węzła zbliża się do zwycięzcy.
Zasada: klasyfikuj, nie tylko wybieraj zwycięzcę
Dla każdego przykładu treningowego x, każdy węzeł jest oceniany (klasyfikowany) na podstawie odległości do x – 0 oznacza najbliższy (zwycięzca), 1 drugiego najbliższego i tak dalej. Następnie każdy węzeł jest przyciągany do x w sposób zależny od eksponencjalnego zaniku, który zależy od jego pozycji w rankingu:
dla każdego wejścia x: oceniaj wszystkie węzły i na podstawie odległości do x → k_i = 0, 1, 2, … (0 = najbliższy) dla każdego węzła i: w_i += ε(t) · exp(-k_i / λ(t)) · (x − w_i) ε(t), λ(t) zanikają wraz z upływem czasu treningowego od dużych (ogólne, globalne ułożenie) do małych (drobne, lokalne dopracowanie) live demo · węzły migrujące w kierunku gęstości ruchomej chmury● LIVE Na początku treningu λ jest duże, więc nawet odległe węzły otrzymują znaczący impuls w kierunku każdego przykładu – to szybko rozprzestrzenia wszystkie węzły na zajętym obszarze przestrzeni wejściowej i zapobiega klasycznemu błędom k-średnich, gdzie węzeł zainicjalizowany z dala od danych nigdy nie jest wybierany i pozostaje "martwy". W miarę jak λ zbliża się do zera, zasada konwerguje do zwykłego uczenia się wygrywa-zwycięzca (winner-take-all), a węzły ustalają się w drobnoziarnistym przybliżeniu gęstości danych: gęste obszary przyciągają wiele węzłów, a rzadkie obszary przyciągają niewiele węzłów.
for each input x:
rank all nodes i by distance to x → k_i = 0, 1, 2, … (0 = closest)
for each node i:
w_i += ε(t) · exp(-k_i / λ(t)) · (x − w_i)
ε(t), λ(t) decay over training time from large (coarse, global
ordering) to small (fine, local refinement)
Konkurencyjne uczenie Hebbowskie: budowanie grafu za darmo
Podstawowy algorytm umieszcza węzły, ale nie łączy ich. Dodatkowe reguły, konkurencyjnego uczenia Hebbowskiego, dodają krawędź między najbliższymi węzłami dla każdego przykładu w momencie jego przybycia i usuwają krawędzie, które nie zostały zaktualizowane przez jakiś czas. Ponieważ krawędź powstaje tylko między zwycięzcą a drugim miejscem w przypadku danego punktu danych, otrzymany graf jest wyczerpująco bliski aproksymacją do Delaunay triangulation indukowanej przez dane, ograniczona do obszaru, który zajmują dane – sieć zasadniczo odkrywa własną topologię zamiast mieć ją narzuconą.
W porównaniu z algorytmami k-średni i mapami samoorganizującymi
Mapa samoorganizująca (SOM) posiada również regułę aktualizacji opartą na sąsiedztwie, ale jej obszar sąsiedztwa jest zdefiniowany przez stałe pozycje na wyznaczonym 1D lub 2D siatce – dwa węzły są sąsiadami, jeśli znajdują się obok siebie na tej siatce, niezależnie od tego, czy dane rzeczywiście je łączą. Neural Gas zamiast tego definiuje sąsiedztwo wyłącznie poprzez ranking odległości w przestrzeni danych, bez żadnej wyprzedzonej siatki do zniekształcania lub niszczenia. Dzięki temu jest znacznie bardziej tolerancyjny na dane, których wewnętrzna forma nie pasuje do płaskiej siatki – spirale, rozgałęziające się rozmaitości, odłączone klastry – a empiryczne badania od oryginalnego artykułu wciąż pokazują, że Neural Gas osiąga niższą błąd kwantyzacji niż algorytmy k-średni i SOM przy tym samym zestawie danych i liczbie węzłów, kosztem jednego dodatkowego parametru do stopowego.
Wzrastająca sieć gazową: umożliwienie sieci samemu się rozszerzać
Rozszerzenie gazowe Bernd Fritzke'a z 1995 roku rozpoczyna się od dwóch węzłów i okresowo dodaje nowy węzeł obok tego, który zgromadził najwięcej lokalnych błędów, automatycznie dzieląc przeciążone obszary. Połączone z konkurencyjnymi krawędziami Hebbowskiego oraz zasadą starzenia, które usuwają nieaktualne połączenia, może śledzić ruchomą lub zmieniającą się dystrybucję danych na żywo i jest wykorzystywane do online'owego grupowania, generowania siatki zachowującej topologię z chmur punktów 3D oraz budowy map robotów, gdzie liczba potrzebnych grup nie jest znana z góry.
Frequently asked questions
Dlaczego nazywa się to gazem neuronowym?
Thomas Martinetz i Klaus Schulten nadali mu tę nazwę w 1991 roku, ponieważ wektory odniesienia zachowują się podczas uczenia się – jak cząsteczki gazu rozprzestrzeniające się przez objętość przestrzeni wejściowej, przemieszczając się, aby równomiernie ją wypełnić, zamiast opierać się na sztywnym siatce.
Jak gaz neuronowy różni się od k-średnich?
K-średnie aktualizuje jedynie pojedynczy najbliższy centroid w każdym kroku, co sprawia, że jest podatne na utknięcie w złym lokalnym optimum w zależności od inicjalizacji. Gaz neuronowy aktualizuje każdy węzeł w każdym kroku, ważony przez jego rangę sąsiedztwa, więc oddalone węzły otrzymują niewielki pchnięcie – to miękkie rywalizowanie wygładza złe początkowe pozycje i znacznie bardziej niezawodnie konwerguje.
Czy gaz neuronowy potrzebuje zdefiniowanej siatki, jak mapa samoorganizująca się?
Nie. Mapa samoorganizująca się ustala 1D lub 2D siatkę sąsiadów przed treningiem i zachowuje topologię tej siatki. Gaz neuronowy nie ma takiej siatki – podstawowa wersja nie posiada w ogóle jawnego grafu sąsiedztwa, a rozrastalny gaz neuronowy buduje graf połączeń oraz liczbę węzłów podczas uczenia się, adaptując go bezpośrednio do kształtu danych.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Neural Gas i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.
▶ Otwórz symulację Neural Gas