• Nie Znaleziono Wyników

Uczenie ze wzmocnieniem

N/A
N/A
Protected

Academic year: 2021

Share "Uczenie ze wzmocnieniem"

Copied!
10
0
0

Pełen tekst

(1)

1

KATEDRA SYSTEMÓW MULTIMEDIALNYCH

LABORATORIUM INTELIGENTNYCH SYSTEMÓW DECYZYJNYCH

Ćwiczenie nr 8:

Uczenie ze wzmocnieniem

Opracowanie: mgr inż. Adam Kurowski

1. WPROWADZENIE

Istnieje szczególna klasa problemów, która przy próbie rozwiązania jej za pomocą algorytmów uczenia maszynowego wymaga specjalnego podejścia. Jest to grupa zagadnień, do których rozwiązania konieczne jest opracowanie strategii interakcji z jakimś obiektem. Obiektem takim może być na przykład urządzenie obrabiane w fabryce przez ramię robota, albo gra komputerowa, w którą projektowany przez nas algorytm ma grać. Zagadnienia te charakteryzują się tą cechą, że algorytm musi nauczyć się wchodzić w interakcję ze

środowiskiem – np. z obiektami obrabianymi w fabryce, czy z grą komputerową. Na podstawie

szeregu takich interakcji algorytm ten uczy się strategii postępowania. W układzie takim często algorytm nazywany jest agentem. Zależność tę można zilustrować za pomocą następującego diagramu.

(2)

Agent oddziałuje na środowisko poprzez podejmowanie akcji. Środowisko pod wpływem akcji zmienia swój stan – na przykład pokonany zostaje przeciwnik w grze komputerowej i zwiększa się liczba punktów zdobyta przez gracza. Jako informacja zwrotna do agenta wysyłany jest tzw. sygnał nagrody, który ilustruje skutek działania decyzji i obserwacja stanu środowiska.

Agent dąży do zmaksymalizowania sumy nagród w trakcie szeregu akcji stanowiących interakcję ze środowiskiem. Taki szereg interakcji zwykle nazywany bywa epizodem, albo po prostu iteracją algorytmu uczenia ze wzmocnieniem. Ważne jest także rozróżnienie pomiędzy

obserwacją stanu środowiska, a samym stanem środowiska - w ogólności obserwacja może

zawierać tylko część informacji ze środowiska lub nawet może być losowo przekłamana. To, czy tak jest zależy zwykle od typu zagadnienia, ale często w prawdziwych zastosowaniach agent nie ma całkowitej wiedzy o stanie środowiska (np. zagadnienia nawigowania przez robota w nieznanym otoczeniu). Agent pozyskuje wiedzę na podstawie obserwacji stanu środowiska i na tej podstawie podejmuje szereg decyzji o interakcji z nim. Eksploruje on w ten sposób różne sposoby interakcji ze środowiskiem Następnie wzmacnia (w takim sensie, że chętniej i częściej je stosuje) on te sposoby postępowania, które prowadzą do zmaksymalizowania sumy nagród, jaką algorytm otrzymuje ze środowiska. Dlatego właśnie klasa problemów, którymi zajmujemy się w ćwiczeniu nazywana jest uczeniem ze

wzmocnieniem (ang. reinforcement learning).

Istnieje wiele różnych podejść do realizacji sposobu interakcji i nauki przez agenta odpowiedniej strategii funkcjonowania w zadanym otoczeniu. W tym ćwiczeniu zapoznamy się z podejściem klasycznym – tzw. Q-learningiem oraz jego modyfikacją -głębokimi Q-sieciami (ang. deep Q-networks, DQN) .

2. Q-learning

Q-learning to podejście polegające na interakcji z otoczeniem i szacowanie wartości każdej z możliwych do podjęcia akcji. Wartość ta (ang. quality – stąd Q) pozwala na stosowanie bardzo prostego sposobu podejmowania decyzji przez algorytmu uczenia wzmacnianego. Starczy wybrać taką akcję, która w zapiskach algorytmu ma najwyższą wartość Q. Interpretacja tej wartości to spodziewana nagroda, jaką agent otrzyma za podjęcie tej akcji i za podjęcie

(3)

3 kolejnych decyzji w kolejnych stanach które nastąpią po niej. W ten sposób algorytm bierze pod uwagę także przyszłe możliwe nagrody.

Wartości Q przechowywane są w macierzy, która w programie komputerowym zwykle ma postać wielowymiarowej tablicy której indeksy identyfikują wszystkie możliwe stany środowiska i wszystkie możliwe do podjęcia akcje. Po podaniu stanu i akcji macierz ta udziela odpowiedzi, jaka wartość Q jest z nimi związana, czyli innymi słowy – jak wartościowa jest ta akcja w kontekście stanu w którym obecnie znajduje się środowisko. Przykładowa macierz Q oraz proste środowisko przedstawione są na rysunku 2.

Rys. 2. Ilustracja tego, jak macierz Q-wartości (po lewej) koresponduje z przykładowym środowiskiem (po prawej) .

Środowisko z rysunku 2 ma następujące zasady – należy przemieścić się z punktu S (startowego) do punktu K (końcowego). Można poruszać się tylko w 4 kierunkach (góra, dół, prawo, lewo). Dodatkowo każda akcja musi prowadzić do zmniejszenia odległości pomiędzy obecnym położeniem agenta a polem oznaczonym literą K. Odległość ta jest liczona w dystansie Manhattan, czyli najmniejszej liczbie pól, przez którą trzeba przejść mając możliwość poruszania się właśnie w 4 dopuszczonych w opisywanym środowisku kierunkach.

Wszystkie niemożliwe akcje oznaczone są wartością −∞, co oznacza, że algorytm nigdy tych akcji nie wykona, bo wartość ta zawsze będzie mniejsza od dowolnej innej wartości nierównej nieskończoności. Pozostałe możliwości stanowią podstawę do decyzji o poruszaniu się po środowisku aby dotrzeć do punktu K. Epizod kończy się w momencie dotarcia do tego punktu. Po analizie macierzy Q można dojść do wniosku, że optymalną ścieżką poruszania się w

(4)

środowisku jest ta oznaczona seledynową strzałką na schemacie środowiska po prawej stronie.

W praktyce zazwyczaj macierz Q-wartości inicjalizowana jest jako macierz złożona z samych zer, a następnie w miarę interakcji algorytmu ze środowiskiem uaktualniana ona jest zgodnie z tzw. równaniem Bellmana:

𝑄𝑛+1(𝑠, 𝑎) = 𝑄𝑛(𝑠, 𝑎) + α ⋅ [r + γ ⋅ max 𝑎𝑛+1

{𝑄𝑛(𝑠𝑛+1, )} − 𝑄(𝑠, 𝑎)], (1)

gdzie:

𝑄𝑛(𝑠, 𝑎) – to obecna wartość Q dla stanu s i akcji a, 𝑄𝑛+1(𝑠, 𝑎) – to przyszła wartość Q,

α – to współczynnik szybkości nauko (ang. learning rate) γ – to współczynnik dyskontowania,

𝑠𝑛+1 to przyszły stan, który nastąpi po stanie s przy podjęciu akcji a,

𝑎𝑛+1 to akcja możliwa do podjęcia w przyszłym stanie 𝑠𝑛+1.

Współczynnik dyskontowania γ opisuje jak bardzo algorytm wartościuje potencjalne nagrody w przyszłości, wartości bliskie 1 sprawiają że algorytm traktuje je tak samo jak nagrody otrzymywane natychmiastowo, a bliskie 0 sprawia że algorytm priorytetyzuje „natychmiastowy zysk” i mniejszą wagę przykłada do potencjalnych nagród możliwych do uzyskania w przyszłości.

Poprawka zgodna z równaniem Bellmana jest aplikowana po każdym kroku interakcji ze środowiskiem. Jej stosowanie gwarantuje zbieżność macierzy Q to macierzy wartości reprezentujących optymalną strategię interakcji ze środowiskiem. Dodatkowo, aby uchronić algorytm od jedynie „bezpiecznego” wchodzenia w interakcję z otoczeniem, czyli takiego które jest już znane algorytmowi często wprowadza się współczynnik 𝜖 . Oznacza on prawdopodobieństwo, że zamiast akcji wynikającej z maksymalnej wartości Q w danym kroku algorytm po prostu wylosuje następną akcję. Postępowanie takie sprawia, że agent zaczyna

eksplorować środowisko i uczyć się nowych, nieznanych mu własności środowiska. Strategię

taką nazywamy strategią 𝜖-chciwą (ang. 𝜖-greedy). Częstą praktyką w treningu algorytmów uczenia wzmacnianego jest rozpoczynanie treningu z wysoką wartością ϵ i niską

(5)

5 3. Głębokie Q-sieci (ang. Deep Q-networks, DQN)

Q-learning bazujący na macierzy wartości Q ma swoje wady – często trening jest powolny, a do tego można w ten sposób przetwarzać jedynie obserwacje zawierające zmienne o skończonej liczbie wartości, co wynika z faktu, że każda taka wartość musi odpowiadać wartości indeksu w macierzy. Jest to bardzo duże ograniczenie które sprawia także, że oryginalny Q-learning nadaje się jedynie do zarządzania interakcją jedynie z bardzo prostymi środowiskami. Istnieje jednak możliwość sprawienia, że szacowanie wartości Q będzie się odbywać dla ciągłych zmiennych opisujących stan środowiska. Zamiast macierzy można zastosować sieć neuronową która jako wejście przyjmuje stan środowiska oraz akcję, a jako wyjście podaje wartość Q. Trening sieci odbywa się podobnie jak trening dowolnej innej sieci mającej za zadanie przybliżanie nieznanej funkcji. W tym przypadku jest to funkcja mapująca parę (stan, akcja) na wartość Q.

Pewną techniczną koniecznością w przypadku używania sieci neuronowej zamiast macierzy jest stosowanie tzw. pamięci powtórek (ang. replay memory). Przechowuje ona wszystkie podjęte w przeszłości przez agenta decyzje wraz ze stanem środowiska i nagrodami. To z kolei pozwala na „przemieszanie” przykładów podejmowania decyzji przed podaniem ich na algorytm trenujący sieć neuronową. To pozwala z kolei na znaczne poprawienie zbieżności algorytmu i przyspieszenie treningu.

Algorytmu uczenia wzmacnianego bazujące na sieciach neuronowych sprawdziły się między innymi w sterowaniu agentami grającymi w gry z komputera Atari, czy też w bardzo skomplikowane gry takie jak League of Legends - system OpenAI Five:

https://openai.com/projects/five/

czy też Starcraft II (system AlphaStar):

https://deepmind.com/blog/article/alphastar-mastering-real-time-strategy-game-starcraft-ii

Częstym środowiskiem do trenowania agentów uczenia wzmacnianego, w tym tych opartych o zastosowanie sieci neuronowych jest środowisko OpenAI Gym (https://gym.openai.com/). Przykład gry Atari, która została przekształcona w środowisko do trenowania algorytmów można zobaczyć na rysunku 3.

(6)

Rys. 3. Przykład skomplikowanego środowiska, które jest przystosowane w bibliotece OpenAI Gym do działania jako środowisko dla agentów uczenia wzmacnianego – gra Space Invaders na komputer Atari (źródło: https://en.wikipedia.org/wiki/Space_Invaders)

4. Przebieg ćwiczenia

Do realizacji ćwiczenia wykorzystane zostanie środowisko Google Colab, które umożliwia uruchamianie notatników Jupytera (ang. Jupyter Notebooks). Kod w takich notatnikach pisany jest w języku programowania Python i podzielony jest na osobno uruchamiane fragmenty, możliwe jest także komentowanie kodu w ładny wizualnie sposób. Wygląd interfejsu pokazany jest na rysunku 4.

(7)

7 Polecenia do wykonania w ramach ćwiczenia zamieszczone są bezpośredni w kolejnych notatnikach

Linki do dokumentów Jupytera znajdują się poniżej: ➢ Zadanie 1

➢ Zadanie 2

➢ Zadanie 3

Opisy w dalszej części instrukcji są także zamieszczone w dokumentach, do których hiperłącza są podane powyżej. Sprawozdanie należy wykonać w formie elektronicznej i wysłać na serwer sprawozdaniowy Katedry Systemów Multimedialnych.

Zadanie nr 1

link:

https://colab.research.google.com/drive/1jWr7b_r9LAaGIiM9L_r-czHh2FVJkhp-Polecenie 1.1

Spróbuj teraz przygotować analogiczny skrypt, ale wykorzystujący środowisko Mountain Car (link do potrzebnej dokumentacji) Kod realizujący to zadanie zamieść w sprawozdaniu z ćwiczenia (pomiń komentarze).

Jakie różnice pomiędzy środowiskami Cart Pole i Mountain Car mogą być najbardziej istotne z punktu agenta sterującego wózkiem w Cart Pole lub pojazdem w Mountain Car? Odpowiedź zapisz w sprawozdaniu.

Polecenie 1.2

W zdaniu wykorzystujemy dość proste środowiska, co jest koniecznością ze względu na fakt ograniczonej mocy obliczeniowej maszyn wirtualnych Colaba i długotrwałym treningiem algorytmów uczenia wzmacnianego w przypadku gdy korzystamy z bardziej złożonych środowisk.

W sieci jest jednak wiele przykładów wykorzystania algorytmów uczenia wzmacnianego (w tym tych uruchamianych w Colabie) do takich zadań jak np. granie w gry z komputera Atari. W takich bardziej skomplikowanych przypadkach często sami musimy definiować sobie jak wygląda przestrzeń akcji, stanów środowiska itp. W tym podpunkcie spróbujemy

(8)

przeanalizować przykładowe środowisko bazujące na grze na komputer Atari (link do dokumentacji)

Wejdź do dokumentacji biblioteki OpenAI Gym i wybierz sobie środowisko inne od dwóch przedstawionych w tym ćwiczeniu (może być dowolne). Zapoznaj się z jego dokumentacją i postaraj się na podstawie opisu środowiska przewidzieć:

1. jakie zmienne składają się na stan środowiska (np. odległość od przeciwnika), 2. jakie są możliwe decyzje do podjęcia przez algorytm (np. ruch w lewo lub w prawo) 3. jaki jest warunek zakończenia pojedynczej interakcji algorytmu ze środowiskiem (np.

skończenie się czasu rozgrywki) Odpowiedzi zapisz w sprawozdaniu.

Zadanie nr 2

link: https://colab.research.google.com/drive/10jPRj7qnoCK5xH-qJNoncUCnhv47Pu5M

Polecenie 2.1

Wytrenuj agenta do interakcji ze środowiskiem Cart Pole. Na początku ustaw nastawy treningu tak, aby przeważała eksploracja, a z kolejnymi wykonaniami (np w "paczkach" po 50 iteracji) zwiększaj stopniowo współczynnik nauki alpha_cp (np. startując z 0.25 a kończąc na 0.95) i zmniejszaj współczynnik eksploracji epsilon_cp(np. startując z 0.8, a ostatecznie kończąc na 0).

W trakcie kolejnych etapów dotrenowywania agenta sprawdzaj jego faktyczne zachowanie za pomocą komórki do podglądu jego obecnego sposobu interakcji ze środowiskiem - dla jakiego etapu treningu (nr iteracji, wartości nagrody na wykresie) jego zachowanie zaczyna być skuteczne?

W sprawozdaniu zamieść wygenerowany wykres nagrody w funkcji kolejnych iteracji i opisz, jak przebiegał trening - ile wykonań komórki treningowej i z jakimi parametrami (wsp. nauki, wsp. eksploracji).

Jak myślisz - dlaczego tak istotne jest wprowadzenie losowej eksploracji do zachowania agenta? Odpowiedź zamieść w sprawozdaniu.

Polecenie 2.2

Sprawdź jak na proces treningu wpływają inne wartości liczby przedziałów dyskretyzacji (buckets_cp) i współczynnika gamma, wnioski opisz w sprawozdaniu.

(9)

9 Polecenie 2.3

Podobnie jak w poleceniu 2.1, spróbuj wytrenować algorytm. Rozpocznij trening przy wyłączonej pomocy w eksploracji środowiska (help_agent_with_exploration). Czy algorytm jest w stanie czegoś się nauczyć w takim przypadku? Sprawdź, czy trening jest w stanie postępować i jak wygląda zachowanie agenta na wizualizacji. Po sprawdzeniu tych kwestii można zaprzestać treningu i przejść do następnego polecenia.

Polecenie 2.4

Teraz wytrenuj agenta z włączoną pomocą w eksploracji środowiska (help_agent_with_exploration ustawione na wartość True). Jak teraz wygląda proces treningu i zachowanie agenta? Wytrenuj agenta (może być konieczne silniejsze manipulowanie współczynnikiem eksploracji i współczynnikiem nauki) tak, aby wjechał on na wzgórze na którym jest meta. Do sprawozdania wklej wygenerowany wykres z ilustrację zmian nagrody w funkcji kolejnych iteracji treningu. Podobnie jak w przypadku środowiska Cart Pole sprawdź jak sposób dyskretyzacji i wsp. gamma wpływają na proces nauki. Wnioski opisz w sprawozdaniu.

W sprawozdaniu opisz, dlaczego Twoim zdaniem trening algorytmu stał się możliwy dopiero po włączeniu mechanizmu nagradzającego agenta za pośrednie kroki prowadzące do dotarcia do mety? Czy przychodzi Ci na myśl przykład innego środowiska, w którym także występuje kłopot z trudnością w jego eksploracji?

Polecenie 2.5

Dość łatwo zrozumieć dlaczego sposób przydzielania nagrody może polegać na przykład na uzyskiwaniu punktów za wykonanie jakiegoś działania - na przykład pokonanie wrogiej jednostki w grze Space Invaders. Jednak przyznawanie stałej nagrody w przypadku Cart Pole i Mountain Car może się wydawać nielogiczne - jak myślisz, dlaczego co krok przyznawana jest stała wartość? Dlaczego w przypadku Cart Pole jest to wartość dodatnia a w przypadku Mountain Car ujemna?

(10)

Zadanie nr 3

link: https://colab.research.google.com/drive/1RjwGAW5WAKRLrruTsorbCScY6moWmQ6S

Polecenie 3.1

Wytrenuj sieć DQN za pomocą skryptów powyżej (z domyślnymi nastawawmi). Następnie spróbuj zmienić ilości neuronów (wypróbuj np. wartości 25, 50 i 100) w warstwach i sprawdź czy wpływa to na przykład na to w jakiej iteracji algorytm osiąga wartość nagrody większą lub równą 200 (skrypt sam to sprawdza - pod wykresem jest podana odpowiednia informacja). Wykres treningu, ostateczne ilości neuronów i wnioski zamieść w sprawozdaniu.

Polecenie 3.2

Wytrenuj sieć DQN za pomocą skryptów powyżej. Wykorzystaj parametry sieci znalezione w poprzednim punkcie. Następnie dokonaj treningu bez wykorzystania pamięci powtórek (wskazówki znajdują się w komentarzach komórki dokonującej treningu). W jaki sposób zastosowanie pamięci powtórek wpływa na proces uczenia? W sprawozdaniu oprócz wniosków zamieść także wykres ilustrujący zachowanie się algorytmu z i bez pamięci powtórek.

Wskazówka: Zwróć też uwagę na to, jak wraz z postępem treningu zmieniają się czasy wykonania treningu wykorzystującego pamięć powtórek (konkretnie - interesująco zmienia się czas trwania ostatniej iteracji).

Polecenie 3.3

Jakie zalety i wady względem podejścia klasycznego (Q-learningu) ma podejście wykorzystujące sieć DQN? Odpowiedź zamieść w sprawozdaniu.

Cytaty

Powiązane dokumenty

Zaznaczyć trzeba, że właściwie wystawa ta została otwarta 15 stycznia, czyli wtedy, gdy publiczność została wpuszczona do galerii, w której nie było dzieł – byli tylko

Przedstawiona poniżej analiza przyjętego w pracy pojęcia <<więzi społecznej>> rozumianej jako zorganizowany system stosunków, instytucji, środków kontroli

Wprowadzenie Uczenie agenta Podsumowanie Uczenia metodą prób i błędów Zarys modelu Przykład – Frozen-Lake Wprowadzenie Zarys modelu Stan.. Stan s ∈ S jest kompletnym

Distributions for a Four-Bladed Propulsor Operating at = 0.573 blade-angle motions shows that the am- plified cycloidal motion allows a small- er overall unit to be specified

In this section we discuss the viability of using our machine learning approach to the problem of reliable identification of phase discontinuities, when applied not only

Włodzimierz Stawiski Wpływ form organizacyjnych ćwiczeń z technicznych środków nauczania na kształtowanie umiejętności.. manualnych studentów

W skazań tych jest jednak mało, bo­ wiem autor zastrzega się, że k w esti organizacyjne należy pozo­ staw ić duszpasterzom licząc na ich inw encję

Z definicji legalnej wynika, że mobbing to zachowania: 1) dotyczące pra­ cownika lub skierowane przeciwko pracownikowi, 2) polegające na uporczy­ wym i długotrwałym