Modele generatywne
ten post opisuje cztery projekty, które mają wspólny temat ulepszania lub używania modeli generatywnych, gałęzi technik uczenia się bez nadzoru w uczeniu maszynowym. Oprócz opisania naszej pracy, w tym poście dowiesz się nieco więcej o modelach generatywnych: czym są, dlaczego są ważne i dokąd mogą zmierzać.
jednym z naszych głównych aspiracji w OpenAI jest rozwijanie algorytmów i technik, które dają komputerom zrozumienie naszego świata.
łatwo zapomnieć, ile wiesz o świecie: rozumiecie, że składa się ze środowisk 3D, obiektów, które się poruszają, zderzają, wchodzą w interakcje; ludzi, którzy chodzą, mówią i myślą; zwierząt, które pasą się, latają, biegają lub szczekają; monitorów, które wyświetlają zakodowane w języku informacje o pogodzie, kto wygrał mecz koszykówki lub co wydarzyło się w 1970 roku.
ta ogromna ilość informacji jest tam i w dużym stopniu łatwo dostępna — zarówno w fizycznym świecie atomów, jak i cyfrowym świecie bitów. Jedyną trudną częścią jest opracowanie modeli i algorytmów, które mogą analizować i rozumieć tę skarbnicę danych.
modele generatywne są jednym z najbardziej obiecujących podejść do tego celu. Aby wytrenować model generatywny, najpierw zbieramy dużą ilość danych w jakiejś dziedzinie (np. myślimy o milionach obrazów, zdań, dźwięków itp.), a następnie wytrenować model do generowania takich danych. Intuicja stojąca za tym podejściem wynika ze słynnego cytatu Richarda Feynmana:
„czego nie mogę stworzyć, nie rozumiem.”
– Richard Feynman
sztuczka polega na tym, że sieci neuronowe, których używamy jako modeli generatywnych, mają szereg parametrów znacznie mniejszych niż ilość danych, na których je szkolimy, więc modele są zmuszone do odkrywania i efektywnej internalizacji istoty danych w celu ich wygenerowania.
modele generatywne mają wiele zastosowań krótkoterminowych. Ale na dłuższą metę, posiadają potencjał, aby automatycznie nauczyć się naturalnych cech zbioru danych, czy Kategorie lub wymiary lub coś zupełnie innego.
generowanie obrazów
zróbmy to bardziej konkretnie za pomocą przykładu. Załóżmy, że mamy dużą kolekcję obrazów, takich jak 1,2 miliona obrazów w zbiorze danych ImageNet (ale pamiętaj, że może to być w końcu duża kolekcja obrazów lub filmów z Internetu lub robotów). Jeśli zmienimy rozmiar każdego obrazu na szerokość i wysokość 256 (jak to zwykle robi się), nasz zbiór danych to jeden duży
1,200,000x256x256x3
(około 200 GB) blok pikseli. Oto kilka przykładowych obrazów z tego zbioru danych:te obrazy są przykładami tego, jak wygląda nasz świat wizualny i nazywamy je „przykładami z prawdziwej dystrybucji danych”. Teraz konstruujemy nasz model generatywny, który chcielibyśmy wytrenować, aby generować takie obrazy od podstaw. Konkretnie, model generatywny w tym przypadku może być jedną dużą siecią neuronową, która generuje obrazy i nazywamy je „próbkami z modelu”.
DCGAN
jednym z takich najnowszych modeli jest sieć Dcgan firmy Radford et al. (pokazane poniżej). Ta sieć przyjmuje jako Wejście 100 losowych liczb losowanych z jednolitego rozkładu (nazywamy je kodem lub zmiennymi utajonymi na czerwono) i wysyła obraz (w tym przypadku
64x64x3
obrazy po prawej stronie, na Zielono). Ponieważ kod jest zmieniany stopniowo, generowane obrazy również to robią-pokazuje to, że model nauczył się funkcji opisujących, jak wygląda świat, a nie tylko zapamiętywania niektórych przykładów.sieć (w Kolorze Żółtym) składa się ze standardowych komponentów sieci neuronowej typu convolutional, takich jak warstwy dekonwolucyjne (odwrotność warstw convolutional), całkowicie połączone warstwy itp.:
DCGAN jest inicjowany losowymi wagami, więc losowy Kod podłączony do sieci wygeneruje całkowicie losowy obraz. Jednak, jak można sobie wyobrazić, sieć ma miliony parametrów, które możemy dostosować, a celem jest znalezienie takich ustawień, które sprawią, że próbki wygenerowane z losowych kodów będą wyglądać jak dane treningowe. Inaczej mówiąc, chcemy, aby rozkład modelu był zgodny z rzeczywistą dystrybucją danych w przestrzeni obrazów.
Szkolenie generatywnego modelu
Załóżmy, że użyliśmy nowo zainicjowanej sieci do wygenerowania 200 obrazów, za każdym razem zaczynając od innego losowego kodu. Pytanie brzmi: jak powinniśmy dostosować parametry sieci, aby zachęcić ją do produkcji nieco bardziej wiarygodnych próbek w przyszłości? Zauważ, że nie jesteśmy w prostym nadzorowanym otoczeniu i nie mamy żadnych wyraźnych pożądanych celów dla naszych 200 wygenerowanych obrazów; chcemy tylko, aby wyglądały realistycznie. Jednym z sprytnych podejść do tego problemu jest podążanie za podejściem generatywnej sieci kontradyktoryjnej (Gan). Tutaj wprowadzamy drugą sieć dyskryminatora (Zwykle standardową konwolucyjną sieć neuronową), która próbuje sklasyfikować, czy obraz wejściowy jest prawdziwy, czy wygenerowany. Na przykład, możemy nakarmić 200 wygenerowanych obrazów i 200 rzeczywistych obrazów do rozróżniacza i wytrenować go jako standardowy klasyfikator do rozróżniania między dwoma źródłami. Ale oprócz tego — i oto sztuczka-możemy również przechodzić z powrotem przez dyskryminator i generator, aby znaleźć sposób, w jaki powinniśmy zmienić parametry generatora, aby uczynić jego 200 próbek nieco bardziej mylącymi dla dyskryminatora. Te dwie sieci są więc zamknięte w walce: dyskryminator próbuje odróżnić prawdziwe obrazy od fałszywych obrazów, a generator próbuje stworzyć obrazy, które sprawiają, że dyskryminator myśli, że są prawdziwe. W końcu sieć generatorów wyprowadza obrazy, które są nie do odróżnienia od rzeczywistych obrazów dla dyskryminatora.
istnieje kilka innych podejść do dopasowania tych rozkładów, które omówimy krótko poniżej. Ale zanim tam dotrzemy, poniżej znajdują się dwie animacje, które pokazują próbki z modelu generatywnego, aby dać wizualny zmysł procesu treningowego.
w obu przypadkach próbki z generatora zaczynają być hałaśliwe i chaotyczne, a z czasem zbiegają się, aby uzyskać bardziej wiarygodne statystyki obrazu:to jest ekscytujące — te sieci neuronowe uczą się, jak wygląda świat wizualny! Modele te mają zwykle tylko około 100 milionów parametrów, więc sieć szkolona na ImageNet musi (stratnie) skompresować 200 GB danych pikseli na 100 MB wag. Dzięki temu może odkryć najistotniejsze cechy danych: na przykład dowie się, że pobliskie piksele mają prawdopodobnie ten sam kolor lub że świat składa się z poziomych lub pionowych krawędzi lub plam o różnych kolorach. Ostatecznie model może odkryć wiele bardziej złożonych prawidłowości: że istnieją pewne rodzaje tła, obiektów, tekstur, że występują w pewnych prawdopodobnych układach lub że zmieniają się w pewien sposób w czasie w filmach itp.
bardziej Ogólne sformułowanie
matematycznie myślimy o zbiorze danych przykładów \(x_1, \ldots, x_n\) jako próbkach z prawdziwego rozkładu danych \(p(x)\). Na poniższym przykładzie niebieski obszar pokazuje część przestrzeni obrazu, która z dużym prawdopodobieństwem (powyżej pewnego progu) zawiera rzeczywiste obrazy, a czarne kropki oznaczają nasze punkty danych (każdy z nich jest jednym obrazem w naszym zbiorze danych). Nasz model opisuje również rozkład \(\hat{P}_{\theta} (x)\) (zielony), który jest zdefiniowany pośrednio przez pobranie punktów z jednostkowego rozkładu Gaussa (czerwony) i odwzorowanie ich przez (deterministyczną) sieć neuronową — nasz model generatywny (żółty). Nasza sieć jest funkcją z parametrami \(\theta\), a dostosowanie tych parametrów poprawi generowany rozkład obrazów. Naszym celem jest zatem znalezienie parametrów \(\theta\), które wytwarzają dystrybucję, która ściśle odpowiada rzeczywistej dystrybucji danych (na przykład przez małą stratę dywergencji KL). Dlatego można sobie wyobrazić zielony rozkład rozpoczynający się losowo, a następnie proces treningowy iteracyjnie zmieniający parametry \(\theta\), aby rozciągnąć i ścisnąć go, aby lepiej dopasować się do niebieskiego rozkładu.
trzy podejścia do modeli generatywnych
większość modeli generatywnych ma tę podstawową konfigurację, ale różnią się szczegółami. Oto trzy popularne przykłady modeli generatywnych, które dają poczucie zmienności:
- generatywne sieci Kontradyktoryjne (Gan), które już omówiliśmy powyżej, stanowią proces szkoleniowy jako grę między dwiema oddzielnymi sieciami: siecią generatora (jak widać powyżej) i drugą siecią dyskryminacyjną, która próbuje sklasyfikować próbki jako pochodzące z prawdziwej dystrybucji \(p(x)\) lub dystrybucji modelu \(\hat{P}(x)\). Za każdym razem, gdy dyskryminator zauważy różnicę między dwoma rozkładami, generator dostosowuje nieznacznie swoje parametry, aby zniknąć, aż na końcu (teoretycznie) generator dokładnie odtwarza rzeczywisty rozkład danych, a dyskryminator zgaduje losowo, nie będąc w stanie znaleźć różnicy.
- Autoenkodery wariacyjne (VAEs) pozwalają nam sformalizować ten problem w ramach probabilistycznych modeli graficznych, w których maksymalizujemy mniejszą granicę prawdopodobieństwa logowania danych.
- modele Autoregresyjne, takie jak PixelRNN, zamiast tego trenują sieć, która modeluje warunkową dystrybucję każdego pojedynczego piksela z podanymi poprzednimi pikselami (po lewej i u góry). Jest to podobne do podłączenia pikseli obrazu do znaku-RNN, ale RNN biegną zarówno poziomo, jak i pionowo nad obrazem, zamiast tylko sekwencji znaków 1D.
wszystkie te podejścia mają swoje plusy i minusy. Na przykład, Autoenkodery wariacyjne pozwalają nam wykonywać zarówno uczenie się, jak i efektywne wnioskowanie bayesowskie w skomplikowanych probabilistycznych modelach graficznych ze zmiennymi utajonymi (np. patrz DRAW, lub attendent Inference Repeat for hints of recent relatively complex models). Jednak ich wygenerowane próbki wydają się być lekko rozmyte. Gany generują obecnie najostrzejsze obrazy, ale są trudniejsze do zoptymalizowania ze względu na niestabilną dynamikę treningu. PixelRNNs mają bardzo prosty i stabilny proces treningowy (SoftMax loss) i obecnie dają najlepsze prawdopodobieństwo logowania (czyli wiarygodność wygenerowanych danych). Są one jednak stosunkowo nieefektywne podczas próbkowania i nie zapewniają prostych kodów o niskim wymiarze dla obrazów. Wszystkie te modele są aktywnymi obszarami badań i chętnie zobaczymy, jak będą się rozwijać w przyszłości!
nasz ostatni wkład
jesteśmy bardzo podekscytowani modelami generatywnymi w OpenAI i właśnie opublikowaliśmy cztery projekty, które rozwijają stan techniki. Dla każdego z tych wkładów publikujemy również raport techniczny i Kod źródłowy.
Ulepszanie Ganów (kodu). Po pierwsze, jak wspomniano powyżej, Gan są bardzo obiecującą rodziną modeli generatywnych, ponieważ w przeciwieństwie do innych metod, wytwarzają bardzo czyste i ostre obrazy oraz uczą się kodów zawierających cenne informacje o tych teksturach. Jednak Gany są formułowane jako gra między dwiema sieciami i jest to ważne (i trudne!), aby utrzymać je w równowadze: na przykład mogą oscylować między roztworami lub generator ma tendencję do zapadania się. W tej pracy Tim Salimans, Ian Goodfellow, Wojciech Zaremba i współpracownicy wprowadzili kilka nowych technik, dzięki którym trening GAN stał się bardziej stabilny. Techniki te pozwalają nam skalować Gany i uzyskać ładne
128x128
ImageNet samples:Our CIFAR-10 samples also look very sharp – Amazon Mechanical Turk workers can distinguish our samples from real data with an error rate of 21.3% (50% would be random guessing):
In addition to generating pretty pictures, we introduce an approach for semi-supervised learning with GANs that involves the discriminator producing an additional output indicating the label of the input. Takie podejście pozwala nam uzyskać najnowocześniejsze wyniki na MNIST, SVHN i CIFAR-10 w Ustawieniach z bardzo nielicznymi przykładami. Na przykład w przypadku MNIST osiągamy dokładność 99,14% przy użyciu tylko 10 oznakowanych przykładów na klasę z w pełni połączoną siecią neuronową — wynik jest bardzo zbliżony do najbardziej znanych wyników przy w pełni nadzorowanych podejściach wykorzystujących wszystkie 60 000 oznakowanych przykładów. Jest to bardzo obiecujące, ponieważ oznaczone przykłady mogą być dość kosztowne do uzyskania w praktyce.
generatywne sieci Kontradyktoryjne są stosunkowo nowym modelem (wprowadzonym zaledwie dwa lata temu) i spodziewamy się szybszego postępu w dalszej poprawie stabilności tych modeli podczas treningu.
Ulepszanie VAEs (kodu). W tej pracy Durk Kingma i Tim Salimans wprowadzają elastyczną i skalowalną obliczeniowo metodę poprawy dokładności wnioskowania wariacyjnego. W szczególności większość VAEs do tej pory była szkolona za pomocą prymitywnych przybliżonych posterów, gdzie każda zmienna utajona jest niezależna. Ostatnie rozszerzenia rozwiązały ten problem, warunkując każdą utajoną zmienną na innych przed nią w łańcuchu, ale jest to obliczeniowo nieefektywne ze względu na wprowadzone zależności sekwencyjne. Głównym wkładem tej pracy, zwanej odwrotnym przepływem autoregresywnym (IAF), jest nowe podejście, które, w przeciwieństwie do poprzednich prac, pozwala na równoległe obliczanie bogatych przybliżonych posterów i uczynienie ich prawie arbitralnie elastycznymi.
pokazujemy przykład
32x32
próbki obrazów z modelu na obrazku poniżej, po prawej stronie. Po lewej stronie są wcześniejsze próbki z modelu losowania do porównania (próbki vanilla VAE wyglądałyby jeszcze gorzej i bardziej rozmyte). Model DRAW został opublikowany zaledwie rok temu, podkreślając ponownie szybki postęp w szkoleniu modeli generatywnych.infogan (kod). Peter Chen i współpracownicy wprowadzają InfoGAN-rozszerzenie GAN, które uczy się rozproszonych i interpretowalnych reprezentacji obrazów. Zwykły GAN osiąga cel odtworzenia rozkładu danych w modelu, ale układ i organizacja przestrzeni kodu jest niedookreślona-istnieje wiele możliwych rozwiązań mapowania jednostki Gaussa na obrazy, a ten, z którym skończymy, może być skomplikowany i wysoce splątany. InfoGAN nakłada na tę przestrzeń dodatkową strukturę, dodając nowe cele, które polegają na maksymalizacji wzajemnej informacji między małymi podzbiorami zmiennych reprezentacji i obserwacji. Takie podejście zapewnia dość niezwykłe wyniki. Na przykład na poniższych obrazach twarzy 3D zmieniamy jeden ciągły wymiar kodu, zachowując wszystkie pozostałe stałe. Z pięciu podanych przykładów (wzdłuż każdego wiersza) wynika, że wymiary wynikowe w kodzie wychwytują wymiary interpretowalne, a model prawdopodobnie zrozumiał, że istnieją kąty kamery, zmiany twarzy itp., bez uprzedzenia, że te cechy istnieją i są ważne:
We also note that nice, disentangled representations have been osiągnięte wcześniej (takie jak z DC-IGN przez Kulkarni et al.), ale te podejścia polegają na dodatkowym nadzorze, podczas gdy nasze podejście jest całkowicie nienadzorowane.
kolejne dwa ostatnie projekty są w konfiguracji reinforcement learning (RL) (inny obszar zainteresowania w OpenAI), ale oba obejmują komponent modelu generatywnego.
ciekawość-napędzana eksploracją w głębokim uczeniu wzmacniającym za pomocą bayesowskich sieci neuronowych (kod). Wydajna eksploracja w przestrzeniach wielowymiarowych i ciągłych jest obecnie nierozwiązanym wyzwaniem w uczeniu się przez wzmacnianie. Bez skutecznych metod eksploracji Nasi agenci kręcą się po okolicy, aż przypadkowo natkną się na satysfakcjonujące sytuacje. Jest to wystarczające w wielu prostych zadaniach z zabawkami, ale niewystarczające, jeśli chcemy zastosować te algorytmy do złożonych ustawień z wysokowymiarowymi przestrzeniami działania, jak to jest powszechne w robotyce. W tym artykule Rein Houthooft i współpracownicy proponują VIME, praktyczne podejście do eksploracji z wykorzystaniem niepewności w modelach generatywnych. VIME sprawia, że agent jest zmotywowany; aktywnie poszukuje zaskakujących działań państwowych. Pokazujemy, że VIME może ulepszyć szereg metod wyszukiwania w polityce i poczynić znaczne postępy w bardziej realistycznych zadaniach z rzadkimi nagrodami (np. scenariusze, w których agent musi nauczyć się prymitywnych ruchów bez żadnych wskazówek).
na koniec chcielibyśmy dołączyć dodatkowy piąty projekt: generative adversarial Imitation learning (code), w którym Jonathan Ho i współpracownicy prezentują nowe podejście do uczenia się imitacji. Jonathan Ho dołączy do nas w OpenAI jako letni stażysta. Większość tej pracy wykonał w Stanford, ale uwzględniamy ją tutaj jako powiązane i wysoce kreatywne zastosowanie GANs do RL. Standardowe ustawienie uczenia się przez wzmacnianie zwykle wymaga zaprojektowania funkcji nagrody, która opisuje pożądane zachowanie agenta. Jednak w praktyce może to czasami wiązać się z kosztownym procesem prób i błędów, aby uzyskać właściwe szczegóły. W przeciwieństwie do tego, w imitacji uczenia się agent uczy się na przykładach demonstracji (np. dostarczanych przez teleoperację w robotyce), eliminując potrzebę zaprojektowania funkcji nagrody.
popularne metody imitacji obejmują dwuetapowy potok: najpierw uczenie się funkcji nagrody, a następnie uruchamianie RL na tej nagrodzie. Taki rurociąg może być powolny, a ponieważ jest pośredni, trudno zagwarantować, że wynikająca z niego polityka działa dobrze. Ta praca pokazuje, w jaki sposób można bezpośrednio wyodrębnić Polityki z danych poprzez połączenie z Gan. W rezultacie takie podejście może być wykorzystane do nauki polityki z demonstracji ekspertów (bez nagród) na twardych środowiskach OpenAI Gym, takich jak mrówki i humanoidy.
idąc do przodu
modele generatywne są szybko rozwijającym się obszarem badań. W miarę rozwoju tych modeli i zwiększania skali szkoleń i zbiorów danych możemy spodziewać się, że w końcu wygenerujemy próbki przedstawiające całkowicie wiarygodne obrazy lub filmy. Może to samo w sobie znaleźć zastosowanie w wielu aplikacjach, takich jak sztuka generowana na żądanie lub polecenia Photoshop++, takie jak „make my smile wider”. Dodatkowe obecnie znane zastosowania obejmują odbarwianie obrazów, malowanie, superrozdzielczość, przewidywanie strukturalne, eksplorację w uczeniu wzmacniającym i wstępne szkolenie sieci neuronowych w przypadkach, gdy oznaczone dane są drogie.
jednak głębszą obietnicą tej pracy jest to, że w procesie szkolenia modeli generatywnych obdarzymy komputer zrozumieniem świata i tego, z czego się składa.
Leave a Reply