Inba z SI
Minęło już 9 miesięcy 2023 roku, a ja znowu się opuściłem w blogowaniu. Miało to swoje oczywiste przyczyny, zmieniłem pracę po 20 latach (czyli psycholologicznie to jest poważna zmiana), wykorzystałem zaległy urlop, aby oddawać się refleksjom na temat świata starożytnego depcąc bruki Rzymu, Neapolu, Pompei i Herkulanum. Odwiedziłem Manchester z międzylądowaniem w pobliżu Sandefjordu, jednego z typowych, nudnych do urzygu, norweskich miast. Nawarstwiło się zatem wrażeń, a i przemyśleń.
Ale nie wszystkimi zamiaruję się dzielić. W końcu to jest mój prywatny-publiczny blog, to znaczy, w równej mierze służy on mnie, co innym. Bo po latach, gdy stanę się już innym człowiekiem (co do czego nie mam najmniejszych wątpliwości), będę mógł zajrzeć w przeszłość swojego umysłu i przeżyć zadziwienie/pomięszanie/zachwyt/przerażenie, co też dziwnego mi chodziło po głowie. Ale z drugiej strony, ponieważ blog ten publikuje się na otwartej stronie, nie dzielę się tutaj najbardziej chwilowymi, radykalnymi, czy brutalnymi pomysłami.
Dziś zatem tylko o jednym technolololologicznym zjawisku.
Amba z SI
Postępy w rozwoju tak zwanej Sztucznej Inteligencji czasem naprawdę robią wrażenie. Mam na myśli ich tempo. Bynajmniej wciąż jeszcze nie zachwycam się ich możliwościami. Niestety, coraz lepiej wychodzi im zwykłe "zmyślanie" informacji, zamiast klejenia prawdziwych. Przekonuję się o tym co i raz (dostało to nawet pseudonaukową, czysto marketingową nazwę - mówi się, że SI halucynuje czyli po naszemu - bredzi). Być może dlatego, że te silniki, które udziela się gawiedzi (w celu zgromadzenia odpowiednio dużego zasobu danych badawczych) do zabawy, zwykle nie mają bezpośredniego dostępu do Internetu? Może to i prawda. Ale raczej nie o to chodzi.
Ludzkość jednakowoż uległa zachwytowi nad możliwościami tych tajemniczych programów, o których krąży mnóstwo plotek. A że umieją zdiagnozować raka lepiej od ludzkiego lekarza, a to że upakowane w uzbrojonego drona rozwaliły kontener z operatorem, który miał nimi sterować, a to że nas podsłuchują przez wyłączone telefony...
Dziś z całym przekonaniem możemy przewidywać, że najdalej za 20 lat świat będzie naprawdę wyglądać inaczej, przynajmniej w warstwie informacyjnej (wynoszenie śmieci niestety wciąż będzie spoczywać na tzw. głowie rodziny). Na przykład skończy się konieczność wkuwania języków obcych - za przystępną cenę będzie można nabyć autotłumacze, które pozwolą się komunikować, nawet na ponadpodstawowym poziomie, bez znajomości języka interlokutora. Nie wykluczam, że w ten sposób dostępna się stanie możliwość wymiany informacji na dowolnym poziomie, tj. prowadzenia nawet bardzo fachowej rozmowy na hermetyczne tematy, albo, kto wie, może nawet wymiany językiem poezji? To ostatnie jednakowoż wciąż leży w dziale Science-Fiction, bo do opanowania poezji, jak słusznie zauważył Stanisław Lem potrzeba gruntownego przygotowania, wykształcenia i głębokiego związku z całą naszą kulturową przeszłością.
Marketingowy chwyt
Istotne w tej całej inbie czyli ambie ze Sztuczną Inteligencją jest, że to żadna inteligencja. Publiczność wzbudziła się systemami ekspertowymi i modelami językowymi, drobnymi kosteczkami z całej góry niezbędnych zagadnień do rozwiązania puzla sztucznej inteligencji. Nasze współczesne zachwyty nad nimi mają dwie podstawy, obie przesadne. Po pierwsze zachowujemy się jak rodzice na widok berbecia, który wstał na nóżki i z trudem zrobił swoje pierwsze samodzielne trzy kroczki, zanim się wygrzmocił. Owszem, widać postęp i to bardzo szybki. Ale nie przesadzajmy - sami chodzimy codziennie i nie robimy z tego święta. Jeszcze daleka droga przed sieciami neuronowymi. Po drugie, po prostu doświadczamy zachwytu i pomięszania na widok programu, który potrafi dać wynik inny od wprost zaprogramowanego. Choć większość współczesnych skłonna jest traktować nawet zwykły komputer jak partnera w interesach (te modły nad klawiaturą, gdy Windołz uparcie nie przyjmuje hasła!), to jednak sądzę, że wiemy, iż program nie zdolen jest dać innego wyniku niż z góry przewidziany przez jego autora.
Cóż, programistyka nie stoi w miejscu, rozwija się, a programy tworzą zespoły nazywane systemami - a to już zaczyna być tak skomplikowane, że choć powyższa prawda wciąż nie daje się podważyć, to jednak liczba możliwych wyników staje się trudna do ogarnięcia przez umysł pochłaniacza tabletek na nadciśnienie. Pojawiają się tzw. undocumented features, czyli zachowania programów, które nie zostały opisane w instrukcji, albo przeoczone przez projektantów, programistów (i stanowią w zasadzie błąd systemu). W tym momencie nasz mózg, ewolucyjnie nastawiony na interakcję i komunikację, już jest przekonany, że po drugiej stronie ma do czynienia z potencjalnym interlokutorem o podobnym potencjale. A to wciąż tylko bardzo szybki kretyn-biurokrata.
Tymczasem cała ta technologia opiera się o dosyć stare zjawisko informatyczne, jakim są generatory liczb pseudolosowych. O czym będzie niżej. Zapoznajcie się z linkowanym hasłem na początek.
Typowy program komputerowy to (bardzo skomplikowana i porozwidlana) długa instrukcja, mapa, ścieżka dojścia do jakiegoś celu (wielu celów). Zawiera w sobie niezbędne sposoby przetwarzania danych, zwykle liczbowych, zwane algorytmami, które proces usprawniają i pozwalają na to, że taki program może mielić naprawdę bardzo dużo danych w krótkim czasie. Ale z grubsza rzecz biorąc składa się z dróżek od punktu A do B. Zakłada się, że na wejściu pojawią się jakieś konkretne rodzaje danych, uporządkowanych w określony sposób (np. tabelka przelewów), a na wyjściu takoż coś, co z tych danych wyniknie po przetworzeniu zawsze tą samą metodą (np. saldo rachunku). Jest to tylko bardziej skomplikowane, zawiera więcej kroków pośrednich, ale w gruncie rzeczy w podobny sposób działała młockarnia mojego dziadka: na wejściu było zżęte zboże, na wyjściu ziarno, plewy i słoma. A bez ludzkiego operatora to tylko złom.
Jak z takiego tępego biurokraty wykuć coś, co wygląda na inteligenta?
W tym miejscu koniecznie muszę zaznaczyć (jak robię to też na końcu tego przydługiego tekstu), że moim celem było uporządkowanie i uproszczenie własnych wyobrażeń na ten temat, a nie napisanie podręcznika, jak na świecie robi się SI. Nie znam się, nie robię. Tego sobie szukajcie gdzie indziej.
Jak to z SI było
Mamy cały ocean różnych programów, które powstały w ostatnim półwieczu. Nauczyliśmy się dzięki nim przetwarzać mnóstwo różnych danych. Składając je do kupy tworzyliśmy systemy przypominające kombajn, który sprawił, że młockarnia dziadka zardzewiała za stodołą: maszyna wjeżdżała na pole, gdzie zboże sobie rosło, a po paru godzinach na wyjściu było ziarno, słoma w balotach, a plewy rozsypane po rżysku. Czyli kombajn jako alegoria systemu, składał się z kilku maszyn: do cięcia zboża, młócenia i nowszej wersji snopowiązałki. Dla nienawykłego oka wygląda to dość inteligentnie. Ale to wciąż zakładane (i nie inne) dane na wejściu i oczekiwany (zaprojektowany wcześniej) wynik na wyjściu. Dodanie do tego umiejętności kopania kartofli nie zmieni ogólnego obrazu. Ale co, jeżeli zechcemy, aby ten kombajn sam umiał ocenić, kiedy należy wyjechać w pole na żniwo (to nie jest już trywialne zagadnienie)? Coś, co umie każdy rolnik bez średniego wykształcenia, rozkłada na łopatki najdroższe komputery. Podjąć racjonalną decyzję na podstawie starych oraz nowych kryteriów i danych, których nikt przed nim nie widział.
No, ale da się taki program stworzyć. Biedzą się nad tym już ze trzy dekady, do czegoś musieli w końcu dojść. A zastosowali nic innego tylko gotowe sztuczki, które mieli na warsztacie. Jak stworzyć program, który może na wejściu przyjąć jakieś dane, a na wyjściu dać wynik, którego programista nie przewidział z góry i nie zaprogramował? Skąd wziąć ów aspekt nieprzewidywalności, który widać w każdej żywej istocie? I tu wraca na tapetę generator liczb pseudolosowych. Znalazł on dotychczas zastosowanie w kryptografii (o wiele większa dziedzina, niż się nam zwykle wydaje), badaniach naukowych, statystyce (sic!), grach komputerowych oraz innych, np. okazało się, że komputer przy jego pomocy całkiem sprawnie robi rachunki (też sic!). Opiera się w swoim działaniu o wskazane jakieś dane na wejściu, zwane ziarnem. Bo maszyna, w której nic nie jest przypadkowe, ów pozorny przypadek musi wytworzyć na podstawie jakichś informacji1. Weźmy najprostszy nomen omen przypadek, który losuje między 0
i 1
, czyli np. "tak" i "nie", albo "jabłko" i "gruszka".
Janusz
Teraz weźmy program komputerowy, zaopatrzony w jakiś algorytm analizy obrazów, tj. np. taki, co potrafi z surowych danych zdjęcia (tzw. format RAW) wygenerować spakowany obrazek w formacie JPEG. Dołączmy do niego generator liczb pseudolosowych. I nazwijmy całość Janusz. W ten sposób Janusz umie wykonać analizę obrazka, użyć jej jako ziarna a następnie podjąć losową "decyzję" (czyli wygenerować 0
lub 1
). I po wykonaniu ww. czynności zapamiętać zestaw analiza_obrazka+decyzja
.
Januszowi każemy rozpoznać, czy na zdjęciu jest gruszka, czy jabłko - czyli coś, czego z całą pewnością nie umie. Ale że umie co innego, zatem będzie odpowiadał (pseudo) losowo gruszka
lub jabłko
, dla komputera to w zasadzie bez różnicy. W tym celu nakarmimy go milionami, a może i miliardami obrazów tych owoców. Dla każdego z nich powtórzy to, do czego powstał, czyli zrobi analizę, a następnie użyje jej jako podstawy do wygenerowania losowej (a konkretnie pseudolosowej) odpowiedzi. Wszystkie te wyniki zostaną zapamiętane.
Danton
Postawimy nad Januszem kolejny program (nazwijmy go Dantonem), który umie odczytać podpis pod zdjęciem, a zatem "wie", czy na nim jest gruszka czy jabłko. Program ten ma władzę życia i śmierci nad Januszem. Jeżeli Janusz nie rozpozna owocu ze zdjęcia, zostanie zabity, to znaczy wyłączony. Jeżeli udzieli odpowiedzi prawidłowej, otrzyma nagrodę w postaci kolejnego zdjęcia do oceny.
Programy "zabite" wędrują do szuflady, przydadzą się ewentualnie później. Janusz nagrodzony (dla uproszczenia to wciąż jest tylko jedna instancja na raz) "żyje" doputy, dopóki udziela poprawnych odpowiedzi. Gdy Danton wreszcie go "zabije", do szuflady wędruje cała historia działania Janusza.
I tak w kółko.
Po pewnym czasie mamy pełną szufladę (pseudo) losowych zestawień analiz obrazków gruszek i jabłek połączonych z poprawnymi oraz odpowiedziami i z niepoprawnymi bredniami. Czyli zamiast zdjęcia jabłka z podpisem "jabłko" mamy zbiór jego analiz z takim podpisem. Mamy też cały kosz takichże analiz, ale z błędnym podpisem.
Janusz bis
Teraz bierzemy Janusza i trochę go przebudowujemy (powstaje Janusz bis). Mianowicie pozwalamy mu porównywać wynik wykonanej przez niego analizy obrazu do całego mnóstwa takich danych zakończonych pozytywnym wynikiem. To porównanie to wciąż nie jest czynność inteligentna2, tylko algorytm statystycznej analizy w oparciu o różne wagi i biasy (takie tam narzędzia statystyczne). W efekcie tej czynności Janusz oprócz swojej analizy dostaje dodatkową ocenę, jak bardzo jest ona podobna (ta jego analiza) do innych, które pozwoliły wcześniejszym instancjom Janusza "przeżyć".
Wszystko to oczywiście dzieje się w świecie liczb3. A tych jest tam całe mnóstwo. Ocena porównawcza zawiera mnóstwo dodatkowych ocen analitycznych, bowiem, jak wcześniej napisałem, jeden Janusz "przetrwał" pojedyncze rozpoznanie jabłka, a inny przecież zdołał zdać kilka egzaminów. Pamiętajmy, że ten, który przetrwał dłużej, nie był w jakiś sposób bardziej inteligentny od innych. Miał tylko więcej szczęścia. A właściwie pseudoszczęścia, pochodzącego z generatora liczb pseudolosowych. Który to generator losował odpowiedź mając za ziarno właśnie wykonane analizy. Za każdym razem ich decyzje były losowe, ale oparte o realizację algorytmu na otrzymanym zdjęciu.
Potem tworzymy Janusza encore bis, który porównuje analizy Januszy oraz Januszy bis. A potem tworzymy Janusza encore bisbis, który umie zrobić to samo, co poprzednicy, na bazie ich pracy. I powyższa historia powtarza się w kółko przez bardzo długi czas. Jak długi? Aż komputer zacznie się grzać, ale zacznie udzielać poprawnych odpowiedzi częściej niż założony próg, np. 95%.
Tylko Danton wciąż ten sam...
No dobrze, to się wydaje proste. Janusz zbiera coraz więcej poprawnych odpowiedzi połączonych z danymi analitycznymi i mechanizm statystyczny coraz precyzyjniej dobiera odpowiedzi, a zatem coraz częściej trafia. Ale to oznacza, że za każdym razem ma coraz więcej danych do przetworzenia, zanim udzieli odpowiedzi. To nie ma sensu. Program ma działać szybko i nie grzać komputera ponad miarę.
Heniek
Tu znowu wkraczają programiści i tworzą kolejny program, nazwijmy go Heniek. Ma on za zadanie dokonać bezstronnej oceny wcześniej wykonanych przez Januszy prac i wyszukać te fragmenty analizy, które najczęściej występowały w poprawnych odpowiedziach. W świecie ludzi możemy to opowiedzieć tak, że Heniek zaczyna "rozumieć", że np. jabłko jest bardziej kuliste w kształcie i częściej ma kolory żółte i czerwone, a gruszka jest, no właśnie, gruszkowata i zwykle zielona lub żółtawa. Ale do takiej analizy, jak tu przedstawiłem, nie potrzebujemy Heńka. Zresztą nasz mózg też analizuje mnóstwo innych cech gruszek i jabłek, po prostu ich nie opisuje w jednym, krótkim zdaniu. A Heniek ma być bezstronny i nie polegać na dobrych radach, po prostu ma znaleźć wszystkie dane, które dają największe prawdopodobieństwo poprawnego odróżnienia owoców. I zgromadzić je w jednym pudełku z napisem "jabłko" oraz w drugim z napisem "gruszka". A co właściwie on tam będzie gromadzić - tego nie wiemy. Dla nas może to być zupełnie bez sensu, ale z bazy wynika, że Januszowi pozwoliło przetrwać kolejny egzamin.
Zupełnie nowy Janusz
Teraz bierzemy którąś tam generację Janusza bis encore bisbis encore bisbisbis i karmimy go danymi od Heńka. Przypominam, że ów Janusz podejmuje decyzje losowo. Ale w przeciwieństwie do Heńka robi to wobec zupełnie nowych danych, których nikt przed nim nie analizował. Komu potrzebna umiejętność ponownego rozpoznania owocu, który już wcześniej został poprawnie nazwany?
I nagle dzieje się cud.
Pomimo, że wciąż decyzja nie jest rozumna, tylko losowa, to program prawie bezbłędnie, a przecież w końcu znacznie sprawniej od rozumnego człowieka, odróżnia gruszki od jabłek! Bo jego generator liczb pseudolosowych jako ziarno ma niezrozumiały dla nas zestaw danych wsadowych, z których generuje decyzję.
No, ten generator to już może nie tak całkiem to, co napisali w Wikipedii, to fakt (wyjaśnienia trzeba raczej szukać w hasłach typu heurystyka, algorytmy genetyczne, metoda Monte Carlo). W końcu ja tu bardzo upraszczam, żeby nie oszaleć. To trochę bardziej złożone narzędzie. Ale z grubsza o to chodzi, że gdzieś tam w piwnicy i tak jakiś krasnoludek rzuca kostką4.
A chodzi o to, że odpowiedź, jaką otrzymujemy od onego Janusza, z jednej strony jest przypadkowa, ale z drugiej, ów wygenerowany komputerowo przypadek oparty jest o nieznane nam, bo wcześniej wydestylowane z setek tysięcy prób, dane. To się nazywa stochastycznie, w odróżnieniu od statystycznie, lub losowo. Czym zatem jest taka odpowiedź? Czymś bardzo podobnym do wyników działania ludzkiego mózgu, wynikiem niezliczonych, przypadkowych, opartych o liczne doświadczenia, przemyślenia, skojarzenia, wyobrażenia, (oraz inne, czasem bez związku z tematem), wyborów.
Bystry kretyn
Przedstawiona powyżej historyjka jest oczywiście dużym uproszczeniem procesu nauczania maszyny, w niektórych wypadkach zwanego "uczeniem maszynowym", a do tego przedstawia tylko wydedukowany jeden ze sposobów, a tych jest z pewnością wiele. Wyżej podana historyjka nie tyle miała wyjaśnić, jak się robi przesławną Sztuczną Inteligencję, co pozwolić mi podsumować sobie w duszności i cichości własne wyobrażenia na ten temat. Ale wynika z niej oczywisty wniosek, że zarówno komputer, jak i jego oprogramowanie, dalej są zwyczajnie kretyńskie. Pojawiła się tylko nowa jakość dwojakiego rodzaju:
- Część algorytmu działania nowego typu programów opiera się o niezrozumiałe dla nas zbiory danych oraz nieznane nam algorytmy.
- Program w nieznany nam sposób potrafi nas przewyższyć w czynnościach, do których do niedawna stosowaliśmy takie cechy umysłu jak doświadczenie oraz intuicja.
Ale zauważcie, że ów z takim trudem "nauczony" program wciąż nie umie nic więcej niż tylko odróżnić gruszkę od jabłka. W pozostałych sprawach jest tak samo głupi jak jego poprzednicy sprzed czasów, gdy gawiedź zachwyciła się interfejsem okienkowym - czyli bezdennie głupi. Bo nic nie umie.
Inteligencja, jaką pod czaszką posiada najgłupszy z ludzi, potrafi o wiele więcej i w ogromnej liczbie dziedzin.
Do takich możliwości jeszcze komputerom bardzo daleko. Bardzo. Daleko.
To są wciąż bardzo szybkie biurokratyczne idioty.
Więc aż tak bardzo się nie pałujmy.
Zdołamy je jakoś oszukać.
-
Jak to rozumiem? Tworzymy jakiś algorytm, na tyle skomplikowany, że nie możemy za każdym razem odtwarzać go sobie łatwo w umyśle, którego zadaniem jest przemielić dane dane i na ich podstawie wygenerować wynik ze ściśle zdefiniowanego zakresu. Ale zakres ów nie ma żadnego związku z danymi, które stanowiły podstawę do wyniku. Np. powiemy mu, że ma przeczytać "Wojnę i Pokój" Tołstoja, a z tego ma się pojawić
0
albo1
. Być może będzie to właśnie1
. I wcale niewykluczone, że na podstawie tej powieści komputer zawsze powie1
(bo to jest pseudolosowy generator). Akurat tutaj nam to nie przeszkadza, bo dane składające się na ziarno mają być jednorazowego użytku. W omawianym przypadku funkcja takiego generatora być może została specjalnie utworzona właśnie do tego zadania. To już tajemnica tego nowiutkiego przemysłu. ↩ -
To znaczy: żeby napisać (czyli wydumać i zaprogramować) ten algorytm, trzeba być bardzo inteligentnym, podobnie, jak tylko bardzo bystrzy inżynierowie mogli zaprojektować i zbudować komputer. Ale do wykonania tego algorytmu wystarczy być już tylko tępym narzędziem elektronicznym, czyli właśnie komputerem. ↩
-
Bynajmniej nie cyfr, jak lubi rusycyzować znany rusofob Zychowicz. ↩
-
Powyższy przykład wyjaśnia też zjawisko "halucynowania" SI stwierdzone w interakcjach z tzw. modelami językowymi. Jeżeli oprogramowanie zostanie "wyszkolone" nie do odróżniania owoców, tylko do składania zdań, jego pierwszym i zasadniczym zadaniem będzie udzielenie informacji. Jakość tej informacji stać będzie na drugim miejscu. Bo jeżeli powiesz cokolwiek, to może trafisz w punkt. Jeżeli nic nie powiesz - na pewno nie trafisz. ↩