Os métodos TD combinam ideias dos métodos de Programação Dinâmica (DP) e Monte Carlo (MC):
- Amostragem do ambiente como em MC – não precisam de modelo.
-
Atualização on‑line: os valores são corrigidos a cada passo
$t$ , antes do fim do episódio. -
Bootstrapping como em DP – atualizam estimativas usando outras estimativas.
(Em Aprendizado por Reforço, bootstrapping é o processo de atualizar uma estimativa com base em outra estimativa já disponível. Em vez de esperar todo o retorno ao final do episódio (estratégia Monte Carlo), um método com bootstrapping faz correções imediatas usando previsões posteriores, que ainda estão sujeitas a erro.)
A atualização genérica de TD para a função de valor‑estado
O termo entre colchetes é o TD‑erro (diferença temporal). Quando o TD‑erro converge para 0, as estimativas tornam‑se consistentes com a política avaliada.
- On‑policy: aprende a própria política que executa (tipicamente ε‑greedy).
- Atualiza a função valor‑ação
$Q$ usando a ação realmente seguida no próximo estado.
Características
- Exploração e aprendizado alinhados (mesma política).
- Mais conservador que Q‑Learning em ambientes estocásticos.(estocástico é só uma palavra bonita para dizer que é aleatório)
- Off‑policy: aprende a política ótima (greedy) enquanto pode seguir outra política de comportamento (ex.: ε‑greedy).
- Usa a melhor ação estimada no próximo estado para a atualização.
Placeholder do pseudocódigo:
Características
- Converge para a política ótima sob condições suaves, mesmo com política de comportamento exploratória.
- Geralmente aprende mais rápido que SARSA, porém pode ser mais agressivo e arriscado antes da convergência.
*Os dois métodos são bem parecidos na parte do pseudocódigo e formula, a mudança é q ele pega o max do Q ao invés do Q, por isso que é para implementar os dois métodos.
- Capítulo 6 do clássico Reinforcement Learning: An Introduction aprofunda os métodos de TD.
Esses cursos são gratuitos, vc tem que entrar como ouvinte, se tiver dificuldade de acessar manda mensagem pra algum dos lideres
- Métodos de Aprendizado Baseados em Amostras
Objetivo: controlar um carro de corrida em uma curva de pista para chegar o mais rápido possível à linha de chegada sem sair da pista.
-
Estados: posição do carro em um tabuleiro (grid) + velocidade discreta de 0 a 4 no eixo x e y
$(v_x,v_y)$ . Na linha de partida ambas velocidades iniciam em 0. -
Ações: O agente recebera os seguintes estados para tomar decisões: qual sua posição no racetrack e sua velocidade atual, com base nisso ele pode tomar as seguintes ações: acelerar 1 ou -1(desacelerar no caso) no eixo x e y, entao ele pode tomar as seguintes ações (aceleracao_x,aceleracao_y): (-1,0) ; (0,-1) ; (0,0) ; (1,0) ; (0,1). As velocidades não podem ser negativas, nem ambas zero fora da largada.
-
Dinâmica: a cada passo o carro se desloca segundo a nova velocidade. Antes de mover, traça‑se a linha do caminho previsto:
- Se cruza a linha de chegada, o episódio termina.
- Se cruza qualquer borda da pista, o carro volta a uma posição aleatória da linha de partida com velocidade
$(0,0)$ .
-
Ruído de controle: com probabilidade 0,1 ambos incrementos são forçados a 0 (falha de aceleração).
-
Recompensa:
$-1$ por passo até cruzar a chegada (custo de tempo).
Mapas sugeridos:
-
Implementar o ambiente Racetrack conforme descrito.
-
Visualizar o ambiente usando matbplotlib, pode ser uma tabela bem simples mesmo.
-
Treinar dois agentes independentes:
- SARSA (on‑policy).
- Q‑Learning (off‑policy).
- Primeiro faça uma versão jogável do ambiente para testar como funciona e se esta correto (sem os agentes).
- Faça a função valor para todas as celulas e todas as velocidades, para gerar isso é um loop quadruplo, um loop inicial para gerar o eixo x do grid, outro loop pro eixo y, e outro para as velocidades vx e vy.
- Faça o ambiente e o agente em classes de python diferentes.