Tekst ukazał się w „Filozofuj!” 2024 nr 1 (55), s. 6–9. W pełnej wersji graficznej jest dostępny w pliku PDF.
Termin „inteligentny” z powyższej definicji jest rozumiany szeroko: wystarczy, żeby systemy wykazywały pewne cechy, które kojarzymy z ludzką inteligencją, aby określić je mianem SI. Jeśli np. program komputerowy gra w szachy tak, „jakby rozumiał” grę, i trudno go pokonać, to to wystarczy, by mówić o nim jako o sztucznej inteligencji. Właściwie wystarczy, aby dany system/moduł wykazywał choćby jedną z cech inteligencji ludzkiej, aby mówić o nim jako o SI – program szachowy nie musi rozpoznawać znaków drogowych, a system do rozpoznawania znaków drogowych nie musi znać gramatyki języka polskiego czy angielskiego. Z powyższego powodu tego typu systemy (de facto wszystkie obecnie istniejące systemy SI) nazywa się specjalizowaną lub wąską SI, w odróżnieniu od (wciąż jeszcze hipotetycznej) ogólnej sztucznej inteligencji (ang. Artificial General Intelligence, także human-level AI), która radziłaby sobie z każdym intelektualnym zadaniem, z jakim radzi sobie przeciętny człowiek.
Rodzaje SI
Można mówić o kilku rodzajach SI. Pierwszy z nich obejmuje systemy zdolne do wnioskowań logicznych. Istnieją dwa podrodzaje takich systemów: 1) wnioskujące w warunkach wiedzy pewnej, wyciągające wnioski z wprowadzonego zbioru faktów (wyrażonych symbolicznie) i reguł wnioskowania, oraz 2) wnioskujące w warunkach wiedzy niepewnej (opierające się na np. tzw. sieciach bayesowskich), oszacowujące prawdopodobieństwa zdarzeń. Do SI zaliczamy także algorytmy przeszukiwania grafów, używane np. do wyznaczania najkrótszej drogi między wybranymi dwoma punktami na mapie czy do znajdowania ruchu w grach planszowych tak, by zminimalizować własne straty przy założeniu maksymalnie dobrego ruchu przeciwnika. Ciekawym obszarem SI są badania nad metodami optymalizacji, np. algorytmami ewolucyjnymi, służącymi do odnajdywania satysfakcjonujących rozwiązań nietrywialnych problemów – w przemyśle czy logistyce. Kolejna grupa algorytmów odnosi się do tzw. uczenia maszynowego, które – szczególnie uczenie głębokie (ang. deep learning), bazujące na tzw. sztucznych sieciach neuronowych – cieszy się obecnie największym zainteresowaniem. Jemu przyjrzymy się nieco bliżej.
Uczenie maszynowe
Co to znaczy, że jakiś program „się uczy”? Co to są sztuczne sieci neuronowe? Jak głębokie jest „uczenie głębokie”? Próbując odpowiedzieć na te pytania, skupmy się na najważniejszym sposobie uczenia maszynowego, na tzw. uczeniu nadzorowanym (ang. supervised learning). Stanowi ono podstawę zdecydowanej większości najbardziej przydatnych systemów wyposażonych w SI np. wspierających rozpoznawanie mowy, rozpoznawanie typów obiektów na zdjęciach, systemów wspomagających diagnostykę medyczną itd. Wspólnym mianownikiem takich systemów jest klasyfikacja, przyporządkowanie właściwej klasy danemu obiektowi. Lista możliwych klas obiektów jest z góry ustalona i niezmienna. Np. krótkiej próbce dźwięku (rzędu milisekund) przypisuje się jeden z kilkudziesięciu tzw. fonemów występujących w języku mówionym, fragmentowi zdjęcia przypisuje się klasę obiektu na nim występującego (z narzuconej listy rozpoznawanych klas), wynikom laboratoryjnym lub obrazowi medycznemu przypisuje się etykietę chory/zdrowy.
Dane uczące i model
Wyobraźcie sobie, że uczycie komputer rozpoznawania różnych obiektów, np. kotów i psów na zdjęciach. Potrzeba do tego dwóch rzeczy: samego komputera, który ma się uczyć (to nasz „uczeń”), i kogoś, kto mu pokaże, jak to robić (to nasz „nauczyciel”).
W najczęściej używanej metodzie uczenia maszynowego i nadzorowanego wszystko wygląda trochę jak w szkole. „Nauczyciel” pokazuje „uczniowi” – komputerowi zdjęcia, na których są koty i psy, i mówi, które zwierzę jest które. Na przykład wskazuje na zdjęcie psa i mówi: „To jest pies”, a potem pokazuje zdjęcie kota i mówi: „To jest kot”. Następnie komputer stara się sam rozpoznać, czy na nowym zdjęciu jest kot czy pies. Jego celem jest, aby odpowiedź była jak najbardziej zbliżona do tego, co mu „nauczyciel” powiedział. Jeśli „nauczyciel” pokazał, że pewne zdjęcie przedstawia psa, to komputer też powinien to rozpoznać. W ten sposób, pokazując komputerowi wiele różnych zdjęć i mówiąc, co na nich jest, uczymy go odróżniać koty od psów. To właśnie nazywamy uczeniem maszynowym!
Uczenie maszynowe działa trochę jak nauka rozwiązywania równań matematycznych. Na początku komputer ma pewną funkcję, czyli zasadę, według której próbuje rozwiązać problem. Na przykład chcemy, aby nauczył się odróżniać zdjęcia kotów od zdjęć psów. W tym przypadku każde zdjęcie ma swoją etykietę – „kot” lub „pies”, którą komputer musi odgadnąć. Najistotniejszą częścią programu uczącego się jest fragment kodu (tzw. model), który zwraca „odpowiedzi” na zadane „pytania”, w zależności od wewnętrznych ustawień (parametrów, tj. tablic liczb) owego programu. Dzięki temu, że te parametry zmieniają się w czasie uczenia, możliwy jest efekt uczenia, a więc model zaczyna coraz lepiej „odpowiadać” na zadawane mu „pytania” (np. coraz częściej prawidłowo określać, kiedy na zdjęciu jest kot, a kiedy pies). Warte podkreślenia jest, że jedyne, co się zmienia w modelu, to te wewnętrzne ustawienia – pewne liczby stają się trochę większe, inne trochę mniejsze. Tylko to! Nie zmienia się stopień skomplikowania modelu czy ciąg instrukcji procesora, który go realizuje (np. nigdy nie jest tak, że program czasami „pomyśli” dłużej, czasami krócej). Po zakończeniu nauki (po tzw. fazie treningu modelu), gdy parametry są już odpowiednio ustawione, również one nie zmieniają się już w ogóle i cały model można zapisać na dysku komputera.
Jak komputer „dowiaduje się” o błędach i czyni postępy?
Wyobraźcie sobie, że komputer, ucząc się odróżniać koty od psów na zdjęciach, czasami popełnia błędy. „Nauczyciel” sprawdza, czy odpowiedzi „ucznia” są poprawne, i mówi mu, kiedy ten ostatni się myli. Przypomina to sytuację, gdy nauczyciel w szkole sprawdza twoje zadania domowe.
W uczeniu maszynowym używa się czegoś, co nazywamy „funkcją straty”. Możemy powiedzieć że jest to rodzaj miernika, który pokazuje, jak bardzo odpowiedzi komputera różnią się od prawidłowych. Jeśli wynik tej funkcji jest równy zero, oznacza to, że komputer nie popełnił żadnego błędu; im wynik jest wyższy, tym więcej błędów maszyna popełniła. Na podstawie tych informacji komputer uczy się, co poprawić. Przypomina to otrzymywanie wskazówek, co zrobić lepiej następnym razem. W procesie nauki komputer stopniowo udoskonala swoje „wewnętrzne ustawienia” (parametry), aby coraz lepiej odpowiadać na pytania. Podobnie jak w przypadku nauki gry na instrumencie – na początku robicie wiele błędów, ale z czasem gracie coraz lepiej. Tak samo komputer, ucząc się, z każdą pomyłką staje się coraz sprawniejszy w rozpoznawaniu, co jest na zdjęciu. Oczywiście na początku nauki „uczeń” robi dużo błędów, ale powtarzając (być może wielokrotnie) przedstawiony proces, czyni postępy. Chociaż bywa i tak, że zredukuje liczbę błędów przez „wykucie na pamięć” bez „złapania” istoty problemu. By ograniczyć tego typu sytuacje, efekt nauki mierzy się z użyciem osobnego zestawu przykładów (zbioru testowego), niepokazywanych w czasie uczenia. To jak klasówka w szkole – zawiera podobne, lecz inne zadania niż te rozwiązywane na lekcji.
Sztuczne sieci neuronowe
Działanie sztucznych sieci neuronowych w uczeniu maszynowym bardzo przypomina zaawansowaną grę w „łączenie kropek”, inspirowaną tym, jak funkcjonują ludzkie mózgi. Wyobraź sobie, że komputer ma sieć małych „neuronów” (są one jak minikomputery), które pracują razem, aby rozwiązywać zadania, np. rozpoznawać zdjęcia.
Każdy z tych „neuronów” robi coś bardzo prostego. Na przykład dostaje liczbę (reprezentującą fragment informacji, jak kolor piksela na zdjęciu) i przekształca ją w inną liczbę według prostych zasad. Te „neurony” są połączone w warstwy, a każda warstwa dostaje informacje od poprzedniej i przekazuje dalej do następnej. Dysponując wieloma warstwami „neuronów” ułożonych jedna na drugiej (stąd nazwa „głębokie uczenie”), komputer może nauczyć się rozpoznawać bardzo złożone wzorce. Na początkowych warstwach sieć uczy się identyfikować proste, lokalne cechy, takie jak krawędzie czy obszary o jednolitym kolorze. W miarę przechodzenia do kolejnych warstw sieć zaczyna rozpoznawać coraz bardziej złożone i abstrakcyjne elementy, jak np. struktura sierści czy części ciała zwierzęcia. W ten sposób kolejne warstwy sieci neuronowej stopniowo integrują te proste cechy w coraz bardziej kompleksowe wzorce, pozwalając na rozpoznawanie całościowych obrazów, takich jak sylwetka kota. W praktyce oznacza to, że komputer, patrząc na wiele różnych zdjęć, uczy się, jakie cechy tworzą obraz „kota” czy „psa”. Może to zrobić, bo każdy „neuron” i każda warstwa uczą się małych części obrazu, a potem łączą te informacje, by zrozumieć całość.
Wielkie modele językowe
Obecnie powszechnie dostępne są programy, które potrafią odpowiadać na nietrywialne pytania, spełniają dane im w języku naturalnym polecenia, tak jakby rozumiały. O tych tzw. wielkich modelach językowych (ang. large language models – LLMs) mówi się, że „nikt nie wie – nawet ich twórcy – jak one działają”. Jak to jest możliwe i co to dokładnie znaczy?
Wydaje się, że jest to coś zupełnie innego niż choćby przedstawiony wcześniej przykład klasyfikacji obiektów na zdjęciach. Wyobraźcie sobie komputer, który ma nauczyć się samodzielnie pisać teksty, np. kontynuować zdanie. Jak się okazuje, to zadanie także można sprowadzić do rozpoznawania wzorców, podobnie jak uczenie się rozpoznawania obrazów.
W tym przypadku komputer uczy się przewidywać, jaka litera powinna pojawić się jako następna w danym tekście. Na przykład jeśli ma słowo filozofuj.e, to na podstawie tego, co już wie, próbuje zgadnąć, jaka litera powinna być dalej. Może to być „u”, co daje słowo „filozofuj.eu”. Komputer uczy się tego na podstawie ogromnej ilości tekstu z internetu. W każdym przykładzie ma fragment tekstu (jak „filozofuj.e”) i literę, która występuje po nim (jak „u”). Przypomina to uczenie się słówek, gdy zna się ich kontekst. Analogicznie zachodzi „domyślanie się”, jakie będzie następne słowo albo grupa słów.
W tym procesie komputer nie musi mieć dodatkowych etykiet wskazujących, co jest czym, ponieważ już ma tekst i kolejne litery, które występują naturalnie – w dostępnym mu otoczeniu informatycznym. Gdy uczenie komputera zakłada tego typu, automatycznie wygenerowane, dane, nazywamy je „samonadzorowanym”, bo nie angażuje ono ludzi w proces etykietowania kolejnych przykładów uczących. Podczas tego uczenia komputer tworzy kontynuację tekstu, bazując na tym, co już wie. Każda nowa litera, którą dodaje, staje się częścią tekstu, który już napisał, i tak dalej, aż do końca zdania lub większego fragmentu tekstu.
Wytrenowany duży model językowy robi tylko to: zwraca (przedstawia nam) prawdopodobną kontynuację tekstu na podstawie statystycznych zależności odkrytych w zbiorze uczącym (dostępnych danych). Czy jest to tekst prawdziwy, czy nie, piękny czy nie, użyteczny czy nie, logicznie spójny czy nie – wszystko to jest pochodną tego, co znajdowało się w zbiorze uczącym szczegółów procesu uczenia i każdej literki początkowego kontekstu. Z tego powodu, by odpowiedzi były jak najczęściej prawdziwe, niekrzywdzące i najbardziej pomocne, modele językowe są dotrenowywane na znacznie mniejszych zbiorach specjalnie przygotowanych przykładów par: pytanie – „jakościowa” odpowiedź.
Nietransparentność sieci neuronowych
Sieci neuronowe i ich działania są niezwykle złożone. Generowanie tekstu oparte jest na potężnej liczbie parametrów, jakie „ustawiły się” w czasie uczenia. Nie sposób zinterpretować tych liczb, nie wiadomo, które z nich co konkretnie oznaczają, na jaki aspekt znaczenia słów poszczególne neurony reagują dużymi aktywacjami. Twórcy wielkich modeli językowych znają każdy najmniejszy szczegół ich implementacji i treningu, ale również są bezradni w „rozczytywaniu” dokładnego przebiegu i sensu wszystkich obliczeń, które określają ostateczną „wypowiedź” modelu. Powyższy opis pracy systemów SI jest niezwykle uproszczony, mam jednak nadzieję, że umożliwia pewne zrozumienie rządzących nimi „mechanizmów”.
Warto doczytać:
- A. Barr, E. A. Feigenbaum, The Handbook of Artificial Intelligence, Butterworth-Heinemann, 1981.
- S. J. Russell, P. Norvig, Sztuczna inteligencja. Nowe spojrzenie, tłum. A. Grażyński, Helion 2023.
- Y. LeCun, A path towards autonomous machine intelligence, version 0.9. 2, 2022-06-27, „Open Review” 2022, https://openreview.net/pdf?id=BZ5a1r-kVsf [dostęp: 6.12.2023].
Karol Draszawka – pracuje na Wydziale Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej, gdzie opowiada nieco dokładniej o SI. Opiekuje się Kołem Naukowym „Gradient”, skupiającym pasjonatów uczenia maszynowego. Domuje z żoną i dwójką uroczych szkrabów.
Tekst jest dostępny na licencji: Uznanie autorstwa-Na tych samych warunkach 3.0 Polska.
W pełnej wersji graficznej jest dostępny w pliku PDF.
< Powrót do spisu treści numeru.
Ilustracja: ChatGPT
Dofinansowano ze środków Ministra Kultury i Dziedzictwa Narodowego pochodzących z Funduszu Promocji Kultury.
Skomentuj