Introduzione ai banditi multi-armati

introduzione

Multi-Armed Bandit (MAB) è un framework di Machine Learning in cui un agente deve selezionare azioni (arms) al fine di massimizzare la sua ricompensa cumulativa a lungo termine. In ogni round, l'agente riceve alcune informazioni sullo stato attuale (contesto), quindi sceglie un'azione in base a queste informazioni e all'esperienza acquisita nei round precedenti. Alla fine di ogni round, l'agente riceve la ricompensa associata all'azione scelta.

Forse l'esempio più puro è il problema che ha dato il nome al MAB: immaginiamo che siamo di fronte a k slot machine (banditi con un braccio), e abbiamo bisogno di capire quale ha la migliore vincita, pur non perdendo troppi soldi.

Banditi multi-armati

Provare ogni macchina una volta e poi scegliere quella che ha pagato di più non sarebbe una buona strategia: l'agente potrebbe cadere nella scelta di una macchina che all'inizio ha avuto un esito fortunato ma in generale non è ottimale. Invece, l'agente dovrebbe tornare ripetutamente a scegliere macchine che non sembrano così buone, al fine di raccogliere più informazioni su di esse. Questa è la sfida principale in Multi-Armed Bandits: l'agente deve trovare il giusto mix tra lo sfruttamento delle conoscenze pregresse e l'esplorazione per evitare di trascurare le azioni ottimali.

Istanze più pratiche di MAB coinvolgono un'informazione secondaria ogni volta che lo studente prende una decisione. Chiamiamo questa informazione secondaria "contesto" o "osservazione".

Banditi multi-armati e apprendimento di rinforzo

Perché c'è una MAB Suite nella libreria TF-Agents? Qual è la connessione tra RL e MAB? I banditi multi-armati possono essere considerati un caso speciale di apprendimento per rinforzo. Per citare Introduzione a RL :

Ad ogni passo, l'agente compie un'azione sull'ambiente base alla sua politica π(at|st), dove st è la corrente osservazione dall'ambiente, e riceve un premio rt+1 e la successiva osservazione st+1 dall'ambiente . L'obiettivo è quello di migliorare la politica in modo da massimizzare la somma delle ricompense (rendimento).

Nel caso generale RL, il seguente osservazione st+1 dipende dallo stato precedente st e l'azione at preso dalla politica. Quest'ultima parte è ciò che separa MAB da RL: in MAB, lo stato successivo, che è l'osservazione, non dipende dall'azione scelta dall'agente.

Questa somiglianza ci permette di riutilizzare tutti i concetti che esistono in TF-Agents.

  • Un ambiente uscite osservazioni, e risponde alle azioni con ricompense.
  • Una politica emette un'azione sulla base dell'osservazione, e
  • Un agente aggiorna più volte la politica sulla base di precedenti tuple di osservazione-azione-ricompensa.

L'ambiente dei funghi

A scopo illustrativo, utilizziamo un esempio di giocattolo chiamato "Ambiente dei funghi". Il set di dati di funghi ( Schlimmer 1981 ) si compone di esempi etichettate di funghi commestibili e velenosi. Le caratteristiche includono forme, colori, dimensioni delle diverse parti del fungo, nonché odore e molto altro.

fungo

Il dataset del fungo, proprio come tutti i dataset dell'apprendimento supervisionato, può essere trasformato in un problema MAB contestuale. Usiamo il metodo utilizzato anche da Riquelme et al. (2018) . In questa conversione, l'agente riceve le fattezze di un fungo, decide di mangiarlo o meno. Mangiare un fungo commestibile si traduce in una ricompensa di +5, mentre mangiare un fungo velenoso darà +5 o -35 con uguale probabilità. Non mangiare il fungo porta a 0 ricompensa, indipendentemente dal tipo di fungo. La tabella seguente riassume le assegnazioni dei premi:

           | edible | poisonous
-----------|--------|----------
eating it  
|     +5 | -35 / +5
leaving it
|      0 |        0

L'agente LinUCB

Eseguire bene in un ambiente bandito contestuale richiede una buona stima sulla funzione di ricompensa di ogni azione, data l'osservazione. Una possibilità è stimare la funzione di ricompensa con funzioni lineari. Cioè, per ogni azione i, stiamo cercando di trovare il parametro θiRd per i quali le stime

rt,ivt,θi

sono il più vicino possibile alla realtà. Qui vtRd è il contesto pervenute in tempo passo t. Quindi, se l'agente è molto fiducioso nelle sue stime, si può scegliere argmax1,...,Kvt,θk per ottenere il massimo premio previsto.

Come spiegato sopra, scegliere semplicemente il braccio con la migliore ricompensa stimata non porta a una buona strategia. Ci sono molti modi diversi di mescolare lo sfruttamento e l'esplorazione in agenti stimatori lineari, e uno dei più famosi è la fiducia lineare limite superiore (LinUCB) algoritmo (si veda ad esempio Li al. Et 2010 ). LinUCB ha due elementi costitutivi principali (con alcuni dettagli omessi):

  1. Mantiene le stime per i parametri di ogni braccio con lineare dei minimi quadrati: θ^iXi+ri, dove Xi e ri sono i contesti impilati ed i benefici di colpi in cui braccio i è stato scelto, e ()+ è la pseudo inversa .
  2. Mantiene ellissoidi di fiducia definiti per l'inverso covarianza XiXi per le stime di cui sopra.

L'idea principale di LinUCB è quella di "Ottimismo di fronte all'incertezza". L'agente incorpora l'esplorazione aumentando le stime di un importo che corrisponde alla varianza di tali stime. È qui che gli ellissoidi fiducia entrano in foto: per ogni braccio, la stima ottimistica è r^i=maxθEivt,θ, dove Ei è l'ellissoide intorno θ^i. I sceglie agente più bello braccio argmaxir^i.

Ovviamente la descrizione di cui sopra è solo un riassunto intuitivo ma superficiale di ciò che fa LinUCB. Un'implementazione può essere trovato nel nostro codice di base qui

Qual è il prossimo?

Se si desidera avere un tutorial più dettagliate sulla nostra biblioteca Bandits dare un'occhiata al nostro tutorial per Bandits . Se, invece, si desidera iniziare ad esplorare la nostra biblioteca subito, lo si può trovare qui . Se siete ancora più ansiosi di iniziare la formazione, un'occhiata ad alcuni dei nostri esempi end-to-end qui , compreso l'ambiente di funghi sopra descritta con LinUCB qui .