Elementarne wprowadzenie do techniki sieci neuronowych 171
W ten sposób sieć - całkiem sama - wyspecjalizuje się w rozpoznawaniu wszystkich napotkanych rodzajów obiektów. Śledząc proces samouczenia zauważysz na pewno, że utrwala on i pogłębia jedynie “wrodzone skłonności” sieci neuronowej, wyrażające się w początkowym (losowym!) rozrzucie wektorów wag. Te właśnie początkowe różnice powodują, że po pojawieniu się obiektu wejściowego jedne neurony reagują na jego pokazanie pozytywnie, a inne negatywnie, a potem następuje korekta wag wszystkich neuronów sieci w taki sposób, że w rezultacie uczy się ona rozpoznawać typowe pojawiające się na wejściu elementy i skutecznie doskonali swoją zdolność rozpoznawania bez żadnej ingerencji nauczyciela, który może nawet nie wiedzieć, ile obiektów trzeba będzie rozpoznawać ani jakie będą ich
Do tego, aby proces samouczenia przebiegał efektywnie konieczne jest jednak zapewnienie w populacji neuronów niezbędnej początkowej różnorodności. Jeśli wartości wag są losowane w taki sposób, by w populacji neuronów zapewniona była niezbędna różnorodność - proces samouczenia przebiegać będzie stosunkowo łatwo i bez zakłóceń. Jeśli jednak wszystkie neurony będą miały podobne “wrodzone zamiłowania” - bardzo trudno będzie spowodować, by w toku procesu uczenia “obsłużyły” wszystkie klasy pojawiających się obiektów. Bardziej prawdopodobne jest w takim przypadku zjawisko “owczego pędu” - zbiorowej fascynacji wszystkich neuronów jednym napotkanym obiektem i całkowitego ignorowania wszystkich innych. Koniec najczęściej jest taki, że wszystkie neurony wyspecjalizują się w rozpoznawaniu jednej wybranej klasy obiektów - przy całkowitym ignorowaniu wszystkich pozostałych klas.
W programie 10A.BAS różnorodność była zagwarantowana jako coś oczywistego i niezmiennego. Ponieważ jednak problem wpływu losowości wstępnego rozsiania neuronów jest sprawą o podstawowym znaczeniu -przygotowałem wariant tego programu o nazwie 10AX.BAS, w którym musisz wyraźnie zażądać losowego rozrzucenia cech. Pierwszą rzeczą, o jaką Cię ten program zapyta, gdy go uruchomisz - będzie właśnie to, czy chcesz, aby początkowe położenia neuronów były szeroko rozrzucone po całej przestrzeni wejść - czy mają być wylosowane z pewnego wąskiego obszaru. Na początku lepiej będzie wybierać neurony szeroko rozrzucone i dlatego w odpowiedzi na postawione pytanie po prostu naciskaj Enter (oznaczać to będzie odpowiedź “nie”). W momencie kiedy jednak poznasz już podstawowe prawidłowości procesu samouczenia sieci i będziesz gotowy do tego, by zobaczyć coś istotnie nowego - naciśnij w odpowiedzi klawisz “t”. Zobaczysz wtedy na własne oczy, jak ważne jest dla sieci neuronowej bywa początkowe losowe rozrzucenie parametrów (wag) neuronów. Kilka obrazów prezentujących sposób samouczenia sieci w przypadku, gdy