2009-05-20 3 views
95

Jeux en ligne simples de 20 questions alimentés par une intelligence artificielle extrêmement précise.Comment fonctionnent 20 questions?

Comment devinent-ils si bien?

+0

Il semble que ce soit les 20 meilleures questions AI que j'ai vues jusqu'ici. Sinon, je ferais un lien avec l'un des autres. –

+1

Très bien. Bien que Akinator semble deviner beaucoup plus intuitivement que 20q.net, autant que je sache. Je m'intéresse à ce qui rend celui-ci particulièrement «intelligent», pour ainsi dire. –

+1

Je n'avais aucune idée que cette chose existait en ligne. Il a deviné "pin cône" à la troisième tentative, à ma grande surprise! Impressionnant –

Répondre

49

Vous pouvez le considérer comme l'algorithme de recherche binaire. À chaque itération, nous posons une question qui devrait éliminer environ la moitié des choix de mots possibles. S'il y a un total de N mots, alors nous pouvons nous attendre à recevoir une réponse après les questions log2 (N). Avec une question de 20, nous devrions trouver de façon optimale un mot parmi 2^20 = 1 million de mots.

Un moyen facile d'éliminer les valeurs aberrantes (mauvaises réponses) serait probablement d'utiliser quelque chose comme RANSAC. Cela signifie qu'au lieu de prendre en compte toutes les questions auxquelles vous avez répondu, vous choisissez au hasard un plus petit sous-ensemble, ce qui est suffisant pour vous donner une réponse unique. Maintenant, vous répétez cela à quelques reprises avec différents sous-ensembles aléatoires de questions, jusqu'à ce que vous voyez que la plupart du temps, vous obtenez le même résultat. vous savez alors que vous avez la bonne réponse.

Bien sûr, ce n'est qu'une façon de résoudre ce problème.

+4

Ce programme simple démontre assez bien ce dont vous parlez. Une fois que vous y êtes, vous pouvez cliquer sur le lien 'code' pour le voir: http://openbookproject.net/py4fun/animal/animal.html –

+0

Est-ce que ce type d'IA est disponible en tant que service? Et si je pouvais fournir toutes les questions et réponses et les laisser les trouver? – tggagne

+0

Et comment appelez-vous ce type d'algorithme? A-t-il un nom? – tggagne

6

Il utilise un algorithme d'apprentissage.

k-NN est un bon exemple de l'un d'entre eux.

Wikipedia: k-Nearest Neighbor Algorithm

+4

Un algorithme de voisin le plus proche est-il un bon choix? ce cas? Il semblerait que ce serait trop pardonner les mauvaises réponses, et pourrait se retrouver avec un nombre massif de dimensions, dont beaucoup sans données. (Je suppose l'utilisation de la distance de hamming, et une dimension par question.) Un arbre de décision semble un ajustement plus naturel. – Kylotan

+1

La théorie de l'apprentissage est la bonne réponse - peu importe qu'elle donne moins de réponses «précises» parce qu'elle se fonde sur les erreurs que tout le monde a tendance à faire, ce qui en fait une meilleure estimation. –

+0

Alors, comment cela aide-t-il à identifier la meilleure question à poser? –

22

Je recommande la lecture sur le jeu ici: http://en.wikipedia.org/wiki/Twenty_Questions

En particulier la section Ordinateurs:

Le jeu indique que les informations (telle que mesurée par l'entropie de Shannon statistique) requis pour identifier un objet arbitraire est d'environ 20 bits. Le jeu est souvent utilisé comme un exemple lorsque enseigner aux gens sur l'information théorie. Mathématiquement, si chaque question est structurée pour éliminer la moitié des objets, 20 questions permettront au questionneur de distinguer entre 2 ou 1 048 576 sujets. En conséquence, la stratégie la plus efficace pour Twenty Questions est de poser des questions qui diviseront le champ des possibilités restantes environ en deux à chaque fois. Le processus est analogue à un algorithme de recherche binaire en informatique.

+2

Cela explique une partie de cela. Mais quand vous considérez des réponses incorrectes et une ambiguïté générale, cela ne semble toujours pas si simple. –

+1

Si vous avez regardé le lien, vous verrez que ce n'est pas vraiment une question oui/non qui peut diviser le champ de moitié chaque fois. Bien que votre réponse soit correcte pour 20 questions, je pense que la réponse de Shaun est plus précise, un simple algorithme d'apprentissage du plus proche voisin, et suffisamment d'informations de la part de l'utilisateur, permet d'obtenir des résultats très précis. –

+0

Ah, c'est vrai, ils sont similaires, mais le plus proche voisin a certainement plus de sens. – cgp

21

Un arbre de décision prend directement en charge ce type d'application. Les arbres de décision sont couramment utilisés dans l'intelligence artificielle. Un arbre de décision est un arbre binaire qui demande «la meilleure» question à chaque branche de distinguer entre les collections représentées par ses enfants gauche et droit. La meilleure question est déterminée par un algorithme d'apprentissage que les créateurs de l'application 20 questions utilisent pour construire l'arbre. Puis, comme le soulignent d'autres affiches, un arbre de 20 niveaux profonds vous donne un million de choses.

Une manière simple de définir la «meilleure» question à chaque point consiste à rechercher une propriété qui divise le plus uniformément la collection en deux. De cette façon, quand vous obtenez une réponse oui/non à cette question, vous vous débarrassez de la moitié de la collection à chaque étape. De cette façon, vous pouvez approximer la recherche binaire.

Wikipédia donne un exemple plus complet:

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

Et certains arrière-plan général:

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

+1

+1, je voudrais noter que c'était l'un des commentaires dans l'article Atwood. – cgp

+0

Vrai, bien que le programme BASIC Animal ne dispose pas d'un algorithme de formation pour déterminer quelles questions utiliser et quelle hauteur dans l'arbre pour les mettre. La performance avec un arbre de décision entraîné devrait être bien meilleure. (Je suis d'accord avec l'intervenant pour dire que les questions d'Atwood ressemblent beaucoup à celles qui ont été générées par l'algorithme Animal original et non par un réseau de neurones.) –

7

Il se présente comme "le réseau neuronal sur Internet", et y sont des mensonges la clé. Il stocke probablement les probabilités de question/réponse dans une matrice de rechange. En utilisant ces probabilités, il est capable d'utiliser un algorithme d'arbre de décision pour déduire la question à poser qui permettrait de mieux affiner la question suivante. Une fois que le nombre de réponses possibles est réduit à quelques dizaines, ou s'il a déjà atteint 20 questions, alors il commence à lire le plus probable. L'aspect vraiment intriguant de 20q.net est que, contrairement à la plupart des algorithmes d'arbre de décision et de réseau de neurones que je connais, 20q supporte une matrice éparse et des mises à jour incrémentielles.

Editer: Il s'avère que la réponse a été sur le net tout ce temps. Robin Burgener, l'inventeur, a décrit son algorithme en détail dans son 2005 patent filing.