Comment fonctionnent les algorithmes d'IA en 20 questions?

103

Des jeux en ligne simples de 20 questions alimentés par une IA étrangement précise.

Comment devinent-ils si bien?

Papa Warbox
la source
Cela semble être les 20 meilleures questions AI que j'ai vues jusqu'à présent. Sinon, je ferais un lien vers l'un des autres.
Daddy Warbox
1
Très bien. Bien qu'Akinator semble deviner beaucoup plus intuitivement que 20q.net, pour autant que je sache. Je m'intéresse à ce qui rend celui-ci en particulier «intelligent», pour ainsi dire.
Daddy Warbox
1
je n'avais aucune idée que cette chose existait en ligne. Il a deviné «pomme de pin» à la troisième tentative, à ma grande surprise! Impressionnant
Peter Perháč
3
+1 - définitivement lié à la programmation, et une bonne question.
Adam Davis
@JeffAtwood vers quel article essayiez-vous de créer un lien?
antony.trupe

Réponses:

55

Vous pouvez le considérer comme l'algorithme de recherche binaire. À chaque itération, nous posons une question, qui devrait éliminer à peu près la moitié des choix de mots possibles. S'il y a un total de N mots, alors nous pouvons nous attendre à obtenir une réponse après log2 (N) questions.

Avec 20 questions, nous devrions de manière optimale être en mesure de trouver un mot parmi 2 ^ 20 = 1 million de mots.

Un moyen simple d'éliminer les valeurs aberrantes (mauvaises réponses) serait probablement d'utiliser quelque chose comme RANSAC . Cela signifierait qu'au lieu de prendre en compte toutes les questions auxquelles vous avez répondu, vous choisissez au hasard un sous-ensemble plus petit, ce qui suffit pour vous donner une seule réponse. Maintenant, vous répétez cela plusieurs fois avec différents sous-ensembles aléatoires de questions, jusqu'à ce que vous voyiez 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 des nombreuses façons de résoudre ce problème.

Yogi
la source
4
Ce programme simple montre assez bien de quoi vous parlez. Une fois que vous y êtes, vous pouvez cliquer sur le codelien pour le voir: openbookproject.net/py4fun/animal/animal.html
Noctis Skytower
Ce type d'IA est-il disponible en tant que service? Et si je pouvais fournir toutes les questions et réponses et les laisser les trouver?
tggagne
Et comment appelez-vous ce type d'algorithme? At-il un nom?
tggagne
25

Un arbre de décision prend directement en charge ce type d'application. Les arbres de décision sont couramment utilisés en intelligence artificielle.

Un arbre de décision est un arbre binaire qui pose «la meilleure» question à chaque branche pour distinguer 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. Ensuite, comme le soulignent d'autres affiches, un arbre de 20 niveaux de profondeur vous donne un million de choses.

Un moyen simple de définir «la meilleure» question à chaque point est de rechercher une propriété qui divise le plus uniformément la collection en deux. De cette façon, lorsque vous obtenez une réponse oui / non à cette question, vous vous débarrassez d'environ la moitié de la collection à chaque étape. De cette façon, vous pouvez approximer la recherche binaire.

Wikipedia donne un exemple plus complet:

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

Et quelques informations générales:

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

Nathan Shively-Sanders
la source
2
+1, je noterais que c'était l'un des commentaires de l'article d'Atwood.
cgp
1
C'est vrai, bien que le programme BASIC Animal ne dispose pas d'un algorithme de formation pour déterminer les questions à utiliser et à quelle hauteur dans l'arbre les poser. Les performances avec un arbre de décision formé devraient être bien meilleures. (Je suis d'accord avec le commentateur pour dire que les questions reçues par Atwood ressemblent beaucoup à elles ont été générées par l'algorithme Animal original et non par un réseau de neurones.)
Nathan Shively-Sanders
24

Je recommande de lire sur le jeu ici: http://en.wikipedia.org/wiki/Twenty_Questions

En particulier la section Ordinateurs:

Le jeu suggère que les informations (mesurées par la statistique d'entropie de Shannon) nécessaires pour identifier un objet arbitraire sont d'environ 20 bits. Le jeu est souvent utilisé comme exemple pour enseigner aux gens la théorie de l'information. Mathématiquement, si chaque question est structurée de manière à éliminer la moitié des objets, 20 questions permettront au questionneur de distinguer entre 2 20 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 à peu près de moitié à chaque fois. Le processus est analogue à un algorithme de recherche binaire en informatique.

cgp
la source
2
Cela en explique une partie. Mais quand on considère les réponses incorrectes et l'ambiguïté générale, cela ne semble toujours pas aussi simple.
Daddy Warbox
1
Si vous regardez le lien, vous verrez que ce n'est pas vraiment une question oui / non qui peut diviser le champ par 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 une entrée utilisateur suffisante permettent d'obtenir des résultats très précis.
z -
Ah, c'est vrai, ils sont similaires, mais le voisin le plus proche a certainement plus de sens.
cgp
12

Il se présente comme "le réseau neuronal sur Internet", et c'est là que réside 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 limiterait le mieux la question suivante. Une fois qu'il réduit le nombre de réponses possibles à quelques dizaines, ou s'il atteint déjà 20 questions, il commence à lire les plus probables.

L'aspect vraiment intrigant de 20q.net est que contrairement à la plupart des algorithmes d'arbre de décision et de réseau neuronal que je connaisse, 20q prend en charge une matrice clairsemée et des mises à jour incrémentielles.

Edit: 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 dépôt de brevet en 2005 .

Cerin
la source
6

Il utilise un algorithme d'apprentissage.

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

Wikipédia: algorithme k-voisin le plus proche

Shaun Mason
la source
4
Un algorithme du plus proche voisin est-il un bon choix dans ce cas? Il semblerait que cela pardonnerait beaucoup trop 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 frappe et d'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 des réponses moins «précises», car elle se fonde sur les erreurs que tout le monde a tendance à faire, ce qui la rend plus facile à deviner.
Jonathan Plackett
Alors, comment cela aide-t-il à identifier la meilleure question à poser?
Thomas Ahle