Come funziona Akinator?

Akinator è uno dei giochi che più ha spopolato sul Web negli ultimi anni. Si tratta di una sorta di “indovina chi” moderno, disponibile on line o come app per smartphone.

La dinamica è semplice: pensiamo ad un personaggio reale o immaginario, rispondiamo ad una manciata di domande (come ad esempio: “è un uomo?”, “porta gli occhiali?”, “è un attore?”) e Akinator indovina esattamente chi avevamo in mente. La cosa sconvolgente è che ci riesce praticamente sempre!

Come fa? La risposta è in questo video:

Se non ti è bastato, continua a leggere questo articolo.

Partiamo dal presupposto che per capire il funzionamento del gioco con precisione bisognerebbe poter accedere alla documentazione ufficiale o al codice di Akinator, cosa che non è possibile: le logiche del gioco sono volutamente tenute segrete per proteggerne il valore economico. Tuttavia possiamo comunque immaginare come funzioni.

Ho fatto un piccola ricerca in rete e ho trovato svariate ipotesi. Andiamo con ordine.

Reti Neurali

Ho scoperto un gioco che non conoscevo. Si chiama 20q.net ed è molto simile ad Akinator. Non indovina personaggi, ma oggetti, e lo fa con 20 domande (20q sta appunto per “twenty questions”). Il suo funzionamento è basato su una rete neurale artificiale che funziona in maniera analoga alla mente umana e c’è chi afferma che anche Akinator sia basato su una rete simile. Stiamo parlando di un modello matematico che cerca di imitare i principi base di funzionamento della nostra mente, valutando degli input per poi calcolare il relativo output. Una rete neurale si presenta concettualmetne in questo modo:

neural_network.svg

I pallini rappresentano i neuroni matematici e sono interconnessi tra loro, proprio come accade nella realtà. I segnali in input stimolano i primi neuroni che a loro volta producono un segnale in uscita, e così via fino ad arrivare all’output. Questi modelli possono essere molto versatili, ma sono delle black box: sono molto difficili da interpretare. Non è così semplice capire “cosa” facciano per arrivare ad un certo risultato. Inoltre spesso hanno bisogno di un lungo periodo di apprendimento prima di essere efficaci, per cui è probabile che Akinator sia fondato su una soluzione differente.

Serie di attributi ed albero deterministico

Il prof. Rhett Allain su Wired ipotizza che Akinator si appoggi su un approccio molto più semplice. Secondo la sua teoria, Akinator sarebbe basato su una serie di n caratteristiche descrittive che possono assumere 3 valori [“sì” (s), “no” (n) e “non applicabile” (n.a.)]. Le caratteristiche sono attributi riferibili ai personaggi, come:

  • uomo,
  • sportivo,
  • cantante,
  • italiano,
  • famoso su internet,
  • reale.

Secondo questo approccio, ogni personaggio è definito da una sequenza come la seguente:

\langle s,n,n,n.a.,s,s,n,...s \rangle,

che rappresenta il valore assunto da ciascuna caratteristica per descrivere il personaggio in questione e che lo identifica univocamente. Dati n attributi che possono assumere valori, è possibile descrivere:

3^n

personaggi. Più in generale, il numero di personaggi rappresentabili è pari al numero di valori assumibili, elevato al numero di caratteristiche descrittive. Tornando all’ipotesi di Wired (n attributi e 3 valori), la crescita dell’esponenziale fa sì che bastino n=20 attributi per arrivare a circa 3,5 miliardi di personaggi diversi. Questa logica descrittiva è decisamente scalabile!

Ok, ma come si svolge il gioco? Dimentichiamo per un attimo che esista anche il caso “non applicabile” e supponiamo di avere 3 attributi descrittivi (es. maschio, cantante, attore) e che possano assumere solo valori “sì” o “no”. Guardate questa immagine:

rooted_binary_tree

…rappresenta un albero di ricerca. Partiamo dal nodo più in alto (nodo radice), e pensiamo che ogni livello sottostante rappresenti un attributo. Come vedete, ogni attributo può assumere i 2 valori (“sì” o “no”), e se li si analizza in sequenza, si arriva fino all’ultima fila di nodi, che rappresenta i personaggi. I nodi finali sono proprio 2^3 = 8, come nella relazione osservata poco fa. Le domande che ci vengono poste durante la partita servono ad Akinator per orientarsi lungo questo albero decisionale e giungere fino al nodo finale, che rappresenta la soluzione.

Serie di attributi ed albero avanzato

Il modello descritto poco fa funziona bene finché le nostre risposte sono corrette e l’esplorazione dell’albero è deterministica. A volte questo non accade. Ci possono essere degli errori nelle risposte date, o semplicemente il parere soggettivo delle persone può non coincidere  (es. non esiste un criterio oggettivo che definisca l'”essere famoso”?). Queste inesattezze confondono la ricerca lungo l’albero, eppure Akinator indovina lo stesso!

Spencer Chan, su Quora, avanza un’ipotesi affascinante in grado di considerare anche questo scenario. In particolare, osserva come Akinator consenta al giocatore di rispondere alle domande con delle piccole sfumature. Difatti possiamo rispondere non solo “sì” o “no” ma anche “non lo so”, “probabilmente” o “probabilmente no”. E’ come se ogni risposta non sia solo “bianca” o “nera”, 0 o 1, ma in mezzo ci siano delle sfumature intermedie. In questo modo è possibile riflettere il parere soggettivo delle persone. Inoltre l’esplorazione lungo l’albero di ricerca non è completamente esclusiva. In altre parole: è come se non venisse seguito un solo percorso lungo i rami dell’albero di ricerca ma l’algoritmo esplorasse le possibili soluzioni, senza scartare completamente alcuni percorsi, che invece vengono analizzati in parallelo, pronti ad essere ripresi in considerazione all’occorrenza. Difatti avete notato che Akinator può indovinare Leo Messi, pur se alla prima domanda avevamo risposto erroneamente che fosse una donna?

Akinator impara

Uno dei punti di forza di Akinator è l’essere in grado di imparare. Non solo calibra la sua ricerca lungo l’albero analizzando le risposte degli utenti, ma può imparare anche nuovi personaggi. Non credo che Akinator cerchi informazioni scandagliando silenziosamente internet. Non perché sia tecnicamente impossibile, ma perché è molto più efficace far leva sulla voglia dei giocatori di metterlo alla prova su personaggi sempre meno conosciuti, chiedendo loro di aggiungere a fine partita il personaggio sconosciuto e memorizzando nuove informazioni. Infatti più si gioca, più Akinator diventa un avversario difficile da battere.

Voi l’avete battuto? Fatemi sapere…

A presto, : )

A.

9 pensieri su “Come funziona Akinator?

  1. Si, io… Non ha indovinato Tisifone, un personaggio donna dei cavalieri dello zodiaco, ma il giorno dopo ho riprovato lo stesso personaggio e lo ha indovinato, quindi è vero che impara 😀

  2. Io l’ho batto…..cercavo di fargli indovinare Yoongi/Suga,uno dei membri dei BTS…..i meiei idoli……;prima però ho cercato di fargli indovinare Park Jimin(un altro membro)

  3. Io ho posto ieri mattina ad Akinator la sfida di battermi, pensavo a lui: mi ha chiesto solamente 2 cose: il personaggio le sta facendo domande? E poi la domanda fatidica: il personaggio è davanti a lei. Dicendo di per la sola seconda volta, mi ha detto, il personaggio che sto pensando è: Akinator (genio). Be complimenti in solo 2 domande mi ha indovinato a ciò che pensavo.

Rispondi