-->

Intelligenza Artificiale

A un certo punto non fu più la biologia a dominare il destino dell'uomo, ma il prodotto del suo cervello: la cultura.
Cosicché: "Le uniche leggi della materia sono quelle che la nostra mente deve architettare e le uniche leggi della mente sono architettate per essa dalla materia".
JAMES CLERK MAXWELL

Epsilon-Greedy


Cosa è, a Cosa serve, Come funziona l'algoritmo

Epsilon-Greedy Algorithm

L’Epsilon-Greedy Algorithm è una strategia utilizzata comunemente nei problemi di bandit multi-braccio e nell'apprendimento per rinforzo.
È particolarmente utile quando si deve bilanciare tra explore (provare nuove opzioni per scoprire il loro valore) e exploit (scegliere le opzioni già note per essere vantaggiose).

Cos'è l'Epsilon-Greedy Algorithm

- Epsilon (ϵ) è un parametro che controlla il grado di esplorazione.
È un valore compreso tra 0 e 1.
- L'algoritmo è "greedy" nel senso che cerca di massimizzare immediatamente il valore selezionando l'opzione migliore conosciuta la maggior parte delle volte.
- Tuttavia, per evitare di rimanere intrappolati in una scelta subottimale, esplora casualmente le altre opzioni una piccola percentuale delle volte (determinata da epsilon).

A cosa serve

L'Epsilon-Greedy Algorithm viene utilizzato in situazioni dove è necessario prendere decisioni iterative con informazioni incomplete,
Ad esempio:
1. Problemi di bandit multi-braccio: Un casinò ha più slot machine, ognuna con una probabilità sconosciuta di vincita. L'obiettivo è massimizzare i guadagni scegliendo quali macchine utilizzare.
2. Raccomandazioni di contenuti: Decidere quali articoli, film o prodotti suggerire agli utenti, bilanciando tra raccomandazioni sicure e nuove.
3.Apprendimento per rinforzo: Addestrare un agente per massimizzare una ricompensa attraverso prove ed errori.

Come funziona

L'algoritmo alterna tra due strategie: - Esplorazione: Con probabilità ϵ, sceglie un'opzione a caso.
- Sfruttamento: Con probabilità (1 - ϵ), sceglie l'opzione attualmente migliore (quella che massimizza la ricompensa attesa).

Pseudocodice




initialize Q(a) for all actions a  # stima del valore atteso delle azioni
for t in range(1, T):  # T è il numero totale di iterazioni
    if random() < epsilon:  # esplorazione
        a = choose_random_action()
    else:  # sfruttamento
        a = argmax(Q)  # seleziona l'azione con valore massimo stimato
    
    reward = perform_action(a)  # ottieni la ricompensa per l'azione scelta
    update Q(a) based on reward  # aggiorna il valore stimato di Q(a)


Come si usa

1.Scegliere il valore di epsilon:
- ( epsilon ) alto (es. 0.1-0.3) favorisce l'esplorazione.
- ( epsilon ) basso (es. 0.01) favorisce lo sfruttamento.
- Spesso ( epsilon ) viene ridotto gradualmente nel tempo per ridurre l'esplorazione a mano a mano che si accumulano dati.

2. Implementare un modello:
- Si usa una tabella o una funzione approssimativa per mantenere le stime ( Q(a) ) delle ricompense attese delle azioni.

3. Testare e ottimizzare:
- Valutare l'efficacia della strategia in base alle prestazioni e aggiustare ( epsilon ).

Vantaggi

- Semplice da implementare.
- Garantisce un equilibrio tra esplorazione e sfruttamento.
- Funziona bene in scenari con poche opzioni.

Svantaggi

- Non tiene conto della quantità di incertezza nelle stime dei valori ( Q(a) ).
- Può essere inefficiente in ambienti complessi o dinamici, dove strategie più avanzate come UCB (Upper Confidence Bound) potrebbero essere più adatte.