Ifi6057w12

Allikas: Lambda

12. Nädal

Hüvitusega õppimine. Q-Learning. AIMA 21.2-21.3

A Painless Q-Learning Tutorial

Q-Learning/SARSA

Reinforcement Learning: Example and Tutorial

Harjutustund

MDP Grid

Q-learning agent ja tegevuskeskkond

import rl
import mdp

env = mdp.sequential_decision_environment
ap = rl.QLearningAgent(env, 10, 1)   # 10 - exploration trials, 1 - exploration reward
rl.run_single_trial(ap, env)

Abifunktsioonid Q-learning agendi tegevuse ja õppimise visualiseerimiseks

from collections import defaultdict

def heatmap(ap):
    hm = defaultdict(int)
    for k, v in ap.Nsa.items():
        s, a = k
        hm[s] += v
    return hm

def policy(ap):
    best_move = defaultdict(lambda: (0, 1))
    best_score = defaultdict(lambda: -1000)
    for k, v in ap.Q.items():
        s, a = k
        if v > best_score[s]:
            best_move[s] = a
            best_score[s] = v
    return best_move

Liikumise kuumuskaart ja õpitud parimad käigud

from utils import print_table

print_table(env.to_grid(heatmap(ap)))
print_table(env.to_arrows(policy(ap)))

Tegevused

  1. Lase Q-learning agendil pikemalt õppida (run_single_trial jooksutada mitu korda, näit. 10, 100, 200)
  2. Katseta erinevate uurimise (exploration) parameetritega - kas see muudab õppimist paremaks
  3. Proovi muuta õppimise koefitsenti (ap = rl.QLearningAgent(env, 10, 1, alpha=lambda n: 60./(59+n)))
  4. Implementeeri SARSA
class SARSAAgent(rl.QLearningAgent):
    def __call__(self, percept):
        # SARSA kood siia