Merhaba! Bugün sizlerle, klasik Snake (Yılan) oyununu bir yapay zekanın nasıl en verimli şekilde oynayabileceğini keşfettiğim projemi paylaşmak istiyorum. Bu proje sadece bir oyun botu değil, aslında modern yapay zekanın temellerinden biri olan Pekiştirmeli Öğrenme (Reinforcement Learning) dünyasına atılmış ciddi bir adımdır.
🐍 Yapay Zeka Nasıl Öğreniyor?
Ajanımızın eğitim sürecinden bir kesiti aşağıda görebilirsiniz. Zamanla tecrübe kazanan yılanımız, hedefe kilitlenmeyi ve en verimli yolu bulmayı bu şekilde öğreniyor:

🧠 Deep Q-Learning (DQN) Derinlemesine İnceleme
Bu projede ajanın (yılanın) beyni olarak Deep Q-Learning (DQN) algoritmasını kullandım. Geleneksel Q-Learning’den farklı olarak DQN, durum-aksiyon ilişkilerini bir tablo yerine Yapay Sinir Ağları (Neural Networks) kullanarak öğrenir.
1. Ajanın Algı Dünyası (State)
Yılan, dünyayı 11 farklı parametre üzerinden algılıyor. Bu veriler sinir ağımıza girdi (input) olarak iletiliyor:
- Tehlike Algısı (3 bit): Tam önünde, sağında veya solunda bir engel (kendi kuyruğu veya duvar) var mı?
- Hareket Yönü (4 bit): Şu an hangi yöne (Sol, Sağ, Yukarı, Aşağı) gidiyor?
- Yemek Yönü (4 bit): Yemek yılana göre tam olarak nerede (Kuzey, Güney, Doğu, Batı)?
2. Sinir Ağı Mimarisi
Ajanın kararlarını veren sinir ağı, PyTorch ile inşa edildi:
- Input Layer: 11 nöron (State verileri).
- Hidden Layer: 256 nöronluk yoğun bir katman.
- Output Layer: 3 nöron (Düz git, Sola dön, Sağa dön).
3. Ödül Sistemi (Reward Engineering)
Ajanı eğitmek için şu “havuç-sopa” yöntemini kullandım:
- Yemek Yeme: +10 puan
- Ölüm (Duvara/Kuyruğa Çarpma): -10 puan
- Geçen Süre: 0 puan
🚀 Teknik Kurulum ve Kaynak Kodlar
Projenin tüm kodları açık kaynak olarak GitHub’da mevcut:
# Kurulum
pip install pygame torch numpy
# Başlatma
python agent.py
⚡ Turgut Şimşek