GAN

GAN, czyli jak nauczyć komputer kreatywnego myślenia

GAN to skrót od Generative Adversarial Networks, co w wolnym tłumaczeniu oznacza generatywne sieci współzawodniczące. Jest to sposób tworzenia sztucznej inteligencji, który sprawia, że komputery mogą tworzyć nowe, unikalne obrazy i utwory muzyczne. Poznaliśmy efekty ich działania przy opisywaniu programu GauGAN. Dzisiaj dowiemy się, jak działają.

Przebłysk geniuszu

Przełomowe myśli zwykle przychodzą, gdy najmniej się ich spodziewamy. Tego właśnie doświadczył Ian Goodfellow, posiadający tytuł doktora w dziedzinie głębokiego uczenia (ang. deep learning). Pewnego wieczoru w montrealskim barze dyskutował on ze znajomymi na tematy związane ze sztuczną inteligencją. Z rozmowy tej powstały GANy, czyli generatywne sieci współzawodniczące (ang. Generative Adversarial Networks), które, jako innowację w dziedzinie AI, eksperci nazwali najciekawszą ideą w głębokim uczeniu od 20 lat.

Przyjaciele Goodfellowa toczyli rozmowę o tym, jak można użyć sztucznej inteligencji do tworzenia realistycznych obrazków. Problemem, który napotkali był fakt, że sieci neuronowe są bardzo dobre w rozpoznawaniu i klasyfikowaniu obiektów na zdjęciach, lecz nie w ich tworzeniu. To tak, jakby poprosić człowieka o fotorealistyczną rekonstrukcję krajobrazu lub ludzkiej twarzy.

GAN, czyli jak nauczyć komputer kreatywnego myślenia
Ian Goodfellow, pionier w dziedzinie AI (fot. Fortune)

Goodfellow zmienił jednak zasady gry. Tego samego wieczoru, powróciwszy do swojego mieszkania, zaprogramował i przetestował nowy model sztucznej inteligencji, polegający na „walce” dwóch sieci neuronowych, działających rekursywnie. Zadziałało. Przez następne tygodnie, z pomocą wybitnych osobistości Université de Montréal, Goodfellow ulepszał i opisywał swoje dzieło, które opublikował pod nazwą Generative Adversarial Nets. Do dziś jest to jeden z najpopularniejszych i najczęściej cytowanych artykułów naukowych.

W wyniku tych wydarzeń, GANy stały się katalizatorem wielu niespodziewanych innowacji w dziedzinie sztucznej inteligencji. Dzięki temu Ian Goodfellow w wieku 33 lat otrzymał posadę w firmie Google. Jeszcze niedawno pomagał także w rozwoju uczenia maszynowego w firmie Elona Muska OpenAI, a obecnie pracuje dla Apple. Ważniejsze jest jednak to, że stał się ikoną dla wielu aspirujących programistów.

Problem uczenia maszynowego

GANy nadają algorytmom głębokiego uczenia wyobraźni. Sieci neuronowe, również te głębokie, z zasady potrzebują dużej ilości danych, dokładnie pogrupowanych w wiersze i kolumny, aby móc uczyć się przewidywać lub rozpoznawać nowe dane, które wprowadzimy. Pomyślmy sobie, ile zajęłoby nam ręczne wprowadzanie tysięcy wierszy w arkuszu kalkulacyjnym. Nierzadko trenowanie AI wymaga milionów.

Na przykład, jeśli umieścimy w sieci neuronowej wystarczająco dużo zdjęć kotów, nauczy się ona, jakie cechy charakterystyczne je definiują. Uszy, mordka, oczy… Ta sama zasada wykorzystywana jest w rozpoznawaniu twarzy i wykrywaniu komórek nowotworowych. W ten sam sposób również autonomiczne samochody rozpoznają pobliskich przechodniów, drzewa, samochody, a także rodzaj drogi, po której jadą. Pamiętajmy, że zdjęcia to tak naprawdę zbiór wierszy i kolumn, których przecięcia (piksele) zdefiniowane są przez jeden kolor. Zupełnie jak w arkuszu kalkulacyjnym.

Jednakże, głębokie sieci neuronowe mają swoje limity. Jednym z nich jest wysoka jakość danych wejściowych. Zasada jest prosta – im dokładniejsze i bardziej rozwinięte dane wprowadzimy, tym lepszy, bardziej funkcjonalny będzie rezultat.

Plac zabaw sztucznej inteligencji firmy Nvidia używa GAN (źródło: CG Tricks)

Problem tkwi w tym, że w celu poprawnej klasyfikacji danych wejściowych potrzebni są ludzie. Wielu ludzi, pracujących wiele godzin dziennie. Narażeni są oni także na błędy. Na przykład, wyobraźmy sobie, że poszukujemy zdjęć kotów. Obecnie jest wiele darmowych baz danych, których możemy użyć, ale załóżmy, że chcemy zrobić wszystko od początku. W takim wypadku musimy znaleźć wystarczająco dużo zdjęć przedstawiających koty, wybrać te najlepsze i z każdą iteracją uczenia maszynowego, sprawdzać, czy któreś z nich obniża końcowy rezultat.

W przypadku danych o giełdzie papierów wartościowych, musimy uzyskać informacje o wartości akcji z każdego dnia i przenieść je do arkusza. Natomiast, jeśli chcemy stworzyć sieć klasyfikującą zwierzęta, ludzcy operatorzy muszą przyporządkować każde zdjęcie do jednej z kategorii, np. psów, kotów i chomików. Czasem, szczególnie w przypadku danych dotyczących zdrowotnych, uzyskanie informacji jest trudnym zadaniem, z uwagi na ich osobisty rodzaj.

Prawdziwe limitacje sieci neuronowych wychodzą na światło dzienne, gdy próbujemy użyć ich do generowania nowych danych. Jest tak dlatego, że umiejętność rozumienia i przetwarzania danych źródłowych przez sieci neuronowe nie oznacza, że umieją je one także replikować, tworząc podobne wyniki. Z tego powodu, gdy użyjemy zwyczajnego algorytmu sztucznej inteligencji do stworzenia obrazku, nawet jeśli posiada on źródło, wynik wygląda zwykle równie fascynująco, co dziwnie.

GAN, czyli jak nauczyć komputer kreatywnego myślenia
Obrazek wyprodukowany przez Google Daydream (fot. TNW)

Jak działa GAN?

Technika GAN Iana Goodfellowa używa dwóch sieci neuronowych. Pierwsza z nich, nazywana generatorem, tworzy nowe dane. Na początku mogą to być nawet losowo pokolorowane piksele. Działa to dokładnie w sposób odwrotny do funkcji klasyfikacyjnej normalnych sieci neuronowych.

Zamiast przyjmowania danych i próbowania znaleźć w nich cech charakterystycznych dla danego modelu, generator zna końcowy wynik i próbuje stworzyć nowe dane, które zostaną zaklasyfikowane jako prawdziwe. Na przykład, generator może zacząć od zwykłego szumu, a skończyć na fotorealistycznym zdjęciu kota.

Druga sieć, dyskryminator, jest rodzajem klasyfikatora. Oznacza to, że ocenia wyniki, które produkuje generator (w skali od 0 do 1). Jeśli rezultat ten jest zbyt niski, generator znów tworzy nowe dane i wprowadza je do dyskryminatora. Ten proces jest powtarzany w bardzo szybkim tempie, aż do momentu, w którym dyskryminator uznaje wynik stworzony przez generatora jako prawidłowy – nie potrafi odróżnić go od prawdziwych.

GAN, czyli jak nauczyć komputer kreatywnego myślenia
Sposób działania GAN (fot. TNW)

Proces ten można porównać więc do gry w kotka i myszkę, w której do generator próbuje przemknąć się pod czujnym okiem dyskryminatora, udając, że jego dane są autentyczne.

Sposób działania GANów bardzo dobrze widać na poniższym filmie, przedstawiającym proces tworzenia zdjęć nieistniejących celebrytów. Niektóre z nich wyglądają naprawdę imponująco.

Progresywne ulepszanie się wyników GAN (źródło: Tero Karras FI)

Zastosowania GANów

Generatywne sieci współzawodniczące już pokazały, na co je stać. Firma Nvidia, wykazująca ostatnimi czasy duże zainteresowanie rozwojem sztucznej inteligencji, stworzyła model, który na podstawie obecnego kontekstu jest zdolny do zrekonstruowania zaznaczonych przez nas części zdjęć.

W skrócie, maskujemy obiekt, który chcemy usunąć, a program pokazuje, jak zdjęcie wyglądałoby bez niego. W ten sposób można łatwo usunąć pobliskich gapiów, niechciane przedmioty, a nawet… zmarszczki. Chociaż w pakiecie Adobe Suite taka funkcja istniała już od dekady, to rozwiązanie firmy Nvidia korzysta właśnie z techniki GAN. Poniższy film przedstawia tę funkcję, nazywaną Inpainting. Szczególnie polecam zobaczyć ostatni przykład.

Maskowanie obiektów dzięki technice GAN (źródło: NVIDIA)

Istnieje również wiele praktycznych zastosowań dla tej technologii. Może ona generować nowe pomysły dla projektantów wnętrz lub wspomóc muzyków, tworząc unikalne kompozycje, które następnie można dowolnie zmieniać i ulepszać. To zwykle pomysł jest najtrudniejszą częścią kreatywnego procesu.

Zastosowanie GANów to nie tylko realistyczne zdjęcia i dzieła sztuki. Mogą one też wspomóc badania naukowe, w których ma zastosowanie AI, a także być głównym składnikiem nienadzorowanego uczenia, czyli nowego konceptu w tworzeniu modeli sztucznej inteligencji, w którym komputer sam tworzy dane.

GANy mogą być także kluczowe, gdy dostęp do danych o wysokiej jakości jest utrudniony, na przykład w wyżej wymienionych usługach medycznych. Autonomiczne samochody również mogą skorzystać z GANów, w celu trenowania w warunkach drogowych bez potrzeby wydawania pieniędzy na przejechanie dziesiątek tysięcy kilometrów. Po zebraniu wystarczającej ilości danych, mogą generować własne przykłady sytuacji, które mogłyby napotkać na drodze, a następnie próbować je rozwikłać (ale tutaj wchodzimy już w strefę dylematów etycznych).

Dzięki temu, GANy mogą okazać się przydatne w tworzeniu ogólnego AI, potrafiącego naśladować ludzkie zachowanie i podejmować decyzje zaledwie na podstawie małej ilości wprowadzonych danych. Jednakże, najpierw powinniśmy skupić się na rozwoju obecnych algorytmów AI, do czego właśnie GANy mogą się przydać.

Wracając do medycyny, warto zaznaczyć, że ten sposób użycia generatywnych sieci współzawodniczących może przyczynić się też do innych osiągnięć. Zamiast wykorzystywania poufnych informacji swoich pacjentów, centra medyczne mogą zgromadzić tylko niewielką ilość danych, po czym pozwolić GANom na generowanie nowych.

GAN, czyli jak nauczyć komputer kreatywnego myślenia
Grafika przedstawiająca użycie GANów w medycynie (fot. TNW)

Taki sposób działania może pomóc w innych dziedzinach, w których uzyskanie danych od klientów jest trudne, lub wręcz niemożliwe, np. w procesie zakupów. Może to pomóc firmom w omijaniu zbędnej biurokracji, a dla nas oznaczać koniec wszechobecnych ankiet.

Limitacje GANów

Oczywiście, chociaż generatywne sieci współzawodniczące są niesamowitym osiągnięciem, mają też swoje limity. Po pierwsze, wciąż potrzebują one całkiem dużej ilości danych w pierwszej fazie tworzenia. Możemy nazwać to ich pseudo-wyobraźnią. Same z siebie, niczego nie skonstruują. Bez wystarczającej ilości zdjęć celebrytów, GANy nigdy nie wyprodukowałyby nowej, fotorealistycznej twarzy. 

Po drugie, GANy nie mogą wymyślać nieistniejących rzeczy. Mogą tylko mieszać i łączyć ze sobą znane im już elementy (których zostały nauczone przez nas).

W dodatku, tworzenie poprawnie działających GANów jest trudne. Trzeba znaleźć balans pomiędzy generatorem, dyskryminatorem i wprowadzanymi danymi. Na przykład, jeśli ten drugi będzie zbyt rygorystyczny, generator nigdy nie będzie w stanie się przez niego przebić. Może być też odwrotnie – wtedy jest w stanie przepuścić psa z dwiema głowami. Ponadto, jeśli same sieci neuronowe mają złe parametry, generowane wyniki mogą być zbyt podobne. Deweloperzy muszą ciągle optymalizować GANy, by te działały jak najlepiej.

Wszystko może być użyte przeciwko Tobie

Złowrogie użytkowanie AI to nie nowość. Popatrzmy chociaż na popularne DeepFake’i. Zaczęło się od niewinnej zamiany twarzy prezydenta Obamy, a teraz technologia ta jest w stanie dosłownie włożyć słowa do czyichś ust. Chociaż technika GAN jest wciąż za trudna do użytku przez wielu amatorów, jak każda technologia, w przyszłości stanie się ogólnodostępna. Do czego jest zdolna? Obyśmy nie musieli się tego dowiadywać. 

Pomyślmy jednak, jak GANy mogą pomóc hackerom i przestępcom w uzyskiwaniu danych o potencjalnej ofierze. Wystarczy ich bardzo niewiele, o wiele mniej niż do tradycyjnych algorytmów sztucznej inteligencji. GANy mogą pomóc też w znajdowaniu wad innych systemów AI. Na przykład, jeśli system bezpieczeństwa cyfrowego zbudowany został przy pomocy sztucznej inteligencji, generatywne sieci współzawodniczące są w stanie znaleźć jego słabe strony.

Pamiętajmy, że algorytmy AI wykorzystywane są nie tylko w cyfrowym świecie. Znajdowanie słabych stron w sposobie działania autonomicznych samochodów może spowodować uszkodzenia w rzeczywistości. Mogą one sprawić, że samochód źle odczyta znak drogowy.

GAN, czyli jak nauczyć komputer kreatywnego myślenia
Kilka sposobów „oszukiwania” autonomicznych samochodów (fot. TNW)

Ian Goodfellow rozumie, jakie ryzyko niesie ze sobą jego wynalazek. Podejmuje już kroki w stronę zapewnienia nam bezpieczniejszej przyszłości. W wywiadzie z MIT, powiedział on, że, jeśli nie będziemy czujni, AI może spotkać to samo, co inne innowacyjne technologie, które nie zostały objęte odpowiednimi środkami ostrożności. Obyśmy nie obudzili się, gdy będzie już za późno.

Oczywiście, jesteśmy w zaawansowanym stopniu rozwoju, lecz mam nadzieję, że możemy poczynić znaczne postępy w zakresie bezpieczeństwa, zanim będziemy za daleko.

“Clearly, we’re already beyond the start, but hopefully we can make significant advances in security before we’re too far in.”

GANy to niezwykle ciekawy sposób na osiągnięcie długo wyczekiwanego celu. Użycie tej techniki stanie się coraz popularniejsze przez najbliższe lata. Co będzie końcowym rezultatem… przekonamy się w przyszłości.