Reinforcement Learning
A aprendizagem por reforço (RL) treina um agente por tentativa e erro para maximizar a recompensa a longo prazo. Abrange o ciclo de RL, Q-learning, famílias de algoritmos e aplicações.
A aprendizagem por reforço (RL) é um ramo da aprendizagem automática (ML) em que um agente aprende a tomar uma sequência de decisões experimentando ações num ambiente e recebendo recompensas ou penalizações, com o objetivo de acumular o máximo de recompensas possível ao longo do tempo. Ninguém diz ao agente qual é a ação correta. O agente descobre quais as ações que compensam, incluindo aquelas cuja recompensa só chega muitos passos depois, como uma jogada de xadrez que ganha material dez jogadas mais tarde. Por isso, a RL é a abordagem padrão para problemas de controlo sequencial: jogar, conduzir robôs e treinar modelos de linguagem de grande escala (LLMs) para produzirem respostas que as pessoas prefiram ou que um programa consiga verificar. Richard Sutton e Andrew Barto, cujo manual definiu a área moderna, receberam o Prémio A. M. Turing da ACM de 2024 pelo seu trabalho fundamental sobre aprendizagem por reforço.
Como funciona a aprendizagem por reforço#
Os problemas de RL são formalizados como um processo de decisão de Markov (MDP). Em cada passo temporal, o agente observa o estado atual, escolhe uma ação do seu espaço de ações e recebe uma recompensa juntamente com o estado seguinte. O seu objetivo é o retorno, a soma das recompensas futuras, em que um fator de desconto entre 0 e 1 faz com que as recompensas distantes contem menos do que as imediatas. A recompensa é a única descrição da tarefa que o agente recebe, pelo que uma recompensa mal concebida pode levar a manipulação da recompensa: o agente obtém bons resultados sem fazer o que o programador pretendia.
- Agente: O sistema que aprende e toma decisões, como um controlador de robô ou um programa que joga.
- Ambiente: Tudo com que o agente interage, desde um simulador de física até ao chão de um armazém real.
- Estado: As informações em que o agente se baseia para agir, como ângulos de articulações, a posição das peças num tabuleiro ou características extraídas de uma imagem captada por uma câmara.
- Ação: Uma opção disponível para o agente, discreta (esquerda ou direita) ou contínua (um ângulo de direção).
- Recompensa: Um número que o ambiente devolve após cada ação: positivo quando há progresso e negativo quando há erros ou perda de tempo.
- Política: A regra que o agente usa para escolher uma ação em cada estado; é a política que o treino melhora.
- Função de valor: O retorno esperado a partir de um estado, ou ao realizar uma ação específica num estado, que permite ao agente avaliar as ações pelas respetivas consequências a longo prazo.
Como o agente só aprende com as ações que tenta, precisa equilibrar a exploração, ou seja, experimentar ações cujo valor é incerto, com a exploração do que já sabe, escolhendo a ação que parece melhor no momento. Uma regra comum é epsilon-greedy: agir aleatoriamente com uma pequena probabilidade e, caso contrário, de forma gulosa. Este exemplo com NumPy usa Q-learning, um algoritmo clássico que aprende o valor de cada par estado-ação, para ensinar um agente a percorrer um corredor de seis células até uma recompensa no extremo oposto:
import numpy as np
rng = np.random.default_rng(0)
# Corredor de 6 células: começa na célula 0; recompensa de +1 por chegar à célula 5; ações 0 = esquerda, 1 = direita
n_states, goal = 6, 5
Q = np.zeros((n_states, 2)) # retorno estimado para cada (estado, ação)
alpha, gamma, epsilon = 0.5, 0.9, 0.2 # taxa de aprendizagem, fator de desconto, taxa de exploração
for episode in range(200):
state = 0
while state != goal:
# Explora com probabilidade epsilon; caso contrário, aproveita a melhor ação conhecida
action = rng.integers(2) if rng.random() < epsilon else Q[state].argmax()
next_state = max(0, state - 1) if action == 0 else state + 1
reward = 1.0 if next_state == goal else 0.0
# Atualização do Q-learning: avança em direção à recompensa mais o melhor valor do próximo estado com desconto
Q[state, action] += alpha * (reward + gamma * Q[next_state].max() - Q[state, action])
state = next_state
print("Greedy policy:", ["left" if a == 0 else "right" for a in Q[:goal].argmax(axis=1)])
print("Value of moving right:", Q[:goal, 1].round(2))O código imprime uma política right em cada célula e valores [0.66 0.73 0.81 0.9 1. ]. A recompensa só foi concedida na última célula, mas a atualização propagou-a para trás, e cada passo mais distante do objetivo vale 0.9 vezes o seguinte, exatamente o fator de desconto em ação.
Famílias de algoritmos de RL#
Métodos tabulares como o anterior armazenam um valor para cada estado, o que deixa de funcionar quando os estados são imagens de câmaras ou ângulos articulares contínuos. A aprendizagem por reforço profundo substitui a tabela por uma rede neural que generaliza entre estados semelhantes, e as principais famílias de algoritmos diferem no que essa rede aprende:
Os agentes sem modelo aprendem apenas com a experiência real ou simulada, enquanto os agentes baseados em modelo aprendem um modelo do mundo que prevê como o ambiente responde e, depois, planeiam com ele, como no controlo preditivo baseado em modelo ou na pesquisa em árvore de Monte Carlo. A Otimização de Política Proximal (PPO), que limita o quanto cada atualização pode alterar a política, tornou-se o método padrão de gradiente de política para robótica e para o treino de modelos de linguagem, e a Otimização de Política Relativa ao Grupo (GRPO) adaptou-o ao raciocínio de LLMs ao eliminar o crítico aprendido. O Spinning Up da OpenAI apresenta estes algoritmos com implementações de referência.
Aplicações no mundo real#
- Jogos: O AlphaGo da DeepMind combinou redes neurais profundas com pesquisa em árvore e aprendizagem por reforço por autojogo para derrotar o campeão de Go Lee Sedol por 4 partidas a 1, em março de 2016.
- Robótica: Os controladores de locomoção de quadrúpedes e humanoides são treinados com RL em milhares de robôs simulados em paralelo, muitas vezes com atrito, massas e terrenos aleatorizados, para que a política se transfira para o hardware real.
- Alinhamento de modelos de linguagem: Os assistentes de chat são afinados com RL em função de um modelo de recompensa treinado com comparações de preferências humanas, e os modelos de raciocínio são treinados com RL usando verificadores automáticos que validam respostas matemáticas ou executam testes unitários.
- Sistemas de recomendação: Tratar uma sequência de recomendações como decisões permite que um sistema otimize o envolvimento a longo prazo, em vez do próximo clique.
A maioria das políticas de robôs é treinada em simulação, porque um agente pode precisar de milhões de tentativas e o hardware real pode avariar; estruturas como o NVIDIA Isaac Lab executam milhares de ambientes numa única GPU, e a aleatorização de domínio reduz a diferença entre a física simulada e a real. Os sistemas de RL baseados em câmaras costumam agir com base na saída de um modelo de perceção, em vez de píxeis brutos: o Ultralytics YOLO26, a funcionar num robô através da integração com ROS, publica as classes de objetos em cada fotograma da câmara e, com uma câmara de profundidade, a distância de cada objeto, como mensagens leves que uma política pode usar como estado.
Aprendizagem por reforço vs. paradigmas relacionados#
- Aprendizagem supervisionada: Cada exemplo de treino inclui a resposta correta. Um agente de RL recebe apenas uma recompensa escalar, muitas vezes atrasada, e as próprias ações determinam que dados verá a seguir.
- Aprendizagem não supervisionada: O modelo encontra estruturas, como agrupamentos, em dados sem rótulos, sem ações a executar nem recompensas a maximizar.
- Processo de decisão de Markov: O MDP define o problema, e RL é a família de métodos que o resolve com base na experiência, sem receber as probabilidades de transição.
- Aprendizado por imitação: o agente copia demonstrações de um especialista, da forma mais simples por meio de clonagem comportamental, e não consegue superar facilmente seu professor, enquanto o RL pode descobrir estratégias que nenhum demonstrador apresentou. Os dois são frequentemente combinados: o AlphaGo primeiro aprendeu com 30 milhões de posições de partidas humanas e depois melhorou por meio do jogo contra si mesmo, e seu sucessor, AlphaGo Zero, dispensou completamente os dados humanos e venceu essa versão do AlphaGo por 100 partidas a 0.










