216 Sieci samoorganizujące się
Na rysunku możesz zauważyć, że punkty odpowiadające sąsiednim neuronom przedstawiane są jako połączone liniami. Gdy w wyniku procesu uczenia przemieszczają się punkty - przemieszczają się także odpowiednie linie. Oczywiście powinno to dotyczyć wszystkich neuronów i wszystkich relacji sąsiedztwa, ale na rysunku 10.8. dla maksymalnej jego czytelności pokazałem tylko te linie, które dotyczyły aktualnie “zwycięskiego” neuronu i jego sąsiadów, pominąłem natomiast wszystkie inne połączenia. W szczegółach dla całej sieci zobaczysz to za chwilę na przykładzie programu ll.BAS, który dla Ciebie przygotowałem.
Samoucząca się sieć z wbudowaną konkurencją i wbudowanym mechanizmem sąsiedztwa nazywana jest - od nazwiska fińskiego uczonego, którą ją jako pierwszy skonstruował i badał - siecią Kohonena. Sieci Kohonena są jednymi z najważniejszych narzędzi, jakie technika sieci neuronowych dostarczyła, poznamy je zatem bliżej.
Program ll.BAS ilustruje działanie sieci Kohonena. Jest on - niestety - dość długi, przeto działa bardzo wolno. Warto jednak cierpliwie poczekać w czasie, kiedy program będzie się uczył - bo to, co zobaczysz naprawdę jest warte tego trudu. Żebyś jednak dokładnie wiedział, co właściwie widzisz -najpierw kilka uwag ogólnych.
Program na początku spyta Cię o rozmiary sieci: w poziomie (m) i w pionie (n). Rozmiar sieci, jaki wybierzesz, zależy naturalnie tylko od Ciebie, jednak musisz pamiętać, że program symulujący działanie większej sieci będzie działał wolniej. Dlatego zacznij zabawę od sieci niezbyt dużych - na przykład dobrym pomysłem jest wybranie sieci o rozmiarach 5x5 neuronów. Taka sieć jest dość prymitywna i niewiele będzie z niej pożytku przy bardziej złożonych zadaniach, ale za to będzie się uczyła na tyle szybko, że już po kilku sekundach zobaczysz, o co w tym wszystkim chodzi. Potem przyjdzie czas na sieci o większych rozmiarach. Maksymalnie możesz zdefiniować sieć złożoną aż z 2000 neuronów (20 x 100), ale przy uczeniu takiej sieci musisz naprawdę wykazać anielską cierpliwość - na moim komputerze wykonanie jednego kroku uczenia dla takiej sieci wymaga około pół minuty, a wiesz już z wcześniejszych doświadczeń, że dla ostatecznego nauczenia większej sieci konieczne jest wykonanie od kilkuset do kilkunastu tysięcy kroków. Po podaniu obydwu rozmiarów sieci program prosi, żebyś podał także zakres liczb, z którego losowane będą wartości początkowe współczynników wag. Na początek proponuję, żebyś zaakceptował sugestię podawaną przez program (wystarczy nacisnąć ENTER),