AGT - 04 - Algorithmic Mechanism Design I


Lecture Info

  • Data: [2019-01-07 lun]

  • Sito corso: AGT_2018

  • Slides: 04 - AMD I

  • Introduzione: Andiamo adesso ad analizzare la problematica della progettazione di un gioco con determinate caratteristiche.

1 Single Item Auction

Consideriamo \(k\) agenti, ciascuno dei quali partecipa all'asta per la vendita di un singolo quadro.

Ciascun agente \(a_i\) ha in testa un valore \(t_i\), che rappresenta il massimo valore che \(a_i\) è disposto a spendere per il quadro. Al fine di ottenere il quadro ciascun giocatore \(a_i\) dichiara in modo indipendente dagli altri un'offerta di valore \(r_i\). Notiamo che potenzialmente \(r_i \neq t_i\), ovvero non per forza i giocatori devono dichiarare il loro valore privato. Il giocatore \(a_i\) che vince dovrà pagare \(p\) per ottenere un guadagno di \(u_i = t_i - p\).

Il nostro obiettivo è quello di definire un meccanismo d'asta che venda il quadro al giocatore con il \(t_i\) più alto. Dato che i giocatori potrebbero dichiarare dei valori arbitrari, che non hanno nulla a che fare con \(t_i\), per ottenere questo risultato il meccanismo deve risolvere i seguenti problemi:

  • Decidere chi vince l'asta in funzione dei valori dichiarati \(r_1, r_2, \ldots, r_k\).

  • Decidere quanto dovrà pagare il vincitore per prendersi il quadro.

Esistono vari possibili meccanismi che possiamo utilizzare. L'idea è di trovare dei meccanismi che incentivano gli agenti a dire la verità. Discutiamone tre in particolare.


1.1 No Payment

In questo meccanismo il quadro viene dato al giocatore \(a_i\) che ha dichiarato il bid più alto, \(r_i = \max_{j = 1 \ldots k} \{r_j\}\). Il giocatore che vince poi non paga niente.

Notiamo che questo meccanismo non incentiva gli agenti a dire la verità. Infatti tutti gli agenti sono incentivati a dire \(r_i = +\infty\).


1.2 Pay Your Bid

In questo meccanismo, come nel precedente, il quadro viene dato al giocatore \(a_i\) che ha dichiarato il bid più alto, \(r_i = \max_{j=1 \ldots k} \{r_j\}\). Questa volta però il giocatore che vince paga il valore da lui dichiarato \(r_i\)

Notiamo che neanche questo meccanismo incentiva gli agenti a dire la verità. Il giocatore \(a_i\) potrebbe infatti dichiarare \(r_i < t_i\) in modo da incrementare la sua utility. Questo significa che non sempre il quadro viene vinto dal giocatore con il valore privato \(t_i\) più alto.


1.3 Vickery's Second Price Auction

In questo meccanismo il quadro viene dato al giocatore \(a_i\) che ha dichiarato il bid più alto, \(r_i = \max_{j=1 \ldots k} \{r_j\}\). Il giocatore che vince poi paga il secondo valore dichiarato più alto \(R = \max_{j \neq i} \{r_j\}\).

Questo meccanismo invece funziona. In particolare vale il seguente risultato.

Teorema: Nell'asta di Vickery, per ogni giocatore \(a_i\), dire la verità, ovvero \(r_i = t_i\) è una strategia dominante.

dim: Fissiamo \(i\) e \(t_i\), e sia \(R = \max_{j \neq i} \{r_j\}\). Notiamo che \(i\) non conosce \(R\). Andiamo adesso ad analizzare due casi distinti:

  • \(t_i \geq R\).

    In questo caso se l'agente dice la verità, ovvero \(r_i = t_i\), allora abbiamo una utility di \(u_i = t_i - R \geq 0\) nel caso in cui vinciamo, che può accadere quando \((t_i > R)\) oppure quando \((t_i = R)\) e vinciamo il tie-break con l'altro giocatore. Se invece perdiamo, che succede quando \((t_i = R)\) e perdiamo il tie-break, allora abbiamo una utility di \(u_i = 0\).

    Se poi l'agente mente dichiarando \(r_i > R\), \(r_i \neq t_i\), allora l'agente vince con la stessa utility che avrebbe ottenuto se avesse detto la verità \(u_i = t_i - R \geq 0\). Infine, se l'agente mente dichiarando \(r_i < R\), allora perde con una utility di \(u_i = 0\).a


  • \(t_i < R\).

    In questo caso se diciamo la verità (\(r_i = t_i\)), allora perdiamo con \(u_i = 0\). Se invece mentiamo e diciamo \(r_i < R\), \(r_i \neq t_i\), allora perdiamo nuovamente. Infine, se mentiamo dicendo \(r_i > R\), vinciamo, ma con una utility negativa \(u_i = T_i - R < 0\).


Notiamo come in tutti i casi analizzati, dichiarare \(r_i \neq t_i\) non porta ad un aumento effettivo della utility. Dunque, dire la verità è una strategia dominante.

\[\tag*{$\blacksquare$}\]

2 Mechanism Design

Volendo generalizzare il problema specifico appena affrontato, l'idea dietro alla algorithmic mechanism design è quella di incentivare gli agenti a comportarsi in modo tale che le scelte individuali ed egoistiche degli agenti riescono ad ottenere dei buoni livelli di welfare.

Gli ingredienti da tenere a mente in questo ambito sono i seguenti:

  • \(N\) agenti.

  • Ciascun agente possiede una informazione privata, detta tipo, e indicata con \(t_i \in T_i\).

  • Un insieme \(\mathcal{F}\) di possibili outcomes.

  • Una social-choice function \(f(\cdot)\) che per ogni vettore di tipi \(t = (t_1, t_2, \ldots, t_N)\) specifica il particolare outcome \(f(t) \in \mathcal{F}\) che si vuole ottenere.

  • Ogni agente ha uno spazio di strategie \(S_i\). Nella nostra particolare trattazione ci restringeremo ai meccanismi detti direct revelation mechanisms, in cui l'azione che un agente può eseguire è quella di dichiarare uno o più valori \(r_i \in T_i\). Notiamo che potrebbe accedere che il valore riportato sia diverso dal tipo privato dell'agente, ovvero che \(r_i \neq t_i\).

  • Per ogni possibile outcome \(x \in \mathcal{F}\), ciascun agente effettua una valutazione \(v_i(t_i, x)\) rispetto alla sua preferenza per quel particolare outcome.

  • Per ogni possibile oucome \(x \in \mathcal{F}\), ciascun agente riceve un pagamento \(p_i(x)\). I pagamenti sono utilizzati dal meccanismo per incentivare gli agenti a collaborare.

  • L'utility dell'agente \(a_i\) nell'outcome \(x \in \mathcal{F}\) è data da

    \[u_i(t_i, x) = p_i(x) - v_i(t_i, x)\]

Dati questi ingredienti, l'obiettivo del mechanism design è quello di implementare un meccanismo \(M = \langle g(r), p(x) \rangle\) dove,

  • \(g(r)\) è un algoritmo che calcola l'outcome del gioco \(x = g(r)\) in funzione dei valori riportati dagli agenti \(r = (r_1, r_2, \ldots, r_N)\).

  • \(p(x)\) è uno schema di pagamento che specifica il pagamento di ogni agente nell'outcome \(x = g(r)\).

Il meccanismo deve essere implementato in modo tale da garantiche che nelle situazioni di equilibrio rispetto alla utility dei vari giocatori si deve avere

\[x = g(r) = f(t)\]


Il gioco indotto da un problema di mechanism design è il gioco in cui gli \(N\) agenti sono i giocatori, e la matrice di payoff è implicitamente definita delle funzioni di utilità.


2.1 Truthful Mechanisms

Cerchiamo adesso di formalizzare la proprietà speciale che aveva l'asta di Vickery in confronto agli altri due meccanismi che avevamo visto per risolvere il problema della single ttem auction.

Def. Un meccanismo \(M = \langle g(r), p(x) \rangle\) è una implementation with dominant strategies se esiste un vettore di tipi riportati \(r^* = (r_1^*, r_2^*, \ldots, r_N^*)\) tale che \(f(t) = g(r^*)\) nei dominant strategy equilibrium.

Se poi dire la verità è la strategia dominante \((r^* = t)\) allora il meccanismo è detto truthful, o strategy-proof, o incentive compatible. In questi casi gli agenti dicono i loro veri tipi \(t_i\) e non manipolano il valore dichiarato per fini strategici.

Le questioni principali da affrontare del disegno dei meccanismi hanno quindi a che fare su come definire dei meccanismi che garantiscono una implementazione truthful di una determinata social-choice function.


2.2 Examples

Alcuni possibi problemi che possono essere affrontati con gli strumenti del mechanism design sono i seguenti:

  • Multiunit auction

  • Sponsored search auction

  • Public project

  • Bilateral trade

  • Buying a path in a network


2.3 Minimization Problems

I problemi di mechanism design possono essere pensati come problemi di ottimizzazione in cui parte dell'input è nascosta dagli agenti. L'obiettivo del meccanismo è quindi quello di incentivare gli agenti a rivelare il loro input.

Concentriamoci in particolare sui problemi di minimizzazione, che sono così descritti:

  • Per ogni outcome \(x \in \mathcal{F}\), la valutazione \(v_i(t_i, x)\) rappresenta il costo del giocatore \(i\) in quel particolare outcome.

  • La social-choice function \(f(t)\) associa al vettore dei tipi \(t\) la soluzione che minimizza una qualche misura di \(t\).

  • I pagementi sono dal meccanismo verso gli agenti.


2.3.1 Vicker Auction (2nd version)

Con questa ottica possiamo descrivere una versione della Vickery Auction in cui l'obiettivo è assegnare una risorsa al giocatore che incorre nel minor costo. In questa versione del problema abbiamo che

  • Il tipo di ogni agente \(t_i\) rappresenta il costo che l'agente \(a_i\) incorre se dovesse vincere l'asta.

  • Il valore \(p\) invece rappresenta il pagamento che il sistema offre nei confronti dell'agente che vince l'asta.

  • L'utility dell'agente \(i\) è data da \(p - t\). In altre parole, più alto è il pagamento rispetto al costo del lavoro, e più al giocatore \(a_i\) conviene vincere l'asta.

In questa versione il lavoro (l'oggetto dell'asta), va alla macchina che richiede meno costo, e questa verrà pagata con il costo della seconda macchina più cheap.

3 Utilitarian Problems

Andiamo adesso a vedere una particolare classe di problemi per cui esiste una famiglia di meccanismi truthful.

Def. I problemi utilitari (utilitarian problems) sono tutti quei problemi in cui la funzione obiettivo (la social-choice function) ha la seguente forma

\[f(t) := \underset{x \in \mathcal{F}}{\arg\min} \sum_i v_i(t_i, x)\]

Notiamo che per questa particolare classe di problemi esiste un meccanismo truthful.


3.1 VCG Mechanism

Il meccanismo VCG (Vicker, Clarke, Groves) è l'unico meccanismo truthful per i problemi utilitari, ed è descritto come segue:

  • L'algoritmo \(g(r)\) calcola l'outcome nel seguente modo

    \[g(r) := \underset{x \in \mathcal{F}}{\arg\min} \sum_i v_i(r_i, x)\]

  • Il pagamento per il giocatore \(i\) è invece

    \[p_i(x) := h_i(r_{-i}) - \sum_{j \neq i} v_j(r_j, x)\]

    dove \(h_i(r_{-i})\) è una funzione arbitraria che prende in input i valori riportati da tutti i giocatori escluso \(a_i\).

Il seguente risultato dimostra ciò che abbiamo menzionato.

Teorema: I meccanismi VCG sono truthful per i problemi di utilità.

dim. Fissiamo il giocatore \(a_i\), il suo tipo \(t_i\) e le scelte degli altri giocatori \(r_{-i}\). Applichiamo adesso l'algoritmo \(g(\cdot)\) per calcolare i seguenti due outcomes, a seconda che \(a_i\) mente oppure no, e calcoliamo l'utilità per entrambi i casi.

  • L'outcome ottenuto quando \(a_i\) dice la verità \((r_i = t_i)\) è

    \[x = g(r_{-i}, t_i) = g(\hat{r})\]

    L'utilità in questo caso è

    \[\begin{split} u_i(t_i, x) &= p_i(x) - v_i(t_i, x) \\ &= \Big(h_i(r_{-i}) - \sum_{j \neq i} v_j(r_j, x) \Big) - v_i(t_i, x) \\ &= h_i(r_{-i}) - \sum_j v_j(\hat{r}_j, x) \\ \end{split}\]

  • L'otucome ottenuto quando \(a_i\) mente invece \((r_i \neq t_i)\) è

    \[x' = g(r_{-i}, r_i)\]

    L'utilità in questo caso è

    \[\begin{split} u_i(t_i, x') &= p_i(x') - v_i(t_i, x') \\ &= \Big(h_i(r_{-i}) - \sum_{j \neq i} v_j(r_j, x') \Big) - v_i(t_i, x') \\ &= h_i(r_{-i}) - \sum_j v_j(\hat{r}_j, x') \\ \end{split}\]

A questo punto notiamo che per come è stata definita \(g(\cdot)\) l'outcome \(x\) è l'outcome che minimizza la quantià \(\sum_{i} v_i(\hat{r}_i, x)\). Ma allora

\[\sum_j v_j(\hat{r}_j, x) \leq \sum_j v_j(\hat{r}_j, x')\]

e quindi

\[u_i(t_i, x) \geq u_i(t_i, x')\]

In altre parole, al giocatore \(i\) conviene sempre dire la verità \(t_i\).

\[\tag*{$\blacksquare$}\]


3.1.1 How to Define \(h_i(r_{-i})\)

Notiamo che se tutti gli agenti sono costretti a giocatore, allora posso definire \(h_i(r_{-i})\) come mi pare. Altrimenti devo stare attento a come la definisco.

Consideriamo, ad esempio esempio, l'asta di Vicker. Se impostiamo \(h_i(r_{-i}) = 0\) allora tutti i players hanno una utilità negativa. Il meccanismo rimane truthful, ma noi vogliamo che il vincitore abbia una utilità \(> 0\), e tutti gli altri una utility di \(0\). Per ottenere queste garanzie è possibile utilizzare un particolare schema di pagamento, detto clark payment, definito come segue

\[h_i(r_{-i}) := \sum_{j \neq i} v_j(r_j, g(r_{-i}))\]

Dove \(g(r_{-i})\) è un outcome in cui il player \(i\) non partecipa. Così facendo il pagamento per il giocatore \(i\) diventa

\[p_i(x) = \sum_{j \neq i} v_j(r_j, g(r_{-i})) - \sum_{j \neq i} v_j(r_j, g(r))\]

tutti i giocatori sono interessati a partecipare, e per il vincitore è garantita una utility \(> 0\).

4 Algorithmic Contributions

Quando gli informatici si sono approcciati a queste questioni di mechanism design, si sono chiesto se fosse possibile progettare dei meccanismi "veloci", ovvero tali che sia l'algoritmo \(g(r)\) e sia lo schema di pagamento \(p(x)\) fossero facili da calcolare.

Molti classici problemi di ottimizzazione su grafi, tra cui:

  • Shortet Path (SP)

  • Single Source Shortest Paths Tree (SPT)

  • Minimum Spanning Tree (MST)

  • Minimum Steiner Tree

sono stati tradotti come problemi di mechanism design in cui gli agenti possiedono uno o più arco di un grafo e conoscono il peso dell'arco come informazione privata. Per risolvere questi problemi bisogna quindi sia calcolare la soluzione ottima (outocme) e sia definire i pagamenti (payments) che incentivino gli agenti a dichiarare il peso corretto degli archi.

Si è poi dimostrato che la complessità di questi problemi non cambia nel passaggio dal contesto classico centralizzato al contesto distribuito e strategico selfish-edge.