Granice sztucznej inteligencji
W ostatnich latach możliwości sztucznej inteligencji i uczenia maszynowego niesamowicie się rozwinęły. Zawdzięczamy to w dużej mierze znacznemu zwiększeniu ilości dostępnych danych oraz możliwości obliczeniowych komputerów. Oglądając wygenerowane przez sztuczną inteligencje realistycznie wyglądające obrazy, słuchając skomponowanej przez komputer muzyki albo rozmawiając z inteligentnym chatbotem można być naprawdę zdumionym. Pomimo wielu spektakularnych sukcesów prace nad rozwojem systemów AI są nadal dalekie od ukończenia. Przyjrzyjmy się tematom, którymi obecnie zajmują się inżynierowie i naukowcy popychający te technologie do przodu.
Czym naprawdę są sztuczne sieci neuronowe?
Prawdopodobnie najpotężniejszą bronią w arsenale twórców AI są sztuczne sieci neuronowe. Pojedynczy neuron jest pewnego rodzaju symulacją ludzkiej komórki nerwowej. Komórka ta składa się z dendrytów, które odbierają impulsy elektryczne z innych neuronów. Kiedy impulsy wygenerują odpowiednio wysoki potencjał elektryczny sa przenoszone przez inną część neuronu – akson do kolejnych, połączonych z nim komórek.
Sztuczne neurony działają podobnie. Obliczają one średnią ważoną liczb dostarczonych do ich wejść (jest to odpowiednik zbierania impulsów elektrycznych). Suma ta jest następnie transformowana przez nieliniową funkcję aktywacji (symuluje to przenoszenie impulsów elektrycznych do aksonu), a wynik może być podawany na wejścia kolejnych neuronów.
Pomimo tej fascynującej analogii do działania ludzkiego systemu nerwowego należy pamiętać, że nawet najbardziej złożona sieć neuronowa jest tylko funkcją matematyczną. Jak każda funkcja wylicza ona jakąś wartość na podstawie dostarczonych danych.
Sztuczne sieci neuronowe symulują działanie ludzkiego mózgu. Należy jednak pamiętać, że są to tylko złożone funkcje matematyczne modelujące zależności statystyczne między dostępnymi danymi.
Danymi mogą być np. obrazy, dźwięk, tekst albo odczyty z różnego typu sensorów. Przykładowe wyjścia z sieci to wykryte w obrazie obiekty, odpowiadające fali dźwiękowej litery, emocje związane z analizowanym tekstem itp. Należy przy tym pamiętać, że to czego tak naprawdę uczy się sieć neuronowa to… rozkład prawdopodobieństwa.
Np. sieć wykrywająca obiekty w obrazie uczy się jakie jest prawdopodobieństwo, że na obrazie tym znajduje się samochód pod warunkiem, że piksele mają określone wartości. Z kolei sieć analizująca tekst może nauczyć się prawdopodobieństwa, że przy danym rozkładzie słów tekst zawiera negatywną recenzję pewnego filmu.
Wszystko czym jest nawet najbardziej złożona sieć neuronowa to bardzo skomplikowana funkcja matematyczna, która opisuje statystyczne zależności między dostarczonymi do niej podczas uczenia danymi.
Zrozumieć sztuczną inteligencję
Twórcy złożonych sieci neuronowych nie są w stanie wyjaśnić na jakich podstawach podejmują one decyzje. Ogranicza to zaufanie do tego typu modeli.
Im więcej neuronów posiada sieć tym bardziej złożone funkcje potrafi opisywać. Dzięki temu możemy wygenerować modele statystyczne dla takich problemów jak detekcja obiektów na obrazach czy rozpoznawanie mowy. Istniejące obecnie techniki pozwalają np. tworzyć modele przeprowadzające diagnostykę zdjęć rentgenowskich. Efekty ich działania potrafią być lepsze niż oceny przeprowadzane przez lekarzy.
Uzyskiwanie wysokich dokładności wymaga jednak setek warstw neuronów, co łącznie może się przełożyć na setki milionów wag do nauczenia. Problem polega na tym, że zrozumienie zasad działania tak dużego modelu przekracza obecnie ludzkie możliwości. Nawet jeżeli sieć podejmuje właściwe decyzje to nikt nie jest w stanie opisać na jakiej podstawie to robi.
Sprawia to, że nie możemy jeszcze w pełni zaufać sieciom neuronowym i dopuścić ich do powszechnego zastosowania w krytycznych obszarach takich jak np. medycyna.
Problem ten spowodował powstanie działu badań nazywanego po angielsku „explainable AI”. Jego celem jest zrozumienie i wytłumaczenie działania współczesnych modeli uczenia maszynowego lub opracowanie nowych, których działanie da się odpowiednio dobrze wytłumaczyć.
Niezawodność i bezpieczeństwo
Wyobraźmy sobie bardzo dobrą sieć neuronową przeznaczoną do klasyfikacji obrazów. Nawet jeżeli z dużym prawdopodobieństwem przeprowadza ona klasyfikację poprawnie, to znając strukturę tej sieci można wygenerować niedostrzegalny przez człowieka sygnał (przypominający szum), który całkowicie zmieni jej wskazania.
Obok znajdziesz słynny przykład, który w 2015 roku opublikował I. Goodfellow i współpracownicy. Przedstawia on zdjęcie pandy, które zostało poprawnie sklasyfikowane przez dużą sieć neuronową. Do obrazu dodano następnie specjalnie wygenerowany „szum”, który spowodował, że sieć zaczęła klasyfikować obraz jako przedstawiający gibona. Uznała też, że poprawność nowego wskazania jest dużo bardziej prawdopodobna niż poprawność oryginalnej klasyfikacji.
Obecnie pojawia się dużo prac naukowych, których autorzy starają się rozwiązać ten problem i opracować modele uczenia maszynowego, które byłyby niewrażliwe na tego typu ataki.
Przykład ataku na skomplikowaną sieć neuronową, który drastycznie zmienia zwracane przez nią wyniki. Źródło: https://arxiv.org/abs/1412.6572
AI i psychologia
Sztuczne sieci neuronowe powstały jako analogia do rzeczywistych, biologicznych komórek nerwowych. Naukowcy próbują przenieść do świata komputerów również inne mechanizmy funkcjonowania ludzkiego umysłu takie jak np. emocje albo sposób w jaki ludzie odczytują intencje innych ludzi.
Z jednej strony takie modele mogą pomóc rozwiązać pewne problemy techniczne np. symulacja ludzkich emocji może pomóc modelować nieregularne zjawiska takie jak burze słoneczne. Z kolei programy odwzorowujące zachowania społeczne mogą pomóc rozwiązywać zadania wykonywane przez kilku współpracujących agentów.
Z drugiej strony stworzenie udanych modeli wzorowanych na mechanizmach psychologicznych może pozwolić lepiej zrozumieć działanie tych mechanizmów. Dlatego sztuczną inteligencją interesują się nie tylko inżynierowie, ale również i psychologowie.
Nie tylko informatyka czerpie z psychologii w celu budowy nowych modeli AI. Również psychologia może skorzystać na analizie działania modeli informatycznych.
Przetwarzanie języka naturalnego
Czytając tekst: „Tomek przygarnął psa. Miał on czarną sierść.” bez problemu stwierdzamy, że zaimek „on” odnosi się do psa. Sztuczna inteligencja może jednak mieć z tym spore problemy.
Przetwarzanie języka naturalnego (NLP – natural language processing) to dział sztucznej inteligencji zajmujący się przetwarzaniem tekstu. Przykładowe problemy, którymi się zajmuje to klasyfikacja tekstów, tłumaczenie z jednego języka na drugi czy tworzenie chatbotów czyli programów mogących rozmawiać z prawdziwymi ludźmi.
Opracowywane obecnie modele, jak już wcześniej wspominałem, sprowadzają się w zasadzie do analizy statystycznych zależności występujących w danym języku. Nie potrafią one przyporządkowywać słowom znaczeń w taki sposób jak robią to ludzie.
Z tego powodu systemy NLP mają duży problem z tzw. anaforami. Chodzi o zdania typu: „Tomek przygarnął psa. Miał on czarną sierść.” Zaimek „on” w drugim zdaniu odnosi się do psa co możemy łatwo stwierdzić wyczuwając coś dziwnego z stwierdzeniu, że Tomek mógłby mieć czarną sierść. Nauczenie tego typu rozumowania sieci neuronowych jest jednak sporym wyzwaniem.
W związku z tym prowadzone są badania łączące lingwistykę i informatykę, których celem jest lepsze zrozumienie i modelowanie języka przez komputery.
Jak lepiej wykorzystać dane?
Systemu uczenia maszynowego można podzielić na systemy trenowane bez nadzoru i trenowane z nadzorem. Systemy z nadzorem wymagają danych wyposażonych w właściwe wyniki działania. Np. ucząc sieć neuronową klasyfikacji obrazów musimy sami sklasyfikować odpowiednio dużo tychże obrazów i podać sieci nasze wyniki.
Uczenie bez nadzoru próbuje zbudować model zależności między danymi. Przykładowym problemem może być próba nauczenia sieci neuronowej odgadnięcia części obrazu na podstawie jego pozostałych fragmentów.
Obecnie mamy dostęp do olbrzymich ilości danych. Większość z nich nie jest jednak opisana w sposób należyty dla uczenia z nadzorem. Próbuje się zatem (często z dobrymi rezultatami) połączyć wiedzę jakiej mogą się nauczyć systemy trenowane bez nadzoru do lepszego uczenia systemów z nadzorem przy użyciu znacznie mniejszej ilości opisanych danych.
Możliwości obliczeniowe
Ludzie posiadają w oczach ponad 100 milionów komórek światłoczułych. Pomyśl o tym jak o obrazie o rozdzielczości 100 megapikseli. Nawet przy tak wysokiej rozdzielczości potrafimy wykrywać znajdujące się przed nami obiekty w ułamku sekundy.
Dla porównania, sieci neuronowe pozwalające na detekcję dość niewielkiej liczby kategorii obiektów (około 100) są w stanie działać w czasie rzeczywistym (20 do 50 klatek na sekundę) tylko dla obrazów ograniczonych do kilkudziesięciu tysięcy pikseli. To tysiące razy mniej informacji niż przetwarza ludzki wzrok.
Jak widać nadal potrzebujemy dużo lepszych komputerów. Jedną z prób odpowiedzi na ten problem jest projektowanie specjalnych akceleratorów pozwalających wykorzystać możliwości współczesnej elektroniki w sposób bardziej dopasowany do zadań sztucznej inteligencji.
Jednym z kierunków badań nad AI jest tworzenie akceleratorów dla sztucznych sieci neuronowych. Przykładem takiego akceleratora jest np. urządzenie Intel Movidius, które umożliwia działanie dużych sieci nawet na małych komputerze Raspberry Pi.
Podsumowanie
Jak widzisz nierozwiązanych problemów dotyczących sztucznej inteligencji jest całkiem sporo. Można odnieść wrażenie, że pomimo całego postępu jaki dokonał się w ostatnich latach nadal znajdujemy się na początku drogi a tzw. ogólna sztuczna inteligencja nie jest nawet w zasięgu naszego wzroku.
Masz mieć możliwość wniesienia własnego wkładu w rozwój tej dziedziny. Powodzenia.