Reinforcement Learning
In apprendimento per rinforzo, un agente cerca di venire con la migliore azione determinato uno stato.
E.g. nel videogioco Pac-Man, lo stato sarebbe il mondo di gioco 2D in cui ti trovi, gli oggetti circostanti (pac-punti, nemici, muri, ecc.) e l'azione si muoverà attraverso quello spazio 2D (andando su/giù/sinistra destra).
Così dato, lo stato del mondo di gioco, l'agente deve scegliere l'azione migliore per massimizzare i premi. Attraverso prove ed errori di apprendimento di rinforzo, accumula "conoscenza" attraverso queste coppie (state, action)
, come in, può dire se ci sarebbe una ricompensa positiva o negativa data una coppia (state, action)
. Chiamiamo questo valore Q(state, action)
.
modo rudimentale per memorizzare questa conoscenza sarebbe una tabella come di seguito
state | action | Q(state, action)
---------------------------------
... | ... | ...
Lo spazio (state, action)
può essere molto grande
Tuttavia, quando il gioco si complica, lo spazio della conoscenza può diventare enorme e non è più possibile memorizzare tutte le coppie (state, action)
. Se ci pensate in termini crudi, anche uno stato leggermente diverso è ancora uno stato distinto (ad esempio una diversa posizione del nemico che passa attraverso lo stesso corridoio). È possibile utilizzare qualcosa che può generalizzare la conoscenza invece di memorizzando e guardando su ogni piccolo stato distinto.
Quindi, ciò che si può fare è creare una rete neurale, ad es. predice la ricompensa per un ingresso (state, action)
(o scegliere la migliore azione determinato uno stato, come più vi piace di vedere le cose)
ravvicinamento del valore Q
con una rete neurale
Quindi quello che hai effettivamente è un NN "cervello intelligente", che prevede il valore Q
, in base all'input (state, action)
. Questo è il modo più trattabile che memorizza ogni possibile valore come abbiamo fatto nella tabella sopra.
Q = neural_network.predict(state, action)
profonda Reti Neurali
Per essere in grado di farlo per i giochi complicati, NN può avere bisogno di essere "profondo", che significa un paio di livelli nascosti non può bastare di catturare tutti i dettagli intricati di quella conoscenza, quindi l'uso di NN profondi (molti livelli nascosti).
I livelli aggiuntivi nascosti consentono alla rete di individuare internamente funzionalità che possono aiutarlo ad apprendere e a generalizzare problemi complessi che potrebbero essere stati impossibili su una rete poco profonda.
parole di chiusura
In breve, la rete neurale profonda permette apprendimento per rinforzo deve essere applicata a problemi più grandi. È possibile utilizzare qualsiasi approssimatore di funzione invece di un NN per approssimare Q
e, se si sceglie NN, non lo è assolutamente. Sono solo i ricercatori che hanno avuto un grande successo usandoli di recente.
Non sono sicuro che questa domanda sia adatta per Stack Overflow, sembra piuttosto ampia. – JAL
@ JAL Volevo solo sapere qual è il significato di ** deep ** in questo contesto. Penso che tu abbia ragione, ma non ho trovato nessuna risposta esauriente altrove. La risposta data mi ha davvero aiutato molto. –