Ağınızın, oyun hakkında AI ajanının sahip olduğu kartlar (değerleri ve türleri), mana havuzu, masada kaç kart ve değerleri, dönüş sayısı vb.Gibi oyun hakkında önemli bilgileri bilmesini istersiniz. Kendi başınıza anlamanız gereken bu şeyler, kendinize sormanız gereken soru "Bu değeri sistemimi nasıl ve neden iyileştireceğini girmek için eklersem" dir. Ancak anlaşılması gereken ilk şey, NN'lerin çoğunun sabit bir giriş boyutuna sahip olacak şekilde tasarlanması ve oyuncuların elinde veya masada farklı miktarda kart olabileceğinden, bu oyunda önemli olduğunu varsayacağım. Örneğin, NN'ye hangi kartlara sahip olduğunu bildirmek istersiniz, oyuncunun elinde en fazla 5 kart olabileceğini ve her kartın 3 değerine (mana, saldırı ve sağlık) sahip olabileceğini varsayalım, böylece bunu 5 olarak kodlayabilirsiniz * 3 vektör, burada ilk 3 değer bir numaralı kartı temsil eder vb. Ancak oyuncunun şu anda 3 kartı varsa, basit bir yaklaşım son 6 girişe sıfır atamak olacaktır, ancak bazı kartlar 0 mana maliyeti veya 0 saldırıya sahip olabileceğinden bu sorunlara neden olabilir. Bu yüzden bu sorunu nasıl çözeceğinizi anlamanız gerekiyor. Değişken giriş boyutunu işleyebilen veya girişi sabit boyutlu bir vektör olarak nasıl kodlayacağınızı anlayabilen NN modelleri arayabilirsiniz.
İkinci olarak, çıktılar da sabit boyutlu vektörlerdir. Bu tür bir oyun durumunda, ajanın yapabileceği eylemleri kodlayan bir vektör olabilir. Diyelim ki 3 eylemimiz var: bir kart koyun, sırayla atlayın ve kabul edin. Yani bir sıcak kodlayıcı olabilir, örneğin 1 0 0 çıkışınız varsa, bu, ajanın bir kart koyması gerektiği anlamına gelir. Hangi kartı koyması gerektiğini bilmek için çıktıya 1 ila 5 arasında bir sayı üretecek başka bir öğe ekleyebilirsiniz (5, eldeki maksimum kart sayısıdır).
Ancak bir sinir ağını eğitmenin en önemli kısmı, görevinize uygun bir kayıp fonksiyonu bulmanız gerektiğidir. Belki Ortalama kare kaybı veya L2 gibi standart kayıp fonksiyonları iyi olacaktır, belki ihtiyaçlarınızı karşılamak için bunları değiştirmeniz gerekecektir. Bu, araştırma yapmanız gereken bölümdür. Daha önce hiç NEAT ile çalışmadım, ama doğru olarak anladığım gibi, NN oluşturmak ve eğitmek için bazı genetik algoritmalar kullanıyor ve GA bir birey seçmek için bazı fitness fonksiyonlarını kullanıyor. Temel olarak, modelinizin ne kadar iyi performans gösterdiğini değerlendirmek için hangi metriği kullanacağınızı bilmeniz gerekir ve bu metriğe dayanarak modelin parametrelerini değiştirirsiniz.
PS. Bu problemi sinir ağı ile çözmek mümkündür, ancak sinir ağları sihir değildir ve tüm sorunlara evrensel bir çözüm değildir. Amacınız bu belirli sorunu çözmekse, aynı zamanda oyun teorisini ve AI'daki uygulamasını incelemenizi de tavsiye ederim. Şunu söyleyebilirim ki, bu sorunun çözümü yapay zekanın farklı alanlarından karmaşık bilgi gerektirecektir.
Ancak, amacınız sinir ağları hakkında bilgi edinmekse, çok daha basit görevler almanızı tavsiye ederim. Örneğin, karşılaştırma veri kümesinde çalışacak olan NN'yi, örneğin MNIST veri kümesindeki rakamları sınıflandıran NN'yi uygulayabilirsiniz. Bunun nedeni, bu veri kümesinde sınıflandırmanın nasıl yapılacağı hakkında çok sayıda makalenin yazılması ve çok şey öğreneceksiniz ve basit şeyleri uygulamaktan daha hızlı öğreneceksiniz.