Bunun üzerine derin bir sinir ağını eğitmek amacıyla basit bir oyuncak oyunu yazıyorum. Oyun kuralları kabaca şu şekildedir:
- Oyunda altıgen hücrelerden oluşan bir tahta var.
- Her iki oyuncu da tahtada serbestçe konumlandırmayı seçebilecekleri aynı parça koleksiyonuna sahiptir.
- Konumlarına ve konfigürasyonlarına bağlı olarak farklı parçaların yerleştirilmesi puan verir (veya rakibin puanlarını azaltır).
- Kim daha fazla puan kazanırsa.
Ek kurallar (dönüşler, sayı ve parça türleri, vb ...) vardır, ancak bu soru bağlamında önemli değildir. Kendisine karşı oynayarak tekrar tekrar öğrenebilecek derin bir sinir ağı oluşturmak istiyorum. Sorularım girdi ve çıktının temsiliyle ilgili. Özellikle:
- Parça deseni önemli olduğundan, en azından bazı evrişimsel katmanlara sahip olmayı düşünüyordum. Kart çeşitli boyutlarda olabilir ancak prensip olarak çok küçük olabilir (testlerimde 6x10, birkaç hücre tarafından genişletilecek). Mantıklı geliyor? Ne tür bir havuz kullanabilirim?
- Her iki tarafı nasıl temsil edebilirim? In Bu yazıda halindeyken hakkında yazarlar iki giriş matrisleri, beyaz taşlardan diğeri siyah taşlar için birini kullanın. Bu durumda da işe yarayabilir mi? Ancak, A, B, C ve D gibi farklı parça türlerim olduğunu unutmayın. 2x4 giriş matrisi kullanmalı mıyım? Bana göre çok seyrek ve çok az verimli görünüyor. Korkarım evrişimsel katmanların çalışmasının çok seyrek olacağından korkuyorum.
- Çıktının, tahta pozisyonlarını temsil eden matris üzerinde olasılıkların bir dağılımı ve ayrıca hangi parçanın çalınacağını gösteren ayrı bir olasılık dizisi olabileceğini düşündüm. Ancak, çok önemli olan dönüşü geçme yeteneğini de temsil etmem gerekiyor . Diğer olasılıklar arasındaki önemini seyreltmeden nasıl yapabilirim?
- Ve en önemlisi , sadece kazanan hamleleri mi yoksa hamleleri de mi kaybederim? Kazanan hamleleri zorlamak kolaydır çünkü istenen olasılıkları 1'e ayarladım. Ancak kaybettiğinde ne yapabilirim? Olasılıkı 0'a ve diğerlerini aynı değere getirin mi? Ayrıca, kabaca olasılık olan çıktıların anlamlarına aykırı olsa da, son skor farkıyla hamleleri zorlamak mantıklı mıdır?
Ayrıca, oyun motorunu node.js'de Synaptic'i çerçeve olarak kullanmayı düşünerek geliştirdim, ancak kıvrımlı ağlarla çalışabileceğinden emin değilim (yerel algı alanlarıyla ilişkili ağırlıkları düzeltmenin bir yolu olduğundan şüpheliyim). Düğümle uyumlu diğer kütüphaneler hakkında tavsiyeleriniz var mı?