Le funzioni di ricompensa descrivono come l'agente "dovrebbe" comportarsi. In altre parole, hanno un contenuto "normativo", che stabilisce ciò che si desidera che l'agente realizzi. Ad esempio, alcuni gratificante stato S potrebbe rappresentare il gusto del cibo. O forse, ( s , a ) potrebbe rappresentare l'atto di assaggiare il cibo. Quindi, nella misura in cui la funzione di ricompensa determina quali sono le motivazioni dell'agente, sì, devi inventarla!
Non ci sono restrizioni assolute, ma se la tua funzione di ricompensa è "meglio comportata", l'agente imparerà meglio. In pratica, questo significa velocità di convergenza e non rimanere bloccati nei minimi locali. Ma ulteriori specifiche dipenderanno fortemente dalle specie di apprendimento di rinforzo che stai utilizzando. Ad esempio, lo spazio stato / azione è continuo o discreto? Il mondo o la selezione dell'azione sono stocastici? La ricompensa viene continuamente raccolta o solo alla fine?
Un modo per visualizzare il problema è che la funzione di ricompensa determina la durezza del problema. Ad esempio, tradizionalmente, potremmo specificare un singolo stato da ricompensare:
R ( s1) = 1
R ( s2 .. n) = 0
In questo caso, il problema da risolvere è piuttosto difficile, rispetto a, ad esempio, R ( sio) = 1 / i2 , dove esiste un gradiente di ricompensa rispetto agli stati. Per problemi difficili, specificare maggiori dettagli, ad es. R ( s , a ) o R ( s , a , s') possono aiutare alcuni algoritmi fornendo ulteriori indizi, ma potenzialmente a scapito di richiedere più esplorazioni. Potrebbe essere necessario includere i costi come termini negativi inR (ad es.Costi energetici), per rendere il problema ben specificato.
Nel caso di uno spazio di stato continuo, se si desidera che un agente apprenda facilmente, la funzione di ricompensa dovrebbe essere continua e differenziabile . Quindi i polinomi possono funzionare bene per molti algoritmi. Inoltre, prova a rimuovere i minimi localizzati. Esistono numerosi esempi di come NON eseguire una funzione di ricompensa, come la funzione di Rastrigin . Detto questo, diversi algoritmi RL (ad es. Macchine Boltzmann ) sono piuttosto robusti per questi.
Se stai usando RL per risolvere un problema del mondo reale, probabilmente scoprirai che sebbene la ricerca della funzione di ricompensa sia la parte più difficile del problema, è intimamente legata a come specifichi lo spazio degli stati . Ad esempio, in un problema che dipende dal tempo, la distanza dall'obiettivo fa spesso una cattiva funzione di ricompensa (ad es. Nel problema della mountain car ). Tali situazioni possono essere risolte utilizzando spazi di stati di dimensione superiore (stati nascosti o tracce di memoria) o mediante RL gerarchico.
Ad un livello astratto, si supponeva che l'apprendimento senza supervisione potesse evitare di stipulare prestazioni "giuste e sbagliate". Ma ora possiamo vedere che RL sposta semplicemente la responsabilità dell'insegnante / critico alla funzione di ricompensa. C'è un modo meno circolare per risolvere il problema: cioè inferire la migliore funzione di ricompensa . Un metodo è chiamato RL inverso o "apprendimento dell'apprendistato" , che genera una funzione di ricompensa che riproduce i comportamenti osservati. Trovare la migliore funzione di ricompensa per riprodurre una serie di osservazioni può essere implementato anche con metodi teorici MLE, bayesiani o informativi, se si cerca su Google "apprendimento inverso di rinforzo".