2009-05-20 13 views
95

Semplici giochi online di 20 domande alimentati da un'IA incredibilmente accurata.Come funzionano 20 domande sugli algoritmi AI?

Come fanno ad indovinare così bene?

+0

Sembra che siano le migliori 20 domande AI che ho visto finora. Altrimenti collegheremo a uno degli altri. –

+1

Molto bene. Anche se Akinator sembra indovinare molto più intuitivamente di 20q.net, per quanto ne so. Sono interessato a ciò che rende questo in particolare 'intelligente', per così dire. –

+1

non avevo idea che questa cosa esistesse online. Ha indovinato "pigna" al terzo tentativo, con mio grande stupore! Impressionante –

risposta

49

Si può pensare ad esso come Algoritmo di ricerca binaria. In ogni iterazione, facciamo una domanda, che dovrebbe eliminare circa la metà delle possibili scelte di parole. Se ci sono un totale di N parole, allora possiamo aspettarci di ottenere una risposta dopo le domande di log2 (N).

Con 20 domande, dovremmo essere in grado di trovare una parola tra 2^20 = 1 milione di parole.

Un modo semplice per eliminare i valori anomali (risposte errate) è probabilmente quello di utilizzare qualcosa come RANSAC. Ciò significherebbe, invece di prendere in considerazione tutte le domande a cui è stata data una risposta, di scegliere casualmente un sottoinsieme più piccolo, il che è sufficiente per darti un'unica risposta. Ora lo ripeti alcune volte con diversi sottoinsiemi casuali di domande, finché non vedi che la maggior parte delle volte ottieni lo stesso risultato. allora sai che hai la risposta giusta.

Naturalmente questo è solo uno dei tanti modi per risolvere questo problema.

+4

Questo semplice programma dimostra piuttosto bene quello di cui stai parlando. Una volta arrivato, puoi fare clic sul link 'code' per vederlo: http://openbookproject.net/py4fun/animal/animal.html –

+0

Questo tipo di AI è disponibile come servizio? Cosa succede se potessi fornire tutte le domande e le risposte e lasciare che le trovi? – tggagne

+0

E come si chiama questo tipo di algoritmo? ha un nome? – tggagne

6

Sta utilizzando un algoritmo di apprendimento.

k-NN è un buon esempio di uno di questi.

Wikipedia: k-Nearest Neighbor Algorithm

+4

È un algoritmo adiacente più vicino una buona scelta in questo caso? Sembrerebbe che sarebbe troppo indulgente per le risposte sbagliate, e potrebbe finire con un numero enorme di dimensioni, molte delle quali senza dati. (Sto assumendo l'uso della distanza di hamming e una dimensione per domanda). Un albero decisionale sembra un adattamento più naturale. – Kylotan

+1

La teoria dell'apprendimento è la risposta corretta - non importa che dia risposte meno 'accurate' perché si basa sugli errori che tendono a fare tutti, cosa che rende effettivamente meglio a indovinare. –

+0

Quindi, come questo aiuta a identificare la migliore domanda da porre? –

22

raccomanda la lettura del gioco qui: http://en.wikipedia.org/wiki/Twenty_Questions

In particolare i computer sezione:

Il gioco suggerisce che le informazioni (come misurato da entropia di Shannon statistica) richiesto per identificare un oggetto arbitrario è di circa 20 bit. Il gioco viene spesso utilizzato come esempio quando insegna alla teoria delle informazioni . Matematicamente, se ogni domanda è strutturata per eliminare metà degli oggetti, , 20 domande saranno consentire all'interrogazione di distinguere tra 2 o 1.048.576 soggetti. Di conseguenza, la più efficace strategia per Venti domande è a porre domande che divideranno il campo delle restanti possibilità circa a metà ogni volta. Il processo è analogo a un algoritmo di ricerca binaria in informatica.

+2

Questo spiega un po 'di questo. Ma se consideri le risposte errate e l'ambiguità generale, non sembra ancora così semplice. –

+1

Se hai guardato il link vedrai che questa non è una domanda si/no che può dividere il campo di metà ogni volta. Sebbene la tua risposta sia corretta per 20 domande, penso che la risposta di Shaun sia più accurata, un semplice algoritmo di apprendimento vicino-vicino e un numero sufficiente di input da parte dell'utente, consente di ottenere risultati molto accurati. –

+0

Ah, è vero, sono simili, ma sicuramente il vicino più prossimo ha più senso. – cgp

21

Un albero decisionale supporta direttamente questo tipo di applicazione. Gli alberi decisionali sono comunemente usati nell'intelligenza artificiale.

Un albero decisionale è un albero binario che richiede la "migliore" domanda in ciascun ramo per distinguere tra le raccolte rappresentate dai figli sinistro e destro. La migliore domanda è determinata da un algoritmo di apprendimento che i creatori dell'applicazione 20 domande usano per costruire l'albero. Quindi, come sottolineano altri poster, un albero con 20 livelli di profondità ti dà un milione di cose.

Un modo semplice per definire la "migliore" domanda in ogni punto è cercare una proprietà che divida in modo più uniforme la raccolta in metà. In questo modo, quando ottieni una risposta sì/no a quella domanda, ti sbarazzi di circa metà della collezione ad ogni passaggio. In questo modo puoi approssimare la ricerca binaria.

Wikipedia fornisce un esempio più completo:

http://en.wikipedia.org/wiki/Decision_tree_learning

E alcuni contesto generale:

http://en.wikipedia.org/wiki/Decision_tree

+1

+1, vorrei notare che era uno dei commenti nell'articolo di Atwood. – cgp

+0

È vero, sebbene il programma BASIC Animal non disponga di un algoritmo di allenamento per determinare quali domande utilizzare e quanto in alto nell'albero le metterà. Le prestazioni con un albero delle decisioni addestrato dovrebbero essere molto migliori. (Sono d'accordo con il commentatore sul fatto che le domande che Atwood ha assomigliato molto sono state generate dall'algoritmo Animal originale e non da una rete neurale). –

7

Si spaccia come "la rete neurale su internet", e qui sta il tasto. Probabilmente memorizza le probabilità di domanda/risposta in una matrice di riserva. Usando queste probabilità, è in grado di utilizzare un algoritmo di albero decisionale per dedurre quale domanda porre per meglio restringere la domanda successiva. Una volta che riduce il numero di risposte possibili a qualche dozzina, o se ha già raggiunto 20 domande, allora inizia a leggere il più probabile.

L'aspetto davvero intrigante di 20q.net è che, a differenza della maggior parte degli algoritmi di reti decisionali e di reti neurali di cui sono a conoscenza, 20q supporta una matrice sparsa e aggiornamenti incrementali.

Modifica: Risulta che la risposta è stata in rete per tutto questo tempo. Robin Burgener, l'inventore, ha descritto il suo algoritmo in dettaglio nel suo 2005 patent filing.

Problemi correlati