Czy dziś baron Kempelen też musiałby oszukiwać, czyli sieci neuronowe i sztuczna inteligencja

Choć od dawna potrafimy konstruować potężne dźwigi podnoszące wielotonowe ciężary, to podnoszenie ciężarów, jako dyscyplina sportowa, ma się dobrze. I nikomu nie przeszkadza, że dźwig jest ''silniejszy''. Dlaczego więc miałoby szachistom przeszkadzać, że komputer jest "mądrzejszy"?

Choć od dawna potrafimy konstruować potężne dźwigi podnoszące wielotonowe ciężary, to podnoszenie ciężarów, jako dyscyplina sportowa, ma się dobrze. I nikomu nie przeszkadza, że dźwig jest ''silniejszy''. Dlaczego więc miałoby szachistom przeszkadzać, że komputer jest "mądrzejszy"?

Rok 1809. Pałac Schonbrunn pod Wiedniem. Potoki światła zalewają jedną z komnat pałacu. Na środku komnaty cesarz Napoleon Bonaparte siedzi przy tajemniczym urządzeniu - jest to stółszachownica, połączony z olbrzymią postacią wyobrażającą siedzącego Turka. Napięcie w komnacie sięga zenitu; cesarz cieszy się opinią świetnego gracza, natomiast automat ma na swoim koncie wspaniałe sukcesy - od chwili, gdy w roku 1769 po raz pierwszy został zaprezentowany przez konstruktora, barona Wolfganga von Kempelena, węgierskiego inżyniera, fizyka i wynalazcę, nikt nie powiedział mu "mat". A rozgrywał partie z najlepszymi ówczesnymi szachistami, na dworach cesarskich i królewskich w Wiedniu i Petersburgu, we Francji, Holandii i Anglii. Napoleon spogląda nerwowo na szachownicę. Ten geniusz strategii, którego wojska opanowały już pół Europy, jest w coraz trudniejszym położeniu. Wreszcie dzieje się to, co zawsze w przypadku, gdy ktoś zasiadał do partii z "Turkiem". Bezbronny król Napoleona znalazł się w matni bez wyjścia.

Oczywiście "Turek" Kempelena nie był automatem do gry. Oszustwo polegało na tym, że w środku urządzenia siedział człowiek, który za pomocą skomplikowanego mechanizmu otrzymywał informacje o ruchach przeciwnika i sam też mógł ruchy na szachownicy wykonywać. Napoleon więc nie grał z maszyną, ale z Johannem Allgaierem, jednym z najlepszych szachistów ówczesnej Europy, który siedząc wewnątrz "Turka" brał udział w oszustwie. Sprawę zdemaskował Edgar Alan Poe w obszernej rozprawie z 1836 r. zatytułowanej Gracz w szachy Maelzela. To zdarzenie, jak również później parę podobnych, gdyż tego typu coraz doskonalsze "automaty" były jeszcze kilkakrotnie konstruowane, ma istotny wymiar socjologiczno-psychologiczny. Ilustruje mianowicie odwieczną tęsknotę człowieka do stworzenia rzeczy, których jeszcze stworzyć nie potrafi. A często apetyt podsyca obserwacja rozwiązań, które już istnieją w przyrodzie.

Przez stulecia człowiek marzył o lataniu, obserwując ptaki. Uparcie podejmował próby opanowania przestworzy, wiedząc, że rozwiązanie na pewno istnieje. Podobnie jest ze skonstruowaniem urządzenia, które myśli. Wiadomo że rozwiązanie istnieje - my sami jesteśmy tego niezaprzeczalnym dowodem. Jednakże do niedawna wyzwanie to tak dalece przerastało nasze możliwości, że można było tylko uciekać się do wspomnianych namiastek, nic nie dających poza łudzeniem widza, choć pozwalających sprytnemu konstruktorowi napełnić kieszenie brzęczącą monetą. Jednak teraz, pod koniec XX w., gdy w elektronice, informatyce, fizyce, medycynie, biologii i psychologii tyle osiągnięto, czego jeszcze kilkadziesiąt lat temu nikt nawet nie był w stanie sobie wyobrazić, wydaje się, że wreszcie nauka może zająć się problemem stworzenia funkcjonalnego modelu ludzkiego mózgu.

I tu nasuwa się pytanie zasadnicze: Czy jesteśmy w stanie, w najbliższej przyszłości, zbudować sztuczny układ, który miałby możliwości porównywalne z naszym mózgiem? Obecnie tym problemem, zwanym zagadnieniem sztucznej inteligencji, zajmują się informatycy.

Można powiedzieć, że problematyka sztucznej inteligencji to próba rozwiązywania przy użyciu komputera (czy też ogólniej - układów elektronicznych) takich zadań, które realizuje biologiczny mózg - np. rozpoznawania wzorców (m.in. twarzy), rozumienia mowy, tłumaczenia tekstów itd. Oczywiście próbuje się różnych sposobów modelowania działania ludzkiego mózgu. Wszystkie są mniej lub bardziej powiązane z matematyką - niektóre opierają się na logice formalnej, inne na algebrze abstrakcyjnej. Jedną z obiecujących - jak się wydaje - propozycji są tzw. sztuczne sieci neuronowe.

Sieci neuronowe

Sztuczne sieci neuronowe zwane są też neurokomputerami. Neurokomputer to urządzenie do przetwarzania informacji, którego budowa i działanie wzorowane są na ludzkim mózgu. Informatyczno-matematyczny (oczywiście bardzo uproszczony) model komórki nerwowej, czyli neuronu, jest następujący: komórka ma kilka wejść i jedno wyjście. Na wejściach neuronu podawane są równocześnie sygnały. Każdy z nich jest mnożony przez pewną liczbę (tzw. wagę) i następnie iloczyny te są do siebie dodawane. Tak więc po przejściu przez wejścia neuronu otrzymujemy pojedynczą liczbę - całkowite pobudzenie neuronu. Tę liczbę następnie przetwarzamy za pomocą zadanej zależności funkcyjnej, otrzymując sygnał wyjściowy.

W neurokomputerze neurony są połączone, tworząc strukturę sieciową. Połączenia są realizowane w ten sposób, że sygnały wyjściowe jednych neuronów podawane są na wejścia innych. Ponadto niektóre neurony są połączone z wejściami systemu, odbierając sygnały wprowadzane do neurokomputera, a inne są dołączone do wyjść systemu, dostarczając ostatecznych wyników będących rezultatem pracy całej sieci. Struktura wzajemnych połączeń neuronów oraz wartości ich wejściowych wag decydują o tym, w jaki sposób sieć neuronowa funkcjonuje jako całość. Tak skonstruowane sieci neuronowe mają wiele zalet.

Po pierwsze, pracują równolegle, to znaczy neurony wykonują wiele czynności naraz, ponieważ wiele z nich działa niezależnie od siebie. Po drugie, sieć neuronowa jest odporna na uszkodzenia - nawet uszkodzenie pewnej liczby neuronów nie powoduje istotnej zmiany w pracy sieci. Po trzecie, istotnym atutem sieci neuronowych jest niski koszt pojedynczego neuronu. Obecnie, w dobie układów scalonych o dużym stopniu integracji, w jednym układzie scalonym możemy umieścić tysiące neuronów. Tak więc nawet skomplikowaną sieć neuronową można zrealizować małym kosztem. Inną zaletą jest sposób programowania neurokomputera, w żargonie naukowców zajmujących się tą problematyką zwany uczeniem sieci.

Historia rozwoju sztucznych sieci neuronowych

Pierwotnym źródłem badań nad sieciami neuronowymi były prace neurofizjologów. Milowym krokiem był artykuł McCullocha i Pittsa opublikowany w 1943 r. w Bulletin of Mathematical Biophysics, w którym po raz pierwszy zaprezentowano matematyczny opis komórki nerwowej, tworząc tym samym podstawy modelowania i obliczeń neuronowych. Problem skonstruowania niezawodnej sieci z zawodnych elementów rozwiązał von Neumann w 1956 r. Od początku pojawienia się problematyki sieci neuronowych aż do dziś rozwijają się także metody wykorzystujące równania różniczkowe do opisu działania neurokomputerów oraz ich "uczenia". Pierwszym neurokomputerem był perceptron skonstruowany w 1957 r. Składał się on z 8 neuronów i 512 zadawanych losowo (co było nowością) połączeń. Zapoczątkował badania nad sieciami, których neurony zorganizowane były w warstwy o jednokierunkowych połączeniach między nimi.

Powróćmy do zagadnienia "uczenia", czyli programowania sieci neuronowej, tak aby działała poprawnie. Program sieci neuronowej to jej struktura połączeń między neuronami oraz ich wagi wejściowe. Zakładając, że struktura połączeń jest ustalona (to założenie nie zawsze jest spełnione - obecnie rozważa się takie metody uczenia, podczas których sieć się "rozrasta", aby móc rozwiązać skomplikowane zadanie), nauczanie sieci polega na zmianie wag. Dla najprostszej klasy perceptronów bez żadnych warstw pośrednich Rosenblatt podał w 1962 r. algorytm uczenia, czyli przepis, jak zmieniać wagi w kolejnych krokach nauczania, aby sieć działała tak jak chcemy.

Rozwój badań nad sieciami neuronowymi został zahamowany na 15 lat w 1969 r. za sprawą książki Minsky'ego, o perceptronach. Zniechęciła ona wielu badaczy, ponieważ autor przeprowadził dowód, że sieci jednowarstwowe typu perceptron mają bardzo duże ograniczenia. Dodatkowym "gwoździem do trumny" było przeświadczenie, że sieci wielowarstwowe od strony funkcjonalnej nie różnią się od jednowarstwowych. I tu nasuwają się analogie do hamowania rozwoju innych dziedzin nauki. W XIX w., gdy zaczęto zastanawiać się nad możliwością lotów kosmicznych, "uwięziono" człowieka na Ziemi. Przeprowadzono ścisły dowód matematyczny, że człowiek nigdy nie będzie mógł znaleźć się na orbicie okołoziemskiej, a tym bardziej polecieć do innych ciał niebieskich. Obliczenia wykazały, że aby pocisk wystrzelony z działa mógł znaleźć się na orbicie, jego lufa musiałaby mieć ponad kilometr długości, a siła wybuchu prochów zmiażdżyłaby wszystkie istoty żywe znajdujące się wewnątrz wystrzelonego pocisku. Oczywiście u podstaw tego dowodu leżało istotne założenie, że wystrzał z armaty jest jedynym sposobem umieszczenia ciała na orbicie okołoziemskiej. Gdy loty kosmiczne zaczęto wiązać z rakietami, pojawił się następny dowód przekreślający szansę wystrzelenia w kosmos pocisku o napędzie rakietowym. Tym razem założenie, z którego ta niemożność miała wynikać, było bardziej ukryte. Przyjęto bowiem, że rakieta może być tylko jednostopniowa. Dopiero teoria rozwinięta przez Konstantego Ciołkowskiego w latach 20. naszego stulecia wykazała możliwość lotu w kosmos przy użyciu rakiet wielostopniowych. Jako epilog tych "kosmicznych kłopotów" należy chyba uznać wystrzelenie pierwszego sztucznego satelity w 1957 r. i lądowanie człowieka na Księżycu ponad 20 lat później.

Tak więc w nauce trzeba sobie jasno uzmysłowić, jakie się czyni założenia. W przeciwnym razie można popełnić błąd, którego konsekwencje ciągną się latami. Nie wyartykułowanym założeniem, które zahamowało prace nad sieciami neuronowymi, było to, że sieć składa się z neuronów liniowych, tzn. funkcja przetwarzająca całkowite wzbudzenie neuronu jest funkcją liniową. Patrząc od strony matematycznej, sieć wielowarstwowa realizuje po prostu złożenie funkcji. Ponieważ złożenie funkcji liniowej jest funkcją liniową, w przypadku neuronów liniowych dodawanie więc nowych warstw istotnie niczego nie zmienia. W przypadku neuronów nieliniowych sytuacja jest inna. Oczywiście złożenie funkcji nieliniowych jest na ogół funkcją nieliniową, jednak rzecz polega na tym, że jest tylko jeden rodzaj funkcji liniowej i wiele rodzajów funkcji nieliniowych. Składając funkcje nieliniowe, można otrzymać dowolną, nawet najbardziej skomplikowaną zależność funkcyjną. W tym właśnie tkwi potęga wielowarstwowych, nieliniowych sieci neuronowych.

Matematyka królową nauk

Jednak żeby przełamać impas powstały na początku siódmej dekady naszego stulecia, trzeba było aż 15 lat. A w informatyce jest to okres bardzo długi. Drugim istotnym problemem było "uczenie" sieci wielowarstwowych. Generalnie rzecz biorąc, są dwa rodzaje "uczenia" sieci neuronowych: "z nauczycielem" i "bez nauczyciela". Metoda "z nauczycielem" polega na tym, że dla sygnału podanego na wejście sieci znamy odpowiedź, jaką chcemy od sieci uzyskać. Sieć oczywiście udziela innej odpowiedzi. Podając na wejście sieci ciąg sygnałów (tzw. ciąg uczący) i znając odpowiedzi, jakie za każdym razem chcemy uzyskać, możemy, używając metod matematycznych, wyprowadzić wzór, w jaki sposób, po kolejnym kroku nauki, zmieniać wagi wyjściowej warstwy neuronów, tak aby całkowity błąd działania sieci był jak najmniejszy.

Matematycznie rzecz biorąc jest to numeryczne rozwiązanie pewnego równania różniczkowego. W sieciach wielowarstwowych trudność polega na tym, że dla wewnętrznych warstw neuronów nie ma możliwości bezpośredniego określenia wymaganych wartości sygnałów wyjściowych. Dopiero w połowie lat 80. zaproponowano algorytm wstecznej propagacji błędów polegający na tym, że mając wyznaczony błąd w kolejnym kroku procesu uczenia w danym neuronie możemy rzutować ten błąd wstecz do wszystkich tych neuronów, których sygnały podano na wejście danego neuronu.

Tym razem sytuacja była o tyle zabawna, że od strony matematycznej algorytm ten to nic innego jak obliczanie pochodnej z funkcji złożonej, co od dawna potrafią robić uczniowie szkoły średniej. To zabawne naukowe "potknięcie" uzmysławia nam jednak, jak bardzo potrzebne jest matematyczne sformalizowanie problemu oraz udział matematyków w tego typu interdyscyplinarnych badaniach. Ogromną zaletą sieci neuronowych jest to, że nie musimy wiedzieć, w jaki sposób rozwiązać problem, aby móc je zaprogramować. Wystarczy tylko zmieniać wagi neuronów w ten sposób, aby błąd działania sieci był jak najmniejszy. Możemy więc zaprogramować sieć neuronową nawet wtedy, gdy nic nie wiadomo o naturze związków łączących przesłanki z wnioskami. Kolejną zaletą neurokomputerów jest zdolność do generalizacji problemu. Polega ona na tym, że neuronowa sieć warstwowa potrafi udzielić dobrej odpowiedzi nawet na takie sygnały wejściowe, których nie było w ciągu uczącym.

Sieci odkryte na nowo

Połowa lat 80. to powrót zainteresowania sieciami neuronowymi. Powstaje nowa klasa sieci - sieci ze sprzężeniem zwrotnym, która polega na podaniu z powrotem na wejście sygnału wyjściowego całej sieci. Powstają również sieci Hopfielda, które nie mają struktury warstwowej i dzięki temu możliwe są w nich przebiegi dynamiczne, tzn. krążenie sygnałów w sieci pod nieobecność sygnału wejściowego. Zadanie, do którego takie sieci są używane, można sformułować następująco: zapamiętaj zbiór prototypów w taki sposób, aby po zaprezentowaniu nowego wzorca reakcją sieci było odtworzenie tego spośród zapamiętanych prototypów, który jest najbardziej podobny do podanego wzorca.

Sieć działa w ten sposób, że po "obejrzeniu" wzorca następuje pobudzenie neuronów mających połączenie z wejściem sieci, te neurony pobudzają następne itd. Ponieważ sieć rekurencyjna nie ma struktury warstwowej, sygnał pobudzenia krąży "w kółko" po całej sieci, wzbudzając wielokrotnie te same neurony tak długo, aż ustali się stan równowagi. Jeśli sieć jest dobrze zaprogramowana, każdy stan równowagi odpowiada jednemu z zapamiętanych prototypów. W ten sposób sieć "skojarzyła" podany wzorzec z prototypem, który miała uprzednio w pamięci. Jest to odpowiednik sytuacji, gdy widząc na ulicy przechodzącego człowieka zaczynamy sobie przypominać, skąd znamy tę twarz, po czym dochodzimy do wniosku, że jest to kolega ze szkoły. Tak więc sieci rekurencyjne modelują pamięć skojarzeniową, podczas gdy sieci warstwowe realizują model bodziec-reakcja.

Oczywiście, tak ogólnie prezentuje się zasada działania sieci warstwowych i rekurencyjnych. Należy pamiętać, że każdy z tych dwóch podstawowych rodzajów sieci może mieć różną architekturę, być zaprogramowany w różny sposób i, co za tym idzie, być przeznaczony do rozwiązywania bardzo różnorodnych problemów. Jako przykłady można podać rozpoznawanie obrazów i mowy, co pozwoliłoby na wydawanie komputerowi lub robotowi rozkazów za pomocą głosu. Oba te zagadnienia ściśle wiążą się z teorią sterowania i robotyką. Oczywiście robot, jeśli ma działać w danym środowisku i być w miarę samodzielny, musi odbierać bodźce ze środowiska i je rozpoznawać. Tak więc elektroniczno-informatyczne modelowanie wzroku i słuchu jest wciąż istotnym zagadnieniem. Oba te problemy są trudne do zalgorytmizowania, nasuwa się więc pomysł, aby do ich rozwiązania wykorzystać sieci neuronowe.

Obecnie najlepsze sieci neuronowe osiągają skuteczność działania (np. stosunek liczby poprawnie rozpoznanych obrazów do wszystkich zaprezentowanych) ponad 90-proc. W przeciwieństwie do klasycznych algorytmów dobrze również radzą sobie z informacją, którą w procesie przesyłania zniekształcono. Sztuczne sieci neuronowe potrafią więc modelować, aczkolwiek w bardzo jeszcze niedoskonały sposób, niektóre funkcje ludzkiego mózgu. Mogą rozpoznawać wzorce dźwiękowe, jednak jeśli chodzi o przetwarzanie mowy, mogą rozpoznać jedynie pojedyncze wyrazy; na razie nie ma możliwości rozróżniania poszczególnych głosek. Układy modelujące wzrok też ustępują skutecznością układom biologicznym. Na razie nie ma też mowy o modelowaniu wyższych procesów psychicznych, co jest tym bardziej zrozumiałe, że ani na gruncie psychologii, ani biologii z medycyną, ani nauk kognitywnych wciąż nie uzyskano odpowiedzi na pytanie, co to jest świadomość.

Komputer gra w szachy

Maszyną zdolną do gry w szachy bez konieczności uciekania się do oszustw okazał się komputer. Jednak problem takiego zaprogramowania komputera, aby grał w szachy dobrze, okazał się trudny. Jeszcze na przełomie lat 60. i 70. naszego stulecia wyniki nie napawały optymizmem. Ówczesne komputery, a właściwie programy, grały słabo, a głównym motywem ich taktyki było zbijanie figur przeciwnika. Toteż daleko było im nawet do przeciętnego szachisty-amatora. W 1968 r. były mistrz świata w "królewskiej grze" (w latach 1935-37) i równocześnie profesor matematyki i dyrektor holenderskiego centrum obliczeniowego, Max Euwe, w wywiadzie udzielonym radzieckiemu tygodnikowi szachowemu 64 z okazji meczu szachowego ZSRR-USA, rozgry-wanego przez komputery (wynik: 3:1 dla ZSRR), powiedział: "... nauczyć maszynę grać dobrze przy współczesnym rozwoju cybernetyki jest praktycznie niemożliwe. Zbyt wielka jest ilość kombinacji powstających na szachownicy. Obecnie szachowe automaty grają bardzo słabo. Z dziesięciu posunięć maszyny tylko sześć bywa jako tako poprawnych. Każdy szachista wie jednak z własnego doświadczenia, że nawet dziewięć doskonałych ruchów nie da pozytywnego rezultatu, jeśli dziesiąty okaże się kiepski. Wydaje mi się, że z siłą kandydata na mistrza maszyna będzie grać nie wcześniej niż za 100-150 lat".

Należy podkreślić, że jest to wypowiedź jednego z największych autorytetów tamtego okresu - o niekwestionowanych umiejętnościach szachowych - który na początku lat 60. został szefem zespołu do badań w dziedzinie automatyki szachowej.

Podstawą sukcesu radzieckich komputerów były prace innego szachowego geniusza, uważanego za jednego z najwybitniejszych szachistów wszech czasów, Michaiła Botwinnika (ur. 1911 r., mistrz świata w latach 1948-57, 1958-60, 1961-63). Będąc z zawodu inżynierem elektronikiem, zajmował się naukowo elektronicznymi maszynami szachowymi. Przełożył zasady gry w szachy na język matematyki i opracował koncepcję oprogramowania dla komputera szachowego.

Druga połowa lat 70. to już era komputerów grających z siłą średniej klasy amatora. Lata 80. to nastanie komputerów osobistych, na których również implemento-wano szachowe oprogramowanie, które już całkiem kompetentnym amatorom potrafiło "spuścić lanie". Na przełomie lat 80. i 90. komputery grają już z siłą profesjonalistów, i choć do najlepszych jeszcze im trochę brakuje, to jednak już było wiadomo, jak bardzo Euwe się pomylił w swojej wypowiedzi, od której upłynęło wtedy dopiero mniej więcej 20 lat.

Powstały w latach 90. program szachowy Deep Thought grał już z siłą przeciętnego arcymistrza, uplasowałby się więc w ścisłej czołówce polskich szachistów. Program ten działa na zasadzie obliczania możliwych wariantów ruchów do kilkunastu posunięć naprzód oraz korzysta z rozległej bazy debiutów. Jego modyfikacja, Deep Blue, w maju 1997 r. pokonała w sześciopartiowym meczu mistrza świata Garry'ego Kasparowa. W taki sposób rozwój informatyki dopisał epilog do historii rozpoczętej przez barona Kempelena.

Wbrew ponurym przepowiedniom, które głosiły, że pokonanie mistrza świata przez maszynę oznaczać będzie koniec królewskiej gry, nic nie wskazuje na to, aby zainteresowanie szachami osłabło. Nie spełniła się więc wizja Stanisława Lema, opisana z właściwym mu humorem w Wizji lokalnej: "Po południu Denkoch zaproponował mi partyjkę szachów. Przyniosłem więc mój komputerek, który zostawiłem w aucie, i posadziło się go przy szachownicy przeciw jednemu z najmniejszych terminali instytutu, a my, nie marnując czasu, poszliśmy do dyrektorskiego gabinetu...".

Profesjonalni szachiści raczej już nie grywają z komputerami, ale szeroko wykorzystują je jako bazy wiedzy szachowej i swoistych "trenerów". Chyba jednak było to łatwe do przewidzenia. Ostatecznie od dawna potrafimy konstruować potężne dźwigi podnoszące wielotonowe ciężary, a podnoszenie ciężarów, jako dyscyplina sportowa, ma się dobrze. I nikomu nie przeszkadza, że dźwig jest "silniejszy". Dlaczego więc miałoby szachistom przeszkadzać, że komputer jest "mądrzejszy"?

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200