Q-learning e DQN: imparare il valore delle azioni, dalla tabella alla rete neurale
Apprendimento per differenza temporale, Q-learning e SARSA sulla camminata sul precipizio, esplorazione ε-greedy, on-policy e off-policy, DQN con memoria delle esperienze e rete target sul pendolo inverso su un carrello scritto da zero, e perché l’apprendimento di DQN crolla così facilmente.
Serie Basi di IA Parte 48 di 52
- Mappa dell’intelligenza artificiale: che cos’è ciascuna cosa e come si incastra tutto
- Breve storia dell’intelligenza artificiale: da Turing ai modelli linguistici
- Dati, modello, addestramento, inferenza: i concetti di base su un unico esempio
- Come leggere la notazione matematica: simboli, indici, sommatorie e quantificatori
- Insiemi e relazioni: i mattoncini con cui si costruiscono le definizioni nell’IA
- Funzioni e applicazioni: perché ogni modello di IA è una funzione
- Logica e dimostrazioni: le regole con cui si ragiona nell’IA
- Grafi e alberi: la struttura su cui poggiano la ricerca e le reti neurali
- Algebra lineare per l’apprendimento automatico: vettori, matrici e perché l’IA soprattutto moltiplica
- Derivate, gradiente e regola della catena: come un modello capisce in quale direzione imparare
- Discesa del gradiente: come impara un modello
- Che cos’è la probabilità: dal lancio di un dado agli assiomi di Kolmogorov
- Probabilità condizionata e teorema di Bayes: come cambiare una stima quando scopri qualcosa di nuovo
- Variabile aleatoria e funzione di ripartizione: una sola funzione che dice tutto sulla distribuzione
- Funzione di densità e funzione di massa: perché una variabile continua ha probabilità zero in un punto
- Valore atteso, varianza e covarianza: dove si trova una distribuzione, quanto è larga e che cosa è legato a che cosa
- Panoramica delle distribuzioni di probabilità: Bernoulli, binomiale, Poisson, uniforme, normale ed esponenziale
- Legge dei grandi numeri e teorema del limite centrale: perché le medie si comportano in modo così prevedibile
- Statistica e stima dei parametri: massima verosimiglianza, MAP e intervalli di confidenza
- Teoria dell’informazione: entropia, entropia incrociata e divergenza KL — da dove vengono le funzioni di perdita
- Ricerca nello spazio degli stati: BFS, DFS, UCS e A* con animazioni
- Giochi e avversari: minimax, potatura alfa-beta e Monte Carlo tree search
- Soddisfacimento di vincoli: backtracking, propagazione dei vincoli e AC-3 su un sudoku e una mappa delle regioni ceche
- Logica e sistemi basati sulla conoscenza: concatenazione in avanti e all’indietro, risoluzione e sistemi esperti
- Pianificazione: STRIPS, il mondo dei blocchi, euristiche dal rilassamento e pianificazione negli agenti IA
- Ricerca locale e ricottura simulata: un commesso viaggiatore tra i capoluoghi di regione cechi
- Algoritmi genetici: popolazione, incrocio, mutazione e selezione su uno zaino per l’escursione
- Strategie evolutive e programmazione genetica: dalla regola di un quinto alla legge di Keplero
- Ottimizzazione con colonie di formiche: come una traccia di feromone trova un percorso breve
- Ottimizzazione a sciame di particelle: inerzia, esperienza propria ed esperienza dello sciame
- Neuroevoluzione: evoluzione dei pesi e della forma delle reti neurali e l’algoritmo NEAT
- Insiemi fuzzy e funzioni di appartenenza: come scrivere «un po’ caldo»
- Logica fuzzy e probabilità: perché «un po’ caldo» non significa «probabilmente caldo»
- Logica fuzzy: t-norme, implicazioni e regole SE–ALLORA
- Controllo fuzzy: Mamdani e Sugeno, dal ventilatore al pendolo inverso su un carrello
- Clustering fuzzy: l’algoritmo fuzzy c-means e i punti tra i cluster
- Sistemi neuro-fuzzy (ANFIS): regole fuzzy che imparano dai dati
- Catene di Markov: matrice di transizione, distribuzione stazionaria e PageRank
- Modelli di Markov nascosti: l’algoritmo di Viterbi e il casinò disonesto
- Reti bayesiane: perché l’erba è bagnata e che cosa significa per l’irrigatore
- Filtro di Kalman: come stimare da misure imprecise dove si trova un’auto e a che velocità va
- Tipi di apprendimento automatico: supervisionato, non supervisionato, semi-supervisionato e altri
- Prompt, contesto e RAG: come dare a un modello le informazioni giuste
- Autoencoder variazionali (VAE): immagini nuove da uno spazio latente continuo
- Reti generative avversarie (GAN): il falsario contro il detective
- Modelli di diffusione: come il rumore puro diventa un’immagine
- Processi decisionali di Markov: stati, azioni, ricompense ed equazioni di Bellman
- Q-learning e DQN: imparare il valore delle azioni, dalla tabella alla rete neurale
- Policy gradient e PPO: imparare direttamente la politica
- Come funziona un agente IA: un modello linguistico in un ciclo con strumenti
- Programmare con agenti IA: incarico, test e controllo
- Valutazione e sicurezza dei sistemi di IA: come misurare e come sorvegliare
Programma completo della serie 52 di 83 argomenti pubblicati
- Come un agente impara i valori delle azioni senza conoscere le regole del mondo.
- Perché Q-learning e SARSA scelgono sul precipizio un percorso diverso.
- Che cosa fanno la memoria delle esperienze e la rete target in DQN e perché DQN è capriccioso.
Utile sapere prima: Processi decisionali di Markov: stati, azioni, ricompense ed equazioni di Bellman, Neuroevoluzione: evoluzione dei pesi e della forma delle reti neurali e l’algoritmo NEAT
Nella parte precedente abbiamo calcolato esattamente la politica migliore, perché conoscevamo le regole del mondo: dove porta ogni azione e con quale probabilità, e che cosa riceve l’agente in cambio. Un agente reale non le conosce. Un robot non sa con precisione quanto gli slitterà la ruota, un programma che gioca a un videogioco non ne conosce l’interno. Deve provare e imparare da ciò che è successo. In questa parte scriveremo due algoritmi di questo tipo: Q-learning con una tabella e DQN, in cui la tabella viene sostituita da una rete neurale — proprio la combinazione con cui nel 2015 DeepMind ha insegnato a un computer a giocare a decine di giochi Atari guardando lo schermo.
Riprende le parti Processi decisionali di Markov e Una rete neurale da zero.
1. Imparare dall’esperienza
Definizione — apprendimento per differenza temporale (TD)
Invece della media su tutti i possibili stati successivi (come nell’equazione di Bellman) si usa una sola transizione effettivamente vissuta (s, a, r, s′). La stima si sposta di un pezzetto verso il target TD r + γ · (stima del valore di s′): stima ← stima + α (target − stima). La differenza target − stima si chiama errore TD, α è il tasso di apprendimento. La stima viene quindi corretta in base a un’altra stima (bootstrapping).
La mattina stimi che arriverai al lavoro in 30 minuti. Dopo dieci minuti sei fermo in coda e il navigatore dice che ne mancano ancora 35. Non devi aspettare di arrivare — sai già adesso che la stima del mattino era sbagliata di 15 minuti, e la prossima volta la alzerai un po’. Impari dalla differenza tra due stime consecutive.
V(s) ← V(s) + α [r + γ V(s′) − V(s)]
- V(s)
- la stima finora del valore dello stato da cui siamo partiti — è quella che correggiamo; dentro la parentesi viene sottratta, perché la correzione sia proporzionale all’errore, non all’intero valore
- α
- tasso di apprendimento, 0 < α ≤ 1 — quanta parte dell’errore accettiamo; una singola transizione è un campione casuale, quindi non ci fidiamo del tutto
- r
- la ricompensa effettivamente ricevuta — l’unica parte del target che è misurata, non stimata
- γ
- fattore di sconto — il valore dello stato successivo arriva un passo più tardi, proprio come nell’equazione di Bellman
- V(s′)
- la stima del valore dello stato in cui siamo effettivamente arrivati — rappresenta tutto il futuro che resta e che non abbiamo ancora vissuto (bootstrapping); al posto della media ∑ P(s′ | …) un singolo campione
Esempio — il tragitto per il lavoro in numeri
La stima da casa è V(casa) = 30 minuti. Dopo r = 10 minuti di viaggio sei in coda e la stima da lì è V(coda) = 35. Il tempo non viene scontato (γ = 1) e al posto delle ricompense sommiamo minuti, quindi il target TD è 10 + 35 = 45 e l’errore TD 45 − 30 = 15.
- con α = 0,5: nuova stima 30 + 0,5 · 15 = 37,5 minuti,
- con α = 0,1: 30 + 0,1 · 15 = 31,5 minuti,
- con α = 1: direttamente 45 — l’ultima esperienza sovrascriverebbe completamente tutte quelle precedenti.
Teorema — con α fisso la stima è una media mobile dei target
Se la stima parte da Q0 e riceve i target c1, c2, …, cn, dopo n correzioni vale Qn = (1 − α)n Q0 + ∑k=1n α (1 − α)n−k ck.
Dimostrazione. La regola si può riscrivere come Qn = (1 − α) Qn−1 + α cn e sostituire ripetutamente. ∎
I pesi decrescono geometricamente: con α = 0,5 l’ultimo target ha peso 0,5, il penultimo 0,25, quello prima 0,125… Le esperienze più vecchie vengono quindi dimenticate a poco a poco — il che aiuta quando i target cambiano (e nell’apprendimento TD cambiano, perché sono calcolati da stime che a loro volta stanno imparando), ma in un mondo casuale la stima oscilla. Per questo la teoria, per garantire la convergenza, richiede di ridurre α gradualmente.
2. Q-learning
Definizione — Q-learning e SARSA
Il Q-learning (Christopher Watkins, 1989) tiene una tabella Q(s, a) e dopo ogni passo la corregge:
Q(s, a) ← Q(s, a) + α [r + γ · maxa′ Q(s′, a′) − Q(s, a)].
In condizioni ragionevoli (ogni coppia stato–azione viene provata infinite volte, α decresce in modo adeguato) converge al Q* ottimo. SARSA differisce solo nel target: invece del massimo usa Q(s′, a′) per l’azione a′ che l’agente compie davvero. Il Q-learning impara quindi il valore del comportamento migliore, SARSA il valore di come l’agente si comporta davvero, esplorazione compresa.
Una tabella «quanto conviene fare questo qui». Dopo ogni passo la casella viene corretta in base a ciò che è successo subito dopo: la ricompensa più quanto sembra buona la situazione dal nuovo punto. Il Q-learning calcola come se da lì in poi giocasse alla perfezione; SARSA mette in conto che ogni tanto farà una sciocchezza.
Q(s, a) ← Q(s, a) + α [r + γ · maxa′ Q(s′, a′) − Q(s, a)]
- Q(s, a)
- la casella della tabella per l’azione appena provata — si corregge solo quella; le altre azioni in s non sono cambiate, perché questo passo non ha detto nulla su di esse
- α
- tasso di apprendimento — da noi 0,5: il mondo del precipizio è deterministico, quindi non dobbiamo temere il nuovo target
- r
- ricompensa per il passo: −1, oppure −100 per una caduta
- γ
- fattore di sconto — sul precipizio γ = 1, perché l’episodio finisce sempre e ogni passo costa −1, quindi il percorso più breve è migliore anche senza sconto
- maxa′ Q(s′, a′)
- il valore della migliore azione nel nuovo stato — il Q-learning presume che da lì in poi giocherà al meglio, anche se in realtà ogni tanto prova un’azione casuale; nei grafici qui sotto il Q-learning è color ambra
# Q-learning (e SARSA) sulla camminata sul precipizio
Q(s, a) = 0 per tutti gli stati e le azioni
per ogni episodio:
s = partenza
a = azione ε-greedy secondo Q in s
finché s non è l’arrivo:
esegui a, osserva r e s′ # caduta: r = −100, s′ = partenza
a′ = azione ε-greedy secondo Q in s′
target = max su b di Q(s′, b) # Q-learning
target = Q(s′, a′) # SARSA (al posto della riga sopra)
if s′ è l’arrivo: target = 0
Q(s, a) = Q(s, a) + α · (r + γ · target − Q(s, a))
s = s′; a = a′
Esempio — le prime cadute (α = 0,5, γ = 1, la tabella parte da zeri)
Subito alla partenza l’agente prova un passo a destra e cade: r = −100, s′ = partenza, dove per ora tutti i valori sono 0. Il nuovo valore è Q(partenza, →) = 0 + 0,5 · (−100 + 1 · 0 − 0) = −50.
Poi prova un passo in su: r = −1, la nuova casella ha solo zeri, Q(partenza, ↑) = 0 + 0,5 · (−1 + 0 − 0) = −0,5.
Quando cade alla partenza per la seconda volta, il valore più alto alla partenza è ancora 0 (le azioni ↓ e ← non le ha ancora provate), e così Q(partenza, →) = −50 + 0,5 · (−100 + 0 − (−50)) = −75. A ogni caduta successiva si avvicina sempre più a −100.
Nota un effetto collaterale: tutte le ricompense reali sono negative, quindi le azioni non provate, con zero, sembrano migliori di quelle provate. Una tabella che parte da zeri spinge da sola l’agente a provare cose nuove (il cosiddetto ottimismo verso l’ignoto) — nella scelta greedy, prima ancora che entri in gioco il caso ε.
Definizione — politica ε-greedy
Con probabilità 1 − ε scegli l’azione con il Q(s, a) più alto, con probabilità ε un’azione casuale. Senza azioni casuali l’agente non proverebbe mai nulla che per ora non gli sembri il meglio, e potrebbe restare bloccato sul primo percorso decente che trova. È la soluzione più semplice al dilemma esplorazione o sfruttamento.
Nel tuo ristorante preferito vai nove volte su dieci. Ogni tanto ne provi uno nuovo — altrimenti non scopriresti mai che una strada più in là si mangia meglio.
Esempio — le probabilità delle azioni con ε = 0,1
L’azione casuale si sceglie fra tutte le |A| = 4 azioni, quindi anche fra la migliore. Perciò
π(a | s) = 1 − ε + ε/|A| = 1 − 0,1 + 0,025 = 0,925 per l’azione migliore e ε/|A| = 0,1/4 = 0,025 per ciascuna delle altre tre.
Ogni singola azione «sbagliata» — per esempio un passo in giù nel precipizio — capita quindi in un passo su 40.
3. Camminata sul precipizio: Q-learning contro SARSA
Un esperimento classico dal manuale di Richard Sutton e Andrew Barto (cliff walking). Una griglia 12 × 4, partenza in basso a sinistra, arrivo in basso a destra e in mezzo un precipizio. Ogni passo costa −1, la caduta nel precipizio −100 e il ritorno alla partenza. Senza sconto. Il percorso più breve corre rasente al precipizio (13 passi). Entrambi gli algoritmi imparano per 500 episodi con ε = 0,1 e α = 0,5, ciascuno in 50 esecuzioni indipendenti.
Il Q-learning ha imparato il percorso più breve lungo il precipizio in tutte le 50 esecuzioni su 50. SARSA in 41 esecuzioni ha scelto il percorso lungo il bordo superiore della griglia, il più lontano possibile dal precipizio (17 passi), in una un percorso ancora più lungo di due passi e in 8 esecuzioni la politica greedy dopo 500 episodi non arriva ancora all’arrivo — gira in tondo nei punti che l’agente durante l’apprendimento non ha quasi mai raggiunto.
E ora il paradosso: durante l’apprendimento se la cava meglio SARSA. Negli ultimi cento episodi ottiene in media −25,1, il Q-learning −51,1. Il Q-learning cammina sul bordo del precipizio e, siccome un passo su dieci è casuale, cade in media 0,34 volte per episodio; SARSA solo 0,04 volte. Il Q-learning ha imparato che cosa è meglio senza esplorare; SARSA che cosa è meglio esplorando. Quale dei due vogliamo dipende dal fatto che l’agente continui a esplorare anche in produzione — un robot che impara su una macchina vera dovrebbe ragionare come SARSA.
Esempio — quante volte cade il Q-learning (stima semplificata)
Il percorso appreso dal Q-learning va dalla partenza in su e poi per dieci caselle proprio sopra il precipizio. Alla partenza e su ciascuna di quelle dieci caselle nel precipizio porta un passo in giù (alla partenza un passo a destra), cioè una sola azione precisa — con ε = 0,1 con probabilità 0,025. Attraversare 11 caselle così senza cadere:
0,97511 = 0,757, quindi una caduta durante un attraversamento ha probabilità q = 1 − 0,757 = 0,243.
Dopo una caduta l’agente ricomincia dalla partenza, quindi il numero di cadute fino a un attraversamento riuscito ha distribuzione geometrica con valore atteso q / (1 − q) = 0,243 / 0,757 = 0,32 cadute per episodio. Misurato: 0,34 — un po’ di più, perché la stima trascura i passi casuali a sinistra, dopo i quali l’agente passa ancora altri passi sopra il precipizio. SARSA cammina lungo il bordo superiore, tre righe sopra il precipizio: lì la porterebbero nel precipizio solo diversi passi casuali in giù di fila. Rischia soprattutto alla partenza, e già questo dà 0,025 / 0,975 = 0,026 cadute per episodio; misurato: 0,04.
Definizione — apprendimento secondo la propria politica o secondo un’altra (on-policy / off-policy)
Un metodo è on-policy quando impara il valore della stessa politica secondo cui sta agendo (SARSA). È off-policy quando agisce secondo una politica (per esempio ε-greedy), ma impara il valore di un’altra (il Q-learning impara quella greedy). I metodi off-policy possono imparare anche da esperienze raccolte in precedenza o da qualcun altro.
On-policy: imparo dai miei viaggi e li valuto così come sono. Off-policy: guardo anche i viaggi degli altri (o i miei vecchi) e ne ricavo come guiderebbe il guidatore migliore.
4. Quando la tabella non basta: DQN
Una tabella ha bisogno di una riga per ogni stato. Il pendolo inverso su un carrello della parte sulla neuroevoluzione ha uno stato fatto di quattro numeri reali (posizione e velocità del carrello, angolo e velocità angolare dell’asta); un gioco Atari ha uno stato fatto di uno schermo di 210 × 160 pixel. Nessuna tabella basta. Al suo posto Q(s, a) viene stimato da una rete neurale.
Definizione — Deep Q-Network (DQN)
DQN (Volodymyr Mnih e altri, DeepMind, 2015) stima Q(s, ·) con una rete di parametri θ e minimizza (r + γ maxa′ Q(s′, a′; θ−) − Q(s, a; θ))². Due modifiche sono fondamentali: la memoria delle esperienze (replay buffer) — le transizioni vengono salvate e si impara da mini-batch casuali, non dagli ultimi passi uno dopo l’altro; e la rete target θ− (target network) — una copia della rete che viene aggiornata solo ogni tanto, perché il target non si sposti a ogni passo di apprendimento.
Memoria delle esperienze: invece di imparare solo dagli ultimi minuti, l’agente si riguarda ricordi casuali di tutta la sua storia, così non dimentica ciò che sapeva fare ieri. Rete target: quando impari a colpire un bersaglio, non ti aiuta se il bersaglio si sposta ogni volta che spari. Lo lasciamo fermo per un po’.
L(θ) = E(s, a, r, s′) ~ D [(r + γ maxa′ Q(s′, a′; θ−) − Q(s, a; θ))²]
- E… ~ D
- media su transizioni casuali dalla memoria delle esperienze D — mescola esperienze vecchie e nuove, così i passi consecutivi, molto simili tra loro, non trascinano la rete in un’unica direzione
- r
- ricompensa — sul carrello +1 per ogni passo in cui l’asta sta in piedi
- γ
- fattore di sconto 0,99 — la rete «vede» circa 1/(1 − γ) = 100 passi avanti
- max Q(s′, a′; θ−)
- il target dalla rete target con i parametri congelati θ− — lo stesso massimo del Q-learning tabellare, solo che durante il passo di apprendimento non si muove; quando lo stato s′ significa caduta, questo termine è 0
- Q(s, a; θ)
- la stima della rete in addestramento per l’azione compiuta davvero — l’unica cosa che cambia durante il passo di apprendimento (il gradiente passa solo per θ)
Definizione — perdita di Huber
Invece del quadrato dell’errore d = Q(s, a; θ) − target, il nostro DQN usa (come l’articolo originale, che tronca l’errore a ±1) la perdita di Huber H(d) = d²/2 per |d| ≤ 1 e |d| − 1/2 altrimenti. La sua derivata è d al centro e ±1 fuori: gli errori piccoli si correggono come con il quadrato, un errore grande (per esempio quando il target salta dopo la copia della rete target) dà al massimo un gradiente unitario e una sola transizione strana non manda la rete fuori strada.
# DQN sul pendolo inverso su un carrello
rete Q(·; θ) 4 → 64 → 64 → 2, rete target θ⁻ = θ, memoria D vuota
s = partenza casuale
per t = 1 … 30 000:
ε = max(0,05; 1 − 0,95 · t / 10 000)
a = azione casuale con probabilità ε, altrimenti argmax Q(s, ·; θ)
esegui a, osserva s′ e se l’asta è caduta
salva (s, a, r = 1, s′, caduta) in D # oltre 20 000 esce la più vecchia
s = nuova partenza se l’asta è caduta o ha resistito 500 passi, altrimenti s′
da D estrai un mini-batch casuale di 32 transizioni, per ciascuna:
target = r, se è caduta
target = r + γ · max Q(s′, ·; θ⁻), altrimenti
un passo di Adam sulla perdita di Huber media (Q(s, a; θ) − target)
ogni 500 passi: θ⁻ = θ
Esempio — l’esplorazione e la grandezza dei valori
L’esplorazione cala linearmente: ε0 = 1 (solo azioni casuali), al passo 5 000 è ε = 1 − 0,95 · 0,5 = 0,525 e dal passo 10 000 resta 0,05.
Quanto sono grandi i valori che la rete deve imparare? Se l’asta restasse in piedi per sempre, il valore sarebbe 1 + 0,99 + 0,99² + … = 1/(1 − 0,99) = 100; per un episodio limitato a 500 passi è (1 − 0,99500)/(1 − 0,99) = 99,3. All’inizio la rete restituisce numeri vicini allo zero, quindi i target durante l’apprendimento devono crescere di due ordini di grandezza — e con loro continuano a spostarsi.
Il nostro DQN: rete 4 → 64 → 64 → 2 (due azioni: spingere a sinistra o a destra), ricompensa +1 per ogni passo in cui l’asta sta in piedi, γ = 0,99, memoria da 20 000 transizioni, mini-batch da 32, la rete target viene copiata ogni 500 passi, ε cala da 1 a 0,05 nei primi 10 000 passi. In tutto 30 000 passi. Ogni 2 500 passi misuriamo per quanti passi resiste la politica greedy (media su quattro partenze, al massimo 500, cioè 10 secondi).
| variante | misura migliore | quando | alla fine |
|---|---|---|---|
| DQN completo, seme 1 | 500 | passo 17 500 | 110 |
| DQN completo, seme 2 | 500 | passo 12 500 | 217 |
| senza memoria delle esperienze | 192 | passo 7 500 | 124 |
| senza rete target | 9 | passo 2 500 | 9 |
Il DQN completo impara a tenere in piedi l’asta per tutti i 500 passi — nell’esecuzione con seme 1 per la prima volta al passo 17 500. Ma subito dopo lo dimentica: alla fine dell’apprendimento la tiene solo per 110 passi. La seconda esecuzione oscilla in modo simile. Senza memoria delle esperienze (impara solo dagli ultimi 32 passi) la rete non supera 192. E senza rete target l’apprendimento crolla del tutto: la politica resiste per tutto il tempo solo 9 passi — esattamente quanto resiste un carrello che spingi sempre a destra. La rete ha «imparato» una sola azione.
5. Perché DQN è così capriccioso
Definizione — triade mortale (deadly triad)
Sutton e Barto chiamano così la combinazione di tre elementi: approssimazione di funzione (una rete al posto della tabella), bootstrapping (il target si calcola dalla propria stima) e apprendimento off-policy. Ciascuno da solo è sicuro; insieme possono far oscillare o divergere l’apprendimento. DQN li contiene tutti e tre — la memoria delle esperienze e la rete target si limitano ad attenuare il pericolo.
La rete impara dalle proprie stime. Quando la stima in uno stato sale, sale (perché la rete generalizza) anche negli stati simili, compreso quello da cui si calcola il target. Il target sale, la stima lo insegue… Un cane che si morde la coda.
In pratica si aggiunge quindi tutta una serie di modifiche: Double DQN (Hado van Hasselt e altri, 2015) separa la scelta dell’azione migliore dalla sua valutazione e attenua la sovrastima sistematica che il massimo nel target porta con sé; poi la memoria con priorità, la separazione tra valore e vantaggio (dueling) e altre ancora — la loro combinazione si chiama Rainbow (2017). E un consiglio del tutto pratico: durante l’apprendimento salva la rete della misura migliore, non l’ultima.
y = r + γ Q(s′, argmaxa′ Q(s′, a′; θ); θ−)
- r
- ricompensa, invariata
- γ
- fattore di sconto, invariato
- argmax Q(s′, a′; θ)
- scelta dell’azione da parte della rete in addestramento — quale azione sceglieremmo in s′
- Q(s′, …; θ−)
- valutazione di quell’azione da parte della rete target — un’altra stima con altri errori, così un’azione che la rete in addestramento ha sopravvalutato per caso non riceve automaticamente anche un valore sopravvalutato
Esempio — perché il massimo sovrastima (in modo semplificato)
Due azioni hanno valore reale 0, ma la stima di ciascuna è affetta da un errore indipendente di +1 oppure −1 (entrambi con probabilità 1/2). Le quattro possibilità ugualmente probabili danno come massimo delle stime 1, 1, 1 e −1, quindi
E[max(Q̂1, Q̂2)] = (1 + 1 + 1 − 1)/4 = 0,5 > 0 = max(Q1, Q2).
Il massimo su stime rumorose è in media più grande del massimo dei valori reali, e poiché il target con il massimo viene sostituito ancora e ancora, la sovrastima si propaga. Se l’azione la sceglie una stima e la valuta un’altra, indipendente, il valore atteso della valutazione è 0 — l’errore della seconda stima non ha più nulla a che fare con la scelta.
I metodi basati sul valore come DQN funzionano bene quando le azioni sono poche (spingere a sinistra o a destra; i tasti di un controller). Per le azioni continue — con quanta forza ruotare un giunto del robot — conviene imparare direttamente la politica. È il tema della prossima parte, sul policy gradient e su PPO.
6. Riepilogo
- Senza conoscere le regole del mondo, i valori si imparano dalle transizioni vissute: la stima si sposta verso il target r + γ · stima dello stato successivo.
- Il Q-learning impara il valore del comportamento migliore (off-policy), SARSA il valore del comportamento con l’esplorazione (on-policy).
- Sul precipizio: il Q-learning trova il percorso più breve (13 passi), ma con ε = 0,1 cade 0,34 volte per episodio; SARSA va più sul sicuro e durante l’apprendimento ottiene di più (−25,1 contro −51,1).
- DQN sostituisce la tabella con una rete; senza memoria delle esperienze e senza rete target non impara (al massimo 192 e 9 passi rispettivamente).
- Anche il DQN completo oscilla: tiene l’asta per 500 passi e poi lo dimentica di nuovo — la triade mortale.
Vuoi metterci le mani? Chiedi a un agente IA di addestrare un DQN sull’ambiente CartPole della libreria Gymnasium e di disegnare la curva di apprendimento per cinque semi. Poi fagli aggiungere Double DQN e confrontare.
La vedi diversamente? Scrivi a support@coden-app.com.