Apprendimento per rinforzo con agenti Tensorflow [2022]

Pubblicato: 2021-01-01

L'apprendimento per rinforzo ha guadagnato una preziosa popolarità con il successo relativamente recente del metodo AlphaGo di DeepMind per battere il giocatore campione del mondo Go. Il metodo AlphaGo è stato in parte educato mediante l'apprendimento per rinforzo su reti neurali profonde.

Questo stile di apprendimento è una caratteristica distintiva dell'apprendimento automatico rispetto ai paradigmi supervisionati e non supervisionati classici. Nell'apprendimento per rinforzo, la rete risponde ai dati ambientali (chiamati stato) utilizzando reti neurali profonde e influenza il comportamento di un agente per cercare di ottimizzare una ricompensa.

Questa tecnica aiuta una rete a imparare a praticare sport, come Atari o altri videogiochi, o qualche altra sfida che può essere riscritta come una forma di gioco. In questo tutorial, un modello comune di apprendimento per rinforzo, introdurrò i principi generali dell'apprendimento Q e dimostrerò come incorporare l'apprendimento Q profondo in TensorFlow.

Sommario

Introduzione all'apprendimento per rinforzo

Come accennato in precedenza, l'apprendimento per rinforzo consiste in alcune entità o principi di base. Sono: un ambiente che crea una condizione e una ricompensa e un'entità che esegue azioni in un determinato ambiente. Nel diagramma seguente, vedi questa interazione:

Il compito dell'agente in un tale contesto è analizzare lo stato e le informazioni sull'incentivo che riceve e scegliere un comportamento che massimizzi l'input che riceve dalla ricompensa. L'agente apprende dal contatto ripetitivo con il mondo, o, in altre parole, dal gioco ripetuto.

Per avere successo, è necessario che l'agente:

1. Impara il legame tra stati, comportamenti e incentivi che ne derivano

2. Determina quale è la mossa migliore tra cui scegliere (1)

L'attuazione (1) richiede la definizione di un certo insieme di principi che possono essere utilizzati per notificare (2) e (2) è indicato come la strategia operativa. Uno dei metodi più comuni per applicare (1) e (2) utilizzando deep Q è la rete Deep Q e la politica epsilon-greedy.

Impara: i 5 progetti TensorFlow più popolari per principianti

Q apprendimento

L'apprendimento Q è un modo basato sul valore per fornire dati per dire quale azione può intraprendere un agente. Creare una tabella che riassuma i vantaggi di agire su più giochi in uno stato è un concetto originariamente intuitivo di generare principi su cui basare le azioni. Questo terrà traccia di quali sono i movimenti più vantaggiosi. Per cominciare, consideriamo un gioco semplice in ogni stato con 3 stati e due potenziali azioni: un tavolo può rappresentare le ricompense per questo gioco:

Azione 1 Azione 2
Stato 1 0 10
Stato 2 10 0
Stato 3 0 10

Puoi vedere nella tabella sopra che per questo semplice gioco, quando l'agente è lo Stato 1 e esegue l'Azione 2, se esegue l'Azione 1, riceverà una ricompensa di 10 ma zero. Nello stato 2, la condizione è invertita e lo stato 3 alla fine assomiglia allo stato 1. Se un agente esplorava arbitrariamente questo gioco e calcolava il comportamento ottenuto la ricompensa maggiore in uno qualsiasi dei tre stati (immagazzinando questa conoscenza in una matrice, diciamo), così sarà effettivamente nota la forma pratica della tabella sopra.

In altre parole, se l'agente avesse effettivamente selezionato il comportamento che aveva appreso in passato e che aveva fornito la ricompensa più alta (imparare in modo efficace una qualche forma della tabella sopra), avrebbe imparato a giocare in modo efficace. Quando è appropriato costruire semplicemente tabelle per sommatoria, perché abbiamo bisogno di idee fantasiose come l'apprendimento Q e poi le reti neurali?

Ricompensa differita

Bene, la prima risposta apparente è che il gioco sopra è semplicemente molto semplice, con solo 3 stati e 2 atti per stato. I veri giochi sono significativamente più complessi. Il principio della ritardata ricompensa nel caso di cui sopra è l'altro concetto significativo che è assente. Un agente deve imparare a essere in grado di adottare misure per giocare correttamente ai giochi più realistici, il che potrebbe non portare necessariamente a una ricompensa, ma potrebbe tradursi in una ricompensa significativa più avanti lungo la strada.

Azione 1 Azione 2
Stato 1 0 5
Stato 2 0 5
Stato 3 0 5
Stato 4 20 0

Se l'Azione 2 viene eseguita in tutti gli stati del gioco sopra menzionato, l'agente torna allo Stato 1, cioè all'inizio. Negli Stati da 1 a 3, ottiene persino un credito di 5 in quanto lo fa. Se, quindi, l'Azione 1 viene intrapresa in tutti gli Stati 1-3, l'agente si recherà nello Stato successivo, ma non riceverà una ricompensa fino a quando non entrerà nello Stato 4, a quel punto riceverà una ricompensa di 20.

In altre parole, un agente è meglio se non prende l'Azione 2 per ottenere una ricompensa istantanea di 5, ma può invece scegliere l'Azione 1 per procedere continuamente attraverso gli stati per ottenere una ricompensa di 20. L'agente vuole essere in grado per scegliere atti che si traducono in una ricompensa ritardata quando il valore della ricompensa ritardata è troppo alto.

Leggi anche: Classificazione delle immagini di Tensorflow

La regola di apprendimento Q

Questo ci incoraggia a chiarire le regole di apprendimento di Q. Nel deep Q learning, la rete neurale deve prendere lo stato presente, s, come vettore e restituire un valore Q per ogni comportamento potenziale, a, in quello stato, cioè è necessario restituire Q(s, a) per entrambi se a. Queste Q(s, a) devono essere riviste durante la formazione attraverso la seguente regola:

Q(s,a) = Q(s,a) + alp[r+γmax Q(s',a ') – Q(s,a)] + alp[r+ γmax Q(s',a')

Questa legge ha bisogno di un po' di spacchettamento per l'aggiornamento. In secondo luogo, puoi vedere che il nuovo valore di Q(s, a) richiede la modifica del suo valore esistente inserendo alcuni bit extra sul lato destro dell'equazione sopra. Passa da sinistra a destra. Dimentica l'alfa per un po'. Tra parentesi quadre, vediamo che la prima parola è r, che sta per il premio guadagnato per aver intrapreso un'azione negli stati.

Questa è la ricompensa istantanea; non è ancora coinvolta alcuna soddisfazione differita. La parola successiva è la stima dell'incentivo differito. Innanzitutto, abbiamo il valore γ che sconta l'effetto della ricompensa ritardata, che è sempre compreso tra 0 e 1. Ne parleremo in un secondo. Il termine successivo maxa'Q(s, 'a') è il valore Q massimo disponibile nella condizione successiva.

Semplifichiamo le cose: l'agente inizia negli stati, esegue l'azione a, termina negli stati e quindi il codice specifica il valore massimo di Q negli stati, ovvero max a 'Q(s',a'). Perché allora il Max è un senso 'Q(s',a') preso in considerazione? Se ha effetto e nello stato s, è noto che rappresenta l'intero compenso possibile che va al conduttore.

Tuttavia, γ sconta questo valore per tenere conto del fatto che l'attesa per sempre di un possibile incentivo non è auspicabile per l'agente: è meglio che l'agente bersagli il premio più grande con il minor tempo possibile. Si noti che il valore di Q(s',a)' mantiene implicitamente anche l'incentivo scontato più alto per l'economia dopo quello, cioè Q(s',a)' perché mantiene la motivazione scontata per lo stato Q(s',a) ' e così via.

Questo perché l'agente selezionerà l'azione non solo sulla base della ricompensa immediata r, ma anche sulla base di potenziali futuri incentivi scontati.

Apprendimento della Q profonda

Il Deep Q learning segue la legge di aggiornamento dell'apprendimento Q durante tutta la fase di formazione. In altre parole, viene creata una rete neurale che accetta lo stato s come input, quindi la rete viene addestrata a produrre valori Q(s, a) appropriati per ogni comportamento nello stato s. L'azione dell'agente verrà quindi selezionata eseguendo l'azione con il valore Q(s, a) più grande (prendendo un argmax dall'output della rete neurale). Questo può essere visto nel primo passaggio del diagramma seguente:

Selezione delle azioni e fasi di formazione – Apprendimento Deep Q

Una volta che questo trasferimento è stato effettuato e un'azione è stata selezionata, l'agente eseguirà l'azione. L'agente riceverà quindi un feedback su quale incentivo viene fornito per intraprendere l'azione da quello stato. In linea con la Q Learning Guideline, il prossimo passo che vogliamo fare ora è addestrare la rete. Nella seconda parte, questo può essere visto nel diagramma sopra.

Il vettore di stato s è l'array di input x per il training di rete e il campione di training di output y è il vettore Q(s, a) raccolto durante il processo di selezione dell'azione. Tuttavia, uno dei valori di Q(s,a), corrispondente all'azione a, è impostato per avere un obiettivo di r+γQ(s',a '), come si può vedere nella figura sopra. Addestrando la rete in questo modo per dire all'agente quale comportamento sarà il migliore da selezionare per il suo beneficio a lungo termine, il vettore di output Q(s, a) dalla rete si rafforzerà nel tempo.

Pro dell'apprendimento per rinforzo:

  • L'apprendimento per rinforzo può essere utilizzato per risolvere sfide molto impegnative che non possono essere superate con gli approcci convenzionali.
  • Questa strategia è selezionata in modo da produrre risultati a lungo termine, che sono molto difficili da raggiungere.
  • Questo modello di apprendimento è in qualche modo simile all'apprendimento degli esseri umani. Quindi, è vicino al raggiungimento della perfezione.
  • Il modello correggerebbe gli errori che si sono verificati durante la fase di test.
  • Se un errore viene corretto dal modello, le possibilità che si verifichi lo stesso errore sono leggermente inferiori.
  • Creerebbe il miglior paradigma per risolvere un particolare problema.

Contro dell'apprendimento per rinforzo

  • L'apprendimento per rinforzo come schema non è corretto sotto molti aspetti, ma è proprio questa qualità che lo rende utile.
  • Troppo apprendimento per rinforzo può causare la sopraffazione degli stati, il che può ridurre i risultati.
  • L'apprendimento per rinforzo non è preferibile all'uso per risolvere problemi fondamentali.
  • L'apprendimento per rinforzo richiede una grande quantità di intelligenza e una grande quantità di calcolo. È affamato di dati. Ecco perché si adatta così bene ai videogiochi, quindi puoi giocare più e più volte e sembra possibile ottenere molti dettagli.
  • L'apprendimento per rinforzo presuppone che l'universo sia markoviano, ma non lo è. Il modello markoviano descrive una sequenza di possibili eventi in cui la probabilità di ogni occorrenza dipende solo dalla condizione raggiunta nell'evento precedente.

Cosa succede dopo?

Se vuoi padroneggiare l'apprendimento automatico e imparare come addestrare un agente a giocare a tic tac toe, ad addestrare un chatbot, ecc. dai un'occhiata al corso di diploma PG di apprendimento automatico e intelligenza artificiale di upGrad.

Cos'è TensorFlow?

Python, il linguaggio di programmazione comunemente usato nell'apprendimento automatico, viene fornito con una vasta libreria di funzioni. TensorFlow è una di queste librerie Python lanciata da Google, che supporta calcoli numerici rapidi ed efficienti. È una libreria open source creata e gestita da Google che viene ampiamente utilizzata per sviluppare modelli di Deep Learning. TensorFlow viene utilizzato anche insieme ad altre librerie wrapper per semplificare il processo. A differenza di altre librerie numeriche utilizzate anche nel Deep Learning, TensorFlow è stato sviluppato sia per la ricerca e lo sviluppo di applicazioni che per le funzioni dell'ambiente di produzione. Può essere eseguito su macchine con CPU singole, dispositivi mobili e sistemi informatici distribuiti.

Quali sono alcune altre librerie come TensorFlow nell'apprendimento automatico?

Nei giorni precedenti, gli ingegneri di machine learning scrivevano manualmente tutto il codice per diversi algoritmi di machine learning. Ora, scrivere le stesse righe di codice ogni volta per algoritmi, modelli statistici e matematici simili non richiedeva solo tempo, ma era anche inefficiente e noioso. Come soluzione alternativa, sono state introdotte le librerie Python per riutilizzare le funzioni e risparmiare tempo. La raccolta di librerie di Python è vasta e versatile. Alcune delle librerie Python più comunemente utilizzate sono Theano, Numpy, Scipy, Pandas, Matplotlib, PyTorch, Keras e Scikit-learn, oltre a TensorFlow. Le librerie Python sono anche facilmente compatibili con le librerie C/C++.

Quali sono i vantaggi dell'utilizzo di TensorFlow?

I numerosi vantaggi di TensorFlow lo rendono un'opzione estremamente popolare per lo sviluppo di modelli computazionali in deep learning e machine learning. In primo luogo, è una piattaforma open source che supporta formati di visualizzazione dei dati avanzati con la sua presentazione grafica. I programmatori possono anche usarlo facilmente per eseguire il debug dei nodi, risparmiando tempo ed eliminando la necessità di esaminare l'intera lunghezza del codice della rete neurale. TensorFlow supporta tutti i tipi di operazioni e gli sviluppatori possono creare qualsiasi tipo di modello o sistema su questa piattaforma. È facilmente compatibile con altri linguaggi di programmazione come Ruby, C++ e Swift.