20 개의 질문 AI 알고리즘은 어떻게 작동합니까?


103

엄청나게 정확한 AI로 구동되는 20 개의 질문으로 구성된 간단한 온라인 게임.

그들은 어떻게 그렇게 잘 추측합니까?


지금까지 내가 본 AI 최고의 20 가지 질문 인 것 같습니다. 그렇지 않으면 다른 사람 중 하나에 연결합니다.
Daddy Warbox

1
아주 잘. Akinator가 20q.net보다 훨씬 직관적으로 추측하는 것처럼 보이지만 제가 알 수있는 한. 나는 그것을 특히 '스마트'하게 만드는 것에 관심이 있습니다.
Daddy Warbox

1
나는 이것이 온라인에 존재하는지 전혀 몰랐다. 놀랍게도 세 번째 시도에서 '솔방울'을 추측했습니다! 인상적
Peter Perháč

3
+1-확실히 프로그래밍과 관련이 있으며 좋은 질문입니다.
Adam Davis

@JeffAtwood 어떤 기사에 연결하려고 했습니까?
antony.trupe 2014 년

답변:


55

이진 검색 알고리즘이라고 생각할 수 있습니다. 각 반복에서 우리는 가능한 단어 선택의 대략 절반을 제거해야하는 질문을합니다. 총 N 개의 단어가있는 경우 log2 (N) 질문 후에 답을 얻을 수 있습니다.

20 개의 질문으로 2 ^ 20 = 100 만 단어 중 단어를 최적으로 찾을 수 있어야합니다.

이상 값 (잘못된 답변)을 제거하는 쉬운 방법 중 하나는 아마도 RANSAC 와 같은 것을 사용하는 것 입니다. 즉, 답변 된 모든 질문을 고려하는 대신 무작위로 작은 하위 집합을 선택하여 단일 답변을 제공 할 수 있습니다. 이제 다른 임의의 질문 하위 집합으로 몇 번 반복하여 대부분의 경우 동일한 결과를 얻습니다. 그러면 정답이 있다는 것을 알게됩니다.

물론 이것은이 문제를 해결하는 여러 방법 중 하나 일뿐입니다.


4
이 간단한 프로그램은 당신이 말하는 것을 잘 보여줍니다. 거기에 도착하면 code링크를 클릭하여 볼 수 있습니다. openbookproject.net/py4fun/animal/animal.html
Noctis Skytower

그런 종류의 AI를 서비스로 사용할 수 있습니까? 모든 질문과 답변을 제공하고 찾을 수 있도록하면 어떻게됩니까?
tggagne 2015 년

그리고 이런 종류의 알고리즘을 무엇이라고 부릅니까? 이름이 있나요?
tggagne 2015 년

25

의사 결정 트리는 이러한 종류의 응용 프로그램을 직접 지원합니다. 의사 결정 트리는 일반적으로 인공 지능에서 사용됩니다.

의사 결정 트리는 왼쪽 및 오른쪽 자식이 나타내는 컬렉션을 구분하기 위해 각 분기에서 "가장 좋은"질문을 묻는 이진 트리입니다. 가장 좋은 질문은 20 개의 질문 응용 프로그램의 작성자가 트리를 작성하는 데 사용하는 학습 알고리즘에 의해 결정됩니다. 그런 다음 다른 포스터에서 지적했듯이 20 층 깊이의 나무는 백만 가지를 제공합니다.

각 지점에서 "가장 좋은"질문을 정의하는 간단한 방법은 컬렉션을 가장 균등하게 절반으로 나누는 속성을 찾는 것입니다. 이렇게하면 해당 질문에 대한 예 / 아니요 답변을받을 때 각 단계에서 수집품의 약 절반이 제거됩니다. 이렇게하면 이진 검색을 근사화 할 수 있습니다.

Wikipedia는보다 완전한 예를 제공합니다.

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

일반적인 배경 :

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


2
+1, Atwood 기사의 의견 중 하나였습니다.
cgp

1
사실, BASIC 프로그램 Animal에는 어떤 질문을 사용할지 결정하는 훈련 알고리즘이 없지만, 질문을 트리에서 얼마나 높이는지를 결정합니다. 훈련 된 의사 결정 트리를 사용하면 성능이 훨씬 향상됩니다. (저는 Atwood의 질문이 신경망이 아닌 원래 Animal 알고리즘에 의해 생성 된 것과 매우 유사 해 보인다는 의견에 동의합니다.)
Nathan Shively-Sanders

24

여기에서 게임에 대해 읽어 볼 것을 권장합니다 : http://en.wikipedia.org/wiki/Twenty_Questions

특히 컴퓨터 섹션 :

이 게임은 임의의 물체를 식별하는 데 필요한 정보 (Shannon의 엔트로피 통계로 측정)가 약 20 비트라고 제안합니다. 이 게임은 사람들에게 정보 이론을 가르 칠 때 종종 예로 사용됩니다. 수학적으로 각 질문이 대상의 절반을 제거하도록 구성된 경우 20 개의 질문을 통해 질문자는 2 개 20 개 또는 1,048,576 개의 주제 를 구분할 수 있습니다. 따라서 20 문항의 가장 효과적인 전략은 남은 가능성의 영역을 매번 대략 절반으로 나누는 질문을하는 것입니다. 이 프로세스는 컴퓨터 과학의 이진 검색 알고리즘과 유사합니다.


2
그 중 일부를 설명합니다. 그러나 오답과 일반적인 모호성을 고려할 때 여전히 그렇게 간단하지 않은 것 같습니다.
Daddy Warbox

1
링크를 보면 매번 필드를 절반으로 나눌 수있는 예 / 아니오 질문이 아니라는 것을 알 수 있습니다. 귀하의 답변은 20 개의 질문에 맞지만 Shaun의 답변이 더 정확하고 간단한 가장 가까운 이웃 학습 알고리즘 및 충분한 사용자 입력으로 매우 정확한 결과를 얻을 수 있다고 생각합니다.
z-

아, 사실 비슷하지만 가장 가까운 이웃이 더 의미가 있습니다.
cgp

12

그것은 스스로를 "인터넷상의 신경망"이라고 부르며 그 안에 핵심이있다. 질문 / 답변 확률을 예비 행렬에 저장합니다. 이러한 확률을 사용하여 의사 결정 트리 알고리즘을 사용하여 다음 질문을 가장 잘 좁힐 수있는 질문을 추론 할 수 있습니다. 가능한 답변의 수를 수십 개로 좁히거나 이미 20 개의 질문에 도달하면 가장 가능성이 높은 것을 읽기 시작합니다.

20q.net의 정말 흥미로운 점은 제가 아는 대부분의 의사 결정 트리 및 신경망 알고리즘과 달리 20q는 희소 행렬과 증분 업데이트를 지원한다는 것입니다.

편집 : 대답이 이번 내내 인터넷에 있었다는 것이 밝혀졌습니다. 발명가 인 Robin Burgener는 2005 년 특허 출원 에서 그의 알고리즘을 자세히 설명했습니다 .


6

학습 알고리즘을 사용하고 있습니다.

k-NN은 이들 중 하나의 좋은 예입니다.

Wikipedia : k-Nearest Neighbor 알고리즘


4
이 경우 최근 접 이웃 알고리즘이 좋은 선택입니까? 오답을 너무 용서하는 것처럼 보이며 데이터가없는 엄청난 수의 차원으로 끝날 수 있습니다. (나는 해밍 거리를 사용하고 질문 당 하나의 차원을 사용한다고 가정하고 있습니다.) 의사 결정 트리가 더 자연스러운 것 같습니다.
Kylotan

1
학습 이론은 정답입니다. 모든 사람이 저지르는 실수를 기반으로하기 때문에 '정확하지 않은'답을 덜주는 것은 문제가되지 않습니다.
Jonathan Plackett 2014 년

그렇다면 이것이 가장 좋은 질문을 식별하는 데 어떻게 도움이 될까요?
Thomas Ahle 2014 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.