Myśląca maszyna. Wstęp do Sztucznej Inteligencji, cz. 1 [WIDEO]
by Petros Psyllos

Czy człowiek może skonstruować myślącą maszynę, na swój obraz i podobieństwo? Już w starożytnej Grecji starano się odpowiedzieć na to pytanie. Powstawały mity, np. o Talosie (Τάλως) – olbrzymie z brązu, strzegącym Krety. Innym przykładem jest mit o stworzeniu kobiety ulepionej z gliny, czyli Pandory. Na prawdziwy przełom trzeba było jednak poczekać do XX w. Dzięki wynalezieniu komputera, idea przeniesienia szekspirowskiego „kruchego domu duszy” do maszyny, i tym samym natchnięcia martwej materii inteligencją, zaczęła być bardziej realna. Granicę między przeszłością a teraźniejszością rozwoju koncepcji myślącej maszyny wyznaczają dwaj uczeni - Alan Turing i John von Neumann. Pierwszy z nich jest autorem tekstów „Computing machinery and intelligence” oraz „Can a Machine Think” z 1950 r., z których pochodzi koncepcja testu Turinga. Drugi stworzył architekturę dzisiejszych komputerów.

Rosnące możliwości komputerów sprawiły, że stało się  możliwe naśladowanie procesów ludzkiego rozumowania. Komputery zaczęły grać w szachy i warcaby, dowodziły twierdzenia logiki oraz matematyki, nauczono je rozpoznawania m.in. obrazów. Sukces użycia komputerów w dziedzinach będących do tej pory wyłącznie domeną ludzi sprawił, że naukowcy obwieścili powstanie tzw. sztucznej inteligencji. Termin Sztuczna Inteligencja (ang. Artificial Intelligence, A.I.) narodził się 1956 roku za sprawą Johna McCarthy’ego. Na początku stanowił nazwę dwumiesięcznej konferencji w Dartmouth College, po czym przekształcił się w nazwę dyscypliny naukowej. Już na samym początku pojawili się zwolennicy i przeciwnicy nowej dziedziny. Pierwsi prorokowali osiągnięcie przez maszyny superinteligencji, czyli inteligencji dla nas niezrozumiałej, znacznie większej niż ludzka. Bylibyśmy wtedy zdani na jej łaskę, jak obecnie zdane są na naszą goryle. Drudzy przywoływali argumenty, że maszyna nigdy nie będzie posiadała prawdziwego rozumu, bo to cecha właściwa wyłącznie człowiekowi.

 
Test Turinga i "chiński pokój"

Jak sprawdzić, czy komputer wyposażony w sztuczną inteligencję myśli? Zastanawiał się nad tym Alan Turing, który stwierdził, że gdyby maszyna zachowywała się językowo nieodróżnialnie od człowieka, można byłoby uznać, że mamy do czynienia z inteligentnym bytem. Stworzył więc test, w którym sędzia (C) rozmawia za pośrednictwem terminala z losowo przydzieloną maszyną i człowiekiem (A i B). Jeżeli sędzia nie potrafi odróżnić odpowiedzi człowieka od odpowiedzi maszyny, można wywnioskować, że maszyna myśli. Test Turinga zainspirował kolejnych twórców do badań nad tzw. mocną sztuczną inteligencją. Mimo wielu wysiłków, do dzisiaj żaden algorytm nie zaliczył długotrwałego, nieograniczonego tematycznie testu Turinga.

 

Test Turinga

 

Przeciwnikiem stworzenia tzw. mocnej sztucznej inteligencji był filozof John Searle. Według niego pozytywne przejście testu Turinga nie świadczy o inteligencji maszyny, dlatego aby obalić zasadność testu przywołał eksperyment myślowy zwany „chińskim pokojem”. Pokazuje w nim, że prawdziwy rozum to coś więcej niż wykonywanie zwykłego algorytmu. Na czym polega ów „chiński pokój”? Wyobraźmy sobie, że jesteśmy w pokoju i mamy do dyspozycji podręcznik z regułami pt.: „Jak odpowiadać na pytania zadane w języku chińskim”. Przez otwór w drzwiach dostajemy kartkę z pytaniem, na której znajduje się chiński napis. Nie rozumiemy tego języka, dlatego  korzystając z podręcznika znajdujemy i zapisujemy odpowiedź w postaci ciągu znaków chińskich, po czym wyrzucamy kartkę przez otwór. Czy możemy powiedzieć, że znamy i rozumiemy język chiński? Według Johna Searlea komputery posługują się symbolami według narzuconych zasad, nie rozumiejąc ich znaczenia.

 

Eksperyment myślowy Johna Searlea

 

Przeciwko tezom Searle’a pojawiła się fala krytyki i kontrargumentów. Najbardziej znany jest kontrargument w postaci tzw. odpowiedzi systemu: co z tego, że osoba w pokoju nie zna chińskiego - przecież cały system, w skład którego wchodzi osoba i podręcznik reguł, doskonale rozumie chiński. Warto zauważyć, że chińczyk, jako całość, posługuje się językiem chińskim, ale nie potrafi tego żaden z neuronów w jego mózgu!

Bez względu na powyższe rozważania natury filozoficznej, istniejące rozwiązania opierające się na sztucznej inteligencji obalają twierdzenia różnych malkontentów, którzy wciąż prześcigają się w wymyślaniu rzeczy, których maszyny nigdy nie będą mogły robić. Jak się okazało, ich dawne przypuszczenia okazały się nieprawdziwe!  Sztuczna inteligencja już nie tylko wygrywa z człowiekiem w warcaby (1995), szachy (1997) lub też grę Go (2016), ale potrafi m.in. komponować piosenki, pisać scenariusze filmowe, artykuły prasowe, malować obrazy, prowadzić samochody i wykonywać prace polowe. Wygrywa w teleturnieju „Jeopardy” (2011) i analizuje ogromne zbiory danych medycznych, pomagając wielu ludziom. Często nie zauważamy, że sztuczna inteligencja jest obecna w wielu dziedzinach naszego życia - codziennie dobiera reklamy na Facebooku (analizując nasze ślady cyfrowe, pozostawiane w Internecie), wykrywa twarze na zdjęciach i je taguje, wytycza optymalną trasę w GPS, tłumaczy teksty na różne języki, rekomenduje piosenki i filmy, rozpoznaje mowę i wykorzystuje ją do sterowania pracą smartfona (Siri), analizuje zmiany na giełdzie i filtruje wiadomości w skrzynce e-mail. To tylko niewielki wycinek zastosowań SI w urządzeniach, z których korzystamy na co dzień! Sztuczna inteligencja jest bardzo modną dziedziną, a jej zastosowanie jest coraz szersze. Rynek sztucznej inteligencji wzrośnie z 420 mln w 2014 do 5,05 mld dolarów w 2020 roku. 

 

Tylko człowiek może...

 

Czym jest sztuczna inteligencja?

Warto podkreślić, że sztuczna inteligencja nie jest jednolitą dziedziną, jak przedstawia się to w mediach. To wycinek informatyki, w skład którego wchodzi wiele różnych metod - często od siebie niezależnych.  Dobrą metaforą jest przestrzeń kosmiczna naszej niewiedzy. Galaktyki to różne metody sztucznej inteligencji i ich wariacje, często od siebie odseparowane. Istnieją różne metody sztucznej inteligencji, m.in.: metody symboliczne (oparte na manipulacji symbolami), algorytmy genetyczne (wzorujące się na ewolucji naturalnej), algorytmy mrówkowe (należą do dziedziny algorytmów, w której badacze naśladują zachowanie się rojów osobników), zbiory rozmyte i logika rozmyta (reprezentowanie w komputerze informacji niedokładnych i prowadzenie rozumowania na ich podstawie), systemy ekspertowe (gromadzące wiedzę, na podstawie której jest podejmowana decyzja odnośnie np. choroby pacjenta), zbiory przybliżone i sztuczne sieci neuronowe. Tymi ostatnimi za chwilę się zajmiemy.

 

 

Mózg wzorem dla badaczy sztucznych sieci neuronowych

Mózg jest organem bardzo złożonym. Zawiera ponad 170 miliardów komórek, w tym 86 miliardów komórek nerwowych, czyli neuronów. Oznacza to, że neuronów jest 12 razy więcej, niż jest ludzi na całej Ziemi! Dzięki odkryciu i dokładnemu opisaniu biologicznych neuronów, możliwe stało się stworzenie sztucznych sieci neuronowych, które są wzorowane na budowie struktur biologicznych neuronów w mózgu. Okazało się, że opis działania rzeczywistych neuronów można mocno uprościć i przenieść do systemu komputerowego, tworząc modele matematyczne. W ten sposób powstają sztuczne neurony, z których budujemy sztuczne sieci neuronowe - bardzo użyteczne narzędzia do przetwarzania różnych sygnałów.

Podczas konstruowania SSN wzorujemy się na neuronach biologicznych. Składają się one z:

  • dendrytów (wejścia), które zbierają informacje z innych receptorów i wprowadzają je do neuronu,
  • ciała komórki, przetwarzającego w określony sposób sygnały wejściowe,
  • aksonu (wyjścia), wyprowadzającego zawsze jeden sygnał wyjściowy z neuronu,
  • osłonki mielinowej, chroniącej aksony,
  • synaps, przekazujących z wagą sygnały pomiędzy neuronami.

Najważniejszym elementem w biologicznym neuronie są synapsy, w których znajdują się tzw. neuroprzekaźniki, posiadające zdolność przekazywania informacji przez lukę w synapsie. Są one punktem pośredniczącym między neuronami i stanowią o „sile” połączenia. Przepływające przez nie sygnały są modyfikowane. W uproszczeniu można powiedzieć, że jeśli sygnał jest ważny, to w trakcie uczenia zwiększa ilość neurotransmitera w synapsie, a jeżeli nieważny – zmniejsza. Proces uczenia sieci neuronowej polega de facto na modyfikowaniu wartości neuroprzekaźnika w synapsach. W taki sposób jest reprezentowana cała wiedza sieci. Odpowiednikiem synaps w sztucznych neuronach są wagi synaptyczne.

 

Biologiczny neuron

 

Te wiadomości wykorzystujemy przy budowie modeli matematycznych sztucznych neuronów, które są bardzo uproszczone w stosunku do biologicznych komórek nerwowych. Robi się to celowo - gdybyśmy chcieli zasymulować programowo rzeczywistą komórkę nerwową, a nie jej uproszczoną wersję, musielibyśmy użyć m.in. 32000 par równań różniczkowych i 19000 parametrów do określenia przy strojeniu modelu. Potrzebowalibyśmy potężnego komputera, aby odtworzyć działanie tylko jednego neuronu, nie mówiąc o sieci złożonej z tysięcy takich elementów. Dlatego w praktyce stosuje się uproszczone wersje modeli neuronów, które dalej zachowują swoją użyteczność.

Pierwszy model neuronu został podany przez W. McCullocha i W. Pittsa w 1943 roku. Neuron (McCullocha-Pittsa) składa się z wielu wejść (odpowiednik dendrytów w komórkach nerwowych) i zawsze jednego wyjścia (odpowiednik aksonu w komórkach nerwowych).

 

Sztuczny neuron

 

Działanie pojedynczego neuronu jest bardzo proste. Sygnały wejściowe (𝑥1, 𝑥2,…, 𝑥𝑛) są mnożone przez wagi synaptyczne (𝑤1, 𝑤2,…, 𝑤𝑛   - odpowiednik synaps w komórkach nerwowych), które je modyfikują. Sygnał 𝑥𝑛 ulega wzmocnieniu, jeśli jest ważny, lub osłabieniu, jeżeli jest mało istotny. Gdy 𝑤𝑛  = 0  to nie ma połączenia, bo dowolna liczba 𝑍 ∗ 0 = 0. Wagi są modyfikowane w trakcie uczenia.

 

Działanie neuronu

 

Zmodyfikowane (pomnożone) przez wagi sygnały wejściowe są agregowane (najczęściej sumowane). Otrzymujemy w ten sposób pomocniczy sygnał wewnętrzny S, nazywany łącznym pobudzeniem neuronu (czasem do sygnału pomocniczego jest dodawany tzw. BIAS, który zwiększa możliwości uczenia się). Zsumowany sygnał jest następnie przekształcany przez tzw. funkcję aktywacji (zwaną inaczej charakterystyką neuronu), najczęściej nieliniową (w sieciach nieliniowych). Po przekształceniach sygnał jest wysyłany na wyjście neuronu y. Są różne rodzaje funkcji aktywacji; wybór funkcji aktywacji jest zależny od problemu, który chcemy rozwiązać. Warto nadmienić, że w sieciach wielowarstwowych stosuje się nieliniowe funkcje aktywacji, bo pozwalają one na odwzorowanie prawie dowolnej zależności między wejściem a wyjściem sieci. Przykładem jest funkcja o kształcie sigmoidy, a neurony o takiej charakterystyce są wykorzystywane np. w sieciach MLP.

Z sztucznych neuronów buduje się sieci. Sztuczne sieci neuronowe stosujemy  przede wszystkim wtedy, gdy nie znamy reguł rozwiązania problemu, ale dysponujemy zbiorem przykładowych zadań (zbiór uczący), które zostały poprawnie rozwiązane. Dane te mogą pochodzić np. z obserwacji działania systemu, o którym nic nie wiemy. Przykładem takich zadań jest rozpoznawanie przez nasze mózgi różnych obiektów w otoczeniu. Pierwszym elektronicznym modelem mózgu był Perceptron Franka Rosenblatta (1958 r.), służący do rozpoznawania obrazów (jest to częste zastosowanie sztucznej inteligencji). Korzystając z dostępnej wówczas wiedzy o mózgu, Rosenblatt zbudował system składający się z sztucznych neuronów. Rozpoznawany obraz był odbierany przez receptor (protoplastę cyfrowej kamery), następnie trafiał do sieci zbudowanej z 256 losowo połączonych neuronów. Na wyjściu zapalały się żarówki, pokazujące klasę rozpoznawanego obiektu. Urządzenie potrafiło się uczyć w sposób podobny do tego, jak się uczą zwierzęta i ludzie. Uczenie nadzorował nauczyciel. Jeżeli perceptron dobrze rozpoznawał przykłady, to nauczyciel wysyłał sygnał  nagrody, w przeciwnym wypadku – sygnał kary. Było to niebywałe wówczas osiągniecie – przypadkowo połączone neurony same wypracowały algorytm rozpoznawania obrazów!

Biologiczne sieci neuronowe są inspiracją podczas budowy komputerowych modeli sztucznych neuronów

 

Każdy neuron wchodzący w skład sztucznej sieci neuronowej posiada określoną liczbę wejść i zawsze jedno wyjście. Wyjścia sztucznych neuronów są połączone z wejściami kolejnych. Prowadzi to do powstania sieci neuronowej. W zależności od sposobu połączenia neuronów wewnątrz sieci, otrzymujemy różne właściwości. Wyróżniamy następujące podstawowe typy sztucznych sieci neuronowych:

  • Sieć jednokierunkowa jednowarstwowa – neurony ułożone w jednej warstwie, połączone wg zasady „każdy z każdym”. Sygnał przepływa w jednym kierunku – od wejścia do wyjścia,
  • Sieć jednokierunkowa wielowarstwowa (MLP) – ma przynajmniej jedną warstwę ukrytą. Niektóre połączenia między neuronami mogą nie wystąpić. Sygnał przepływa od wejścia do wyjścia,
  • Sieć rekurencyjna – w sieci istnieją połączenia neuronów wyjściowych z wejściowymi, tzw. sprzężenie zwrotne. Popularną siecią rekurencyjną jest sieć Hopfielda.
  • Sieć komórkowa - sprzężenia pomiędzy neuronami dotyczą tylko najbliższego sąsiedztwa. Przykładem jest sieć Kohonena, czyli sieć samoorganizująca się, która składa się z 2 warstw - warstwy wektorów wejściowych i mapy topologicznej. To sieć jednokierunkowa, gdzie każdy neuron warstwy wejściowej łączy się z neuronem warstwy topologicznej, ale neurony w poszczególnych warstwach nie komunikują się ze sobą.

W praktyce wykorzystuje się bardzo dużo rodzajów sieci. Istnieją np. architektury splotowych sieci neuronowych CNN (dobrze sprawdzają się w klasyfikacji obrazów), sieci LSTM (rodzaj sieci rekurencyjnych, wykorzystywanych w tłumaczeniach lub generowaniu opisów np. obrazów). Przykład różnych sieci poniżej.

Różne rodzaje sztucznych sieci neuronowych, za: http://www.asimovinstitute.org

 

Uczenie sieci neuronowej polega na właściwym doborze współczynników wagowych. Celem uczenia jest ustalenie takich wartości wag, które zagwarantują poprawne rozwiązywanie problemów. Zazwyczaj odpowiada za to specjalny algorytm uczenia, który automatycznie modyfikuje wagi. Ucząc się, sieć generalizuje wiedzę na podstawie podawanego jej zbioru uczącego, od którego zależy późniejsze działanie sieci. Aproksymuje w ten sposób pewną funkcję, obserwując przykłady jej działania. Proces nauki może odbywać się z nauczycielem (sieci pokazuje się zestaw sygnałów na wejściach i prawidłowe odpowiedzi, na podstawie których uczy się udzielania poprawnych odpowiedzi) lub bez nauczyciela (sieć nie otrzymuje zewnętrznego sprzężenia zwrotnego w postaci prawidłowych rozwiązań - stara się sama wypracować poprawne rozwiązania, dzieląc zbiór uczący na klasy).

  • Uczenie z nauczycielem (uczenie nadzorowane): proces uczenia jest wielokrotnie powtarzany dla różnych obiektów ze zbioru uczącego. Nauczyciel podaje dane wejściowe i prawidłową odpowiedź. Jeżeli odpowiedź sieci jest nieprawidłowa, nauczyciel modyfikuje wartości wag – i tak aż do skutku. Po często długotrwałym procesie uczenia przychodzi czas na egzamin, który sprawdza, czy sieć się nauczyła i czy potrafi generalizować wiedzę. Używa się do tego obiektów, które nie wystąpiły w zbiorze uczącym lub walidacyjnym.
  • Uczenie bez nauczyciela (nienadzorowane): proces uczenia jest wielokrotnie powtarzany dla różnych obiektów ze zbioru uczącego. Sieć sama wykrywa regularności i dzieli zbiór uczący na klasy. Podczas tego procesu parametry sieci zmieniają się, co nazywa się samoorganizacją. Po procesie uczenia, przychodzi czas na egzamin.

Aby wytrenować sieć, potrzebujemy zbioru uczącego, czyli znormalizowanych danych wejściowych i odpowiadających im odpowiedzi wzorcowych. Uczenie się kończy, gdy sieć traci umiejętność generalizacji danych – nie uczy się idei, lecz chce przechytrzyć nauczyciela i wykuć wszystkie przykłady ze zbioru uczącego na pamięć! Aby przerwać uczenie i zapobiec przeuczeniu, stosuje się zbiór walidacyjny. Zbiorem walidacyjnym nazywamy ok. 20% wydzielonego losowo zbioru uczącego. Gdy nastąpi gwałtowny wzrost pomyłek sieci dla zbioru walidacyjnego – oznacza to, że należy zakończyć uczenie.

Działanie nieliniowego neuronu - przykład

Nieliniowy neuron o 2 wejściach

 

Neuron ma dwa wejścia 𝑋1 i 𝑋2. Sygnał wejściowy jest mnożony przez wagi 𝑊1 i 𝑊2. Suma iloczynów wartości wejściowych i wag jest argumentem funkcji aktywacji, w tym przypadku sigmoidalnej. Wartość funkcji aktywacji jest odpowiedzią neuronu. Dane dostarczane do sieci neuronowym nazywamy wektorem sygnałów wejściowych. Dla sieci o 2 wejściach wektor będzie dwuwymiarowy, co możemy przedstawić na układzie współrzędnych reprezentującym przestrzeń sygnałów wejściowych. Sygnał wyjściowy neuronu jest przedstawiony w postaci punktu 𝑦, który zawiera się na płaszczyźnie układu. Jest odpowiedzią na wartość 𝑥1′ 𝑖 𝑥2′. 

Przestrzeń sygnałów wejściowych

 

Załóżmy, że cecha 𝑥1′  będzie reprezentowała intensywność zapachu kwiatka, natomiast 𝑥2′ jego wielkość. Nauczymy sieć neuronową pewnej funkcji, określającej jakie kwiatki Zosia lubi (𝑦 = 1), a jakich nie lubi (𝑦 =−1). W tym celu ustawimy odpowiednią wartość wektora wag (wartość 𝑤1 𝑖 𝑤2). Podzielimy w ten sposób przestrzeń wejściową na dwa obszary. 

Neuron dzieli przestrzeń sygnałów wejściowych na dwa obszary

 

Dla przykładu ustaliłem, że 𝑤1=0.85, a 𝑤2=0.83. Można zauważyć, że sieć podzieliła płaszczyznę możliwych odpowiedzi na dwa obszary (półprzestrzenie).

 

Aby dana funkcja mogła być aproksymowana przez taki neuron, sygnały wejściowe dla których funkcja przyjmuje wartość 1 muszą leżeć w innej półpłaszczyźnie rozdzielonej przez prostą niż takie, dla których funkcja przyjmuje wartość -1 (lub 0 dla funkcji aktywacji unipolarnych, gdzie wartość wyjścia zawiera się między 0 a 1). Obszary muszą być liniowo separowalne. Podobnie jest np. w przestrzeni trójwymiarowej (sieć o 3 wejściach), w której obszar jest dzielony przez płaszczyznę. Jak widać, sieć jednowarstwowa jest bardzo ograniczona!

 

 

Załóżmy, że Zosia lubi tylko małe kwiatki o mało intensywnym zapachu i duże o bardzo intensywnym (rysunek - typowy problem XOR). Czy da się dobrać takie wagi, aby podzielić przestrzeń na dwa obszary przy pomocy jednej prostej? Niestety nie – obszary mają bardziej skomplikowaną formę i potrzebujemy sieci zawierające wiele warstw.

Problem XOR. Tego nie rozwiąże sieć zbudowana z 1 neuronu. Potrzebujemy 1 warstwy ukrytej.

 

Jest to fragment pierwszej części kursu SI dla początkujących. Film zawierający pełny materiał można obejrzeć poniżej. Ciąg dalszy wkrótce!