Apprendimento per rinforzo

Da Wikipedia, l'enciclopedia libera.

L'apprendimento per rinforzo è una tecnica di apprendimento automatico che punta ad attuare sistemi in grado di apprendere ed adattarsi alle mutazioni dell'ambiente in cui sono immersi attraverso la distribuzione di una ricompensa che consiste nella valutazione delle loro prestazioni e che prende appunto il nome di rinforzo. Può essere attuata mediante un apposito algoritmo, come il Q-learning, da inserire all'interno del sistema in cui si vuole realizzare l'apprendimento.


Descrizione[modifica | modifica wikitesto]

Questa tecnica si basa sul presupposto che all'interno di un sistema si possano predisporre[1]:

  • 1. un meccanismo logico A in grado di scegliere degli output sulla base degli input ricevuti.
  • 2. un meccanismo logico B in grado di valutare l'efficacia degli output rispetto ad un preciso parametro di riferimento.
  • 3. un meccanismo logico C capace di cambiare il meccanismo A per massimizzare la valutazione di efficacia effettuata da B.

Il modo in cui questi meccanismi dovrebbero collaborare è descritto dai seguenti punti:

  • Se il meccanismo A effettua una scelta efficace allora il meccanismo B manda in output un premio proporzionale all'efficacia della scelta di A.
  • Se il meccanismo A effettua una scelta inefficace allora il meccanismo B manda in output una penalità proporzionale all'inefficacia della scelta di A.
  • Il meccanismo C, osservando l'agire di A e B, cerca di modificare la funzione matematica che regola il comportamento di A in modo da massimizzare la quantità e la qualità dei "premi" ricevuti da B.

I meccanismi B e C sono quelli che vanno a costituire il metodo di rinforzo proprio di questa metodica di apprendimento.

Per attuare i meccanismi ed i comportamenti descritti nelle righe precedenti, dal punto di vista logico, si necessita delle seguenti componenti:

  • Insieme di Input: rappresenta i possibili input che il sistema può ricevere (servono per determinare lo stato del sistema).
  • Funzione valore di stato: questa funzione associa un parametro di valutazione ad ogni stato del sistema.
  • Funzione valore di azione: questa funzione associa un parametro di valutazione ad ogni possibile coppia stato-azione.
  • Tecnica di rinforzo: consiste in una funzione di rinforzo che, a seconda delle prestazioni attuali e dell'esperienza passata, fornisce delle direttive con cui cambiare la funzione di valore di stato e la funzione di valore d'azione.
  • Insieme di Output: rappresenta le possibili decisioni che il sistema può intraprendere.


Input[modifica | modifica wikitesto]

Gli input al sistema possono provenire dai più svariati sensori. Ad esempio, nel caso di un robot che deve imparare a muoversi all'interno di un percorso, gli input potrebbero essere forniti da dei sensori di prossimità che dovrebbero essere poi rimappati in opportuni stati che nel caso dell'esempio potrebbero essere "ostacolo di fronte", "strada libera", "muro sul lato" ecc. Per mappare i valori dei sensori a particolari stati si sono rivelate particolarmente efficaci le tecniche basate su controllori fuzzy.

Funzione di valore di stato[modifica | modifica wikitesto]

La funzione valore di stato è quella che ad ogni stato identificato dal sistema e determinato sulla base degli input, associa un valore relativo al grado di bontà della situazione. Viene generalmente espressa nella seguente forma:

 V:S \longrightarrow \mathfrak{R}

Funzione di valore di azione[modifica | modifica wikitesto]

La funzione di valore di azione è quella che ad ogni coppia composta da stato e azione associa un valore relativo al grado di bontà della combinazione. Viene generalmente espressa nella forma:

 Q:S \times A \longrightarrow \mathfrak{R}

Tecnica di rinforzo[modifica | modifica wikitesto]

A seconda di come si progetta e si decide di implementare il sistema di apprendimento, possono essere utilizzate diverse funzioni di rinforzo per cambiare la funzione di valore di stato e diverse politiche per determinare premi e penalità.

Dal punto di vista modellistico tutte le funzioni di rinforzo possono essere ricondotte alla seguente formula base:

v_{t+1} = (1-\alpha) v_t(s)+ \alpha \Delta_{t+1}

dove 0\;<\alpha\le1

e \Delta_{t+1} è il "premio" o la "penalità" che è stata associata alla corrente azione da parte della funzione di azione.

Questa funzione, come si può intuire dalla formula, altera la funzione di valore di stato a partire dal prossimo istante in cui verrà richiamata e in base alla valutazione dell'azione corrente effettuata dalla politica di premio (o di penalità).


Le più diffuse politiche di premio (o di penalità) sono:

  • Rinforzo con premio ad orizzonte infinito: il rinforzo ha sempre la stessa intensità ed è valutato per tutti gli istanti temporali.  E \left [ \sum_{k=0}^\infty r_{t+k+1} \right ]
  • Rinforzo con premio ad orizzonte finito: il rinforzo ha sempre la stessa intensità ed è valutato per un periodo di tempo limitato.  E \left [ \sum_{k=0}^T r_{t+k+1} \right ]
  • Rinforzo con premio medio: il rinforzo ha intensita via via decrescente ma viene valutato per tutti gli istanti temporali. In pratica man mano che il tempo passa, i valori di rinforzo vengono attenuati dando più importanza alle valutazioni effettuate negli istanti iniziali.  E \left [ \lim_{n \to \infty} \sum_{k=0}^n r_{t+k+1}  \right ]
  • Rinforzo con premio scontato: il rinforzo è distribuito per tutti gli istanti temporali ma aumenta a seconda di un parametro legato agli istanti temporali in cui viene applicato.  E \left [  \sum_{k=0}^\infty {\gamma^k \cdot r_{t+k+1}}\right ]

Output[modifica | modifica wikitesto]

L'output consiste in una delle azioni che il sistema può intraprendere. La scelta è effettuata in modo da massimizzare il valore della funzioni di valore di azione ed è strettamente dipendente dal rinforzo distribuito durante gli istanti passati.

Algoritmi di apprendimento per rinforzo[modifica | modifica wikitesto]

  • Q-learning: è uno degli algoritmi di apprendimento con rinforzo più diffusi ed utilizzati. Fa utilizzo di un rinforzo con premio scontato e costituisce una variante della funzione di rinforzo di "base" presentata nei paragrafi precedenti.

Note[modifica | modifica wikitesto]

  1. ^ (EN) Sezione 8, Apprendimento con rinforzo di A.Bonarini, M. Matteucci, Politecnico di Milano.

Bibliografia[modifica | modifica wikitesto]


Voci correlate[modifica | modifica wikitesto]