Myślące maszyny

Sztuczna inteligencja już od dawna obecna jest w domowych komputerach. Spotykasz się z nią na co dzień, chociaż może jeszcze nie zdajesz sobie z tego sprawy.

Sztuczna inteligencja już od dawna obecna jest w domowych komputerach. Spotykasz się z nią na co dzień, chociaż może jeszcze nie zdajesz sobie z tego sprawy.

Termin ten znany jest chyba każdemu użytkownikowi komputerów, chociaż w wielu przypadkach odruchowo ograniczamy jego zastosowanie do gier (szachy, ale także strzelaniny FPP) i programów typu OCR (rozpoznawanie pisma). Wiele osób łączy też pojęcie sztucznej inteligencji z sieciami neuronowymi. I słusznie, ale sztuczna inteligencja to nie tylko sieci neuronowe, ale również gałąź informatyki, badająca problemy, które trudno rozwiązać za pomocą klasycznych algorytmów.

Open CYC zadziwia zdolnością do wyciągania ogólnych wniosków, ale opanowanie interfejsu przysparza początkowo trochę kłopotów.

Open CYC zadziwia zdolnością do wyciągania ogólnych wniosków, ale opanowanie interfejsu przysparza początkowo trochę kłopotów.

Aby odpowiedzieć sobie na pytanie, czy możliwe jest stworzenie sztucznej inteligencji, warto najpierw dobrze zastanowić się, czym jest inteligencja człowieka... Jeśli inteligencję ocenimy jako "sprawność rozumowania", to szybko okaże się, że w różnych dziedzinach życia przez inteligencję i sprawne myślenie trzeba rozumieć zupełnie coś innego. Prawdopodobnie inaczej rozumuje inteligentny lekarz, a inaczej szachista. Czasami konieczna jest ścisła kalkulacja oparta na zasadach logiki klasycznej, a czasami - szybkie kojarzenie ujrzanych wzorów z tymi, które podpowiada nam wiedza i doświadczenie. Również sztuczna inteligencja maszyn ma wiele obliczy: od programów matematycznych wyposażonych w narzędzia do obliczeń symbolicznych po chatterboty, programy symulujące rozmowę z żywym człowiekiem. Od sieci neuronowych odcyfrowujących zawartość zeskanowanych dokumentów po systemy eksperckie w medycynie. Od sprytnych przeciwników w grach komputerowych po piekielne maszyny szkolone do pojedynków z szachowymi arcymistrzami...

Sieci neuronowe

W początkowych założeniach miały symulować pracę ludzkiego mózgu, służąc zarówno biologii, jak i informatyce. W praktyce sztuczne sieci neuronowe dość często znacznie odbiegają od ich biologicznego pierwowzoru. W dużym uproszczeniu można powiedzieć, że sztuczna sieć neuronowa to układ małych jednostek obliczeniowych, połączonych w sieć, wymieniających między sobą niewielkie porcje danych (z reguły są to pojedyncze liczby). Charakterystyczną cechą tych sieci jest zdolność do nauki. Przetwarzając dane treningowe, mogą dostosować sposób działania tak, aby uzyskiwać coraz lepsze wyniki. Istnieje wiele typów sieci neuronowych, są takie, których trening wymaga obecności nauczyciela, a także uczące się samodzielnie.

Sieć neuronów przetwarza duże porcje danych, wykonując wiele prostych obliczeń i przekazując ich wyniki pomiędzy kolejnymi węzłami.

Sieć neuronów przetwarza duże porcje danych, wykonując wiele prostych obliczeń i przekazując ich wyniki pomiędzy kolejnymi węzłami.

Sieć neuronowa składa się z ogromnej liczby małych jednostek obliczeniowych, z których każda otrzymuje kilka sygnałów wejściowych lub wyników obliczeń innych jednostek. Otrzymane dane służą do obliczenia wartości wynikowej (z reguły są to bardzo proste obliczenia, np. suma ważona), która jest przekazywana do kolejnych węzłów sieci. W prostej sieci jednokierunkowej jednostki-neurony ułożone są warstwami, przy czym z reguły neurony umieszczone na jednej warstwie nie są połączone, ale łączą się z neuronami z warstw sąsiednich. W sztucznych sieciach neuronowych liczba kanałów wejściowych jest dość mała. Połączenia prawdziwego neuronu liczone są w tysiącach, a liczba wszystkich neuronów w mózgu człowieka szacowana jest na 1010. Co więcej, w mózgu mogą powstawać nowe połączenia, dając naszemu intelektowi niezwykłe możliwości rozwoju. Do takiej złożoności daleko jeszcze nawet największym współczesnym sztucznym sieciom neuronowym, np. do prostego rozpoznawania liter zapisanych w polu o rozmiarach 5 x 7 pikseli wystarczy sieć składająca się z 10 neuronów! Równie ważna, jak konstrukcja sieci, jest metoda treningowa, pozwalająca sieci neuronowej nauczyć się rozwiązywać zadania, do których została stworzona. Jeden z najprostszych procesów uczenia (stosowany w sieciach jednokierunkowych) polega na porównywaniu wyniku podanego przez sieć z wartością oczekiwaną i proporcjonalnym skorygowaniu wag przypisanych wejściom neuronów w kolejnych warstwach sieci (przeglądanej w kierunku od wyniku do danych wejściowych). Przy odpowiedniej budowie sieci oraz dobrym, reprezentatywnym, odpowiednio dużym zestawie danych treningowych sieć nauczy się poprawnie podawać wyniki dla danych szkoleniowych, a po ukończeniu treningu będzie również podawać dobre wyniki dla danych, z którymi jeszcze się nie zetknęła.

Sieci neuronowe znalazły już wiele zastosowań: w analizie inwestycji, ocenianiu ryzyka kredytowego, rozpoznawaniu pisma, obrazów i mowy, a nawet we wczesnym wykrywaniu usterek silników w samolotach.

Heurystyka

Zasada działania algorytmu genetycznego wzorowana jest na doborze naturalnym i ewolucji genetycznej, obserwowanych w przyrodzie.

Zasada działania algorytmu genetycznego wzorowana jest na doborze naturalnym i ewolucji genetycznej, obserwowanych w przyrodzie.

To słowo czytelnikom PC Worlda kojarzyć się może z programami antywirusowymi. Rzeczywiście, prawie wszystkie nowoczesne antywirusy wykorzystują metody heurystyczne do wykrywania nowych, nieznanych jeszcze typów zagrożeń. Metody heurystyczne to nic innego jak zbiór "zdroworozsądkowych" reguł, utworzonych na podstawie np. wiedzy ekspertów. W przypadku antywirusów można sobie dość łatwo wyobrazić takie reguły. Kod programu zawierający instrukcje formatowania dysku, zmiany informacji o partycjach, masowe rozsyłanie e-maili czy przechwytywanie informacji wprowadzanych z klawiatury może wskazywać na obecność wirusa. Oczywiście, tego typu akcje wykonywane są także przez zupełnie niewinne programy. Program antywirusowy sprawdza jednak setki reguł heurystycznych i na tej podstawie decyduje, czy badany kod aplikacji nie zawiera za dużo potencjalnie niebezpiecznych instrukcji.

Metody heurystyczne stosowane są nie tylko w programach antywirusowych. Tego typu rozwiązania stosuje się m.in. w systemach eksperckich, które potrafią udzielać sensownych odpowiedzi nawet w trudnych zagadnieniach, opierając się na zgromadzonej wiedzy. Systemy eksperckie potrafią wyręczyć sztab specjalistów, pomagając w diagnozowaniu problemów - nie tylko medycznych, ale też technicznych, np. w analizie usterek urządzeń. Powszechnie stosowane są również w chemii i genetyce, z powodzeniem zostały wykorzystane również do celów edukacyjnych.

Przykładem systemu opartego m.in. na heurystykach jest rozwijany od 1984 roku projekt o dość zabawnej dla nas nazwie. CYC ( http://www.cyc.com ) to największy obecnie system zawierający tzw. wiedzę ogólną, a co najważniejsze, potrafiący wykorzystać informacje, umiejący wysnuwać wnioski na podstawie znanych pojęć i zależności między nimi. Program obecnie dostępny jest także w wersji open source ( http://www.opencyc.org ). Jego ideą jest zbudowanie systemu mającego zdolność "zdroworozsądkowego" rozumowania na poziomie człowieka. Chociaż do osiągnięcia tego celu jeszcze długa droga, CYC już dzisiaj potrafi bardzo trafnie wyciągać wnioski dotyczące ogólnie znanych pojęć.

Algorytmy genetyczne

Animowane agenty stają się coraz częstszymi mieszkańcami domowych komputerów.

Animowane agenty stają się coraz częstszymi mieszkańcami domowych komputerów.

Algorytmy genetyczne to jeszcze jeden przykład pomysłów, których inspiracją była obserwacja natury. W algorytmach genetycznych zastosowanie znajduje teoria ewolucji: tworzona jest populacja osobników zawierająca odpowiednik genotypu (zestawu genów), która poddawana jest procesowi doboru naturalnego, Najlepiej przystosowane osobniki przeżyją i mogą "rozmnażać się", a dokładniej - wymieniać część informacji genetycznej. Dodatkowym elementem są losowe mutacje, dzięki którym nowe pokolenie programów może zawierać cechy, których nie miały osobniki ze starszego pokolenia.

Jak działa algorytm genetyczny? Wyobraźmy sobie, że rozwiązaniem problemu będzie liczba w zakresie od 0 do 65535. Można ją przedstawić w postaci binarnej, jako ciąg 16 bitów, który uznamy za genotyp naszych ewoluujących programów. Najpierw losujemy pewną liczbę osobników (w tym przypadku wartości 16-bitowych). Następnie określamy, które z nich "przeżyją" - dla każdego osobnika obliczamy wartość funkcji "przystosowania" i pozostawiamy przy życiu np. 40 procent najbardziej obiecujących osobników. Kolejną czynnością jest tworzenie nowego pokolenia, czyli wymiana materiału genetycznego pomiędzy pozostałymi przy życiu osobnikami. Dla dwóch przedstawicieli określamy losowo "punkt przecięcia" chromosomu i wymieniamy np. pierwsze 5 bitów. Na koniec pojawia się mutacja: z pewnym prawdopodobieństwem (np. 2 procent) zamieniany jest pojedynczy bit chromosomu. Powstaje nowe pokolenie, które poddawane jest analogicznemu procesowi. Przy odpowiednio dużej początkowej grupie osobników i dostatecznie długim procesie ewolucyjnym algorytm generuje zestaw (w naszym przykładzie - liczb 16-bitowych), który jest rozwiązaniem badanego problemu.

Algorytmy genetyczne są często stosowane do rozwiązywania problemów optymalizacyjnych, zwłaszcza w przypadkach grożących tzw. eksplozją kombinatoryczną (np. wyszukanie optymalnej trasy przejazdu pomiędzy wieloma miejscowościami). Różne metody związane ze sztuczną inteligencją są często wykorzystywane w biznesie, nie inaczej jest z algorytmami genetycznymi, które mogą być użyte np. do projektowania dużych inwestycji kapitałowych, prognozowania zysków, zaproponowano nawet użycie algorytmów genetycznych do... aktywnej redukcji hałasu.

Agenci tacy jak my

Różne pomysły, których początki sięgają badań nad sztuczną inteligencją, znajdują zastosowanie w setkach drobnych aplikacji dostępnych w Internecie. Jednymi z najczęściej wykorzystywanych są ... agenty. Agent to nic innego, jak program wyposażony w odrobinę inteligencji pozwalającej na automatyczne wykonywanie prostych zadań i odciążanie użytkownika od żmudnych, codziennych prac. Aplikacje tego typu to np. szperacze sieciowe analizujące wyniki zwracane przez wyszukiwarki typu Google, programy zarządzające pobieraniem plików z Internetu, animowani pomocnicy pakietu Microsoft Office. Bardziej zaawansowane programy-agenty, to np. aplikacje antyspamowe, rozpoznające wiadomości-śmieci na podstawie prostych reguł i metod statystycznych, ale także przy użyciu sieci neuronowych. Programy-agenty są dzisiaj najczęściej kojarzone z aplikacjami potrafiącymi samodzielnie przeszukiwać zasoby Internetu. Rzeczywiście, w tych zastosowaniach sprawdzają się doskonale, uwalniając użytkownika od konieczności nudnego sprawdzania zawartości dziesiątek stron WWW . Agenty tego typu nie zawsze służą dobrym celom, stosowane są również np. do zbierania publikowanych na stronach internetowych adresów e-mail, często na potrzeby systemów rozsyłających spam.


Zobacz również