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 nie potrzebnej).
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 - jest to strata
czasu. Jedna analiza z silniejszym człowiekiem 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?