top of page

RECSYS Lecture 7 - Multi-armed bandit

  • Immagine del redattore: Sebastiano Morson
    Sebastiano Morson
  • 17 ott 2024
  • Tempo di lettura: 8 min

Aggiornamento: 21 nov 2024

Immaginiamo di essere in una sala slot. Abbiamo davanti un certo numero di slot machines (anche chiamate one-armed bandit).

Ogni slot machine ha una certa probabilità di farci vincere, ma chiaramente noi non sappiamo quale sia quella con le percentuali maggiori di vincita.

Per questo motivo iniziamo a provarle tutte, ma il gestore viene da noi e ci dice "guarda che non puoi mica metterti qua a studiare le mie macchinette, sennò ti caccio".

Il problema ora è: come faccio a capire quale delle macchinette è quella migliore in un numero massimo di tentativi?

E poi, una volta che sto usando una certa slot machine, mi conviene rimanere su quella e continuare a vincere bei soldoni, o spostarmi su un'altra che magari mi farà vincere ancora più soldi?


Questo problema descrive bene il problema del "exploration-exploitation", ossia il problema di capire se è più vantaggioso "exploitare" un metodo che sappiamo che ci soddisfa, oppure "explorare" e potenzialmente ottenre migliori benefici a lungo termine (se sei un fanatico dell'accademia della Crusca, lo so che è sbagliato e si dice "esplorare", continua pure a mangiare cibo per cavalli e vivere una vita triste ed insignificante).


Il problema exploration-exploitation è un fatto noto quando si parla di recommender systems. Un esempio pratico: siamo su Spotify (o Amazon, Netflix, ...) e ci viene suggerita una certa canzone rock, perchè ci piace quel genere li. Se continuiamo ad ascoltare rock, può essere che prima o poi venga meno la serendipità, ossia la capacità di sorprenderci, magari perchè non riceviamo più novità interessanti o perchè esploriamo tutti i brani di quel genere (magari siamo super fan di un genere prodotto da 5 persone di cui 4 sono morte).


Ecco quindi che ci serve un modo per inserire in qualche modo delle raccomandazioni che in qualche modo si discostino dai nostri gusti abituali o che non siano completamente attinenti, in modo da esplorare cose nuove.

Però c'è un però.

Chi ci dice che quello che stiamo suggerendo piaccia all'utente? Magari abbiamo a che fare con un utente anziano che non apprezza quando gli proponi cose nuove.


Ricordandoci dell'esempio iniziale e del fatto che la slot machine si dice "one-armed bandit", ecco a voi i metodi Multi-armed bandit.


Esistono 4 strategie di questo tipo che sono state sviluppate e hanno ottenuto buoni risultati:

  • metodo ε-Greedy

  • metodo Upper Confidence Bound (UCB)

  • metodo di Thompson sampling

  • metodo Upper Confidence Bound for Matrix Factorization (UCB-MF)


Queste strategie usano però dei concetti di base che ora vi spiego.


Concetti di base base base

L'idea di base è quella di pensare a un'entità e fargli compiere delle azioni (ad esempio usare una slot machine piuttosto che un'altra, oppure scegliere un item da raccomandare piuttosto che un altro) che porteranno a ottenere un premio dall'ambiente.

Ad esempio se la nostra entità è un sistema di raccomandazione, l'ambiente potrebbe essere il nostro utente (o utenti) e i reward like, share, commenti, visualizzazioni, etc.

L'obiettivo è chiaramente quello di ottenere il maggior numero di rewards.



Bene.

Modelliamo questa cosa sull'idea di "bandit".

Un bandit non è un bandito, ma una tupla < A, R > dove

  • A è un insieme di azioni (ad esempio "scegli la slot machine 7")

  • R è una funzione di rewarding (che però è sconosciuta, altrimenti sarebbe troppo facile)


Ci serve poi un insieme di probabilità di rewarding per ogni azione, chiamiamo questo insieme K = { θ₁,θ₂, ... , θₖ }.

A questo punto possiamo definire il concetto di "qualità" come una funzione Q














Ora sappiamo capire quanto vale la nostra scelta, ma non se all'utente piace o meno. Per questo dobbiamo definire il concetto di "regret", che non è altro che la differenza tra il valore massimo di reward associato a una certa azione e il reward ottenuto con quelle che abbiamo scelto noi.

La formula per il calcolo del massimo reward è la seguente:

La formula per il calcolo del valore di regret diventa quindi

In poche parole prendiamo la differenza tra il valore di "apprezzabilità massimo" che l'utente poteva provare dandogli qualcosa che gli piaceva, e quello che gli abbiamo proposto. In termini ancora più semplici misuriamo quanto all'utente piace che gli diamo delle feci invece che una torta sacher.


Questo è in sintesi e in generale, cosa fa il metodo Multi-armed bandit.

Ora passiamo a vedere le strategie nel dettaglio




ε-Greedy

UCB

Thompson

Vantaggi

semplice

veloce

funziona bene con probabilità di rewards equamente distribuite

funziona bene con probabilità di rewards che non seguono una gaussiana

Svantaggi

non esplora completamente le soluzioni

non raggiunge la soluzione ottimale

più complesso da implementare


se le probabilità non sono distribuite non si può applicare

richiede molti samples


computazionalmente molto dispendioso


ε-Greedy strategy

Questo metodo si basa su un'idea piuttosto semplice, ossia scegliere una percentuale ε di items di esplorazione e una percentuale 1-ε di items di exploit.


Cosa significa:

se abbiamo dobbiamo consigliare 10 items e consideriamo un ε=0.3 , la strategia greedy farà in modo che il 70% delle raccomandazione siano items che sappiamo piaceranno, mentre il restante 30% saranno items di esplorazione.


Per ottenere questa condizione, usiamo seguiamo questi passaggi:

  1. scegliamo un valore p che può essere 0 o 1, con probabilità ε che sia 0, e probabilità 1-ε che sia 1

  2. se p=1 allora suggerisco un item di exploitation

  3. se p=0 allora suggerisco un item di exploration


Chiaramente vogliamo capire se i suggerimenti offerti hanno migliorato o peggiorato il regret dell'utente, perciò dopo ogni suggerimento calcolo la media delle valutazioni con la formula seguente

dove Nₜ(a) è definito come

Ovviamente l'obiettivo è scegliere l'azione a migliore, ossia


(argmax non è altro che il massimo ottenuto cambiando il valore del parametro a)


Upper Confidence Bound

L'idea di questa strategia è quella di giocare sulla potenzialità di un'azione di essere ottenere un buon reward. Cioè, non spariamo a caso come facevamo prima, ma decidiamo di suggerire gli elementi che hanno più potenzialità di piacere all'utente.

"Eh, ma grazie al topocazzo, se sapessi già quanto può piacere un elemento a Bob glielo suggerirei e basta". Replica: eh grazie al gattocazzo, basta capire come fare e farlo.


Prepariamoci perchè ora sarà un sussegguirsi di calci sulle gengive per quelli che non amano la matematica.

Consideriamo un'azione a. Noi sappiamo che quell'azione può ricevere una certa dose di apprezzamento Q(a) che però non conosciamo. Però sappiamo che fino a quel momento l'azione a ha ricevuto una certa media di rewards. L'algoritmo inoltre deve favorire quelle azioni che sono state proposte poche volte e che quindi hanno un alto tasso di potenziale di apprezzamento (o rewarding).

Perciò



ossia l'apprezzamento finale, sarà più basso dell'apprezzamento medio sommato all'apprezzamento potenziale.

Guardiamola in questi termini: più un criminale rimane un criminale, più non ci aspetteremo che diventi un cittadino modello. Perciò il valore di U(a) sarà legato al numero di volte che l'elemento a è stato proposto. Più grande è il numero di volte che è stato suggerito a, più basso sarà il potenziale che a migliori il reward medio.


Ma come calcolo quindi questo benedetto potenziale? (oltrettutto ci ho appena fatto caso che U viene usato anche come simbolo per esprimere l'energia potenziale in fisica).


Usiamo la disequazione di Hoeffding che non ho voglia di trattare, quindi dirò semplicemente che ci permette di dire che U è uguale a questa cosa qua

Come si vede, compare proprio il termine Nₜ(a) a denominatore.

Da qui possiamo calcolare l'azione migliore da applicare che è

Ma, ma, ma. Avevamo detto che questo metodo va bene se ci sono distribuzioni di probabilità dei rewarding gaussiane. Ma che vuol dire? E che succede se non sono gaussiane? Semplice, ho omesso di spiegare la disuguaglianza di Hoeffding che ha come premessa l'utilizzo di variabili casuali indipendenti e con distribuzione uniforme. Se non ho una distribuzione normale semplicemente non posso applicare la disuguaglianza, che sta alla base del nostro bel metodo. Magari più avanti spiegherò nel dettaglio anche questo particolare, ma per il momento mi scoccia.


Thompson sampling

Infine ci sarebbe da parlare del metodo di Thompson. Come dice il nome, avrà a che fare con cosiderare dei sample, no?

L'idea di questo metodo è quella di considerare le conoscenze maturate fino a un certo punto t su ciascuna macchina (o previsione) per capire quali azioni intraprendere all'istante t+1.


Mettiamo caso di avere 3 azioni:

a₁ -> è piaciuta 3 volte su 5 tentativi -> ossia è piaciuta 3/5 = 60% delle volte

a₂ -> è piaciuta 2 volte su 7 tentativi  -> ossia è piaciuta 2/7 = 28 % delle volte

a₃ -> è piaciuta 5 volte su 8  tentativi -> ossia è piaciuta 5/8 = 62% delle volte


Rullo di tamburi... Doppio carpiato e ... ginocchiata sui denti...

A questo punto cosa faccio: uso una distribuzione Beta per campionare un valore random da ciascuna macchina.  

...Momento di stordimento generale...


In parole povere non faccio altro che usare una funzione di distribuzione che genera valori distribuiti in questo modo

con la funzione Beta definita come

Ad esempio la Beta distribution su 2 vittorie e 10 sconfitte mi produce un grafico del genere

Perciò se campionassi usando questa distribuzione avrei tanti valori compresi tra 0.1 e 0.3 e pochi negli altri casi. In altre parole, se avessi un'urna e dovessi estrarre dei valori tra 0 e 1, è molto più probabile che peschi tanti 0.1, 0.22, 0.33, ... ma pochi 0.8, 0.9, etc.


Cosa facciamo quindi:

  1. prendiamo la macchina A e spariamo un numero a caso di quelli della distribuzione. Vuol dire che prendiamo a caso un numero tra 0 e 1 seguendo la probabilità di uscita data dalla beta distribuzione corrispondente ad A. Facciamo finta che sia uscito 0.6

  2. rifacciamo la stessa cosa con B. Facciamo finta che sia uscito 0.5

  3. rifacciamo la stessa cosa con C. Facciamo finta che sia uscito 0.58


In questo caso ad essere suggerita è la macchina A perchè il numero uscito è più grande degli altri. Aggiorno quindi le frequenze in maniera corrispondente.


Non è detto che il numero uscito sia più alto se la macchina A ci fa vincere spesso. Se la macchina A ha un grande tasso di vincita significa soltanto che è più probabile che il numero campionato sia grande, ma non significa che uscirà per forza un numero grande. Potrebbe benissimo capitare di beccare un numero piccolissimo, perchè il numero estratto è casuale.


È evidente che a lungo andare le scelte più proposte verranno penalizzate dal fatto che il numero di tentativi aumenta, ma in ogni caso c'è sempre la possibilità che una qualsiasi delle azioni/macchine venga scelta, indipendentemente se è una macchina fruttuosa o meno.


Possibili domande

  1. What is the main goal of a multi-armed bandit problem?

  2. Explain the exploration-exploitation dilemma in the context of recommender systems.

  3. What are the advantages and disadvantages of the epsilon-greedy algorithm?

  4. What is regret in the context of recommendation systems, and why is it important?

  5. Describe Hoeffding’s Inequality and its application in the context of multi-armed bandits.

  6. What is the significance of the Thompson Sampling method in multi-armed bandit problems, and how does it utilize Bayesian inference?

  7. Discuss the role of Upper Confidence Bounds (UCB) in the context of multi-armed bandits and how it helps in decision-making.

  8. What are the implications of using a fixed exploration rate in the epsilon-greedy algorithm, and how can it affect the overall performance of a recommendation system?

  9. Qual è la differenza tra un approccio statico e uno dinamico nel risolvere problemi di multi-armed bandit?

  10. Come si calcolano le probabilità posteriori nel metodo Thompson Sampling e come influenzano la scelta del braccio?

  11. In che modo la formulazione di UCB bilancia esplorazione ed exploitazione? Scrivi la formula e spiegane i termini.

  12. Quali strategie si possono adottare per minimizzare il regret in un problema multi-armed bandit?

  13. Come può un algoritmo multi-armed bandit essere utilizzato per migliorare le raccomandazioni personalizzate in presenza di utenti nuovi?

  14. Quali sono i vantaggi di un tasso di esplorazione decrescente (ϵ\epsilonϵ) rispetto a un tasso fisso nell'epsilon-greedy algorithm?

  15. Cos’è un contextual bandit e in che modo si differenzia da un multi-armed bandit standard? Fornisci un esempio.

  16. Qual è il ruolo di Hoeffding’s Inequality nella definizione dei bound di confidenza per le ricompense?

  17. Confronta gli approcci Bayesiani (es. Thompson Sampling) e frequentisti (es. UCB) nella risoluzione di problemi di multi-armed bandit.

  18. Perché gli algoritmi greedy possono soffrire di esplorazione insufficiente nei problemi di multi-armed bandit? Come si possono mitigare questi limiti?


Comments


©2024 by Sebastiano Morson

bottom of page