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.
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.
- 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
Capítulo 02 – Ficha de Terminologia Completa
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.
- O agente observa o estado do ambiente
- Ele escolhe uma ação para executar
- Ele observa o resultado : novo estado + recompensa (positiva ou negativa)
- 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 |
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.
Número finito de ações enumeráveis.
Exemplos : Cima, Baixo, Esquerda, Direita (labirinto) ; 0 ou 1 (CartPole)
Valores numéricos em um intervalo.
Exemplos : Força de 0 a 10 N ; ângulo do volante de −30° a +30°
Recompensa rt — Reward 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.
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
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.
O agente é "míope" : ele só pensa na recompensa imediata. Comportamento de curto prazo.
O agente é "previdente" : ele considera as recompensas futuras com quase a mesma importância. Comportamento de longo prazo.
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.
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
Por que ambientes virtuais ?
O problema sem venv
A solução com venv
| Ambiente | Python | Bibliotecas | Projeto |
|---|---|---|---|
myenv39 | 3.9 | TensorFlow 2.10, Gym 0.26 | Curso RL (antigo) |
myenv310 | 3.10 | Streamlit 1.28, pandas 2.0 | Dashboard |
myenv311 | 3.11 | TensorFlow 2.15, Gymnasium | Curso RL (atual) |
rl-env | 3.12 | Gymnasium, NumPy, Matplotlib | Este curso |
🪟 Windows Instalar várias versões de Python
Alguns comandos exigem direitos de administrador. Se você receber um erro de permissões ao ativar um venv, execute primeiro no PowerShell :
# 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.
py é instalado automaticamente. Ele permite chamar qualquer versão instalada com py -3.10, py -3.11, etc.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
# 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
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# 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
Etapa 1 — Instalar SSH na VM Linux
No terminal da VM Linux, como root :
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
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 !
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 :
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 !)
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 :
# 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 !
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
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
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)
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()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 CodeFAQ
Quanto tempo para aprender Iniciar Reinforcement Learning ?
É necessário algum pré-requisito ?
Por onde começar concretamente ?
📬 Quer receber este tipo de guia toda semana ? Inscreva-se gratuitamente — código real, zero enrolação.