Comece no Reinforcement Learning: seu primeiro passo concreto hoje

Iniciando o Reinforcement Learning: o essencial em um artigo — código real, diagramas e etapas concretas, extraídos de um curso de 42 lições.

Comece no Reinforcement Learning: seu primeiro passo concreto hoje

A melhor forma de aprender Iniciar Reinforcement Learning é praticando. Este artigo te ajuda a dar os primeiros passos com trechos práticos extraídos de um curso de 42 lições — o suficiente para obter um primeiro resultado já hoje.

tl;dr
  • Recursos do curso e Instalar o ambiente
  • Introdução ao Reinforcement Learning
  • Noções Fundamentais do RL
  • MDP Parte 1 - Estados Ações Recompensas
  • MDP Parte 2 - Política e Equações de Bellman
~$ cat ./parcours.md # Iniciar Reinforcement Learning — 11 capítulos
01
Recursos do curso e Instalar o ambiente
→ Recursos do Curso & Introdução→ Instalar Python, Anaconda e TensorFlow+ 3 mais lições
02
Introdução ao Reinforcement Learning
→ O que é Reinforcement Learning ?→ Comparação Aprendizado Supervisionado, Não Supervisionado e RL+ 2 mais lições
03
Noções Fundamentais de RL
→ Interação Agente-Ambiente→ Exploração vs Explotação — O Grande Dilema+ 2 mais lições
04
MDP Parte 1 - Estados Ações Recompensas
→ Definição dos MDP e Propriedade de Markov→ estados, Ações e Recompensas em um MDP+ 2 mais lições
05
MDP Parte 2 - Política e Equações de Bellman
→ Política Ótima vs Subótima→ Funções de Valor V(s) e Q(s,a)+ 2 mais lições
06
Q-Learning
→ Fundamentos do Q-Learning→ Atualização dos Q-values e Convergência+ 1 mais lições
07
Métodos de Monte Carlo
→ Introdução aos Métodos de Monte Carlo→ Monte Carlo vs TD Learning+ 1 mais lições
08
Programação Dinâmica e TD Learning
→ Introdução à Programação Dinâmica→ Métodos TD(0) e TD(λ)+ 1 mais lições
🏁
Projeto final (+ 3 capítulos no caminho)
→ Você sai com um projeto concreto e demonstrável

Capítulo 02 – Ficha de Terminologia Completa

NOTEObjetivo desta ficha — Ter em um único lugar todas as definições fundamentais do RL, da noção de estado até os algoritmos. Esta ficha serve de referência ao longo de todo o curso.

Paradigma de aprendizado de máquina onde um agente aprende a se comportar em um ambiente executando ações e recebendo recompensas ou penalidades em retorno.

TIPMecanismo :
  1. O agente observa o estado do ambiente
  2. Ele escolhe uma ação para executar
  3. Ele observa o resultado : novo estado + recompensa (positiva ou negativa)
  4. Ao repetir esse ciclo, ele aprende quais ações maximizam a recompensa a longo prazo

Estado — State st Componente fundamental

Descrição completa da situação atual do ambiente no instante t. É a informação que o agente dispõe para decidir qual ação empreender.

Tipo de estado Descrição Exemplo
Estado inicial Posição inicial no início de um episódio Casa (1,1) em um labirinto
Estado intermediário Todo estado durante o episódio (não terminal) Casas percorridas no labirinto
Estado terminal Estado de fim de episódio (vitória ou derrota) Saída do labirinto ou buraco
NOTEDiscreto vs Contínuo : Um estado pode ser discreto (ex: casas numeradas de um labirinto — é possível contá-las) ou contínuo (ex: posição GPS em metros, ângulo em graus — valores numéricos infinitos).

Ação at Componente fundamental

O que o agente decide fazer em um estado dado. O conjunto de todas as ações possíveis forma o espaço de ações.

TIPAções discretas
Número finito de ações enumeráveis.
Exemplos : Cima, Baixo, Esquerda, Direita (labirinto) ; 0 ou 1 (CartPole)
NOTEAções contínuas
Valores numéricos em um intervalo.
Exemplos : Força de 0 a 10 N ; ângulo do volante de −30° a +30°

Recompensa rtReward Sinal de aprendizagem

Sinal numérico recebido pelo agente após cada ação. É o único meio para o ambiente dizer ao agente se sua ação foi boa ou ruim.

NOTERecompensa imediata (3.6)
Recompensa recebida diretamente após uma ação no passo t. Fornece um retorno instantâneo sobre a qualidade de uma única ação.
Notação : rt+1
NOTERecompensa a longo prazo (3.7)
Soma das recompensas acumuladas durante todo o episódio (ou ao infinito). É o que o agente realmente busca maximizar.
Notação : Gt = rt+1 + rt+2 + rt+3 + …

Discount — Fator de desconto γ (gamma) Parâmetro chave

Valor entre 0 e 1 que pondera as recompensas futuras. Quanto mais distante no tempo uma recompensa estiver, mais ela é "desvalorizada". É a penalidade aplicada às recompensas futuras.

NOTEγ próximo de 0
O agente é "míope" : ele só pensa na recompensa imediata. Comportamento de curto prazo.
TIPγ próximo de 1
O agente é "previdente" : ele considera as recompensas futuras com quase a mesma importância. Comportamento de longo prazo.
NOTEValor típico : γ = 0.9 ou 0.99 na maioria das aplicações práticas.

Utilidade — Utility / Return Gt Objetivo final

A soma total das recompensas descontadas obtidas a partir do passo de tempo t. É O valor que o agente busca maximizar. Também chamada de retorno ou retorno acumulado.

TIPEm português simples : A utilidade = a soma de todas as recompensas futuras, com uma ponderação que diminui com o tempo (graças ao discount γ). Uma boa ação agora E boas ações no futuro = utilidade elevada.
NOTESinônimos usados no curso : Recompensa a longo prazo, Retorno, Return, Rendimento acumulado, Gt

Política — Policy π Coração do RL

A estratégia de decisão do agente : para cada estado, ela define qual ação empreender. É o "cérebro" do agente, o que ele busca aprender.

Ambientes Virtuais Python

NOTEObjetivo — Compreender por que usamos ambientes virtuais, como instalar várias versões de Python em paralelo, e como criar um ambiente isolado para cada projeto — no Windows e no Linux (Ubuntu).

Por que ambientes virtuais ?

O problema sem venv

A solução com venv

AmbientePythonBibliotecasProjeto
myenv393.9TensorFlow 2.10, Gym 0.26Curso RL (antigo)
myenv3103.10Streamlit 1.28, pandas 2.0Dashboard
myenv3113.11TensorFlow 2.15, GymnasiumCurso RL (atual)
rl-env3.12Gymnasium, NumPy, MatplotlibEste curso

🪟 Windows   Instalar várias versões de Python

NOTEAntes de começar — PowerShell em modo administrador
Alguns comandos exigem direitos de administrador. Se você receber um erro de permissões ao ativar um venv, execute primeiro no PowerShell :
output
# Abrir o PowerShell como administrador, então :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# Responder O (Sim) à confirmação

Baixe e instale cada versão em python.org/downloads. Marque «Add to PATH» apenas para a primeira versão. Para as seguintes, desmarque «Add to PATH» para evitar conflitos.

TIPDica : Ao instalar o Python no Windows, o launcher py é instalado automaticamente. Ele permite chamar qualquer versão instalada com py -3.10, py -3.11, etc.
output
python --version
# Python 3.x.x (a versão padrão no PATH)

py -3.9 --version
# Python 3.9.x

py -3.10 --version
# Python 3.10.x

py -3.11 --version
# Python 3.11.x

py -3.12 --version
# Python 3.12.x

py -3.13 --version
# Python 3.13.x
output
# Verificar a versão
py -3.9 --version

# Criar o ambiente virtual
py -3.9 -m venv myenv39

# Ativar o ambiente (PowerShell)
.\myenv39\Scripts\activate

# O prompt muda : (myenv39) indica que o env está ativo
(myenv39) python --version
# Python 3.9.x

(myenv39) pip install streamlit
(myenv39) pip show streamlit
# Name: streamlit
# Version: 1.x.x
# ...

# Desativar o ambiente
(myenv39) deactivate
output
py -3.10 --version
py -3.10 -m venv myenv310

.\myenv310\Scripts\activate

(myenv310) python --version
# Python 3.10.x

(myenv310) pip install streamlit
(myenv310) pip show streamlit
(myenv310) deactivate
output
# Python 3.11
py -3.11 -m venv myenv311
.\myenv311\Scripts\activate
(myenv311) python --version
(myenv311) pip install streamlit
(myenv311) deactivate

# Python 3.12
py -3.12 -m venv myenv312
.\myenv312\Scripts\activate
(myenv312) python --version
(myenv312) pip install streamlit
(myenv312) deactivate

# Python 3.13
py -3.13 -m venv myenv313
.\myenv313\Scripts\activate
(myenv313) python --version
(myenv313) pip install streamlit
(myenv313) deactivate

🔗 SSH   Conectar-se a uma VM Linux a partir do Windows

NOTEContexto : Se você trabalha com uma máquina virtual Linux (VirtualBox, VMware...) ou um servidor remoto, pode se conectar a ela a partir do Windows via SSH sem sair do seu terminal Windows.

Etapa 1 — Instalar SSH na VM Linux

No terminal da VM Linux, como root :

output
su                         # ou : sudo -s
apt install openssh-server -y
systemctl status ssh       # verificar o status
systemctl start ssh        # iniciar se necessário
systemctl enable ssh       # iniciar automaticamente no boot

# Encontrar o endereço IP da VM
ip -br addr
# lo               UNKNOWN        127.0.0.1/8
# eth0             UP             192.168.2.139/24   ← copiar este IP

Primeiro script Gym – Testar a instalação

TIP😌 Sem pânico — estamos apenas testando !
O objetivo desta lição é apenas verificar se seu ambiente funciona. Você vai copiar e colar scripts e observar os resultados. Você ainda não precisa entender tudo — cada linha de código será explicada em detalhes nos próximos capítulos. Respire, é apenas um teste de inicialização !
NOTEObjetivo — Executar seus primeiros scripts com Gymnasium e confirmar que sua instalação funciona. Duas opções : localmente (Jupyter) ou diretamente no Google Colab sem instalar nada.

Opção A – Testar localmente (Jupyter)

Se você seguiu as lições 01 e 02 (instalação do Anaconda + configuração do Jupyter), ative seu ambiente e inicie o Jupyter :

bash
conda activate rl-env
jupyter notebook

Em seguida, copie os scripts abaixo em uma célula e execute com Shift + Enter.

Opção B – Testar no Google Colab (sem instalar nada !)

TIPAinda não instalou o Python localmente ? Nenhum problema.
O Google Colab funciona diretamente no seu navegador. Nenhuma instalação necessária — ideal para testar agora e instalar localmente depois.

Abra um novo notebook em colab.research.google.com, depois instale o Gymnasium na primeira célula :

bash
# Cellule 1 — Installation (Colab uniquement, déjà fait si vous êtes en local)
!pip install gymnasium[toy-text] matplotlib --quiet

Em seguida, copie os scripts abaixo nas células seguintes. É só isso !

NOTEColab ou local — os scripts são idênticos. A única diferença é a célula de instalação acima, que você não precisa executar localmente.

O que é Gymnasium (ex-OpenAI Gym) ?

Gymnasium é a biblioteca de referência para testar algoritmos de RL. Ela fornece ambientes padronizados com uma interface uniforme.

Ambientes clássicos

Interface universal

Script 1 – Explorar o ambiente CartPole

TIP📋 Basta copiar e colar este código — não tente entender tudo agora. Você verá o que o CartPole produz como informações. Vamos detalhar cada termo (observation_space, action_space, etc.) no Capítulo 02.
output
import gymnasium as gym
import numpy as np

# Criar o ambiente
env = gym.make("CartPole-v1")
obs, info = env.reset(seed=42)

print("=== CartPole-v1 ===")
print(f"Espace d'états  : {env.observation_space}")
print(f"  Nombre de dimensions : {env.observation_space.shape[0]}")
print(f"  Valeurs min : {env.observation_space.low}")
print(f"  Valeurs max : {env.observation_space.high}")
print(f"\nEspace d'actions : {env.action_space}")
print(f"  Nombre d'actions : {env.action_space.n}")
print(f"  Actions : 0 (gauche), 1 (droite)")
print(f"\nObservation initiale : {obs}")
print(f"  [position cart, vitesse cart, angle bâton, vitesse bâton]")

env.close()

Script 2 – Agente aleatório no CartPole

TIP🎲 Um agente que joga ao acaso — este é nosso ponto de partida. Este script não faz nada inteligente : ele escolhe ações aleatórias. É nossa baseline de referência. Tudo o que você aprenderá neste curso permitirá que um agente faça muito melhor do que isso. Execute e observe as recompensas — é só isso !
output
import gymnasium as gym
import numpy as np
import matplotlib.pyplot as plt

def run_random_agent(env_name, n_episodes=100):
    """Agent qui prend des actions aléatoires - notre baseline."""
    env = gym.make(env_name)
    total_rewards = []

    for episode in range(n_episodes):
        obs, info = env.reset()
        episode_reward = 0
        done = False

        while not done:
            # Action aléatoire (pas d'apprentissage)
            action = env.action_space.sample()
            obs, reward, terminated, truncated, info = env.step(action)
            episode_reward += reward
            done = terminated or truncated

        total_rewards.append(episode_reward)

    env.close()
    return total_rewards

# Exécuter l'agent aléatoire
rewards = run_random_agent("CartPole-v1", n_episodes=100)

print(f"Récompense moyenne : {np.mean(rewards):.2f}")
print(f"Récompense maximale : {np.max(rewards):.0f}")
print(f"Récompense minimale : {np.min(rewards):.0f}")

# Visualiser
plt.figure(figsize=(10, 4))
plt.plot(rewards, alpha=0.6, label="Récompense par épisode")
plt.axhline(np.mean(rewards), color='red', linestyle='--', label=f"Moyenne: {np.mean(rewards):.1f}")
plt.xlabel("Épisode")
plt.ylabel("Récompense totale")
plt.title("Agent aléatoire - CartPole-v1")
plt.legend()
plt.tight_layout()
plt.savefig("agent_aleatoire_cartpole.png")
plt.show()

Script 3 – Explorar o FrozenLake (ambiente discreto)

TIP🗺️ O FrozenLake será seu principal campo de jogo neste curso. Não se preocupe com o loop ou as ações manuais por enquanto — o objetivo é apenas ver que o ambiente inicia e responde. O Capítulo 03 explicará tudo em detalhes.
output
import gymnasium as gym

# FrozenLake : grille 4x4 avec états discrets
env = gym.make("FrozenLake-v1", is_slippery=False)
obs, info = env.reset()

print("=== FrozenLake-v1 ===")
print(f"Espace d'états  : {env.observation_space.n} états (grille 4x4)")
print(f"Espace d'actions : {env.action_space.n} actions")
print(f"  0=gauche, 1=bas, 2=droite, 3=haut")
print(f"\nÉtat initial : {obs}")
print("\nVisualisez la grille :")
env.render()

# Boucle manuelle
actions_manuelles = [2, 2, 1, 1, 1, 2, 1, 2, 2]  # chemin vers la sortie
total_reward = 0

print("\n--- Simulation manuelle ---")
obs, _ = env.reset()
for i, action in enumerate(actions_manuelles):
    obs, reward, terminated, truncated, _ = env.step(action)
    total_reward += reward
    direction = ["←", "↓", "→", "↑"][action]
    print(f"Étape {i+1}: {direction}  État={obs}  Récompense={reward}")
    if terminated or truncated:
        break

print(f"\nRécompense totale : {total_reward}")
env.close()
TIPPor que FrozenLake ? Este ambiente é perfeito para iniciantes porque possui um espaço de estados discreto (16 casas). Você pode visualizar toda a Q-table. O CartPole possui estados contínuos, o que exige técnicas mais avançadas.
va-plus-loin

Este artigo cobre os trechos mais úteis — o curso completo Iniciar Reinforcement Learning (12 capítulos, 42 lições, exercícios corrigidos e projeto final) leva você até o fim.

./acceder-au-cours-complet curso gratuito : Dominar o Claude Code

FAQ

Quanto tempo para aprender Iniciar Reinforcement Learning ?
Com uma progressão estruturada (12 capítulos, 42 lições curtas e práticas), você atinge um nível operacional em algumas semanas dedicando 30 a 60 minutos por dia. O importante é praticar cada conceito imediatamente.
É necessário algum pré-requisito ?
Nenhum pré-requisito : o curso começa do zero, cada conceito é introduzido antes de ser utilizado.
Por onde começar concretamente ?
Reproduza os comandos deste artigo, depois siga o curso completo Iniciar Reinforcement Learning : ele encadeia as 42 lições em ordem, com exercícios e projeto final.

📬 Quer receber este tipo de guia toda semana ? Inscreva-se gratuitamente — código real, zero enrolação.