Como funcionam os algoritmos de IA de 20 questões?

103

Jogos online simples de 20 questões alimentados por uma IA assustadoramente precisa.

Como eles adivinham tão bem?

Papai Warbox
fonte
Parece ser as 20 melhores questões de IA que já vi até agora. Caso contrário, eu me conectaria a um dos outros.
Daddy Warbox
1
Muito bem. Embora o Akinator pareça adivinhar muito mais intuitivamente do que o 20q.net, pelo que posso dizer. Estou interessado no que torna aquele em particular 'inteligente', por assim dizer.
Daddy Warbox de
1
Eu não tinha ideia de que essa coisa existia online. Ele adivinhou 'pinha' na terceira tentativa, para minha surpresa! Impressionante
Peter Perháč
3
+1 - definitivamente relacionado à programação, e uma boa pergunta.
Adam Davis
@JeffAtwood para qual artigo você estava tentando criar um link?
antony.trupe

Respostas:

55

Você pode pensar nisso como o algoritmo de pesquisa binária. Em cada iteração, fazemos uma pergunta, que deve eliminar aproximadamente metade das opções de palavras possíveis. Se houver um total de N palavras, podemos esperar obter uma resposta após log2 (N) perguntas.

Com 20 perguntas, devemos ser capazes de encontrar uma palavra entre 2 ^ 20 = 1 milhão de palavras.

Uma maneira fácil de eliminar outliers (respostas erradas) seria provavelmente usar algo como RANSAC . Isso significaria que, em vez de levar em consideração todas as perguntas que foram respondidas, você escolhe aleatoriamente um subconjunto menor, que é o suficiente para lhe dar uma única resposta. Agora você repete isso algumas vezes com diferentes subconjuntos aleatórios de perguntas, até ver que na maioria das vezes, está obtendo o mesmo resultado. então você sabe que tem a resposta certa.

É claro que essa é apenas uma das muitas maneiras de resolver esse problema.

Iogue
fonte
4
Este programa simples demonstra muito bem o que você está falando. Assim que chegar lá, você pode clicar no codelink para vê-lo: openbookproject.net/py4fun/animal/animal.html
Noctis Skytower
Esse tipo de IA está disponível como um serviço? E se eu pudesse fornecer todas as perguntas e respostas e deixá-lo encontrá-las?
tggagne
E como você chama esse tipo de algoritmo? Isso tem um nome?
tggagne
25

Uma árvore de decisão suporta esse tipo de aplicativo diretamente. Árvores de decisão são comumente usadas em inteligência artificial.

Uma árvore de decisão é uma árvore binária que faz a "melhor" pergunta em cada ramo para distinguir entre as coleções representadas por seus filhos esquerdo e direito. A melhor pergunta é determinada por algum algoritmo de aprendizado que os criadores do aplicativo de 20 perguntas usam para construir a árvore. Então, como outros pôsteres apontam, uma árvore de 20 níveis de profundidade fornece um milhão de coisas.

Uma maneira simples de definir "a melhor" pergunta em cada ponto é procurar uma propriedade que divida a coleção pela metade da maneira mais uniforme. Dessa forma, ao obter uma resposta sim / não para essa pergunta, você se livra de cerca de metade da coleção em cada etapa. Desta forma, você pode aproximar a pesquisa binária.

A Wikipedia dá um exemplo mais completo:

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

E algumas informações gerais:

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

Nathan Shively-Sanders
fonte
2
1, eu observaria que foi um dos comentários no artigo de Atwood.
cgp
1
É verdade, embora o programa BASIC Animal não tenha um algoritmo de treinamento para determinar quais perguntas usar e a que altura da árvore colocá-las. O desempenho com uma árvore de decisão treinada deve ser muito melhor. (Concordo com o comentarista que as perguntas que Atwood recebeu parecem muito com elas foram geradas pelo algoritmo Animal original e não por uma rede neural.)
Nathan Shively-Sanders
24

Recomendo ler sobre o jogo aqui: http://en.wikipedia.org/wiki/Twenty_Questions

Em particular a seção de Computadores:

O jogo sugere que a informação (medida pela estatística de entropia de Shannon) necessária para identificar um objeto arbitrário é de cerca de 20 bits. O jogo é frequentemente usado como exemplo ao ensinar as pessoas sobre a teoria da informação. Matematicamente, se cada pergunta for estruturada para eliminar metade dos objetos, 20 perguntas permitirão ao questionador distinguir entre 2 20 ou 1.048.576 assuntos. Conseqüentemente, a estratégia mais eficaz para as vinte perguntas é fazer perguntas que dividirão o campo das possibilidades restantes aproximadamente pela metade a cada vez. O processo é análogo a um algoritmo de busca binária em ciência da computação.

cgp
fonte
2
Isso explica parte disso. Mas quando você considera as respostas incorretas e a ambigüidade geral, ainda parece não tão simples.
Daddy Warbox de
1
Se você olhar o link, verá que essa não é uma pergunta de sim / não que pode dividir o campo pela metade a cada vez. Embora sua resposta esteja correta para 20 questões, acho que a resposta de Shaun é mais precisa, um algoritmo simples de aprendizagem do vizinho mais próximo e entrada de usuário suficiente permite alguns resultados muito precisos.
z -
Ah, é verdade, eles são semelhantes, mas definitivamente o vizinho mais próximo faz mais sentido.
cgp
12

Ela se autodenomina "a rede neural na internet" e é aí que está a chave. Provavelmente armazena as probabilidades de pergunta / resposta em uma matriz sobressalente. Usando essas probabilidades, é capaz de usar um algoritmo de árvore de decisão para deduzir qual pergunta fazer que melhor restringiria a próxima pergunta. Uma vez que ele reduz o número de respostas possíveis para algumas dezenas, ou se já atingiu 20 perguntas, ele começa a ler o mais provável.

O aspecto realmente intrigante do 20q.net é que, ao contrário da maioria dos algoritmos de árvore de decisão e rede neural que conheço, o 20q suporta uma matriz esparsa e atualizações incrementais.

Edit: Acontece que a resposta está na rede esse tempo todo. Robin Burgener, o inventor, descreveu seu algoritmo em detalhes em seu pedido de patente de 2005 .

Cerin
fonte
6

Ele está usando um algoritmo de aprendizado.

k-NN é um bom exemplo de um deles.

Wikipedia: algoritmo do vizinho mais próximo k

Shaun Mason
fonte
4
Um algoritmo de vizinho mais próximo é uma boa escolha neste caso? Parece que perdoaria demais as respostas erradas e poderia terminar com um grande número de dimensões, muitas das quais sem dados. (Estou assumindo o uso de distância de hamming e uma dimensão por pergunta.) Uma árvore de decisão parece um ajuste mais natural.
Kylotan
1
A teoria do aprendizado é a resposta correta - não importa que forneça respostas menos "precisas" porque se baseia nos erros que todos tendem a cometer, o que na verdade a torna melhor em adivinhar.
Jonathan Plackett
Então, como isso ajuda a identificar a melhor pergunta a fazer?
Thomas Ahle