Perceptron potrafi fantazjować!

Czy maszyna może marzyć?
Czy maszyna może marzyć? http://www.juliedillonart.com/wp-content/uploads/2014/07/Artificial_Daydream-200x200.jpg
W moich ostatnich wpisach na tym blogu zająłem się perceptronami. Najpierw pierwszym Perceptronem zbudowanym i przebadanym jeszcze w latach 60. przez profesora Rosenblatta, a potem opisałem niektóre właściwości stosowanych obecnie sieci neuronowych, które są nowym wcieleniem tamtego Perceptronu, ale już nie mają tak innowacyjnego potencjału, bo stosują je wszyscy i do wszystkiego. Ja jednak badając moje perceptrony odkryłem ich dość niezwykłą cechę. Stwierdziłem, że potrafią one fantazjować. Że mogą wyobrażać sobie rzeczy, które nie istnieją, ale mogłyby istnieć. Że są zdolne do marzeń. I o tym właśnie chcę Państwu dzisiaj opowiedzieć.

W poprzednich wpisach opowiedziałem Państwu o tym, jak Perceptron potrafił się uczyć. Przyswajał on przy tym wiedzę dostarczaną przez nauczyciela. Robią to obecnie setki sieci neuronowych i dzięki temu mamy z nich różne korzyści. Ale to nie wszystko.

Dzisiaj chcę Państwu pokazać, że nowoczesny perceptron potrafi sam odkryć nową wiedzę - również wtedy, gdy nie ma nikogo, kto mógłby go czegokolwiek nauczyć. Nazywa się to "uczeniem bez nauczyciela". Istotę takiego uczenia najłatwiej będzie wytłumaczyć na przykładzie.

Wyobraźmy sobie, że potrzebujemy perceptronu, który będzie potrafił na podstawie obrazu twarzy wykryć, czy oglądana osoba jest kobietą, czy mężczyzną. Typowo w takim przypadku stosujemy uczenie z nauczycielem. Zakładamy, że jest arbiter (nauczyciel), który wie, jak należy rozważane zadanie rozwiązywać - i w trakcie uczenia tą swoją wiedzę przekazuje perceptronowi. Jeden (pierwszy) krok procesu uczenia pokazany jest na rysunku.
Mam nadzieję, że Czytelnicy zechcą mi wybaczyć fakt, że na tym (i na kilku innych) rysunkach opis jest po angielsku. Wynika to z faktu, że ja te opisywane tu doświadczenia referuję często na różnych konferencjach, głównie międzynarodowych, więc mam do tego celu przygotowane slajdy opisane po angielsku, z których chcę skorzystać przy ilustrowaniu tego wpisu. Zgoda?

Na rysunku powyżej przedstawiono pierwszy krok uczenia, w takcie którego perceptron (zrealizowany w formie sieci neuronowej zaprogramowanej na dowolnym komputerze) otrzymuje na wejściu obraz twarzy pewnego człowieka, a nauczyciel informuje, że jest to twarz mężczyzny. Dodając następny krok procesu uczenia, podczas którego prezentowany jest obraz twarzy kobiety (wraz ze stosowną podpowiedzią nauczyciela) mamy początek uczącej sekwencji.
Po bardzo wielu takich pokazach i informacjach pochodzących od nauczyciela możemy sprawdzić, co perceptron umie. W tym celu przerywamy działalność nauczyciela i pokazujemy perceptronowi twarz, której nie widział w trakcie uczenia (żeby sprawdzić, czy potrafi uogólniać wyuczoną wiedzę). Oczekujemy decyzji. Na pokazanym niżej obrazku perceptron podał poprawną odpowiedź, a zatem egzamin zdał.
To były rzeczy znane z moich wcześniejszych wpisów na tym blogu. Teraz jednak nastąpi coś naprawdę niezwykłego. Otóż spowodujemy, że perceptron będzie się uczył całkiem sam, bez nauczyciela. Pierwszy krok takiego samouczenia przedstawia rysunek. Znowu pojawił się określony obiekt, ale dla tego obiektu nikt na podał żadnej interpretacji, dlatego na ekranie komputera symulującego perceptron pojawi się znak zapytania.
Następny pokaz - i znowu brak jakiejkolwiek sugestii, więc kolejny znak zapytania.
Po wielu takich pokazach perceptron całkiem sam dojdzie do wniosku, że wśród pokazywanych mu obiektów są obiekty dwóch klas. Perceptron klas tych sam nazwać nie potrafi, bo nic nie wie o tym, że ludzie mogą należeć do różnych płci, ale jest całkiem pewny tego, że obiekty klasy A są podobne do siebie nawzajem, podobnie obiekty klasy B - natomiast pomiędzy klasami występują istotne różnice.
Tę wiedzę perceptron zdobył całkiem sam, nikt go niczego nie uczył - a o pozytywnym wyniku zadecydowały obserwowane dane. Perceptron, który zdobył wiedzę w procesie samouczenia, potrafi też rozpoznawać nieznane wcześniej obrazy. Zatem nie tylko nauczył się sam, ale umie także zdobytą wiedzę mądrze uogólniać.
Dzieje się tak dlatego, że perceptron może uczyć się metodą wywodzącą się z prac amerykańskiego neurofizjologa, Donalda Hebba (tzw. Hebbian learning), który badał procesy samouczenia na zwierzętach i na tyle swoje spostrzeżenia uogólnił i sformalizował, że obecnie z wyników tych badań korzystają informatycy budujący perceptrony.

Taki samouczący się perceptron wykazuje ciekawe własności, które omówimy odwołując się do pewnego hipotetycznego zastosowania – mało prawdopodobnego w praktyce, ale dobrze pobudzającego wyobraźnię.

Otóż wyobraźmy sobie, że wysyłamy sondę na nieznaną planetę. Liczymy się z tym, że nasz lądownik może zaobserwować na tej planecie jakieś formy życia, ale nie wiemy, ile rodzajów tych kosmitów znajdziemy i jakie będą oni wykazywali właściwości. Dlatego zamiast komputera zaprogramowanego na wykrywanie i badanie jakichś wcześniej przewidzianych form życia – wysyłamy samouczący się perceptron, który zaobserwuje i sam sklasyfikuje formy życia, z jakimi się zetknie.

Kontynuując te czysto fantastyczne rozważania, możemy sobie wyobrazić, że lądownik osiadł na powierzchni planety i został otoczony przez kosmitów.
Możemy oczekiwać, że obserwując swoje otoczenie po krótkim czasie perceptron potrafi klasyfikować i rozpoznawać pojawiające się obiekty, grupując je według obserwowanego podobieństwa, a nie według jakichkolwiek apriorycznych założeń. W ten sposób stworzy punkt wyjścia do formowania wiedzy o kosmitach, bo każda wiedza zakłada na początku jakąś kategoryzację badanych obiektów.
Przyjrzyjmy się, jak doszło do tej klasyfikacji, bo to będzie klucz do dalszych rozważań.

Załóżmy, że obiekty (kosmici) klasyfikowani są na podstawie dwóch tylko sygnałów, które docierają do neuronów sieci (żeby to się dało narysować na płaskim dwuwymiarowym wykresie, którego każda oś odpowiada jednemu z sygnałów wejściowych). Każdy z tych dwóch sygnałów dociera do wejścia neuronu (tak zwanej synapsy) mającej określoną wagę. Sprawę wag związanych z sygnałami docierającymi do poszczególnych wejść neuronów omówiłem we wcześniejszym wpisie, dlatego jeśli ktoś chce śledzić dokładnie dalsze wywody - to radzę mu zajrzeć tutaj. Ale nie jest to konieczne, bo podstawowe intuicje będą dalej podane w sposób maksymalnie czytelny. Uczenie polega na zmianie wag w neuronach, w związku z tym aktualny „stan wiedzy” rozważanego neuronu można reprezentować w postaci punktu na wspomnianym wyżej dwuwymiarowym wykresie, tak, jak to pokazano na rysunku:
Gdy na wejściach rejestrujących sygnały z otoczenia pojawią się dane obserwowanego kosmity – będą one wyznaczały punkt w tej samej przestrzeni
Z opisu matematycznego działania neuronu (pominiętego w tym opracowaniu, ale łatwego do znalezienia w literaturze) wynika, że sygnał wyjściowy neuronu będzie tym silniej dodatni, im bliżej punktu reprezentującego obiekt wejściowy znajdować się będzie punkt reprezentujący wiedzę (wagi) neuronu. Silny sygnał dodatni można utożsamiać z tym, że neuron „lubi” ten obiekt, którego dane pojawiły się na jego wejściu.
Ponieważ neuron „lubi” obiekty, których sygnały są blisko jego wag, to w typowych zastosowaniach perceptronów ten neuron staje się wykrywaczem (detektorem) takich właśnie obiektów. Ilekroć na wejściu sieci pojawi się jakiś obiekt – to wszystkie neurony wyliczają swoje sygnały wyjściowe, ustalając, w jakim stopniu ten pokazany obiekt zbliża się do ich „ideału” zawartego w wektorze wag. Porównując sygnały wyjściowe z całej grupy neuronów możemy wykryć, który z neuronów przechowuje w swojej pamięci (w wartościach wag) „wzorzec” najbardziej zbliżony do tego obecnie pokazanego obiektu – i ten właśnie neuron zostaje „zwycięzcą”.
Czy na podstawie faktu, że określony neuron jest „zwycięzcą”, można zorientować się, jak wygląda obiekt, którego pojawienie się uczyniło ten właśnie neuron „zwycięzcą”?
Owszem, gdyż komplet wag każdego neuronu zawiera w sobie wzorzec obiektu, który dany neuron będzie chętnie wykrywał. Każda waga neuronu to „ulubiona” wartość odpowiedniego sygnału charakteryzującego rozpoznawany obiekt. Komplet tych sygnałów – to „portret” rozpoznawanego obiektu. Wiedząc, jakie wartości wag maja poszczególne neurony, możemy sobie odtworzyć, jakie obiekty chcą one rozpoznawać. Ten element rozumowania będzie ważny przy prezentacji dalszych wyników i przy wyciąganiu wniosków istotnych z punktu widzenia tej pracy – więc warto na tym na chwilę zatrzymać uwagę.
Wiemy już, że zestawy wag poszczególnych neuronów można utożsamiać z wzorcami obiektów, które owe neurony chcą rozpoznawać. Naturalnym pytaniem jest jednak to, skąd się biorą owe zestawy wag?

Otóż mogą one powstać w sieci spontanicznie w następstwie procesu samouczenia. Proces taki zaczyna się od tego, że wszystkim wagom wszystkim neuronom w sieci nadaje się losowe wartości początkowe . Oznacza to, że położenia początkowe kwadracików zaznaczających lokalizację zestawów wag poszczególnych neuronów na płaszczyźnie cech rozpoznawanych obiektów będą czysto losowe. Tych kwadracików jest w praktyce dużo, bo samouczące się perceptrony buduje się z setek lub tysięcy neuronów, a ponadto są one rozrzucone przypadkowo nie na płaszczyźnie, ale w przestrzeni wielowymiarowej, bo rzeczywiste obiekty podlegające klasyfikacji mogą być charakteryzowane nie przy pomocy zaledwie dwóch cech (co pozwala tę sytuację narysować na płaszczyźnie) ale przy pomocy dziesiątków lub nawet setek różnych cech – co kieruje nas w trudne do wyobrażenia regiony przestrzeni wielowymiarowych, które jednak z obliczeniowego punktu widzenia żadnych trudności nie sprawiają.

Wychodząc od tej mgławicy setek punktów losowo rozsianych w wielowymiarowej przestrzeni, sieć zaczyna gromadzić wiedzę, obserwując nadchodzące dane i stosując technikę samouczenia wywodzącą się ze wspomnianych wyżej prac Donalda Hebba. Nie wchodząc w szczegóły owo samouczenie polega na tym, że jeśli jakiś zestaw sygnałów wejściowych powoduje pozytywną reakcje neuronu, to jego wagi zostają zmienione tak, aby nieco zbliżyły się do położenia punktu reprezentującego ten obiekt wejściowy, który tę pozytywną reakcję spowodował. Ilustruje to rysunek:
Widać, że położenie punktu reprezentującego wagi neuronu, oznaczone czerwonym kwadratem, zmieniło się w taki sposób, że nowe położenie tego punktu znajduje się bliżej punktu reprezentującego wejściowy obiekt. Mówiąc potocznie – następuje tu pogłębienie preferencji. Jeśli obiekt „podobał się” neuronowi, to wiedza neuronu ulega takiej modyfikacji, że następnym razem ten sam obiekt (lub obiekt do niego podobny, czyli mający zbliżoną lokalizację w rozważanej przestrzeni sygnałów) będzie się jeszcze bardziej neuronowi podobał. Na marginesie warto dodać, że od tej pory czerwony kolor będzie stale używany do oznaczenia na rysunkach punktów odpowiadających tym neuronom, które na dany obiekt (aktualnie przedstawiany zestaw sygnałów wejściowych) reagują pozytywnie.

Opisany wyżej efekt przyciągania ma dominujące znaczenie przy procesach samouczenia sieci neuronowych. Można to prześledzić na rysunku poniżej, na którym widać ten efekt w postaci trajektorii przemieszczeń (zaznaczonych przerywanymi liniami zaczynającymi się w czerwonych kwadratach) punktów reprezentujących wagi neuronów, które miały pozytywny stosunek do obiektu wejściowego o lokalizacji pokazanej przez zielone kółko.
Efektem opisanego procesu samouczenia jest stopniowe „krystalizowanie się” w sieci wzorców często występujących obiektów. Jeśli wyobrazimy sobie, że w naszym żartobliwym przykładzie z kosmitami w pewnym ograniczonym rejonie przestrzeni sygnałów wejściowych będą się pojawiać wielokrotnie obiekty pewnej klasy (zapewne kosmici tego samego gatunku), to chociaż lokalizacja każdego z tych obiektów będzie trochę inna, to utworzy się „strefa przyciągania”:
Do tej strefy przyciągania zmierzać będą kolejne neurony, które w efekcie stworzą ciasne skupisko identyfikujące rozważaną klasę obiektów.
Jeśli na wejściu sieci pojawi się kilka typów rozważanych obiektów (kilka gatunków obserwowanych kosmitów) – to każdy z nich utworzy w efekcie własne skupisko neuronów, które będą identyfikować i rozpoznawać obiekty właśnie tej klasy .
Gdyby (w hipotetycznym przykładzie lądownika planetarnego) naukowcy z Ziemi zajrzeli do pamięci sieci neuronowej – to by na podstawie tych skupisk stwierdzili, ile różnych gatunków kosmitów wykryła sonda, a badając wagi neuronów w poszczególnych skupiskach mogliby także stwierdzić, jak ci kosmici wyglądają i jakie mają właściwości (bo w wagach neuronów zawarty jest „wzorzec” rozpoznawanego obiektu).
Oczywiście przykład z kosmitami jest żartem, ale proces tworzenia skupisk neuronów odpowiadających poszczególnym klasom rozważanych obiektów jest bardzo interesujący poznawczo. Jeśli spojrzeć na to, co się dzieje w samouczącej się sieci neuronowej, z bardzo ogólnego punktu widzenia, to można postawić tezę, że odpowiada to poniekąd procesowi formowania pojęć.

Ja w moich pracach wykazałem - chyba jako pierwszy na świecie - że temu procesowi towarzyszyć może całkowicie spontaniczne powstawanie w perceptronie różnych wyobrażeń obiektów, które w rzeczywistości nie istnieją - czyli fantazjowanie. Obejrzyjmy, jak to się dzieje.

Wyobraźmy sobie, że sieci przedstawiamy w trakcie procesu uczenia dane należące do czterech kategorii: kobiet, ptaków, ryb oraz gadów.
W zadaniu tym, gdy już proces uczenia zostanie doprowadzony do końca, poszczególne dobrze zogniskowane grupy neuronów będą mogły rozpoznawać obiekty rozważanych klas.
Natomiast ciekawe zjawisko udało się wykryć, gdy rozważano zachowanie omawianej tu sieci samouczącej w stadium częściowego nauczenia. Stadium to, zajmujące pośrednie położenie pomiędzy początkowym chaosem całkowicie losowo rozrzuconych neuronów a końcowym porządkiem dobrze już zogniskowanych grup neuronów rozpoznających poszczególne klasy, przedstawione jest w środku na rysunku poniżej.
W tym pośrednim stadium procesu samouczenia możemy (na podstawie wartości wag) zidentyfikować obiekty, które odpowiadają poszczególnym neuronom. Wyniki takiej wizualizacji przedstawiono na rysunku:
Widać, że wiedza jest już gromadzona w poszczególnych neuronach, jednaj nie uległa ona jeszcze konsolidacji. Obserwując uważnie ten rysunek (i wiele innych podobnych, gdyż opisany tu efekt wykrywałem wielokrotnie w różnych formach) – można zauważyć neurony, które zdają się podlegać przyciąganiu przez więcej niż jedno tworzące się w sieci skupisko. Ich lokalizację pokazuje przykładowo rysunek poniżej.
Jak się okazuje, są to neurony, które chcą rozpoznawać nieistniejące w rzeczywistości hybrydy – twory mające częściowo właściwości różnych istniejących obiektów, ale splecione i zmieszane w taki sposób, że można je interpretować na przykład tak, jak to pokazano na rysunku:
Jak widać, perceptron całkiem sam, bez żadnych wskazówek i wzorców, potrafił sobie "wyobrazić" anioła oraz syrenkę, chociaż nigdy takich tworów nie widział!

Czy nie jest to zadziwiające, że tak prosta maszyna, jak opisany perceptron, na skutek tego, że został zbudowany (jak to często pisałem) "na obraz i podobieństwo" naszego mózgu - okazał się tak bardzo do nas podobny, że jest zdolny nawet do fantazjowania, a może także do ... marzeń? Osoba, która jako pierwsza czytała ten tekst, skomentowała to w sposób następujący: Kojarzy mi się to z tytułem książki Philipa K. Dicka "Do Androids Dream of Electric Sheep?", według której nakręcono słynny film Ridleya Scotta "Blade Runner". A co Państwo o tym sądzicie?
Trwa ładowanie komentarzy...