Salta al contenuto
Note per Studenti Esercizio - Quiz a domande crescenti e utilità degli stati (slide del corso)

Esercizio - Quiz a domande crescenti e utilità degli stati (slide del corso)

Teoria: Processi decisionali di Markov - utilità, equazione di Bellman, value e policy iterationUn MDP (processo decisionale di Markov) modella un problema decisionale sequenziale in ambiente stocastico e completamente osservabile con stati S, azioni A(s), modello di transizione P(s'|s,a) e ricompensa R(s,a,s'). La soluzione è una politica pi(s). L'utilità U(s) è il ritorno scontato atteso e soddisfa l'equazione di Bellman U(s)=max_a sum_s' P(s'|s,a)[R(s,a,s')+gamma U(s')]; la quantità tra parentesi quadre sommata su s' è la funzione azione-utilità Q(s,a). Value iteration parte da U=0, applica Bellman a tutti gli stati insieme e si ferma quando delta <= eps(1-gamma)/gamma; la politica è argmax_a Q(s,a). Policy iteration alterna valutazione (sistema lineare, senza max) e miglioramento greedy, e termina quando la politica non cambia. Nei POMDP lo stato è nascosto: si lavora sullo stato di credenza b aggiornato come nel filtraggio, b'(s')=alpha P(e|s') sum_s P(s'|s,a)b(s).Processi decisionali di Markov - utilità, equazione di Bellman, value e policy iteration →, sezione 1.

Testo (dalle slide). Un quiz ha quattro domande di difficoltà e premio crescenti: la prima da 100 euro, la seconda da 1 000, la terza da 10 000, la quarta da 50 000. Probabilità di rispondere correttamente: 910\tfrac9{10}, 34\tfrac34, 12\tfrac12, 110\tfrac1{10}. A ogni passo ci sono due azioni: ritirarsi incassando quanto vinto finora, oppure rispondere alla domanda successiva: se si sbaglia si perde tutto. Rispondere correttamente alla quarta porta a 100+1 000+10 000+50 000=61 100100+1\,000+10\,000+50\,000=61\,100 euro e il gioco finisce. Prima della domanda QkQ_k il montepremi accumulato è: Q1Q_1: 0; Q2Q_2: 100; Q3Q_3: 1 100; Q4Q_4: 11 100.

(a) Per ogni domanda, conviene ritirarsi o rispondere? Qual è l'utilità di ogni stato? (b) Per quale probabilità di successo p4p_4 della domanda Q4Q_4 conviene rispondere? (c) Cosa cambia se p4=0,3p_4=0{,}3?

Soluzione

Idea. L'utilità U(Qk)U(Q_k) è il guadagno atteso partendo dallo stato "sono davanti a QkQ_k" supponendo di agire in modo ottimale da lì in poi. Dipende dall'utilità dello stato successivo, quindi si calcola partendo dalla fine (come nell'equazione di Bellman, senza cicli): U(Qk)=max⁡(ritirarsi, pk⋅U(Qk+1)),U(Q_k)=\max\big(\text{ritirarsi},\ p_k\cdot U(Q_{k+1})\big), dove il ritirarsi vale il montepremi accumulato, e la risposta sbagliata vale 0 (perde tutto). Per Q4Q_4 la risposta esatta porta a 61 100 e il gioco finisce.

(a)

  • Q4Q_4: ritirarsi 11 10011\,100; rispondere 0,1⋅61 100+0,9⋅0=6 1100{,}1\cdot61\,100+0{,}9\cdot0=6\,110. Si ritira, U(Q4)=11 100U(Q_4)=\mathbf{11\,100}. (Rischiare per 50 00050\,000 con probabilità 110\tfrac1{10} non conviene: 6 110<11 1006\,110<11\,100.)
  • Q3Q_3: ritirarsi 1 1001\,100; rispondere: 0,5⋅U(Q4)=0,5⋅11 100=5 5500{,}5\cdot U(Q_4)=0{,}5\cdot11\,100=5\,550. Si risponde, U(Q3)=5 550U(Q_3)=\mathbf{5\,550}. Si usa U(Q4)=11 100U(Q_4)=11\,100 e non 61 100, perché arrivati a Q4Q_4 ci si ritira: il valore di passare la terza domanda è quello dello stato successivo giocato in modo ottimale.
  • Q2Q_2: ritirarsi 100100; rispondere 0,75⋅5 550=4 162,50{,}75\cdot5\,550=4\,162{,}5. U(Q2)=4 162,5U(Q_2)=\mathbf{4\,162{,}5} (le slide arrotondano a 4 163).
  • Q1Q_1: ritirarsi 00; rispondere 0,9⋅4 162,5=3 746,250{,}9\cdot4\,162{,}5=3\,746{,}25. U(Q1)=3 746,25U(Q_1)=\mathbf{3\,746{,}25} (3 747 nelle slide).

La strategia ottima (la politica) è: rispondere a Q1Q_1, Q2Q_2, Q3Q_3 e ritirarsi davanti a Q4Q_4. Il premio atteso del gioco, partendo da zero, è 3 746,253\,746{,}25 euro.

(b) Davanti a Q4Q_4 si risponde se p4⋅61 100>11 100p_4\cdot61\,100>11\,100, cioè p4>11 10061 100=0,1817p_4>\dfrac{11\,100}{61\,100}=0{,}1817. Con p4=0,1p_4=0{,}1 si resta sotto la soglia.

(c) Con p4=0,3p_4=0{,}3: rispondere a Q4Q_4 vale 0,3⋅61 100=18 330>11 1000{,}3\cdot61\,100=18\,330>11\,100, quindi U(Q4)=18 330U(Q_4)=18\,330. Allora U(Q3)=0,5⋅18 330=9 165U(Q_3)=0{,}5\cdot18\,330=9\,165; U(Q2)=0,75⋅9 165=6 873,75U(Q_2)=0{,}75\cdot9\,165=6\,873{,}75; U(Q1)=0,9⋅6 873,75=6 186,375U(Q_1)=0{,}9\cdot6\,873{,}75=6\,186{,}375. Una domanda più facile alza l'utilità di tutti gli stati precedenti, perché l'informazione si propaga all'indietro.

Verifica con Python.

python
def quiz(p, premi=(11100, 1100, 100, 0), finale=61100):
    """p = probabilita' di successo di Q1..Q4; premi = montepremi accumulato prima di Q4, Q3, Q2, Q1."""
    U = max(premi[0], p[3] * finale)                    # Q4: si ritira o si risponde (e si vince 61100)
    risultato = [U]
    for k in (2, 1, 0):                                 # Q3, Q2, Q1, sempre all'indietro
        U = max(premi[3 - k], p[k] * U)
        risultato.append(U)
    return risultato[::-1]                              # [U(Q1), U(Q2), U(Q3), U(Q4)]

print(quiz([0.9, 0.75, 0.5, 0.1]))   # [3746.25, 4162.5, 5550.0, 11100]
print(quiz([0.9, 0.75, 0.5, 0.3]))   # [6186.375, 6873.75, 9165.0, 18330.0]

Versione ripasso

Teoria: Processi decisionali di Markov - utilità, equazione di Bellman, value e policy iterationUn MDP (processo decisionale di Markov) modella un problema decisionale sequenziale in ambiente stocastico e completamente osservabile con stati S, azioni A(s), modello di transizione P(s'|s,a) e ricompensa R(s,a,s'). La soluzione è una politica pi(s). L'utilità U(s) è il ritorno scontato atteso e soddisfa l'equazione di Bellman U(s)=max_a sum_s' P(s'|s,a)[R(s,a,s')+gamma U(s')]; la quantità tra parentesi quadre sommata su s' è la funzione azione-utilità Q(s,a). Value iteration parte da U=0, applica Bellman a tutti gli stati insieme e si ferma quando delta <= eps(1-gamma)/gamma; la politica è argmax_a Q(s,a). Policy iteration alterna valutazione (sistema lineare, senza max) e miglioramento greedy, e termina quando la politica non cambia. Nei POMDP lo stato è nascosto: si lavora sullo stato di credenza b aggiornato come nel filtraggio, b'(s')=alpha P(e|s') sum_s P(s'|s,a)b(s).Processi decisionali di Markov - utilità, equazione di Bellman, value e policy iteration →.

Formula. U(Qk)=max⁡(ritirarsi, pk⋅U(Qk+1))U(Q_k)=\max(\text{ritirarsi},\ p_k\cdot U(Q_{k+1})), calcolata dall'ultima domanda all'indietro. Ritirarsi vale il montepremi accumulato (0, 100, 1 100, 11 100 prima di Q1,…,Q4Q_1,\dots,Q_4); sbagliare vale 0; la risposta esatta alla quarta porta a 61 10061\,100.

Passaggi (probabilità 910,34,12,110\tfrac9{10},\tfrac34,\tfrac12,\tfrac1{10}).

  • Q4Q_4: max⁡(11 100; 0,1⋅61 100=6 110)\max(11\,100;\ 0{,}1\cdot61\,100=6\,110), quindi U=11 100U=11\,100 (ci si ritira).
  • Q3Q_3: max⁡(1 100; 0,5⋅11 100)=5 550\max(1\,100;\ 0{,}5\cdot11\,100)=5\,550.
  • Q2Q_2: max⁡(100; 0,75⋅5 550)=4 162,5\max(100;\ 0{,}75\cdot5\,550)=4\,162{,}5.
  • Q1Q_1: max⁡(0; 0,9⋅4 162,5)=3 746,25\max(0;\ 0{,}9\cdot4\,162{,}5)=3\,746{,}25.
  • Politica: rispondere a Q1,Q2,Q3Q_1,Q_2,Q_3, ritirarsi davanti a Q4Q_4.

Soglia su Q4Q_4: si risponde se p4>11 100/61 100=0,1817p_4>11\,100/61\,100=0{,}1817. Con p4=0,3p_4=0{,}3: U(Q4)=18 330U(Q_4)=18\,330, U(Q3)=9 165U(Q_3)=9\,165, U(Q2)=6 873,75U(Q_2)=6\,873{,}75, U(Q1)=6 186,375U(Q_1)=6\,186{,}375.

python
U = max(11100, p[3] * 61100)
for k, premio in ((2, 1100), (1, 100), (0, 0)):
    U = max(premio, p[k] * U)

Errori tipici: usare 61 100 invece di U(Q4)=11 100U(Q_4)=11\,100 nel calcolo di Q3Q_3; andare avanti invece che all'indietro; contare la ricompensa dell'ultima domanda come se fosse certa.

Teoria collegata