20 soruluk AI algoritması nasıl çalışır?


103

Ürkütücü derecede hassas bir yapay zeka tarafından desteklenen 20 soruluk basit çevrimiçi oyun.

Nasıl bu kadar iyi tahmin ediyorlar?


Şimdiye kadar gördüğüm en iyi 20 soru yapay zeka gibi görünüyor. Aksi takdirde diğerlerinden birine bağlanırdım.
Daddy Warbox

1
Çok iyi. Akinator, anlayabildiğim kadarıyla 20q.net'ten çok daha sezgisel olarak tahmin ediyor gibi görünüyor. Bunu tabiri caizse özellikle 'akıllı' yapan şeyin ne olduğu ile ilgileniyorum.
Daddy Warbox

1
Bu şeyin internette var olduğu hakkında hiçbir fikrim yoktu. Üçüncü denemede "çam kozalağı" nı hayretle tahmin etti! Etkileyici
Peter Perháč

3
+1 - kesinlikle programlamayla ilgili ve iyi bir soru.
Adam Davis

@JeffAtwood hangi makaleye bağlantı vermeye çalışıyordun?
antony.trupe

Yanıtlar:


55

Bunu İkili Arama Algoritması olarak düşünebilirsiniz. Her yinelemede, olası kelime seçimlerinin kabaca yarısını ortadan kaldırması gereken bir soru soruyoruz. Toplam N kelime varsa, log2 (N) sorudan sonra bir cevap almayı bekleyebiliriz.

20 soruyla, 2 ^ 20 = 1 milyon kelime arasından bir kelimeyi en iyi şekilde bulabilmeliyiz.

Aykırı değerleri (yanlış cevapları) ortadan kaldırmanın kolay bir yolu, muhtemelen RANSAC gibi bir şey kullanmaktır . Bu, cevaplanan tüm soruları hesaba katmak yerine, rastgele bir şekilde daha küçük bir alt küme seçmeniz anlamına gelir; bu, size tek bir cevap vermek için yeterlidir. Şimdi bunu farklı rastgele alt kümeler ile birkaç kez tekrarlıyorsunuz, ta ki çoğu zaman aynı sonucu aldığınızı görene kadar. o zaman doğru cevaba sahip olduğunuzu anlarsınız.

Elbette bu, bu sorunu çözmenin birçok yolundan sadece bir tanesidir.


4
Bu basit program, neden bahsettiğinizi oldukça iyi gösteriyor. Oraya vardığınızda code, görmek için bağlantıya tıklayabilirsiniz : openbookproject.net/py4fun/animal/animal.html
Noctis Skytower

Bu tür bir AI hizmet olarak mevcut mu? Ya tüm soruları ve cevapları sağlayıp bulmasına izin verseydim?
tggagne

Ve bu tür algoritmaya ne diyorsunuz? Bir adı var mı?
tggagne

25

Bir karar ağacı bu tür bir uygulamayı doğrudan destekler. Karar ağaçları genellikle yapay zekada kullanılır.

Karar ağacı, sol ve sağ çocukları tarafından temsil edilen koleksiyonları ayırt etmek için her dalda "en iyi" sorusunu soran ikili bir ağaçtır. En iyi soru, 20 soru uygulamasının yaratıcılarının ağacı oluşturmak için kullandıkları bazı öğrenme algoritmaları tarafından belirlenir. Sonra, diğer posterlerin de işaret ettiği gibi, 20 seviye derinliğinde bir ağaç size milyonlarca şey verir.

Her noktada "en iyi" soruyu tanımlamanın basit bir yolu, koleksiyonu en eşit şekilde ikiye bölen bir mülk aramaktır. Bu şekilde, bu soruya evet / hayır cevabı aldığınızda, her adımda koleksiyonun yaklaşık yarısından kurtulursunuz. Bu şekilde ikili aramayı yaklaşık olarak tahmin edebilirsiniz.

Wikipedia daha eksiksiz bir örnek veriyor:

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

Ve biraz genel geçmiş:

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


2
+1, bunun Atwood makalesindeki yorumlardan biri olduğunu belirtmek isterim.
cgp

1
Doğru, ancak BASIC programı Animal'ın hangi soruları kullanacağını ve bunları ağacın ne kadar yükseğe koyacağını belirleyen bir eğitim algoritması yok. Eğitimli bir karar ağacı ile performans çok daha iyi olmalıdır. (Yorumcuya, Atwood'un aldığı soruların bir sinir ağı tarafından değil, orijinal Hayvan algoritması tarafından oluşturulmuş gibi göründüğüne katılıyorum.)
Nathan Shively-Sanders

24

Oyun hakkında burada okumanızı tavsiye ederim: http://en.wikipedia.org/wiki/Twenty_Questions

Özellikle Bilgisayarlar bölümü:

Oyun, rastgele bir nesneyi tanımlamak için gereken bilginin (Shannon'ın entropi istatistiği ile ölçüldüğü üzere) yaklaşık 20 bit olduğunu öne sürüyor. Oyun, insanlara bilgi teorisi hakkında bilgi verirken genellikle bir örnek olarak kullanılır. Matematiksel olarak, her soru nesnelerin yarısını ortadan kaldıracak şekilde yapılandırılmışsa, 20 soru, sorgulayan kişinin 2 20 veya 1.048.576 konu arasında ayrım yapmasına olanak sağlayacaktır . Buna göre, Yirmi Soru için en etkili strateji, kalan olasılıklar alanını her seferinde kabaca ikiye bölecek sorular sormaktır. İşlem, bilgisayar bilimindeki ikili arama algoritmasına benzer.


2
Bu bazılarını açıklıyor. Ancak yanlış cevapları ve genel belirsizliği düşündüğünüzde, yine de o kadar basit görünmüyor.
Daddy Warbox

1
Bağlantıya bakarsanız, bunun gerçekten alanı her seferinde ikiye bölen bir evet / hayır sorusu olmadığını göreceksiniz. Cevabınız 20 soru için doğru olsa da, sanırım Shaun'un cevabı daha doğru, basit bir en yakın öğrenme algoritması ve yeterli kullanıcı girişi, bazı çok doğru sonuçlara izin veriyor.
z -

Ah, doğru, benzerler ama kesinlikle en yakın komşu daha mantıklı.
cgp

12

Kendini "internetteki sinir ağı" olarak faturalandırır ve anahtar burada yatar. Muhtemelen soru / cevap olasılıklarını yedek bir matriste depolar. Bu olasılıkları kullanarak, bir sonraki soruyu en iyi şekilde daraltacak olan hangi sorunun sorulacağını belirlemek için bir karar ağacı algoritması kullanabilir. Birkaç düzine olası yanıt sayısını daralttıktan sonra veya zaten 20 soruya ulaşırsa, en olası olanı okumaya başlar.

20q.net'in gerçekten ilgi çekici yönü, bildiğim çoğu karar ağacı ve sinir ağı algoritmasının aksine, 20q'nin seyrek bir matrisi ve artımlı güncellemeleri desteklemesi.

Düzenleme: Cevabın bunca zamandır internette olduğu ortaya çıktı. Mucit Robin Burgener, algoritmasını 2005 patent başvurusunda ayrıntılı olarak açıkladı .


6

Bir öğrenme algoritması kullanıyor.

k-NN bunlardan birine güzel bir örnektir.

Wikipedia: k-En Yakın Komşu Algoritması


4
Bu durumda en yakın komşu algoritması iyi bir seçim midir? Görünüşe göre yanlış cevapları çok fazla bağışlayacak ve çoğu veri içermeyen çok sayıda boyutla sonuçlanabilecek. (Hamming mesafesi ve soru başına bir boyut kullanıldığını varsayıyorum.) Karar ağacı daha doğal bir uyum gibi görünüyor.
Kylotan

1
Öğrenme teorisi doğru cevaptır - daha az 'doğru' cevaplar vermesi önemli değildir çünkü herkesin yapma eğiliminde olduğu hatalara dayanır ve bu da onu tahmin etmede daha iyi hale getirir.
Jonathan Plackett
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.