Angry Birds'ü oynamak için nasıl bir makine öğrenme sistemi tasarlarsınız?


22

Çok fazla Angry Birds oynadıktan sonra kendi stratejilerimi izlemeye başladım. Her seviyede 3 yıldız almak için çok özel bir yaklaşım geliştirdiğim ortaya çıktı.

Bu beni Angry Birds oynayabilecek bir makine öğrenme sistemi geliştirmenin zorlukları hakkında merak etti. Oyun ile etkileşime girme ve kuşları başlatma önemsizdir. Ancak sahip olduğum tek soru sistemin “yapı taşları” ile ilgili.

Makine öğrenim sistemleri problemle ilgili basit kavramlarla veya anlayışla çalışıyor gibi görünüyor. Bu genellikle giriş olarak özellik olarak kodlanır. Dolayısıyla, sistemin bir strateji oluşturmak için bazı üst düzey kavramları anlama yeteneğine sahip olması gerekiyor gibi görünüyor.

Bu doğru mu? Ayrıca, böyle bir sistemin geliştirilmesinin zorlukları veya zor kısımları nelerdir?

1 numaralı EDIT:

İşte bazı açıklamalar. 3 yıldız almak zor bir problem çünkü puanları en üst düzeye çıkarmak zorundasınız. Bu, münhasır olmayan iki şekilde yapılabilir: 1) Kullanılan kuş sayısını en aza indirir (kullanılmayan her kuş için 10.000 puan alırsınız). 2) Cam, ahşap ve diğer nesnelerin imhası en üst düzeye çıkarıldı. Yok edilen her nesne size puan kazandırır. Tek bir kuşla 10.000 puandan fazla nesneyi imha etmek mümkündür.

İşte "yüksek seviye konseptleri" hakkında biraz daha açıklama. Yukarıda açıklanan noktaları en üst düzeye çıkarmak için, her bir kuşun özel güçlerini kullanmanız gerekir. Yani, haritanın düzenine bağlı olarak farklı yörüngelere sahip farklı kuşların fırlatılması demektir. Ve oyun oynarken, belli bölgeleri belirli kuşlarla belirli bir sıraya göre yok eden bir strateji geliştiriyorum.

Her kuşu belirli bir bölgeyi tahrip etmek için nasıl kullanacağını anlamadan, sistemin 3 yıldız almayı öğrenemediği anlaşılıyor. Peki, böyle bir şeyi nasıl yönetir ve kodlarsınız? Sistemin bu üst düzey kavramları öğrenmesini nasıl sağlarsınız?

Yanıtlar:


13

Yazılımın içine doğru kancaları getirebileceğinizi (veya kendi modelinizle çalıştığınızı) varsayalım, burada bazı şeyler kolay olur, bazıları ise daha az olur. Bu bence oldukça zor bir problem. Carlosdc'un dediği gibi, Takviye Öğrenmesi (RL) olası bir yoldur, ancak doğru olduğundan emin değilim.

Başlarken, durum alanınızın , eylem alanınızın , geçiş dinamiğinizin ve ödül fonksiyonunuzun ne olduğunu tanımlamanız gerekir . Durum / eylem alanları sürekli veya ayrık olabilir ve geçiş dinamikleri problem tarafından verilebilir veya matematiksel olarak modellenebilir. Sonunda ödül işlevi a-priori verilebilir veya örneklenebilir (gürültü ile veya gürültü olmadan).

Hareket alanı basittir: sadece mevcut kuşa ateş ettiğiniz yön ve güç. İnsan için bu ayrı bir problemdir (fare / dokunmatik ekran bir dijital giriş cihazıdır) - diyelim ki (örneğin) 32 olası yön ve 320 olası eylem veren 10 olası güç var.

Ödül işlevinin elde edilmesi de oldukça kolaydır: amaç, en az sayıda kuşa sahip olan tüm domuzlardan kurtulmaktır (Tamam, diğer şeyler için ekstra puan var ama şimdilik bunu görmezden gelelim). En iyisi, domuz öldürmekten (bu domuzun IIRC'sinin büyüklüğüne bağlıdır) domuzları öldüren noktaları oluşturan asıl işlevi bilmemizdi - ama tek bir seviye için bu mükemmel bir şekilde modellenebilirdi.

Durum uzayı ve geçiş dinamikleri çok daha zor. Doğru bu modellemek amacıyla, haritanın tüm düzenini bilmek gerekir ve oyunun fizik. Geçiş dinamikleri "Eğer x durumundaysam ve y eylemini gerçekleştirirsem , z durumuna ineceğim " der . Bunun zorluğunu görebilirsiniz, öncelikle sistemin karmaşık fiziği bunun doğru bir şekilde modellemenin son derece zor olacağı anlamına gelir ve ikincisi de ilk turda bile (320) ortaya çıkan birçok olası durum olduğu için, ve bu fizik motorunda herhangi bir stokastik bulunmadığını varsayıyoruz , oyun oynadıklarından şüpheliyim. Bence bu aşamada pes edip eve gideceksin.

Başka bir yaklaşım, en başta bir insan gibi muamele etmektir - yani deneme yanılma. İnsan, en azından başlangıçta, neredeyse rastgele ateş eder (kuşları domuzlara göndermeden önce oldukça güçlü olmasına rağmen, ancak bu, kolayca kodlanabilir), bir dizi iyi eylem bulunana kadar. Bu daha çok silahlı haydut gibiayarı. Buradaki haydutların "kolları" olası eylemlerdir. Algoritma, keşif ve sömürüyü dengelemeye çalışır - yani eylem alanını araştırmak ve bulundukları zaman iyi eylemleri kullanmak. Bunun için, alttaki dinamikler hakkında hiçbir şey bilmenize gerek yok - yalnızca eylemler ve ödüller hakkında bilgi sahibi olmanız gerekir. Tamamen yapabilmek için, tüm turlar boyunca mümkün olan her bir işlem için bir kolunuz olmalıdır (örneğin, 5 kuş * 320 eylem = 320 ^ 5 = yaklaşık 10 ^ 12 eyleminiz vardır), bu nedenle eylem alanı çok büyük! Ancak, eğer biraz biliyorsanız , bunu geliştirmek için bazı püf noktaları kullanabilirsiniz.devlet alanı hakkında. Örneğin, muhtemelen kuşu domuzlardan uzağa, yere ya da herhangi birine ulaşmak için yeterli güce yollamayan eylemleri ekarte edebilirsiniz. Ayrıca sadece önceki turlarda domuzları öldürmediyseniz 5. kuşa ulaşmanız yeterlidir, bu nedenle aksiyon durumlarının bir kısmı aslında mümkün değildir. Bu, biraz silahlı haydut sorununu çözme yaklaşımlarından biri olan Ağaçlara uygulanan Üst Güven sınırlarına dayanarak Go oynamaya yönelik bir bilgisayar programı olan MoGo algoritmasında kullanılan yaklaşımı biraz hatırlatıyor .


1
Mükemmel cevap! Eylem alanının 320 olası eylemden çok daha büyük olduğunu düşünüyorum. Yataydan soldan aşağıya, muhtemelen 0,7 inç (iPad'de) yay ile süpürülen her piksel farklı bir yörünge ve sonuç üretecektir. İPad, 132 dpi çözünürlüğe sahip, bu yüzden başlatmak için seçilebilecek yaklaşık 8.000 olası piksel olabilir. Detaylar üzerinde durmak istemedim ama eylem alanını 8 bine yükseltmek cevabı değiştirdi mi? Daha büyük bir aksiyon alanı ile nasıl çalışabilirsiniz?
B Yedi

Dinamikleri simüle etmeye çalışmak tamamen farklı (ve zor) bir sorudur. Bence bu tartışma için kaynak koduna erişimimiz olduğunu ve durum bilgisini doğru bir şekilde alabileceğimizi varsaymalıyız. Ayrıca, ödül fonksiyonu sadece kaç tane domuzu öldürdüğünüz değildir. Bir seviyede 3 yıldız almak için daha zor bir şey yapmalısın. Soruyu düzenlemek için bkz. Düzenleme.
B Yedi

@ BSeven Prensip olarak hayır, daha büyük budama yapmak için daha fazla budama yapmanız ve çok fazla işlem gücü kullanmanız gerekebilir; ancak bunun paralel işleme için mükemmel bir aday olduğuna dikkat edin. Yıldızların sorusu karmaşıktır, çünkü bu, ölümlerden yıldızlara kadar basit bir haritalamanın olmadığı anlamına gelir, ancak sadece puan eşiklerini geçerek daha fazla yıldız aldığınızı düşündüm (genellikle bu daha az kuş kullanarak yapılır). Olmazsa, çok erken zamanda yollara yerleşmekten kaçınmak için keşif miktarını yapay olarak arttırmanız gerekir.
tdc

8

Güzel soru!

Bu soru, bu tür bir sorunun doğal tekniği ile ilgili gibi görünüyor. Bu tür bir problemin doğal tekniğinin pekiştirici öğrenme (RL) olduğunu düşünüyorum . RL, bir aracının bir ortamda nasıl bir kümülatif ödül fikrini en üst düzeye çıkarmak için nasıl harekete geçmesi gerektiği ile ilgilidir. RL için belki de en iyi bilinen algoritma Q-learning'dir . Bu sitede pekiştirme öğrenmesiyle ilgili ilk soru olduğunu düşünüyorum.

Sanırım sorduğunuz şey, sınıflandırma / regresyon olarak buna yaklaşmaya çalışırsanız doğru, ancak bunlar bu sorun için doğru araç gibi görünmüyor. Bu, doğal olarak, eylemlerin ve sonuçların sırasının göz önünde bulundurulması gereken bir RL sorunudur.


5

Başkalarının nasıl yaptığını veya kendinize nasıl katıldığını kontrol edin: Angry Birds AI Challenge http://ai2012.web.cse.unsw.edu.au/abc.html


belki de bağlantının ne hakkında olduğunu ve soruyla ne kadar ilgili olduğunu özetleyebilirsiniz. Şimdi olduğu gibi, cevabınız yorum olarak daha iyidir.
FredrikD

4

az önce bundan meta olarak bahsettim. Pacza adlı video oyunu çözmek için Koza'nın genetik algoritmalarının öncü kullanımı vardı. algılayabilecek ve hareket edebilecek algoritmik ilkeler inşa etti. hatırladığım kadarıyla bunlar daha büyük algoritmalar oluşturmak için Lisp benzeri ağaçlarda birleştirildi. Lisp ağaçları ile geçit, algoritma ifadelerini temsil eden alt ağaçların ikame edilmesini veya değiştirilmesini içerir. başarı işlevi "yenen noktalar" veya "noktalar artı yenen hayaletler" veya "zaman canlı kaldı" gibi bir şeydir. Bu alanda hala bazı çalışmalar var. Aşağıdaki bu yazıda bir koza ref var. eğitim süresi çok uzun olabilir ve bu tür sorunlar için "yakınsama" çok kademeli olabilir.

Pac-Man Oynamak için Öğrenme: Gallagher ve Ryan'ın Evrimsel, Kural Temelli Bir Yaklaşımı

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.