Ana Sayfa

Jax ile Yapay Zeka Destekli Tic-Tac-Toe Öğrenimi

1 dk okuma

Bu makale, Jax kullanarak pekiştirmeli öğrenme (reinforcement learning) ile bir yapay sinir ağını Tic-Tac-Toe oynamak üzere eğitmeyi ele alıyor. Yazar, konuyu pedagojik bir yaklaşımla işlemeyi hedeflediği için, sunulan kodlar aşırı optimize edilmemiş olsa da, bir dizüstü bilgisayarda yaklaşık 15 saniyede mükemmel seviyede oynayan bir model eğitmek için yeterince hızlıdır. Makaledeki kodlara bir GitHub deposu ve bir Colab not defteri üzerinden erişilebilir.

Yapay sinir ağları ve pekiştirmeli öğrenme konularına geçmeden önce, makale Tic-Tac-Toe oyununun Jax'te nasıl temsil edilebileceğini inceliyor. Bu amaçla, saf Jax'te çeşitli oyunları uygulayan PGX kütüphanesi kullanılıyor. PGX, bir oyunun durumunu State adlı bir veri sınıfı (dataclass) ile temsil eder. Bu veri sınıfı, oyunun mevcut durumunu açıklayan çeşitli alanlara sahiptir: current_player (mevcut oyuncu), observation (tahtanın görünümü, 3x3x2 boyutunda bir boolean dizi olarak), legal_action_mask (geçerli hamleleri gösteren boolean dizi), rewards (her adımda oyunculara verilen ödüller) ve terminated (oyunun bitip bitmediğini belirten boolean değer). Özellikle observation alanı, mevcut oyuncunun ve rakibin taşlarını ayrı kanallarda göstererek tahta durumunu detaylı bir şekilde ifade ederken, current_player alanı oyuncu 0'ın her oyunda rastgele 'X' veya 'O' olarak atanmasını sağlayarak sinir ağının her iki rolü de öğrenmesine olanak tanır. PGX ayrıca, bir State ve bir hamle alarak yeni bir State döndüren step fonksiyonunu da sağlar.

İçgörü

Bu çalışma, Jax ve pekiştirmeli öğrenme kullanarak basit bir oyun üzerinden yapay zeka eğitimi prensiplerini anlaşılır bir şekilde sunarak, karmaşık yapay zeka modellerinin temelini oluşturuyor.

Kaynak