O wyzwaniach w testach sztucznej inteligencji

O wyzwaniach w testach sztucznej inteligencji
Od kilku lat sztuczna inteligencja na dobre zadomowiła się w naszym życiu. Jak ją testować? Czy w ogóle jesteśmy w stanie to robić?

Od kilku lat sztuczna inteligencja na dobre zadomowiła się w naszym życiu. Praktycznie na każdym kroku mamy, świadomie lub nie, styczność z rozwiązaniami opartymi na silnikach AI, czy to w sprzęcie AGD, telefonach czy najnowszych modelach aut. Wydawać by się mogło, że przywykliśmy już do tego tematu także jako testerzy, bo w końcu ktoś tego typu systemy testuje. Jeśli więc rozważymy przykładową aplikację na telefon, która rozpoznaje na zdjęciu ostrzegawcze znaki drogowe, testy można wyobrazić sobie w następujący sposób:

  1.   Przygotuj zestaw zdjęć spełniający między innymi poniższe założenia:
  • Zdjęcia powinny prezentować różne rodzaje znaków drogowych, ale także takie bez znaków i z przedmiotami tylko przypominającymi znaki drogowe.
  • Dobrze, aby zdjęcia wykonane były w różnych warunkach pogodowych (mgła, przedmioty pokryte śniegiem, itd.), pod różnym kątem i w różnej odległości.
  • Ważne także, aby rozkład różnych typów zdjęć był równomierny w zbiorze testowym, tzn., żeby żaden ze schematów nie dominował (i w ten sposób nie zaburzał procentowego wyniku testów). 
  1. Dla każdego ze zdjęcia określ manualnie, czy jest na nim znak ostrzegawczy czy nie.
  2. Zaprezentuj zdjęcia aplikacji i odnotuj udzielone odpowiedzi.
  3. Sprawdź, czy procent poprawnych odpowiedzi spełnia wymagania.

Testy tego typu programu mogą wydawać się więc zbliżone do technik, które stosowaliśmy dotychczas. Jest jednak kilka zasadniczych różnic. Po pierwsze w przeciwieństwie do “klasycznych” systemów, nie jesteśmy w stanie w pełni prześledzić mechanizmu w nich zachodzących, nie jest to bowiem algorytm w rodzaju: jeśli zachodzi warunek A lub B to do wyniku dodaj 4. W efekcie nasze testy skupione są na technikach czarnoskrzynkowych, co może utrudniać odnalezienie defektów. W pewnym sensie odchodzimy więc (zarówno programiści, jak i testerzy) od zadawania pytania o to, jak system wykonuje obliczenia na rzecz skupienia się na tym, co chcemy uzyskać. Stąd niezwykle kluczowa jest konieczność odpowiedniego dobrania zarówno zbioru uczącego (którym zasilimy sieć neuronową), jak i testowego zbioru przykładów. Innym aspektem, być może jeszcze trudniejszym do realizacji, jest uświadomienie sobie, że żadna aplikacja oparta na metodach sztucznej inteligencji nie jest nieomylna (podobnie jak my sami). Wynika to z faktu, że dążąc do stuprocentowej precyzji takich systemów tracimy ich zdolność uogólniania (czyli ich największy atut). Oznacza to, że szukanie błędnej odpowiedzi programu nie może być celem naszych testów, bo takie błędy będą tam na pewno. Zadanie stawiane przed nami jest dużo trudniejsze: musimy zdecydować, jakiego rodzaju błędy i w jakiej ilości są akceptowalne. Czy ważniejszy jest wysoki wskaźnik procentowy dobrych odpowiedzi, czy może umiejętność rozwiązania mniejszej liczby zadań, ale za to takich, które są trudniejsze dla osób, które system ma wspierać?

Przykład systemu rozpoznawania znaków drogowych pokazuje pewne stojące przed nami wyzwania. Ale musimy pamiętać, że był on w miarę prosty. Im system oparty na sztucznej inteligencji jest bardziej złożony, tym trudniej go testować, bo zbliżamy się coraz bardziej do pytań o naturę testów i podobieństw między maszyną a człowiekiem. Świat naukowy wstrzymał oddech w 2016 roku, kiedy system AlphaGo pokonał najlepszego z graczy w Go (grę charakteryzującą się ogromną złożonością obliczeniową i wymagającą wyobraźni przestrzennej). Ale jeszcze większe wrażenie zrobił jego następca, AlphaGo Zero, który rok później pokonał poprzednią wersję wynikiem 100 – 0. Dlaczego był on tak wyjątkowy? Otóż AlphaGo uczył się na podstawie tysięcy partii ludzkich arcymistrzów tej wspaniałej gry, a model Zero opanował ją (zgodnie z nazwą) od zera, bez najmniejszej sugestii człowieka. W pewnym sensie zatem ludzki sposób patrzenia na otaczającą nas rzeczywistość ograniczał możliwości pierwszej wersji systemu. Jakkolwiek szokujące by to nie było, wygląda na to, że maszyna nie potrzebuje nas do nauki, a wręcz jej przeszkadzamy. I działając na własną rękę AI jest w stanie osiągnąć wyniki wykraczające poza nasze wyobrażenie. Jak więc ją testować? Jak w miarodajny sposób ocenić poziom AlphaGo i AlphaGo Zero, skoro nie możemy ich pokonać? Jak ocenić ruch na planszy, którego znaczenia nie rozumiemy? Jak walidować systemy wspierające decyzje, gdy sami nie wiemy, jaka decyzja jest najlepsza? Czy oznacza to, że nasza rola jako testerów będzie zbędna? Myślę, że nie. Ale z pewnością zmieni się nasza praca. W przyszłości istotniejsze niż sprawdzanie wyników, będzie zadawanie pytań. Pytań, które będą stymulować system do poszukiwania odpowiedzi i przy okazji odnajdowania swoich słabych punktów.
Temat sztucznej inteligencji jeszcze nigdy nie był tak aktualny jak dziś. I nie ma osoby, która mogłaby powiedzieć, że wiedza w tym temacie jest jej zbędna. Dlatego przy te okazji chciałbym zachęcić Was do sięgnięcia po moją książkę, która miała swoją premierę na początku marca: “Cunning Machines: Your Pocket Guide to the World of Artificial Intelligence”. Jej celem jest przybliżenie czytelnikowi w przystępny sposób podstawowych zagadnień AI i głównych mechanizmów w niej używanych (jak np. sztuczne sieci neuronowe czy algorytmy genetyczne).

Jędrzej Osiński

Cognifide
Twitter: @dr_hawaii, #CunningMachines

https://www.amazon.co.uk/dp/0367898020/ref=cm_sw_r_tw_dp_U_x_I.4BEbF22K9NS

https://www.crcpress.com/Cunning-Machines-Your-Pocket-Guide-to-the-World-of-Artificial-Intelligence/Osinski/p/book/9780367898021

To powinno Cię zainteresować