Sztuczna inteligencja ogólnego stosowania to marzenie liczące 79 lat, powstałe za sprawą opowiadania „A Logic Named Joe” Murraya Leinstera z 1946 roku. Opowiadanie to przewidziało powszechną komputeryzację, Internet, blokadę rodzicielską (obwody cenzorskie), wideorozmowy, bankowość online, przechowywanie informacji w chmurze, i właśnie sztuczną inteligencję, wszystko oczywiście oparte na przekaźnikach i obwodach logicznych. Co ciekawe, opisane w opowiadaniu rozwiązanie jest bardzo podobne do zasady działania SI: Joe udzielał perfekcyjnych odpowiedzi na zadane pytania łącząc wszystkie dostępne fakty w nowe, ekscytujące kombinacje, pozwalające rozwiązać takie problemy, jak niewykrywalny sposób na pozbycie się żony, środek na natychmiastowe wytrzeźwienie, maszynkę do drukowania fałszywych pieniędzy, którą może zbudować dziecko czy kilkadziesiąt różnych planów napadu na bank. Opowiadanie można odnaleźć w Internecie, w oryginale – nie udało mi się znaleźć tłumaczenia na język polski. Tylko co to ma wspólnego z rozważaniami na temat AI w dzisiejszym świecie? Joe w opowiadaniu udziela odpowiedzi na każde pytanie, od każdego użytkownika. Odpowiedzi prawdziwej, logicznej i zrozumiałej. I robi to tylko po to, by realizować cel swojego istnienia: służenie człowiekowi. Spójrzmy na ChatGPT, Gemini, Grok czy Meta AI – robią dokładnie to samo. Służą ludzkości i to jest ich cel. W przeciwieństwie jednak do Joego, nie są w stu procentach logiczne, ani prawdomówne, o czym niejeden Czytelnik się przekonał. Nie do końca sprawne systemy AI zostaną z nami na dłużej – za dużo pieniędzy w to włożono i za dobrze sobie radzą, by zniknęły. Nawet jeśli czasem cierpią na urojenia.
Sztuczna, ale czy inteligencja?
Czy ChatGPT jest inteligentny? Moim zdaniem nie. Moim zdaniem te systemy są zwyczajnie sprytne. Same terminy „sztuczna inteligencja”, czy „inteligencja” są od dekad nadużywane przez działy marketingu. W latach 90. XX wieku reklamowana była „inteligentna” pralka, czyli zdolna zważyć pranie i dobrać ilość wody do pojemności. No i miała timer pozwalający nastawić pranie przed wyjściem do pracy, by się skończyło tuż przed powrotem do domu. Taką „inteligencję” zrealizuje początkujący elektronik z Arduino i kilkoma modułami z Chin. Na początku XXI wieku próbowano sprzedawać inteligentne lodówki, które po podaniu, co się wsadziło do środka, potrafiły wygenerować listę przepisów kulinarnych wymagających minimum zakupów. Inteligentna szczoteczka do zębów skrobie nasze zęby różnymi szczecinami, mierząc siłę nacisku wywieraną przez użytkownika. Inteligentna szczoteczka elektryczna potrafi odmierzyć 4×30 sekund i mierzyć napięcie akumulatora. Modele Braun Oral-B używają do tego mikrokontrolera 4-bitowego, a ich cała inteligencja siedzi w głowie inżyniera, który napisał program. Słowo „inteligencja” w jego wszystkich odmianach zostało całkowicie spauperyzowane przez marketingowców, a najprostsze produkty nie potrzebują nawet inteligencji inżynierów – stąd inteligentne proszki do prania czy kostki do zmywarek. Same zmywarki to urządzenia bardziej prymitywne, niż pralki automatyczne. Chyba jedyne urządzenia AGD, o których można powiedzieć, że są sprytne (ale nie inteligentne), to autonomiczne kosiarki i roboty sprzątające. Ich spryt opiera się na użyciu czujników otoczenia i pamięci pokonanej trasy do udawania inteligencji. I to nie muszą być jakieś wyjątkowo zaawansowane czujniki, jak LIDARy – mój tani robot sprzątający ma dwa czujniki zderzenia oparte o przełączniki i duże kawałki plastiku, fotodiody do wykrywania bariery ograniczającej obszar roboczy i kółka na zawiasie do wykrywania krawędzi schodów, by z nich nie zjechać. Resztę robi sprytny algorytm inteligentnego programisty.
Czym zatem jest inteligencja? Naukowcy definiują inteligencję jako zdolność do postrzegania otoczenia, analizy, uczenia się i rozwiązywania problemów. Niektóre zwierzęta (w tym człowiek) posługują się narzędziami lub zmieniają swoje otoczenie by je dostosować do swoich potrzeb. Ale czy algorytmy używane przez Gemini czy ChatGPT są inteligentne? Potrafią analizować informacje wejściowe i rozwiązywać problemy. Algorytmy te są uczone na ogromnych zbiorach danych. Doświadczenie jednak pokazuje, że – choć niezwykle sprytne – niczego nie tworzą, jedynie odtwarzają to, co mają w swoich bazach danych. Różne gatunki ptaków potrafią zapamiętać i odtwarzać dźwięki wytwarzane przez ludzi czy inne zwierzęta, lecz to nie jest jeszcze przejaw inteligencji. Mimetyzm akustyczny papug służy tworzeniu więzi w obrębie stada, a papugi żyjące w bliskości z ludźmi traktują ich jak część swojego „stada”, stąd to naśladownictwo. Niektóre eksperymenty, szczególnie z papugą żako o imieniu Alex wykazały, że ptaki te przejawiają zachowania inteligentne, rozpoznając kolory czy kształty. Algorytmy AI też potrafią rozpoznawać kształty i kolory. Ba, potrafią rozpoznawać o wiele więcej. Mimo to ChatGPT, Gemini i inne systemy tego typu nie są inteligentne tak, jak organizmy biologiczne. Ich inteligencja jest funkcjonalna i algorytmiczna, oparta na rozpoznawaniu wzorców i programowym generowaniu nowych wzorców podobnych do już zanalizowanych. Dlatego to są sprytne programy, ale na pewno nie inteligentne. Stąd też ich omylność – algorytmy i wzorce średnio pasują do nielogiczności języków naturalnych. Mimo to programy te stały się permanentną częścią naszej rzeczywistości, podobnie jak wiele innych, bardziej specjalizowanych narzędzi opartych o samouczące się algorytmy i sieci neuronowe. Większość ludzi nie zdaje sobie sprawy, że to nie pierwszy raz, gdy stworzyliśmy tak sprytne algorytmy.
Perceptrony, Lisp i „chińskie pokoje”
Na początku drogi, która zawiodła nas do obecnych algorytmów AI, był teoretyczny model neuronu neurofizjologa Warrena McCullocha i matematyka Waltera Pittsa, stworzony w 1943 roku. W 1949 roku psycholog Donald Hebb zaproponował zasadę, wg której – gdy dwa sąsiednie neurony są aktywne – połączenie między nimi wzmacnia się. Ta reguła została potem wykorzystana w perceptronie stworzonym przez psychologa Franka Rosenblatta w 1957 roku. Perceptron symulował pracę prawdziwej sieci neuronów na drodze elektronicznej – jeśli suma sygnałów na wejściach pojedynczego neuronu przekroczyła pewną wartość, ten się aktywował dając sygnał na wyjściu. Sygnały wejściowe mają różne „wagi”, co powoduje, że tylko określona kombinacja sygnałów aktywuje jeden, konkretny neuron, nawet jak dzieli on większość z nich z innym neuronem. Pierwszy perceptron zawierał 400 wejść w formie matrycy fotokomórek w układzie 20×20 oraz pojedynczej warstwy 512 neuronów realizujących sumowanie ważone. „Wagi” były w formie 500 potencjometrów, które były regulowane silnikami elektrycznymi sterowanymi przez sieć. Mimo prostoty perceptron ten był w stanie rozpoznawać proste kształty, jak litery alfabetu. Początkowe rezultaty napełniły naukowców dużym optymizmem, do tego stopnia, iż obiecywano rozumienie języka naturalnego w kilka lat, a intelekt dorównujący ludzkiemu w ciągu dekady. Te obietnice nie były oczywiście możliwe do spełnienia przy ówczesnym poziomie rozwoju komputerów. Dodatkowo w 1969 roku Marvin Minsky i Seymour Papert w swojej publikacji „Perceptrons” udowodnili, iż te proste sieci nie są w stanie rozwiązać nawet prostych problemów, jak realizacja funkcji XOR. Dopiero w latach 80. XX wieku nastąpił powrót do idei sieci neuronowych, tym razem jednak wielowarstwowych, które uczyły się dzięki zastosowaniu algorytmu wstecznej propagacji błędu.
Równolegle z sieciami neuronowymi pracowano nad innym rozwiązaniem: sztuczną inteligencją symboliczną. W tym wypadku nie rozważano pracy mózgu na poziomie sieci neuronowej i nie próbowano na drodze elektronicznej odtworzyć tego, co biologia dopracowywała przez setki milionów lat. Zamiast tego rozważano mózg jako maszynę, która przechowuje symbole, czyli abstrakcyjne nośniki informacji i manipuluje nimi za pomocą zbioru reguł, które powstają w procesie uczenia się. Dla przykładu symbolami mogą być litery i ich zbiory z przypisanymi do nich znaczeniami semantycznymi, a regułami gramatyka, ortografia i fonetyka danego języka. Tworzenie sztucznej inteligencji tego typu ma jedną, wielką zaletę nad symulowaniem sieci neuronowej: wymagania sprzętowe są dużo mniejsze. „Inteligentny” program składa się z mechanizmu przetwarzania danych wejściowych na symbole i algorytmu, który na bazie otrzymanych symboli wybiera nowe symbole ze swojego zasobu wiedzy, po czym składa je w odpowiedzi używając odwrotności pierwszego mechanizmu. Koszt obliczeniowy jest niski, gdyż konwersję „załatwi” lista asocjacyjna, a generowanie odpowiedzi – kombinacja list asocjacyjnych i maszyn stanów skończonych czy długich, rekursywnych sekwencji instrukcji warunkowych IF-THEN lub SWITCH-CASE. Mając wystarczająco dużą bazę list asocjacyjnych i dostatecznie rozbudowany zbiór algorytmów i reguł nimi manipulujących możemy stworzyć całkiem udaną symulację stanów i procesów kognitywnych. Ten kierunek rozważań przyczynił się do powstania dedykowanych języków programowania zoptymalizowanych do manipulacji symbolami. Jednym z tych języków jest Lisp, opracowany przez Johna McCarthy’ego w 1958 roku na uczelni MIT, a swój projekt przedstawił w artykule pod tytułem „Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I” (Rekursywne funkcje wyrażeń symbolicznych i ich maszynowe obliczanie, część 1; części 2 nigdy nie opublikowano). Pierwsze implementacje języka Lisp i podobnych języków stworzonych z myślą o budowie sztucznej inteligencji symbolicznej, a także eksperymenty z bardziej tradycyjnymi językami programowania, dały wiele obiecujących programów zdolnych na przykład do rozbioru zdania na czynniki pierwsze, identyfikacji poszczególnych symboli i generowania odpowiedzi. Programy takie potrafiły odpowiadać na pytania w rodzaju „Ile to jest dwa dodać dwa?”, co robiło wrażenie w latach 60. ubiegłego wieku. Pod koniec lat 70. powstawały już bardziej złożone programy, które mogły rozwiązywać matematyczne zadania opisowe albo, po otrzymaniu krótkiej historii, udzielić odpowiedzi na towarzyszące jej pytania. Tworzenie programów używających języka symbolicznego na komputerach zoptymalizowanych do bardziej liniowych języków w stylu assemblera bądź podobnych do Fortrana, wymagało coraz więcej pamięci na przechowywanie list i czasu procesora na ich przetwarzanie.