Grając dalej, utrzymujemy bieżącą średnią dla Q. Wartości te będą coraz lepsze, a przy zastosowaniu pewnych sztuczek, wartości Q będą zbieżne.
Algorytm uczenia Q
Poniżej przedstawiono algorytm dopasowywania Q do próbkowanych nagród. Jeśli γ (współczynnik dyskonta) jest mniejszy od jednego, istnieje duża szansa, że Q jest zbieżne.
Źródło
Jeśli jednak kombinacje stanów i akcji są zbyt duże, pamięć i wymagania obliczeniowe dla Q będą zbyt duże. Aby temu zaradzić, przechodzimy na głęboką sieć Q (DQN), aby aproksymować Q(s, a). Algorytm uczenia nazywamy uczeniem głębokiej sieci Q (Deep Q-learning). Dzięki nowemu podejściu uogólniamy aproksymację funkcji wartości Q, zamiast zapamiętywać rozwiązania.
Jakie wyzwania stoją przed RL w porównaniu z DL?
W uczeniu nadzorowanym chcemy, aby dane wejściowe były i.i.d. (independent and identically distributed), czyli
Próbki są randomizowane pomiędzy partiami i dlatego każda partia ma taki sam (lub podobny) rozkład danych.
Próbki są niezależne od siebie w tej samej partii.
Jeśli nie, model może być przepasowany dla pewnej klasy (lub grup) próbek w różnym czasie i rozwiązanie nie będzie uogólnione.
Dodatkowo, dla tego samego wejścia, jego etykieta nie zmienia się w czasie. Ten rodzaj stabilnego warunku dla wejścia i wyjścia zapewnia warunek, aby uczenie nadzorowane działało dobrze.
W uczeniu wzmacniającym zarówno dane wejściowe, jak i cel zmieniają się stale podczas procesu i sprawiają, że szkolenie jest niestabilne.
Target unstable: Budujemy głęboką sieć, aby nauczyć się wartości Q, ale jej wartości docelowe zmieniają się w miarę jak lepiej poznajemy rzeczy. Jak widać poniżej, wartości docelowe dla Q zależą od samego Q, ścigamy niestacjonarny cel.
Source
i.i.d.: Istnieje inny problem związany z korelacjami wewnątrz trajektorii. W ramach iteracji treningowej aktualizujemy parametry modelu, aby zbliżyć Q(s, a) do prawdy o terenie. Te aktualizacje będą miały wpływ na inne estymacje. Kiedy podciągamy wartości Q w głębokiej sieci, wartości Q w otaczających stanach również zostaną podciągnięte, jak sieć.
Powiedzmy, że właśnie zdobyliśmy nagrodę i dostosowujemy sieć Q, aby to odzwierciedlić. Następnie wykonujemy kolejny ruch. Nowy stan będzie wyglądał podobnie do ostatniego, zwłaszcza jeśli do reprezentacji stanów użyjemy surowych obrazów. Nowo odzyskane Q(s’, a’) będzie wyższe, a nasz nowy cel dla Q przesunie się wyżej również bez względu na wartość nowej akcji. Jeśli zaktualizujemy sieć za pomocą sekwencji działań na tej samej trajektorii, powiększy to efekt poza naszą intencję. To destabilizuje proces uczenia się i brzmi jak psy goniące swój ogon.
Jakie jest podstawowe wyzwanie w treningu RL? W RL, często polegamy na polityce lub funkcjach wartości do próbkowania działań. Jednakże, to się często zmienia, ponieważ wiemy lepiej co badać. W miarę jak gramy w grę, lepiej poznajemy prawdziwe wartości stanów i akcji. Tak więc nasze docelowe dane wyjściowe również się zmieniają. Teraz próbujemy nauczyć się odwzorowania f dla ciągle zmieniających się danych wejściowych i wyjściowych!
Na szczęście zarówno dane wejściowe, jak i wyjściowe mogą być zbieżne. Jeśli więc wystarczająco spowolnimy zmiany na wejściu i wyjściu, możemy mieć szansę na modelowanie f, pozwalając mu ewoluować.
Rozwiązania
Odtwarzanie doświadczeń: Przykładowo, umieszczamy ostatni milion przejść (lub klatek wideo) w buforze i z tego bufora próbkujemy mini partię próbek o rozmiarze 32 w celu wytrenowania sieci głębokiej. To tworzy wejściowy zbiór danych, który jest wystarczająco stabilny do treningu. Ponieważ losowo próbkujemy z bufora powtórek, dane są bardziej niezależne od siebie i bliższe i.i.d.
Sieć docelowa: Tworzymy dwie głębokie sieci θ- i θ. Używamy pierwszej z nich do pobierania wartości Q, podczas gdy druga uwzględnia wszystkie aktualizacje w treningu. Po powiedzmy 100 000 aktualizacji, synchronizujemy θ- z θ. Celem jest tymczasowe ustalenie celów wartości Q, abyśmy nie mieli ruchomego celu do ścigania. Dodatkowo, zmiany parametrów nie wpływają na θ- natychmiastowo i dlatego nawet dane wejściowe mogą nie być w 100% i.i.d., nie spowoduje to nieprawidłowego powiększenia jego efektu, jak wspomniano wcześniej.
Dzięki zarówno powtórzeniu doświadczenia, jak i sieci docelowej, mamy bardziej stabilne wejście i wyjście do trenowania sieci i zachowuje się ona bardziej jak szkolenie nadzorowane.
Odtwarzanie doświadczenia ma największą poprawę wydajności w DQN. Poprawa sieci docelowej jest znacząca, ale nie tak krytyczna jak powtórka. Ale staje się ważniejsza, gdy pojemność sieci jest mała.
Deep Q-learning with experience replay
Oto algorytm:
Source
gdzie ϕ wstępnie przetwarzamy ostatnie 4 klatki obrazu, aby reprezentować stan. Aby uchwycić ruch, używamy czterech klatek do reprezentowania stanu.
Szczegóły implementacji
Funkcja straty
Przejrzyjmy się jeszcze kilku szczegółom implementacji, aby poprawić wydajność. DQN używa straty Hubera (zielona krzywa), gdzie strata jest kwadratowa dla małych wartości a, i liniowa dla dużych wartości.
Zielona to strata Hubera, a niebieska to strata kwadratowa (Wikipedia)
Wprowadzenie straty Hubera pozwala na mniej drastyczne zmiany, które często szkodzą RL.
Optymalizacja
Trening RL jest wrażliwy na metody optymalizacji. Prosty harmonogram szybkości uczenia nie jest wystarczająco dynamiczny, aby poradzić sobie ze zmianami danych wejściowych podczas treningu. Wiele szkoleń RL używa RMSProp lub optymalizatora Adam. DQN jest trenowany za pomocą RMSProp. Użycie zaawansowanej metody optymalizacji w metodach gradientowych jest również intensywnie badane.
ϵ-greedy
DQN używa ϵ-greedy do wyboru pierwszej akcji.
Q-learning: modified from source
Aby poprawić trening, ϵ zaczyna się od 1 i anneal do 0.1 lub 0.05 przez pierwszy milion klatek używając następującej polityki.
gdzie m jest liczbą możliwych akcji. Na początku szkolenia wybieramy równomiernie możliwe akcje, ale w miarę postępu szkolenia częściej wybieramy optymalną akcję a*. Pozwala to na maksymalną eksplorację na początku, która ostatecznie przechodzi w eksploatację.
Ale nawet podczas testowania, możemy utrzymać ϵ na małej wartości jak 0.05. Polityka deterministyczna może utknąć w lokalnym optimum. Polityka niedeterministyczna pozwala nam wyrwać się na szansę osiągnięcia lepszego optimum.
Modyfikacja ze źródła Architektura
Oto architektura DQN. Bierzemy 4 ostatnie klatki wideo i wprowadzamy je do warstw konwolucyjnych, a następnie w pełni połączonych warstw, aby obliczyć wartości Q dla każdej akcji.
W poniższym przykładzie, jeśli nie przesuniemy łopatki w górę na klatce 3, nie trafimy w piłkę. Jak można się spodziewać po DQN, wartość Q przesunięcia łopatki do góry jest znacznie wyższa w porównaniu z innymi działaniami.
Ulepszenia DQN
Wiele ulepszeń zostało wprowadzonych do DQN. W tej sekcji pokażemy kilka metod, które pokazują znaczące ulepszenia.
Double DQN
W uczeniu Q, używamy następującego wzoru na wartość docelową dla Q.
Jednakże operacja max tworzy pozytywną stronniczość w stosunku do estymacji Q.
Z powyższego przykładu widzimy, że max Q(s, a) jest wyższe niż wartość zbieżna 1.0. tzn. operacja max przeszacowuje Q. Teoria i eksperymenty pokazują, że wydajność DQN poprawia się, jeśli używamy sieci online θ do chciwego wyboru akcji i sieci docelowej θ- do oszacowania wartości Q.
Prioritized Experience Replay
DQN równomiernie próbkuje przejścia z bufora powtórek. Powinniśmy jednak zwracać mniejszą uwagę na próbki, które są już blisko celu. Powinniśmy próbkować przejścia, które mają duży odstęp od celu:
W związku z tym możemy wybierać przejścia z bufora
na podstawie wartości błędu powyżej (częściej wybierać przejścia z większym błędem), lub
uszeregować je według wartości błędu i wybierać według rangi (częściej wybierać te z większą rangą).
Szczegóły równań dotyczących próbkowania danych można znaleźć w dokumencie Prioritized Experience Replay.
Dueling DQN
W Dueling DQN, Q jest obliczane za pomocą innej formuły poniżej z funkcją wartości V i zależną od stanu funkcją przewagi akcji A poniżej:
Źródło Zamiast uczyć Q, używamy dwóch oddzielnych głowic do obliczania V i A. Eksperymenty empiryczne pokazują poprawę wydajności. DQN aktualizuje funkcję wartości Q stanu tylko dla określonej akcji. Dueling DQN aktualizuje V, z którego mogą korzystać również inne aktualizacje Q(s, a’). Tak więc każda iteracja szkolenia Dueling DQN ma większy wpływ.
Noisy Nets for Exploration
DQN używa ϵ-greedy do wyboru działań. Alternatywnie, NoisyNet zastępuje ją poprzez dodanie parametrycznego szumu do warstwy liniowej, aby wspomóc eksplorację. W NoisyNet, ε-greedy nie jest używana. Używa on metody zachłannej do wyboru działań z funkcji wartości Q. Ale dla w pełni połączonych warstw aproksymatora Q, dodajemy trenowalny szum parametryczny poniżej, aby zbadać działania. Dodanie szumu do głębokiej sieci jest często równoważne lub lepsze niż dodanie szumu do akcji, jak w metodzie ϵ-greedy.
Źródło Więcej myśli
DQN należy do jednej z ważnych klas RL, a mianowicie uczenia wartości. W praktyce często łączymy gradienty polityki z metodami uczenia wartości w rozwiązywaniu rzeczywistych problemów.
.
Leave a Reply