W XX wieku dużo się mówiło o sztucznej inteligencji. Już, zaraz, za rogiem miały być rozumne systemy komputerowe, wykorzystywane od medycyny po zarządzanie, adaptujące się do zmiennych warunków, nawet uprawiające naukę. W literaturze i filmach komputery zyskiwały osobowość, buntowały się przeciw ludziom, prowadziły wojny - ale też potrafiły zdobywać się na uczucia wyższe.
Rzeczywistość - jak na razie - bardzo ciekawie zweryfikowała te marzenia.
Wcale nie sztuczna
Owszem - coraz więcej aplikacji zaczyna w jakiejś mierze zachowywać inteligentnie. Programy potrafią podsuwać użyteczne informacje, adaptować się do zachowań użytkowników, korygować ludzkie błędy. Rozpoznawanie pisma już właściwie nie jest problem, coraz ciekawiej wygląda rozpoznawanie głosu i obrazu a nawet sterowanie ruchomymi obiektami. Dzieje się.
Ale - jeśli się zastanowić - w gros przypadków w których oprogramowanie zachowuje się rozumnie wcale nie mamy do czynienia z sztuczną inteligencją. Przynajmniej tą z pierwotnych wizji.
Gdy filtr antyspamowy rozpoznaje niechcianą reklamę, sklep rekomenduje potencjalnie interesujący produkt, wyszukiwarka promuje najciekawsze strony, serwis społecznościowy sugeruje osoby warte poznania, edytor podsuwa plik który najprawdopodobniej chcę edytować, aktywny firewall zauważa próby włamania, sieciowa gazeta podrzuca wartościowy artykuł - właściwie zawsze mamy do czynienia z umiejętnym opracowaniem i wykorzystaniem informacji pochodzących od ludzi. Osoby, które oglądały tę książkę, zakupiły także...
Zamiast sztucznej inteligencji mamy inteligencję kolektywną (czy może zbiorową). Termin rozpropagowany przez świetną książkę Tobiego Segarana oznacza komputerowe opracowanie informacji o zachowaniach i decyzjach ludzi i wykorzystywanie jej w działaniu aplikacji.
Chyba najbardziej spektakularnie widać to gdy przyjrzymy się problemowi organizacji i wyszukiwania informacji w internecie. Ważny przykład, bo wspomaganie człowieka w zarządzaniu dużą ilością informacji jest jednym z pierwszych naturalnych zadań sztucznej inteligencji.
Sortując strony
Pierwsza generacja wyszukiwarek (AltaVista, InfoSeek, HotBot, Lycos itp) próbowała stosować komputerową analizę. Zliczać różne charakterystyki stron HTML i wnioskować z nich. Google zmiotło konkurencję i przejęło rynek, bo postawiło na agregację informacji pochodzących od ludzi (pierwotnie: kto i jak linkuje do ocenianej strony). Do dziś na tym bazuje.
Gdzie Google nie starcza, mamy wysyp serwisów wspomagających klasyfikowanie treści, ocenianie ich i promowanie wartościowych artykułów. Znowu - Digg, Reddit, StumbleUpon, Technorati, Delicious i wiele innych to przede wszystkim sumowanie społecznościowych ocen i zachowań. Komputer coraz lepiej filtruje i promuje treści ale jest w tym tylko pośrednikiem, po prostu przekazuje oceny innych osób.
Główne innowacje?
O nowych technikach rozpoznawania czy interpretacji tekstu wiele nie słychać za to co chwila pojawia się ktoś, kto na trochę inny niż poprzednicy sposób zbiera ślady po zachowaniach ludzkich (w tej chwili na topie jest zliczanie tweetów czy komentarzy na facebooku oraz agregacja z wielu źródeł, przykład tej ostatniej to niedawno opisywany przeze mnie PostRank). Jeśli pojawia się interesujący głośny algorytm, to dotyczy jak najbardziej efektywnego wykorzystywania informacji pochodzącej od ludzi (przypomnę TrustRank).
Szachy
Symbolem triumfu sztucznej inteligencji są często szachy.
To już nawet nie czasy, gdy Deep Blue zdołało ograć Kasparowa. Czołowych arcymistrzów leją programy z półki działające na pierwszym z brzegu laptopie. Kramnik jeszcze jako mistrz świata poległ z Fritzem, większość czołówki gry przeciw komputerom stara się unikać, arcymistrzowie drugiego planu zaczęli już grać mecze, w których ludzie dostają od programu fory (mam na myśli kilka meczów Rybki granych przez komputer bez piona - program mimo braku materiału wygrał mecze z arcymistrzami Benjaminem, Ehlvestem czy Dzindzichashvilim, przegrał tylko z Vadimem Miłowem).
Mimo to, szachy są przykładem niepowodzenia sztucznej inteligencji.
Owszem - brutalnie przeliczający miliony pozycji program wygrywa z człowiekiem. Wygrywa posługując się paru dziesiątkami czy setkami ustalonych przez człowieka atrybutów pozycji - od podstaw, czyli balansu materialnego, atakowanych bierek itp po dość subtelne miary aktywności figur, zagrożenia króla albo zaawansowania pionów - i mnożąc je na wiele ruchów w głąb. Ale nie o to chodziło!
Spora część wiedzy programów szachowych to po prostu zbiorowa inteligencja wielu pokoleń szachistów. Informacje, że - np. - król powinien być zroszowany, wieże dobrze stawiać na wolnych liniach, gońce na otwartych diagonalach, skoczki na podpartych polach w centrum, a zaawansowany przechodni pionek jest śmiertelnie niebezpieczny - z podręczników dla graczy trafiły do algorytmów programów. 2-3 lata temu mówiło się, że programy rozumieją - tj. mają oprogramowaną - wiedzę z czasów Stenitza. Dziś granica na pewno przesunęła się trochę dalej.
Są też charakterystyki wypracowywane specjalnie na potrzeby programów. Mówiło się np. o wykorzystywaniu przez Rybkę ilości pól osiągalnych przez poszczególne figury w jednym lub kilku ruchach.
Po co ludzie chcieli mieć programy szachowe? Powodów było wiele ale podstawowe wydają mi się dwa:
- aby grać z nimi,
- aby przy ich pomocy analizować rozegrane partie bądź przygotowywać przyszłe.
To pierwsze się zupełnie nie udało. I gdy programy jeszcze przegrywały z ludźmi, i gdy z nimi remisowały, i gdy zaczęły ich ogrywać - gra z nimi nie była i nie jest przyjemnością. Ciekawe partie rodzą się z pomysłowości, drobnych pomyłek i prób ich eksploatacji, ryzyka, nawet bluffu. Komputer gra bezwzględnie, schematycznie i nudno. Jako student po paru miesiącach regularnej gry z jakimś ówczesnym Fritzem nabrałem obrzydzenia do szachów i na wiele lat je porzuciłem. Obecnie od czasu do czasu próbuję z ciekawości i mam te same odczucia.
Z analizą jest tylko troszkę lepiej. Można wziąć rozegraną partię, przepuścić ją przez Rybkę (Fritza, Shreddera, Togę, ...) i dostać ładny raport o grubych błędach. Och. Tu mogłem zrobić widły i zdobyć jakość, a tu podwaliłem skoczka.
Niestety na tym właściwie koniec. Programy ciągle nie oferują sensownych pomysłów dotyczących alternatywnych plany gry czy wyjaśnień przyczyn pozycyjnej porażki. Tak, ja wymieniłem skoczki. Tak, Rybka zamiast tego zagrałaby pionem i daje ewaluację o 0.3 lepszą. Nie, nie mam pojęcia czemu, może chodzi o to, że za dziesięć ruchów jeden z pionków będzie o pole dalej, a może o to, że goniec będzie miał dostępne dwa pola więcej na diagonali (zresztą, do niczego niepotrzebnej).
Ba - nawet, gdy komputer proponuje zrozumiały plan (np. sygnalizuje możliwość rozpoczęcia poświęceniem forsownego ataku matowego czy zdobywającego materiał), jest to często plan dla mnie nierealny. Wierzę Ci Rybko, że tu Nxf7 działa - ale ja, człowiek, przy szachownicy nie jestem w stanie doliczyć tak długiego i rozgałęzionego wariantu, więc nie mogę go zagrać.
Anotowałem trochę swoich partii przy pomocy programów i doszedłem do wniosku, że - za wyjątkiem wskazywania grubych błędów - daje to dość złudne wyniki. Jedna analiza z silniejszym ludzkim partnerem jest więcej warta od kilkudziesięciu analiz komputerowych.
A programy prędzej rozwiążą szachy (dla pozycji z <= 6 figurami już to zrobiły) niż nauczą się grać ciekawie.
Czemu
To nie jest tak, że informatyka w ogóle nie ma aparatu potrzebnego do pisania autonomicznych programów. Od metody rezolucji i programowania w logice po sieci neuronowe i algorytmy genetyczne, jest od dawna do dyspozycji wiele ciekawych możliwości. Ale ich eksploatacja to ciągle domena niemal wyłącznie uniwersytetów.
Może chodzi o nasze oczekiwania w stosunku do komputerów? Marzymy o inteligencji, ale gdy zaczyna być mowa o konkretnej aplikacji, jej danych i funkcjach - chcemy deterministycznie wiedzieć, co się stanie. I zamiast próbować uczyć sieć neuronową, piszemy ośmiokrokowy schemat decyzyjny albo liczymy prostą korelację.
Czy jest możliwy bank dający kredyty na podstawie niedeterministycznego algorytmu albo sklep ustalający tak ceny?