Monte Carlo-metoder

Reinforcement Learning med Gymnasium i Python

Fouad Trad

Machine Learning Engineer

Repetition: modellbaserat lärande

 

  • Förlitar sig på kännedom om miljöns dynamik
  • Ingen interaktion med miljön

Bild som visar diagram över algoritmer för policyiteration och värdeiteration, som visades i föregående video.

Reinforcement Learning med Gymnasium i Python

Modellfritt lärande

 

  • Förlitar sig inte på kännedom om miljöns dynamik
  • Agenten interagerar med miljön
  • Lär sig en policy genom prövning och misstag
  • Mer lämpat för verkliga tillämpningar

Bild av en robot som interagerar med en schackmiljö.

Reinforcement Learning med Gymnasium i Python

Monte Carlo-metoder

  • Modellfria tekniker
  • Skattar Q-värden utifrån episoder

Bild som visar strukturen hos en insamlad episod, bestående av tillstånd, handlingar, belöningar och avkastningar.

Reinforcement Learning med Gymnasium i Python

Monte Carlo-metoder

  • Modellfria tekniker
  • Skattar Q-värden utifrån episoder

Bild som visar det andra steget: skattning av Q-värden och hur en Q-tabell ser ut, med ett antal rader lika med antalet tillstånd och ett antal kolumner lika med antalet handlingar.

Reinforcement Learning med Gymnasium i Python

Monte Carlo-metoder

  • Modellfria tekniker
  • Skattar Q-värden utifrån episoder

Bild som visar det sista steget: att härleda den optimala policyn, som i princip mappar varje tillstånd till den optimala handlingen.

  • Två metoder: first-visit, every-visit
Reinforcement Learning med Gymnasium i Python

Anpassad rutnätsvärld

Bild av den anpassade rutnätsvärlden med 6 tillstånd, 2 rader och 3 kolumner, numrerade från uppe till vänster (0) till nere till höger (5). Agenten befinner sig i tillstånd 3, ett berg i tillstånd 4 och målet i tillstånd 5.

Reinforcement Learning med Gymnasium i Python

Samla in två episoder

Bild som visar den första insamlade episoden med tillstånd, handlingar, belöningar och avkastningar.

Bild som visar den andra insamlade episoden med tillstånd, handlingar, belöningar och avkastningar.

Reinforcement Learning med Gymnasium i Python

Skatta Q-värden

Bild som visar tillstånd, handlingar, belöningar och avkastningar för de två episoderna.

  • Q-tabell: tabell för Q-värden

Bild som visar en tom Q-tabell som ska fyllas i.

Reinforcement Learning med Gymnasium i Python

Q(4, left), Q(4, up) och Q(1, down)

Bild som visar tillstånd, handlingar, belöningar och avkastningar för de två episoderna, med (4, left), (4, up) och (1, down) markerade.

  • (s,a) förekommer en gång -> fyll i med avkastning

Q-tabell med värdena för (4, left), (4, up) och (1, down) ifyllda.

Reinforcement Learning med Gymnasium i Python

Q(4, right)

Bild som visar tillstånd, handlingar, belöningar och avkastningar för de två episoderna, med (4, right) markerat i båda episoderna.

  • (s,a) förekommer en gång per episod -> medelvärde

Q-tabell med värdet för (4, right) ifyllt som medelvärdet av avkastningar från båda episoderna.

Reinforcement Learning med Gymnasium i Python

Q(3, right) – first-visit Monte Carlo

Bild som visar tillstånd, handlingar, belöningar och avkastningar för de två episoderna, med (3, right) markerat endast vid det första förekomsten i båda episoderna.

  • Medelvärde av första besöket till (s,a) inom episoder

Q-tabell med värdet för (3, right) ifyllt som medelvärdet av avkastningar från de markerade raderna (de första förekomsterna av (3, right)).

Reinforcement Learning med Gymnasium i Python

Q(3, right) – every-visit Monte Carlo

Bild som visar tillstånd, handlingar, belöningar och avkastningar för de två episoderna, med (3, right) markerat vid varje förekomst i båda episoderna.

  • Medelvärde av varje besök till (s,a) inom episoder

Q-tabell med värdet för (3, right) ifyllt som medelvärdet av avkastningar från de markerade raderna (varje förekomst av (3, right)).

Reinforcement Learning med Gymnasium i Python

Generera en episod

def generate_episode():
    episode = []
    state, info = env.reset()

terminated = False while not terminated: action = env.action_space.sample()
next_state, reward, terminated, truncated, info = env.step(action)
episode.append((state, action, reward)) state = next_state
return episode
Reinforcement Learning med Gymnasium i Python

First-visit Monte Carlo

def first_visit_mc(num_episodes):
    Q = np.zeros((num_states, num_actions))
    returns_sum = np.zeros((num_states, num_actions))
    returns_count = np.zeros((num_states, num_actions))

for i in range(num_episodes): episode = generate_episode() visited_states_actions = set()
for j, (state, action, reward) in enumerate(episode):
if (state, action) not in visited_states:
returns_sum[state, action] += sum([x[2] for x in episode[j:]])
returns_count[state, action] += 1 visited_states_actions.add((state, action))
nonzero_counts = returns_count != 0
Q[nonzero_counts] = returns_sum[nonzero_counts] / returns_count[nonzero_counts] return Q
Reinforcement Learning med Gymnasium i Python

Every-visit Monte Carlo

def every_visit_mc(num_episodes):
    Q = np.zeros((num_states, num_actions))
    returns_sum = np.zeros((num_states, num_actions))
    returns_count = np.zeros((num_states, num_actions))    

    for i in range(num_episodes):
        episode = generate_episode()  

        for j, (state, action, reward) in enumerate(episode):

            returns_sum[state, action] += sum([x[2] for x in episode[j:]])
            returns_count[state, action] += 1


    nonzero_counts = returns_count != 0
    Q[nonzero_counts] = returns_sum[nonzero_counts] / returns_count[nonzero_counts]
    return Q
Reinforcement Learning med Gymnasium i Python

Härleda den optimala policyn

def get_policy():
    policy = {state: np.argmax(Q[state]) for state in range(num_states)}    
    return policy
Reinforcement Learning med Gymnasium i Python

Sätta ihop delarna

Q = first_visit_mc(1000)

policy_first_visit = get_policy()
print("First-visit policy: \n", policy_first_visit)
Q = every_visit_mc(1000)
policy_every_visit = get_policy()
print("Every-visit policy: \n", policy_every_visit)
First-visit policy:
{0: 2, 1: 2, 2: 1, 
 3: 2, 4: 2, 5: 0}

Every-visit policy:
{0: 2, 1: 2, 2: 1, 
 3: 2, 4: 2, 5: 0}

Bild som visar den optimala policyn med den optimala handlingen i varje tillstånd i form av pilar.

Reinforcement Learning med Gymnasium i Python

Nu kör vi en övning!

Reinforcement Learning med Gymnasium i Python

Preparing Video For Download...