Des jeux en ligne simples de 20 questions alimentés par une IA étrangement précise.
Comment devinent-ils si bien?
Des jeux en ligne simples de 20 questions alimentés par une IA étrangement précise.
Comment devinent-ils si bien?
Réponses:
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.
code
lien pour le voir: openbookproject.net/py4fun/animal/animal.html
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:
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.
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 .
Il utilise un algorithme d'apprentissage.
k-NN est un bon exemple de l'un d'entre eux.