Q Nauka: Wszystko, co musisz wiedzieć o uczeniu się ze wzmocnieniem



Ten artykuł zawiera szczegółową i wszechstronną wiedzę na temat Q-learningu poprzez piękną analogię do uczenia się ze wzmocnieniem poprzez kod Pythona.

i to kilka domen, które należą do najpopularniejszych modnych słów w branży i nie bez powodu. Sztuczna inteligencja stworzy 2,3 miliona miejsc pracy do 2020 roku, biorąc pod uwagę, że jej głównym celem jest umożliwienie maszynom naśladowania ludzkich zachowań. Dziwne, prawda? Dlatego dzisiaj omówimy Q Learning, element składowy uczenia się ze wzmocnieniem w następującej kolejności:

Co to jest uczenie się ze wzmocnieniem?

Spójrzmy na nasze codzienne życie. Wykonujemy wiele zadań w środowisku i niektóre z nich przynoszą nam korzyści, a inne nie. Ciągle szukamy różnych ścieżek i staramy się dowiedzieć, która ścieżka doprowadzi do nagród i na podstawie naszych działań doskonalimy nasze strategie osiągania celów. To moi przyjaciele to jedna z najprostszych analogii uczenia się ze wzmocnieniem.





Kluczowe obszary zainteresowań:

  • Środowisko
  • Akcja
  • Nagroda
  • Stan

uczenie się ze wzmocnieniem - q learning



Uczenie się ze wzmocnieniem to gałąź uczenia maszynowego, która umożliwia systemom uczenie się na podstawie wyników własnych decyzji. Rozwiązuje szczególny problem, w którym podejmowanie decyzji jest sekwencyjne, a cel jest długoterminowy.

Proces Q-Learning

Zrozummy, czego uczy się Q dzięki naszemu opisowi problemu. Pomoże nam zdefiniować główne składniki rozwiązania uczenia się przez wzmacnianie, tj. Agentów, środowisko, działania, nagrody i stany.

Analogia do fabryki samochodów:



Jesteśmy w fabryce samochodów wypełnionej robotami. Roboty te pomagają pracownikom Fabryki, przenosząc niezbędne części potrzebne do złożenia samochodu. Te różne części znajdują się w różnych miejscach w fabryce na 9 stacjach. Części obejmują podwozie, koła, deskę rozdzielczą, silnik i tak dalej. Factory Master nadał priorytet lokalizacji, w której instalowana jest obudowa, jako najwyższy priorytet. Rzućmy okiem na konfigurację tutaj:

transformacja czynna i pasywna w informatyce

Stany:

Lokalizacja, w której robot jest obecny w określonej instancji, nazywana jest jego stanem. Ponieważ łatwo jest go zakodować, zamiast zapamiętywać go z nazw. Zmapujmy lokalizację na liczby.

Działania:

Akcje to nic innego jak ruchy robotów w dowolne miejsce. Rozważmy, że robot znajduje się w lokalizacji L2, a bezpośrednie lokalizacje, do których może się przenieść, to L5, L1 i L3. Zrozummy to lepiej, jeśli wizualizujemy to:

Nagrody:

Nagroda zostanie przyznana robotowi za bezpośrednie przejście z jednego stanu do drugiego. Na przykład możesz dotrzeć do L5 bezpośrednio z L2 i odwrotnie. Tak więc w obu przypadkach zostanie przyznana nagroda w wysokości 1. Spójrzmy na tabelę nagród:

Pamiętaj, kiedy kierownik fabryki nadał priorytet lokalizacji podwozia. To był poziom 7, więc uwzględnimy ten fakt w naszej tabeli nagród. Dlatego przypiszemy bardzo dużą liczbę (w naszym przypadku 999) do lokalizacji (L7, L7).

obsługa plików w przykładzie java

Równanie Bellmana

Teraz załóżmy, że robot musi przejść z punktu A do B. Wybierze ścieżkę, która przyniesie pozytywną nagrodę. W tym celu załóżmy, że zapewniamy nagrodę w postaci śladu po nim.

Ale co, jeśli robot wystartuje gdzieś pomiędzy, gdzie widzi dwie lub więcej ścieżek. Robot nie może więc podjąć decyzji, a dzieje się tak głównie dlatego, że nie posiada pliku pamięć . Tutaj pojawia się równanie Bellmana.

V (s) = max (R (s, a) + & # 120632V (s ”))

Gdzie:

  • s = określony stan
  • a = akcja
  • s '= stan, do którego robot przechodzi z s
  • & # 120632 = współczynnik dyskontowy
  • R (s, a) = funkcja nagrody, która przyjmuje stan (y) i działanie (a) i wyprowadza wartość nagrody
  • V (s) = wartość bycia w określonym stanie

Teraz blok poniżej miejsca docelowego będzie miał nagrodę w wysokości 1, co jest najwyższą nagrodą, ale co z drugim blokiem? Cóż, w tym miejscu pojawia się czynnik dyskontowy. Przyjmijmy współczynnik dyskontowy 0,9 i wypełnijmy po kolei wszystkie bloki.

Proces decyzyjny Markowa

Wyobraź sobie, że robot znajduje się na pomarańczowym bloku i musi dotrzeć do celu. Ale nawet jeśli wystąpi niewielka dysfunkcja, robot nie będzie wiedział, którą ścieżkę wybrać, zamiast jechać w górę.

Dlatego musimy zmodyfikować proces podejmowania decyzji. Musi Częściowo losowe i Częściowo pod kontrolą robota . Częściowo losowo, ponieważ nie wiemy, kiedy robot przestanie działać, a częściowo pod kontrolą, ponieważ to nadal decyzja robota. I to stanowi podstawę procesu decyzyjnego Markowa.

Proces decyzyjny Markowa (MDP) jest stochastycznym procesem sterowania w czasie dyskretnym. Zapewnia matematyczne ramy modelowania procesu podejmowania decyzji w sytuacjach, w których wyniki są częściowo losowe, a częściowo kontrolowane przez decydenta.

Więc użyjemy naszego oryginalnego równania Bellmana i dokonamy w nim zmian. To, czego nie wiemy, to następny stan, tj. s ”. To, co wiemy, to wszystkie możliwości zwrotu i zmieńmy Równanie.

V (s) = max (R (s, a) + & # 120632 V (s ”))

V (s) = max (R (s, a) + & # 120632 & Sigmas ”P (s, a, s ”) Vs'))

P (s, a, s ”): Prawdopodobieństwo przejścia ze stanu s do s ” z działaniem do

& Sigmas ”P (s, a, s ”) Vs '): Oczekiwania losowości robota

V (s) = max (R (s, a) + & # 120632 ((0,8 V (pokójw górę)) + (0,1 V (pokójna dół) +….))

Teraz przejdźmy do Q Learning. Q-learning to raczej idea oceny jakości działania podejmowanego w celu przejścia do stanu, a nie określenia możliwej wartości stanu, do którego jest przenoszony.

To właśnie otrzymamy, jeśli włączymy ideę oceny jakości działań zmierzających do przejścia do określonego stanu. Ze zaktualizowanego równania Bellmana, jeśli je usuniemy max składnik, zakładamy tylko jeden ślad dla możliwego działania, który jest niczym innym jak plikiem Jakość działania.

Q (s, a) = (R (s, a) + & # 120632 & Sigmas ”P (s, a, s ”) Vs'))

W tym równaniu, które określa ilościowo jakość działania, możemy założyć, że V (s) jest maksimum ze wszystkich możliwych wartości Q (s, a). Zastąpmy więc v (s ') funkcją Q ().

Q (s, a) = (R (s, a) + & # 120632 & Sigmas ”P (s, a, s ”) max Q (s ’, a’))

Jesteśmy o krok bliżej do naszego ostatecznego równania uczenia się Q. Zamierzamy wprowadzić Różnica czasowa obliczyć wartości Q w odniesieniu do zmian w środowisku w czasie. Ale jak obserwujemy zmianę w Q?

TD (s, a) = (R (s, a) + & # 120632 & Sigmas ”P (s, a, s ”) max Q (s ’, a’)) - Q (s, a)

Przeliczamy nowe Q (s, a) za pomocą tego samego wzoru i odejmujemy od niego wcześniej znane Q (s, a). Tak więc powyższe równanie staje się:

co robi .format w Pythonie

Qt(s, a) = Qt-1(s, a) + α TDt(s, a)

Qt(s, a) = Aktualna wartość Q

Qt-1(s, a) = Poprzednia wartość Q

Qt(s, a) = Qt-1(s, a) + α (R (s, a) + & # 120632 max Q (s ’, a’)-Qt-1(s, a))

Q Learning Demo: NumPy

Mam zamiar użyć NumPy, aby zademonstrować, jak działa Q Learning.

Krok 1: importy, parametry, stany, akcje i nagrody

import numpy as np gamma = 0,75 # Współczynnik rabatu alpha = 0,9 # Współczynnik uczenia location_to_state = {'L1': 0, 'L2': 1, 'L3': 2, 'L4': 3, 'L5': 4, ' L6 ': 5,' L7 ': 6,' L8 ': 7,' L9 ': 8} akcje = [0,1,2,3,4,5,6,7,8] nagrody = np.array ( [[0,1,0,0,0,0,0,0,0], [1,0,1,0,0,0,0,0,0], [0,1,0,0, 0,1,0,0,0], [0,0,0,0,0,0,1,0,0], [0,1,0,0,0,0,0,1,0] , [0,0,1,0,0,0,0,0,0], [0,0,0,1,0,0,0,1,0], [0,0,0,0, 1,0,1,0,1], [0,0,0,0,0,0,0,1,0]])

Krok 2: Mapowanie indeksów do lokalizacji

state_to_location = dict ((stan, lokalizacja) dla lokalizacji, stan w location_to_state.items ())

Krok 3: Uzyskaj optymalną trasę za pomocą procesu Q Learning

def get_optimal_route (lokalizacja_początkowa, lokalizacja_końcowa): rewards_new = np.copy (nagrody) end_state = lokalizacja_do_stanu [lokalizacja_końcowa] rewards_new [stan_końc., stan_końc.] = 999 Q = np.array (np.zeros ([9,9])) # Q- Proces uczenia się dla i w zakresie (1000): # Wybieranie losowego stanu current_state = np.random.randint (0,9) # Python wyklucza górną granicę playable_actions = [] # Iterowanie przez nową macierz nagród dla j in range ( 9): if rewards_new [current_state, j]> 0: playable_actions.append (j) # Wybierz losową akcję, która doprowadzi nas do następnego stanu next_state = np.random.choice (playable_actions) # Obliczanie różnicy czasowej TD = rewards_new [current_state , next_state] + gamma * Q [next_state, np.argmax (Q [next_state,])] - Q [current_state, next_state] # Aktualizacja wartości Q za pomocą równania Bellmana Q [current_state, next_state] + = alpha * TD # Zainicjuj optymalną trasę z początkową lokalizacją route = [start_location] # Inicjalizuj next_location z początkową lokalizacją next_location = star t_location # Nie znamy dokładnej liczby iteracji potrzebnych do osiągnięcia ostatecznej lokalizacji, dlatego pętla będzie dobrym wyborem do iteracji, podczas gdy (next_location! = end_location): # Pobierz stan początkowy start_state = location_to_state [start_location] # Pobierz najwyższą wartość Q dotyczącą stanu początkowego next_state = np.argmax (Q [stan_początkowy,]) # Mamy indeks następnego stanu. Ale potrzebujemy odpowiedniej litery. next_location = state_to_location [next_state] route.append (next_location) # Zaktualizuj lokalizację początkową dla następnej iteracji start_location = next_location trasa powrotna

Krok 4: Wydrukuj trasę

print (get_optimal_route ('L1', 'L9'))

Wynik:

Na tym kończymy Q-Learning. Mam nadzieję, że poznałeś działanie Q Learning wraz z różnymi zależnościami, takimi jak różnica czasowa, równanie Bellmana i wiele innych.

Edureka's sprawia, że ​​jesteś biegły w technikach, takich jak uczenie nadzorowane, uczenie się bez nadzoru i przetwarzanie języka naturalnego. Obejmuje szkolenia dotyczące najnowszych osiągnięć i podejść technicznych w dziedzinie sztucznej inteligencji i uczenia maszynowego, takich jak uczenie głębokie, modele graficzne i uczenie się ze wzmocnieniem.