Skip to content

Pekiştirmeli Öğrenme Masa Oyunu Ajanı

Python Keras NumPy PyQt5 Deep Q-Learning

GitHub


Problem

Masa oyunları, pekiştirmeli öğrenme algoritmaları için ideal bir test ortamı sağlar — açık kuralları, ayrık eylem uzayları ve ölçülebilir sonuçları vardır. Bu proje, bir ajanı 7×7 masa oyununu sıfırdan oynaması için eğitme zorluğuyla ilgilenir; insan tarafından sağlanan herhangi bir strateji bilgisi olmadan tamamen kendi kendine oynayarak öğrenir.

Yaklaşım

Ajan, optimal oynamayı öğrenmek için Deep Q-Learning (DQN) kullanır. Kurallar dışında oyun hakkında hiçbir bilgi olmadan başlayarak milyonlarca kendi kendine oynama bölümüyle gelişir.

Deep Q-Network

Bir sinir ağı, oyun durumlarını eylem değerlerine eşleyerek Q-değer fonksiyonunu yaklaşık olarak hesaplar. Ağ mimarisi yapılandırılabilir — oyunun karmaşıklığı için en iyi kapasiteyi bulmak amacıyla farklı derinlik ve genişliklerde deney yapılabilir.

Deneyim Tekrarı

Ajan, geçmiş deneyimleri (durum, eylem, ödül, sonraki durum) bir tekrar arabelleğinde saklar ve eğitim için rastgele mini-yığınlar örnekler. Bu, ardışık deneyimler arasındaki korelasyonu kırar ve öğrenmeyi stabilize eder.

Kendi Kendine Oynama Eğitimi

Ajan, kendi kopyalarına karşı oynar ve stratejisini sürekli geliştirir. Ajan güçlendikçe rakibi de güçlenir — sürekli artan bir zorluk eğrisi oluşturur.

Temel Özellikler

  • Deep Q-Learning — deneyim tekrarı ve hedef ağlar ile
  • Yapılandırılabilir sinir ağı — farklı mimarilerle deney yapma
  • Kendi kendine oynama eğitim döngüsü — insan verisi olmadan sürekli gelişim
  • Birden fazla oyun modu — Oyuncu vs Oyuncu, Oyuncu vs AI, AI vs AI
  • PyQt5 arayüzü — etkileşimli oyun ve görselleştirme
  • 7×7 tahta — özel oyun kuralları ile

Mimari

graph LR
    A[Oyun Durumu] --> B[DQN]
    B --> C[Eylem Başına Q-Değerleri]
    C --> D[ε-Greedy Seçim]
    D --> E[Eylem]
    E --> F[Ortam Adımı]
    F --> G[Ödül + Sonraki Durum]
    G --> H[(Tekrar Arabelleği)]
    H --> B

Teknoloji Yığını

Bileşen Teknoloji
PÖ Framework'ü Özel DQN implementasyonu
Sinir Ağı Keras
Arayüz PyQt5
Dil Python