Reinforcement Learning
L'apprendimento per rinforzo (RL) addestra un agente per tentativi ed errori a massimizzare la ricompensa a lungo termine. Include ciclo RL, Q-learning, famiglie di algoritmi e applicazioni.
L’apprendimento per rinforzo (RL) è un ramo del machine learning (ML) in cui un agente impara a prendere una sequenza di decisioni provando azioni in un ambiente e ricevendo ricompense o penalità, con l’obiettivo di accumulare la maggiore ricompensa possibile nel tempo. Nessuno dice all’agente quale azione è corretta. L’agente scopre quali azioni danno risultati, comprese quelle la cui ricompensa arriva molti passaggi dopo, come una mossa a scacchi che vince materiale dieci mosse più avanti. Questo rende l’apprendimento per rinforzo l’approccio standard per i problemi di controllo sequenziale: giocare, guidare robot e addestrare modelli linguistici di grandi dimensioni (LLMs) a fornire risposte preferite dalle persone o verificabili da un programma. Richard Sutton e Andrew Barto, il cui manuale ha definito il campo moderno, hanno ricevuto l’ACM A.M. Turing Award 2024 per il loro lavoro fondamentale sull’apprendimento per rinforzo.
Come funziona l’apprendimento per rinforzo#
I problemi di RL sono formalizzati come processi decisionali di Markov (MDP). A ogni passo temporale l’agente osserva lo stato corrente, sceglie un’azione dal proprio spazio delle azioni e riceve una ricompensa insieme allo stato successivo. Il suo obiettivo è il ritorno, cioè la somma delle ricompense future, in cui un fattore di sconto compreso tra 0 e 1 fa pesare meno le ricompense lontane rispetto a quelle immediate. La ricompensa è l’unica descrizione dell’attività che l’agente riceve, quindi definirla con poca attenzione invita al reward hacking: l’agente ottiene un buon punteggio senza fare ciò che il progettista intendeva.
- Agente: Il sistema che apprende e prende decisioni, come un controllore robotico o un programma che gioca.
- Ambiente: Tutto ciò con cui l’agente interagisce, da un simulatore fisico al pavimento di un magazzino reale.
- Stato: Le informazioni su cui agisce l’agente, come gli angoli delle articolazioni, la posizione dei pezzi su una scacchiera o le caratteristiche estratte da un fotogramma della videocamera.
- Azione: Una scelta a disposizione dell’agente, discreta (sinistra o destra) oppure continua (un angolo di sterzata).
- Ricompensa: Un numero restituito dall’ambiente dopo ogni azione, positivo per i progressi e negativo per gli errori o il tempo sprecato.
- Politica: La regola dell’agente per scegliere un’azione in ogni stato, che è ciò che l’addestramento migliora.
- Funzione di valore: Il ritorno atteso da uno stato o dall’esecuzione di una determinata azione in uno stato, che consente all’agente di valutare le azioni in base alle loro conseguenze a lungo termine.
Poiché l’agente impara solo dalle azioni che prova, deve bilanciare l’esplorazione, cioè provare azioni il cui valore è incerto, con lo sfruttamento, cioè scegliere l’azione che al momento sembra migliore. Una regola comune è epsilon-greedy: agire casualmente con una piccola probabilità e in modo greedy negli altri casi. Questo esempio NumPy usa Q-learning, un algoritmo classico che apprende il valore di ogni coppia stato-azione, per insegnare a un agente a percorrere un corridoio di sei celle fino a una ricompensa in fondo:
import numpy as np
rng = np.random.default_rng(0)
# Corridoio di 6 celle: partenza nella cella 0, ricompensa +1 quando si raggiunge la cella 5; azioni 0 = sinistra, 1 = destra
n_states, goal = 6, 5
Q = np.zeros((n_states, 2)) # ritorno stimato per ogni coppia (stato, azione)
alpha, gamma, epsilon = 0.5, 0.9, 0.2 # tasso di apprendimento, fattore di sconto, tasso di esplorazione
for episode in range(200):
state = 0
while state != goal:
# Esplora con probabilità epsilon, altrimenti sfrutta l’azione nota come migliore
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
# Aggiornamento Q-learning: avvicinati alla ricompensa più il miglior valore dello stato successivo scontato
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))Stampa una policy di right in ogni cella e valori di [0.66 0.73 0.81 0.9 1. ]. La ricompensa è stata assegnata solo nell’ultima cella, ma l’aggiornamento l’ha propagata all’indietro; il valore di ogni passo più lontano dall’obiettivo è pari a 0,9 volte quello del passo successivo: è proprio il fattore di sconto in azione.
Famiglie di algoritmi di RL#
I metodi tabulari come quello appena visto memorizzano un valore per ogni stato, ma non funzionano più quando gli stati sono immagini di telecamere o angoli articolari continui. Il deep reinforcement learning sostituisce la tabella con una rete neurale che generalizza a stati simili, e le principali famiglie di algoritmi differiscono per ciò che la rete apprende:
Gli agenti model-free imparano esclusivamente dall’esperienza reale o simulata, mentre gli agenti model-based apprendono un modello del mondo che prevede come reagisce l’ambiente e poi lo usano per pianificare, come nel controllo predittivo del modello o nella ricerca ad albero Monte Carlo. L’ottimizzazione prossimale della policy (PPO), che limita l’entità di ogni aggiornamento della policy, è diventata il metodo predefinito basato sul gradiente della policy per la robotica e l’addestramento dei modelli linguistici; la Group Relative Policy Optimization (GRPO) l’ha adattata al ragionamento degli LLM eliminando il critico appreso. Spinning Up di OpenAI presenta questi algoritmi con implementazioni di riferimento.
Applicazioni nel mondo reale#
- Giochi: AlphaGo di DeepMind ha combinato reti neurali profonde, ricerca ad albero e autoapprendimento con RL per battere il campione di Go Lee Sedol 4 partite a 1 nel marzo 2016.
- Robotica: I controllori della locomozione di quadrupedi e umanoidi vengono addestrati con RL su migliaia di robot simulati in parallelo, spesso con attrito, masse e terreni randomizzati affinché la policy si trasferisca all’hardware reale.
- Allineamento dei modelli linguistici: Gli assistenti conversazionali vengono ottimizzati con RL rispetto a un modello di ricompensa addestrato su confronti delle preferenze umane, mentre i modelli di ragionamento vengono addestrati con RL rispetto a verificatori automatici che controllano le risposte matematiche o eseguono test unitari.
- Sistemi di raccomandazione: Trattare una sequenza di raccomandazioni come una serie di decisioni permette a un sistema di ottimizzare il coinvolgimento a lungo termine invece del clic successivo.
La maggior parte delle policy robotiche viene addestrata in simulazione, perché un agente può aver bisogno di milioni di tentativi e l’hardware reale si rompe; framework come NVIDIA Isaac Lab eseguono migliaia di ambienti su una sola GPU, mentre la randomizzazione del dominio riduce il divario tra la fisica simulata e quella reale. I sistemi RL basati su telecamera agiscono di solito sull’output di un modello di percezione anziché sui pixel grezzi: Ultralytics YOLO26, in esecuzione su un robot tramite l’integrazione ROS, pubblica le classi degli oggetti in ogni fotogramma della telecamera e, con una telecamera di profondità, anche la distanza di ogni oggetto, sotto forma di messaggi leggeri che una policy può usare come stato.
Apprendimento per rinforzo e paradigmi correlati#
- Apprendimento supervisionato: Ogni esempio di addestramento è accompagnato dalla risposta corretta. Un agente RL riceve solo una ricompensa scalare, spesso ritardata, e sono le sue azioni a determinare quali dati vedrà in seguito.
- Apprendimento non supervisionato: Il modello individua strutture, come i cluster, nei dati senza etichette, senza dover compiere azioni né massimizzare una ricompensa.
- Processo decisionale di Markov: L’MDP definisce il problema, mentre RL è la famiglia di metodi che lo risolve a partire dall’esperienza, senza ricevere le probabilità di transizione.
- Apprendimento per imitazione: l'agente copia le dimostrazioni di un esperto, nella forma più semplice tramite clonazione comportamentale, e non riesce facilmente a superare il proprio insegnante, mentre l'apprendimento per rinforzo può scoprire strategie mai mostrate da alcun dimostratore. I due approcci vengono spesso combinati: AlphaGo ha prima imparato da 30 milioni di posizioni tratte da partite umane e poi è migliorato tramite il gioco autonomo, mentre il suo successore AlphaGo Zero ha fatto completamente a meno dei dati umani e ha battuto quella versione di AlphaGo 100 partite a 0.










