OpenAI Gym Adam Szczepaniak, Kamil Walkowiak
Plan prezentacji Programowanie agentowe Uczenie przez wzmacnianie i problemy związane z rozwojem algorytmów Charakterystyka OpenAI Gym Biblioteka gym Podsumowanie
Programowanie agentowe wyższy poziom abstrakcji programowania niż programowanie obiektowe polega na tworzeniu agentów każdy z agentów jest przygotowany na otrzymanie błędnych danych od innego agenta powielanie tych samych obliczeń przez wielu agentów jest zjawiskiem pożądanym systemy agentowe przystosowane są do uruchamiania dużych lub niepewnych środowiskach system agentowy często zwraca wynik przybliżony lub obarczony pewnym prawdopodobieństwem błędu systemy wieloagentowe = połączenie wielu agentów
Uczenie przez wzmacnianie (Reinforcement Learning, RL) zainspirowane psychologią behawioralną metoda wyznaczania optymalnej polityki sterowania przez agenta w nieznanym środowisku na podstawie interakcji z tym środowiskiem agent opiera decyzję na podstawie sygnału wzmocnienia sygnał osiąga wysoką wartość (nagrodę), gdy agent podejmuje poprawne decyzje lub niską (karę), gdy podejmuje decyzje błędnie
Problemy związane z rozwojem algorytmów RL potrzeba większej liczby środowisk open-source brak standaryzacji środowisk
OpenAI Gym Zestaw narzędzi pozwalający na rozwijanie i porównywanie algorytmów uczenia maszynowego z kategorii uczenia przez wzmacnianie.
OpenAI Gym - główne cechy non-profit w wersji beta (od kwietnia 2016) wsparcie dla języka Python (planowane wsparcie dla innych języków) brak jakichkolwiek założeń co do struktury agentów kompatybilny z wieloma bibliotekami numerycznymi (np. TensorFlow, Theano) wiele wersjonowanych środowisk o wspólnym interfejsie prosty sposób rejestracji i udostępniania uzyskanych wyników
OpenAI Gym - cele udostępnienie dużej bazy środowisk open-source standaryzacja środowisk używanych w algorytmach stworzenie otwartej biblioteki zawierającej działające rozwiązania umożliwienie łatwej reprodukcji uzyskanych wyników większe skupienie na współpracy w procesie ulepszania rozwiązań niż rywalizacji
OpenAI Gym - struktura 1. Biblioteka gym (open-source): przeznaczona dla języka Python zestaw testowych problemów (środowisk), które mogą zostać użyte w procesie treningu algorytmu środowiska współdzielą jeden interfejs, co pozwala na większą generalizację implementacji 2. Serwis OpenAI Gym: strona i API pozwalające na udostępnianie i szczegółowe porównywanie wyników osiąganych przez wytrenowanych agentów
OpenAI Gym - workflow 1. Implementacja algorytmu uczenia przez wzmacnianie (od podstaw lub ulepszając istniejące rozwiązanie) 2. Przeprowadzenie symulacji w wybranym środowisku 3. Upload uzyskanych wyników dla danego środowiska wraz z kodem pozwalającym na uzyskanie wyniku 4. Weryfikacja wyniku przez innych użytkowników i umieszczenie na liście potwierdzonych wyników dla danego środowiska. Rozwiązanie powinno stanowić nowe podejście do tematu (nowy lub ulepszony algorytm). Rozwiązania specyficzne dla środowiska nie są akceptowane
OpenAI Gym - przykładowe środowiska
Przykładowe środowiska CartPole-v0 - http://bit.ly/2gnnu8b DoomBasic-v0 - http://bit.ly/2h4j0go BipedalWalkerHardcore-v2 - http://bit.ly/2haep4b LunarLander-v2 - http://bit.ly/2hkyizg
Cechy środowiska jednolity interfejs powtarzalność uzyskanie informacji na temat struktury obiektów środowiska (krok, obserwacja) system nagród odczyt bieżącego stanu dodatkowe informacje pomocnicze (debugowanie)
Przykładowy kod
Pomiary kod programu definiuje zadanie większość zadań składa się z epizodów każdy epizod ma zdefiniowany stan zakończenia każde zadanie/epizod składa się z czynności renderowania środowiska oraz wykonywania kroków każdy krok zwraca 4 parametry pozwalające go ocenić
Parametry oceny kroku obserwacja (object) - obiekt reprezentujący stan środowiska, np. informację o pikselu z kamery, kąty i prędkości robota itp. Struktura obiektu jest zależna od środowiska nagroda (float) - wartość nagrody za poprzednią akcję, zakres wartości jest zależny od środowiska, ale zawsze należy ją maksymalizować zakończone (boolean) - wartość określająca, czy epizod został zakończony info (dict) - słownik wartości pomocniczych przy debugowaniu, są to wartości, które nie mogą być wykorzystywane przez algorytm (np. prawdopodobieństwa)
Przykładowe wartości obserwacji http://bit.ly/2h4 YuKq
Jak poznać strukturę kroku i obserwacji? Każde środowisko zawiera w sobie informację na temat zakresu możliwych wartości kroku oraz obserwacji. Informacje te znajdują się w klasie Space. Wykorzystanie tych informacji pozwala stworzyć algorytmy, które mogą być wykorzystywane w różnych środowiskach.
Cel Dla większości środowisk zdefiniowany jest próg funkcji celu, od którego zadanie uznaje się za rozwiązane. W tym przypadku rezultat oceniany jest za pomocą liczby wykonanych kroków. Jednakże istnieją także środowiska (trudne), dla których nie została jeszcze zdefiniowana wartość progowa. Dla tych środowisk wynik stanowi wartość osiągniętej funkcji celu.
Porównywanie wyników Jednym z głównych celów omawianego narzędzia jest publikacja i porównywanie wyników. Proces zbierania pomiarów, rejestracji symulacji oraz samej publikacji został zautomatyzowany w ramach biblioteki.
Podsumowanie OpenAI Gym - darmowa platforma wspierająca rozwój algorytmów RL biblioteka gym dostarcza bogatą bazę środowisk o ustandaryzowanym sposobie interakcji ciekawy sposób testowania i symulacji algorytmów dostępne API oraz strona internetowa w celu udostępniania i porównywania wyników uzyskanych dla konkretnych środowisk społeczność współtworząca uniwersalne algorytmy do powszechnego wykorzystania
Dziękujemy za uwagę! Pytania?