GAN poza generacją: 7 alternatywnych przypadków użycia

https://sigmoidal.io/beginners-review-of-gan-architectures/

Cześć wszystkim!
Podobnie jak wiele osób, które śledzą postępy w sztucznej inteligencji, nie mogłem pominąć ostatnich postępów w modelowaniu generatywnym, w szczególności wielkiego sukcesu generatywnych sieci przeciwników (GAN) w generowaniu obrazów. Spójrz na te próbki: trudno je odróżnić od prawdziwych zdjęć!

Próbki z BigGAN: https://openreview.net/pdf?id=B1xsqj09Fm

Postęp w generowaniu twarzy w latach 2014-2018 jest również niezwykły:

Jestem bardzo podekscytowany tymi wynikami, ale mój wewnętrzny sceptyk zawsze wątpi, czy są one naprawdę przydatne i mają szerokie zastosowanie. Już otwierałem to pytanie w notatce na Facebooku:

Zasadniczo „narzekałem”, że przy całej mocy modeli generatywnych tak naprawdę nie używamy ich do czegoś bardziej praktycznego niż twarze o wysokiej rozdzielczości lub pokolenie burgerów. Oczywiście istnieją firmy, które mogą opierać się bezpośrednio na generowaniu obrazów lub przenoszeniu stylu (np. Generowanie postaci lub poziomów w branży gier, przenoszenie stylu z prawdziwych zdjęć do awatarów anime), ale szukałem więcej obszarów, w których GAN i inne generatywne modele mogą być stosowane. Chciałbym również pamiętać, że dzięki modelom generatywnym możemy generować nie tylko obrazy, ale tekst, dźwięki, głosy, muzykę, uporządkowane dane, takie jak poziomy gry lub cząsteczki narkotyków, i istnieje niesamowity post na blogu z innymi aplikacjami podobnymi do generacji, ale ograniczymy nas przykładami, w których synteza nie jest głównym celem.

Generowanie poziomu gry za pomocą RNN

W tym artykule przedstawiam 7 alternatywnych przypadków użycia. Z niektórymi z nich pracowałem już osobiście i mogę potwierdzić ich przydatność, inni są w trakcie badań, ale to nie znaczy, że nie warto próbować. Wszystkie te przykłady użycia modeli generatywnych niekoniecznie do tworzenia można zastosować w różnych obszarach i dla różnych danych, ponieważ naszym głównym celem nie będzie wygenerowanie czegoś realistycznego, ale wykorzystanie wewnętrznej wiedzy o sieciach neuronowych do nowych zadań.

1. Zwiększanie danych

Być może najbardziej oczywistą aplikacją może być szkolenie modelu do generowania nowych próbek z naszych danych w celu rozszerzenia naszego zestawu danych. Jak sprawdzamy, czy to rozszerzenie naprawdę coś pomogło? Cóż, istnieją dwie główne strategie: możemy wytrenować nasz model na „fałszywych” danych i sprawdzić, jak dobrze działa na prawdziwych próbkach. I odwrotnie: trenujemy nasz model na prawdziwych danych, aby wykonać pewne zadanie klasyfikacji i dopiero po sprawdzeniu, jak dobrze sobie radzi na wygenerowanych danych (fani GAN mogą tutaj rozpoznać wynik początkowy). Jeśli działa dobrze w obu przypadkach - możesz dodać próbki z modelu generatywnego do swoich prawdziwych danych i ponownie je przeszkolić - powinieneś spodziewać się wzrostu wydajności. Aby uczynić to podejście jeszcze bardziej wydajnym i elastycznym, sprawdź aplikację nr 6.

NVIDIA pokazała niesamowity przykład tego podejścia w działaniu: wykorzystali GAN do powiększenia zestawu danych obrazów tomografii komputerowej mózgu z różnymi chorobami i wykazali, że wydajność klasyfikacji przy użyciu tylko klasycznego powiększania danych daje 78,6% czułości i 88,4% swoistości. Po dodaniu syntetycznego rozszerzenia danych wyniki wzrosły do ​​85,7% czułości i 92,4% swoistości.

https://arxiv.org/pdf/1803.01229.pdf

2. Ochrona prywatności

Dane wielu firm mogą być tajne (jak dane finansowe, które zarabiają pieniądze), poufne lub wrażliwe (dane medyczne, które zawierają diagnozy pacjentów). Ale czasami musimy udostępnić go stronom trzecim, takim jak konsultanci lub badacze. Jeśli chcemy po prostu podzielić się ogólnymi poglądami na temat naszych danych, które obejmują najważniejsze wzorce, szczegóły i kształty obiektów, możemy użyć modeli generatywnych bezpośrednio, jak w poprzednim akapicie, aby próbki przykładów naszych danych udostępnić innym osobom. W ten sposób nie będziemy udostępniać żadnych poufnych danych, tylko coś, co wygląda dokładnie tak.

Trudniejszy jest przypadek, gdy chcemy potajemnie udostępniać dane. Oczywiście mamy różne schematy szyfrowania, takie jak szyfrowanie homomorficzne, ale mają one wady, takie jak ukrywanie 1 MB informacji w kodzie 10 GB. W 2016 roku Google otworzył nową ścieżkę badań nad wykorzystaniem konkurencyjnych ram GAN do problemu szyfrowania, w których dwie sieci musiały konkurować w tworzeniu kodu i łamaniu go:

https://towardsdatascience.com/adversarial-neural-cryptography-can-solve-the-biggest-friction-point-in-modern-ai-cc13b337f969

Ale najlepszą rzeczą jest nie wydajność uzyskanego kodu lub modnego hasła „AI” w innym obszarze. Należy pamiętać, że reprezentacje uzyskane przez sieci neuronowe bardzo często zawierają najbardziej przydatne informacje na temat danych wejściowych (niektóre z nich są nawet bezpośrednio szkolone, aby uzyskać takie informacje, jak autoencodery), a na podstawie tych skompresowanych danych nadal możemy dokonywać klasyfikacji / regresji / klastrowania lub cokolwiek chcemy. Jeśli zamienimy „skompresowany” na „zaszyfrowany”, pomysł jest jasny: jest to niesamowity sposób udostępniania danych stronom trzecim bez pokazywania niczego na temat zestawu danych. Jest znacznie silniejszy niż anonimizacja, a nawet generowanie fałszywych próbek i może być kolejną wielką rzeczą (oczywiście przy użyciu blockchain, podobnie jak Numerai)

3. Wykrywanie anomalii

Główne modele generatywne, takie jak wariacyjny autoencoder (VAE) lub GAN, składają się z dwóch części. VAE ma koder i dekoder, z których pierwszy w zasadzie modeluje rozkład, a drugi rekonstruuje z niego. GAN składa się z generatora i dyskryminatora, gdzie pierwszy modeluje rozkład, a drugi ocenia, czy jest blisko danych pociągu. Jak widzimy, pod pewnymi względami są do siebie bardzo podobne - jest część polegająca na modelowaniu i ocenie (w VAE możemy uznać rekonstrukcję za jakąś ocenę). Część modelująca powinna nauczyć się dystrybucji danych. Co stanie się z oceną części, jeśli damy jej próbkę nie z dystrybucji szkoleniowej? W przypadku dobrze wyszkolonego dyskryminatora GAN powie nam 0, a błąd rekonstrukcji VAE będzie wyższy niż średni na danych treningowych. Oto nadchodzi: nasz nienadzorowany wykrywacz anomalii, który można łatwo przeszkolić i ocenić. I możemy karmić go niektórymi sterydami, takimi jak odległości statystyczne, jeśli chcemy (GAN Wassersteina). W tym artykule można znaleźć przykład GAN wykorzystywanego do wykrywania anomalii oraz tutaj autoencodera. Dodam również własny szkic szkicu detektora anomalii opartego na autoencoderze dla szeregów czasowych napisanych w Keras:

4. Modelowanie dyskryminacyjne

Głębokie uczenie się naprawdę polega na mapowaniu danych wejściowych do przestrzeni, w której łatwiej je oddzielić lub wyjaśnić za pomocą prostych modeli matematycznych, takich jak SVM lub regresja logistyczna. Modele generatywne również wykonują własne mapowanie, zacznijmy od VAE. Autoencodery odwzorowują próbkę wejściową na jakąś znaczącą ukrytą przestrzeń i w zasadzie możemy wytrenować jakiś model bezpośrednio nad nią. Czy to ma jakiś sens? Czy różni się to od zwykłego korzystania z warstw kodera i trenowania modelu, aby dokonać bezpośredniej klasyfikacji? W rzeczy samej. Przestrzeń utajona autokodera jest złożoną nieliniową redukcją wymiarów, aw przypadku wariacyjnego autoenkodera również rozkładem wielu zmiennych, który może być znacznie lepszym początkowym inicjowaniem do szkolenia modelu dyskryminacyjnego niż pewnym przypadkowym inicjowaniem.

GAN-y są nieco trudniejsze w użyciu do innych zadań. Zostały zaprojektowane do generowania próbek z losowego materiału siewnego i nie oczekują żadnych danych wejściowych. Ale nadal możemy wykorzystywać je jako klasyfikatory przynajmniej na dwa sposoby. Pierwszym, już zbadanym, jest wykorzystanie dyskryminatora do przeprowadzenia klasyfikacji wygenerowanej próbki do różnych klas wraz z po prostu stwierdzeniem, czy jest ona prawdziwa, czy fałszywa. Możemy oczekiwać, że uzyskany klasyfikator będzie lepiej uregulowany (ponieważ widział różne rodzaje szumów i zakłóceń danych wejściowych) i będzie miał dodatkową klasę dla wartości odstających / anomalii:

https://towardsdatascience.com/semi-supervised-learning-with-gans-9f3cb128c5e

Drugim jest niesprawiedliwie zapomniane podejście do klasyfikacji z twierdzeniem Bayesa, w którym modelujemy p (c_k | x) w oparciu o p (x | c_k) (dokładnie to, co robi warunkowy GAN!) Oraz priory p (x), p (c_k). Główne pytanie brzmi: czy sieci GAN naprawdę uczą się dystrybucji danych ?, i jest to omawiane w niektórych najnowszych badaniach.

5. Adaptacja domeny

Dla mnie jest to jeden z najpotężniejszych. W praktyce prawie nigdy nie mamy tego samego źródła danych do szkolenia modeli i uruchamiania ich w środowisku rzeczywistym. W wizji komputerowej różne warunki oświetlenia, ustawienia aparatu lub pogoda mogą sprawić, że nawet bardzo dokładny model nie będzie przydatny. W NLP / analizie mowy slang lub akcent mogą zepsuć wydajność Twojego modelu przeszkolonego w zakresie języka „poprawnego gramatycznie”. W przetwarzaniu sygnału najprawdopodobniej masz zupełnie inne urządzenia do przechwytywania danych w celu trenowania modeli i produkcji. Możemy jednak również zauważyć, że oba „typy” danych są do siebie bardzo podobne. I wiemy, że modele uczenia maszynowego przeprowadzają mapowanie z jednego warunku do drugiego, zachowując główną treść, ale zmieniając szczegóły. Tak, teraz zajmę się przeniesieniem stylu, ale dla mniej kreatywnych celów.

https://ml4a.github.io/ml4a/style_transfer/

Na przykład, jeśli masz do czynienia z aplikacją, która ma działać na pewnego rodzaju kamerach CCTV, ale wyszkoliłeś swój model w zakresie obrazów o wysokiej rozdzielczości, możesz spróbować użyć GAN do wstępnego przetwarzania obrazów z ich usuwaniem szumów i ulepszaniem ich. Bardziej radykalny przykład, jaki mogę podać z obszaru przetwarzania sygnału: istnieje wiele zestawów danych związanych z danymi akcelerometru z telefonów komórkowych, które opisują działania różnych osób. Ale co, jeśli chcesz zastosować swoje modele przeszkolone w zakresie danych telefonu na opasce? Sieci GAN mogą pomóc ci w tłumaczeniu różnych rodzajów ruchów. Ogólnie rzecz biorąc, modele generatywne, które generują nie na podstawie szumu, ale niektóre wcześniej zdefiniowane wcześniej mogą pomóc w adaptacji domeny, przesunięciach kowariancji i innych problemach związanych z różnicami w danych.

6. Manipulowanie danymi

Mówiliśmy o przeniesieniu stylu w poprzednim akapicie. Nie podoba mi się w tym fakt, że funkcja mapowania działa na wszystkie dane wejściowe i zmienia wszystko. Co jeśli chcę po prostu zmienić nos na jakimś zdjęciu? Lub zmienić kolor samochodu? A może zastąpisz niektóre słowa w mowie, nie zmieniając jej całkowicie? Jeśli chcemy to zrobić, zakładamy już, że nasz obiekt można opisać za pomocą pewnego skończonego zestawu czynników, na przykład twarz to połączenie oczu, nosa, włosów, ust itp., A czynniki te mają swoje własne atrybuty (kolor , rozmiar itp.). Co jeśli moglibyśmy zmapować nasze piksele za pomocą zdjęcia na niektóre… gdzie możemy po prostu dostosować te czynniki i powiększyć lub pomniejszyć nos? Są na to pewne pojęcia matematyczne: różnorodna hipoteza i rozplątana reprezentacja. Dobra wiadomość dla nas jest taka, że ​​autoencodery i prawdopodobnie GAN pozwalają nam modelować dystrybucję w taki sposób, aby była to kombinacja tych czynników.

https://houxianxu.github.io/assets/project/dfcvae

7. Szkolenie przeciwnika

Możesz nie zgodzić się ze mną, dodając akapit o atakach na modele uczenia maszynowego, ale ma to wszystko wspólnego z modelami generatywnymi (algorytmy ataku przeciwnego są rzeczywiście bardzo proste) i algorytmami przeciwnymi (ponieważ mamy model konkurujący z innym). Być może znasz koncepcję nieprzyjacielskich przykładów: małe zakłócenia na wejściu modelu (może to być nawet jeden piksel na obrazie), które powodują całkowitą nieprawidłową wydajność. Istnieją różne sposoby walki z nimi, a jeden z najbardziej podstawowych nazywa się treningiem przeciwnika: w zasadzie chodzi o wykorzystanie przykładów przeciwnika do zbudowania jeszcze dokładniejszych modeli.

https://blog.openai.com/adversarial-example-research/

Bez szczegółowego zagłębiania się w szczegóły oznacza to, że wciąż mamy grę dla dwóch graczy: model przeciwnika (który po prostu powoduje zakłócenia wejściowe za pomocą epsilonu), który musi zmaksymalizować swój wpływ i istnieje model klasyfikacji, który musi zminimalizować jego straty. Wygląda bardzo podobnie do GAN, ale do różnych celów: uczyń model bardziej stabilnym na ataki przeciwnika i poprawi jego wydajność dzięki pewnego rodzaju inteligentnemu rozszerzaniu i regulowaniu danych.

Na wynos

W tym artykule widzieliśmy kilka przykładów tego, w jaki sposób GAN i niektóre inne modele generatywne mogą być wykorzystane do czegoś innego niż generowanie ładnych obrazów, melodii lub krótkich tekstów. Oczywiście, ich głównym długoterminowym celem będzie generowanie obiektów w świecie rzeczywistym uwarunkowanych odpowiednimi sytuacjami, ale dziś możemy wykorzystać ich zdolność do modelowania dystrybucji i uczenia się przydatnych reprezentacji w celu poprawy naszych obecnych potoków AI, zabezpieczenia naszych danych, znajdowania anomalii lub dostosowania się do innych rzeczywiste przypadki. Mam nadzieję, że okażą się one przydatne i będą miały zastosowanie w twoich projektach. Bądźcie czujni!

P.S.
Śledź mnie również na Facebooku, aby znaleźć artykuły, które są zbyt krótkie dla Medium, Instagram dla rzeczy osobistych i Linkedin!