Prezentowany tekst przedstawia zasadnicze elementy wykładu wygłoszonego w dniu 26.4.2022 podczas uroczystej sesji związanej z jubileuszem 30-lecia Akademii Inżynierskiej w Polsce.
Sztuczna inteligencja rozpoczęła się od spostrzeżenia, że komputery – początkowo traktowane wyłącznie jako maszyny liczące (nazwa komputer oznacza właśnie maszynę obliczającą) – mogą manipulować także symbolami. Wiadomo, gdzie i kiedy to było (podczas konferencji w Dartmouth College w 1956 roku), natomiast do dziś trwają spory, kto był autorem tej nazwy. Wielu uważa, że z propozycją wystąpił John McCarthy, chociaż inny z „ojców założycieli” sztucznej inteligencji, Marvin Minsky uparcie twierdził, że to on był pomysłodawcą owej nazwy.
Możliwość operowania przez komputer symbolami otworzyła drogę do maszynowego przekształcania formuł algebraicznych, mechanicznego wyprowadzania potrzebnych wzorów, a nawet do automatycznego dowodzenie twierdzeń matematycznych.
Symbole przekształcane przez komputer mogą reprezentować nie tylko abstrakcyjne pojęcia, ale również obiekty realnego świata. W ten sposób można komputerowi stawiać zadania, których rozwiązywanie powoduje określone działania w tym realnym świecie. Dzięki temu programy sztucznej inteligencji zaczęły grać w różne gry, rozwiązywać różne łamigłówki, a także operować na tekstach języka naturalnego. W ramach rozwoju metod symbolicznych powstawały na przykład pierwsze próby automatycznego tłumaczenia tekstów z jednego języka na inny.
Grupą metod AI, która jest dzisiaj chyba najbardziej popularna są sieci neuronowe. Jest to narzędzie informatyczne, które powstało w wyniku zamodelowania na komputerze struktury i funkcji fragmentów mózgu. Owo modelowanie ma celowo bardzo uproszczony charakter, nie wykorzystujemy w sieciach neuronowych całej naszej wiedzy neurobiologicznej, ale takie właśnie bardzo uproszczone struktury mogą być bardzo sprawne obliczeniowo i mogą inteligentnie rozwiązywać mnóstwo niebanalnych problemów.
Typowe sieci neuronowe muszą być przed wykorzystaniem ich w praktyce uczone przez „nauczyciela”: Słowo „nauczyciel” trzeba tu traktować umownie – typowo jest to iteracyjny program komputerowy wyposażony w bazę wiedzy o tym, co należy rozwiązywać (w sensie takim, że pokazane są przykładowe dane wejściowe oraz poprawne wyniki), ale nie ma żadnej informacji o tym, jak to należy rozwiązywać. Metodę rozwiązywania sieć musi stworzyć sama, opierając się na indukcji.
Sieci neuronowe wykorzystują osiągnięcia neurobiologii, która rozszyfrowała budowę i działanie naturalnego siedliska inteligencji, jakim jest ludzki mózg. Sztuczną inteligencję można jednak oprzeć także na innym źródle: na naśladowaniu procesów myślowych człowieka. Przykładem systemów opartych na takich właśnie podstawach są tak zwane systemy ekspertowe.
Działanie systemu ekspertowego, którego ogólny schemat przedstawiono na rysunku, składa się z dwóch etapów. Pierwszy polega na „karmieniu” systemu wiedzą (lewy górny róg rysunku). Potrzebna wiedza znajduje się w umysłach ekspertów z określonej dziedziny, na przykład lekarzy stawiających trafne diagnozy i osiągających sukcesy w leczeniu albo radców prawnych o dużym doświadczeniu. Gdy ta wiedza zostanie umieszczona w systemie ekspertowym i zostanie połączona z wbudowanym w nim podsystemem wnioskującym – to użytkownicy będą mogli uzyskać odpowiedzi na swoje konkretne pytania albo rozwiązać nurtujące ich problemy.
Źródłem trudności w realizacji tego etapu jest fakt, że z reguły wybrany „ekspert dziedzinowy” nie potrafi swojej wiedzy przekazać komputerowi. On tą wiedzę posiada, ale nie w takiej formie, żeby mógł nią wprost zasilić bazę wiedzy, która jest centralnym elementem systemu ekspertowego. Na tym etapie ekspertowi pomagają informatycy nazywani inżynierami wiedzy. Mają oni specjalne przeszkolenie psychologiczne, dzięki któremu umiejętnie przepytują ekspertów, a pozyskaną od nich wiedzę implementują w systemie komputerowym.
Niebanalnym problemem jest to, jak pozyskaną wiedzę człowieka reprezentować w pamięci komputera. Jeśli wiedza dotyczy faktów, to jej zapis w komputerze jest łatwy. Umiemy budować bazy danych, więc to nie sprawia kłopotu. Ważniejsze i trudniejsze są jednak te fragmenty wiedzy eksperta, które dotyczą sposobów rozumowania. Można je odwzorować w komputerze na wiele sposobów, ale ogólnie jest to trudne. Najczęściej korzysta się z tak zwanych metod regułowych, to znaczy wyraża się wiedzę eksperta w formie reguł typu:
jeśli A to B
Oczywiście A i B są pieczołowicie i mądrze wybierane, ale jest to spora praca (dla inżyniera wiedzy), a ponadto trzeba dokładać starań, żeby uzyskane reguły w sposób wyczerpujący pokrywały całą wiedzę posiadaną przez eksperta. Co więcej niekiedy reguły bywają sprzeczne (zwłaszcza gdy pozyskujemy wiedzę od wielu ekspertów) i wtedy trzeba te sprzeczności wyjaśniać.
Ale jeśli reguły zostaną skompletowane i umieszczone w systemie – to pozwalają one na łatwe przejście do drugiego etapu, to znaczy do eksploatacji wypełnionego wiedzą systemu ekspertowego.
Zanim to jednak nastąpi – trzeba dodać jeszcze coś, z czego twórcy systemów sztucznej inteligencji początkowo nie zdawali sobie sprawy. Chodzi o tak zwaną wiedzę ogólną. Ekspert jej nie poda, bo pewne rzeczy są dla każdego człowieka oczywiste. A tymczasem dla komputera nic nie jest oczywiste, więc trzeba duże zasoby tej zdroworozsądkowej wiedzy także do programu dostarczyć, żeby nie produkował paradoksów. Nie wiadomo, na ile prawdziwa jest anegdota opowiadana w środowiskach informatycznych, ale doskonale ilustruje ona, na czym polega problem owej wiedzy ogólnej. Otóż podobno gdy zbudowano pierwsze systemy ekspertowe dla potrzeb medycyny (a warto wiedzieć, że to naprawdę jest obszar, w którym powstało wiele propozycji systemów ekspertowych), to lekarze chcieli poznać sposób zwalczania raka. W tym celu wyposażono system w wiedzę na temat biologii nowotworów i zapytano, co zrobić, żeby zniszczyć raka u konkretnego pacjenta. Odpowiedź komputera była szybka i logiczna: należy zabić tego pacjenta, a wtedy rak zginie. No bo żadna reguła podana przez ekspertów nie zabraniała zabijania pacjentów…
Anegdota może nie jest prawdziwa, ale problem jako taki jest prawdziwy: używając systemów ekspertowych jako narzędzi wspomagających proces podejmowania decyzji trzeba wyposażać je także w zasoby wiedzy ogólnej, bo sama wiedza specjalistyczna na ogół nie wystarcza.
Mając wypełnioną bazę wiedzy i podsystem wnioskujący możemy już przystąpić do eksploatacji systemu (patrz dolna część rysunku). Sens istnienia systemów ekspertowych polega na tym, że mogą one być wykorzystywane przez użytkowników.
Użytkownicy systemu mogą z niego korzystać na różne sposoby. Najczęściej potrzebują rady, stąd systemy ekspertowe bywają często nazywane systemami doradczymi. Użytkownik opisuje swój problem, a system automatycznie przeprowadza wnioskowanie, dla którego punktem startowym jest pytanie użytkownika. Dość ważnym elementem w tej części systemu, która ma styczność z użytkownikami, jest interfejs naturalny. Przymiotnik „naturalny” oznacza w tym przypadku, że użytkownicy swoje pytania mogą swobodnie formułować w języku naturalnym (na przykład po polsku), a system usiłuje z ich wypowiedzi wytworzyć odpowiednio zakodowane sformułowanie problemu, które staje się początkiem drogi automatycznego rozumowania, realizowanego przez podsystem wnioskujący.
Ten element systemu ma oczywiście podstawowe znaczenie przy jego eksploatacji i był dość trudny do zbudowania, gdy tworzono go po raz pierwszy. Ale udało się, bo punktem wyjścia do konstrukcji podsystemów wnioskujących były stworzone jeszcze w latach 50. XX wieku pogramy automatycznego dowodzenia twierdzeń matematycznych. Okazało się, że droga rozumowania, jakie trzeba przeprowadzić, aby dla problemu opisanego przez użytkownika znaleźć potrzebne rozwiązanie przy wykorzystaniu wiedzy ekspertów – jest bardzo podobna do tej drogi, jaką przebywa komputer dążąc do udowodnienia tezy matematycznego twierdzenia przy wykorzystaniu sformułowanych założeń i istniejącej wiedzy matematycznej. W jednym i w drugim przypadku „drogowskazem” jest metoda rezolucji Robinsona. To dzięki tej metodzie tak są automatycznie dobierane fakty i reguły zawarte w bazie wiedzy, aby stworzyć łańcuch przesłanek i częściowych wniosków, a na końcu, jako ostatni wniosek, uzyskać odpowiedź adresowaną do użytkownika, będącą rozwiązaniem jego problemu. Oczywiście przy praktycznej realizacji opisanej koncepcji trzeba było rozwiązać mnóstwo problemów szczegółowych, ale obecnie jest to na tyle dobrze dopracowane i na tyle uniwersalne, że sprzedawana są systemy ekspertowe „szkieletowe”, zwierające gotowy do użycia podsystem wnioskujący, ale z całkowicie pustą bazą wiedzy. Użytkownik może wypełnić system wiedzą na dowolny wybrany przez siebie temat i mieć w ten sposób elektronicznego eksperta znającego dokładnie jego unikatowe potrzeby i jego uwarunkowania.
Efektem działania podsystemu wnioskującego w systemie wypełnionym adekwatną wiedzą jest odpowiedź, jaką system przekazuje użytkownikowi za pośrednictwem interfejsu naturalnego. Odpowiedź ta oparta jest na wynikach automatycznego rozumowania, ale musi być przekazana użytkownikowi w sposób dla niego zrozumiały, potrzebny jest więc podsystem znajdowania odpowiedzi. Odpowiedź może stanowić rozwiązanie problemu nurtującego użytkownika, albo może być wiadomością, że przy wszystkich założeniach, które użytkownik umieścił w opisie problemu – rozwiązania nie da się znaleźć. W tym drugim przypadku użytkownik jest zachęcany, żeby dostarczył więcej danych albo zrezygnował z części wymagań. Zwykle po kilku uściśleniach rozwiązanie problemu zostaje znalezione i użytkownik może z niego skorzystać.
Ale może się zdarzyć użytkownik szczególnie wymagający, który nie tylko wymaga rozwiązania problemu, ale dodatkowo może się domagać uzasadnienia, dlaczego to rozwiązanie jest właśnie takie, a nie inne. System ekspertowy jest na to przygotowany i specjalnie zaprogramowany jego fragment, nazywany podsystemem uzasadniającym, przekazuje poprzez interfejs naturalny całą drogę rozumowania, jaka doprowadziła do podanego rozwiązania. Widać, jak wychodząc od opisu problemu podanego przez użytkownika i korzystając z kolejnych reguł umieszczonych przez ekspertów w bazie wiedzy, dochodzi się do końcowego wniosku. Użytkownik może przyjąć te wyjaśnienia albo może tak zmienić swój opis problemu, żeby ukierunkować automatyczne rozumowanie na ścieżkę bardziej zgodną z jego oczekiwaniami. Może także wskazać elementy bazy wiedzy (fakty albo reguły), których do tego jego problemu stosować nie należy. Proces automatycznego rozumowania zostanie wtedy zainicjowany ponownie i dostarczy być może innego rozwiązania, które będzie poprawne i logiczne w świetle nowego opisu problemu oraz na chwilę (tylko dla tego problemu) zmodyfikowanej bazy wiedzy.
Systemy ekspertowe wykorzystują także procesy uczenia uzupełniające bazę wiedzy systemu podczas jego eksploatacji.
Na koniec warto wspomnieć o jeszcze jednej ciekawostce związanej z systemami ekspertowymi. Otóż większość z nich działa w ten sposób, że doradza użytkownikom, stąd dość popularna jest także nazwa „systemy doradcze”. Ale jest też odmiana, która krytykuje pomysły użytkownika i w ten sposób przyczynia się do ich doskonalenia.
Wyobraźmy sobie, że prezes dużej firmy wymyślił nową strategię jej działania i zastanawia się, czy jest to dobra strategia. Nie może spytać swoich współpracowników, bo nikt nie ośmieli się krytykować prezesa. Tym bardziej nie może tego pokazać nikomu z zewnątrz, bo powodzenie zależy od zachowania planów w tajemnicy. Ale może pokazać ten plan systemowi ekspertowemu. On się nie zawaha i skrytykuje wszystko, co takiej krytyki wymaga, przeprowadzi symulację przewidywanych skutków, wykryje i wskaże każdy słaby punkt. A na komputer prezes się nie obrazi, tylko poprawi swój plan i podda go kolejnej ocenie – i tak aż do skutku.
prof. dr hab. inż. Ryszard Tadeusiewicz, AGH Akademia Górniczo Hutnicza w Krakowie