Kendine karşı oynayarak motorun gelişmesini sağlamak için pekiştirici öğrenmeyi kullanmak istiyorum. Konu hakkında okuyorum ama hala oldukça kafam karıştı.
Dikkat edin: Takviye öğrenimi büyük ve karmaşık bir konudur. Sizi oyun oynama botlarından dolambaçlı yoldan götürse de, RL temellerini incelemek isteyebilirsiniz. Başlamak için iyi bir yer Sutton & Barto Takviye Öğrenimidir: Giriş
Bir oyunda kazan ya da kaybet çıktının bir parçası olan başka bir ödül var mı (1 veya 0)?
Oyuna bağlı olarak, genellikle bu kadar. Aslında satranç gibi bir galibiyet / beraberlik / kaybetme oyunu için, her eylemin ödülü, kazanan (+1) veya kaybetme (-1) hariç, 0'dır. Sıfır toplamlı bir oyunda bu, minimax, alphabeta budama vb.
Takviye Öğrenme, gecikmeli ödülleri olan ortamlara yöneliktir. Geçici hedef dışı hedefler için "yardımcı" ödüller eklemek genellikle karşı üretkendir.
Her turda değerlendirme fonksiyonundan elde edilen çıktı gibi başka ödüller kullanırsam, bunu nasıl uygulayabilirim?
Genellikle yapmazsınız. Kendi kendine oynayan RL'yi uygulayacak olan şey, oyunun sonuna kadar toplam + 1/0 / -1 ödülünüzün beklentisini tahmin eden bir dönüş (bazen yardımcı program olarak adlandırılır ) işlevini öğrenmektir . Bunu, minimum arama için mevcut buluşsal yönteminiz yerine kullanırsınız. Ya da, potansiyel olarak mevcut buluşsal işlevinizi aynı aralıkta çıkacak şekilde ayarlayacak ve gerçek optimal oynat dönüş işlevine (muhtemelen tam olarak hesaplamak için çok karmaşık olan) en iyi yaklaşımı yapmak için ağırlıklarını optimize etmek için RL'yi kullanabilirsiniz.
Yineleme sonrasında daha iyi ödül yinelemesi sağlamak için değerlendirme işlevini nasıl değiştirebilirim?
Farklı RL yaklaşımlarının yapmaya çalıştığı şey budur, çeşitli farklı çözücüler vardır. Bunu açıklamanın kısa bir yolu yok. Q-Learning gibi basit bir yöntemle başlayabilirsiniz . Q-Learning, durumdayken ve a eylemi gerçekleştirirken beklenen ve ardından optimal bir politika izleyerek beklenen geri dönüş olan Q (s, a) (eylem değeri olarak adlandırılır) tahminlerini öğrenir. Başlangıç ortamında gelişigüzel bir tahmin yapar ve öğrenme ortamında atılan her adımda gerçek değere daha yakın hale getirir. Basit tabular Q-öğrenenler bu ayrıntılandırmayı, tüm durumların ve eylemlerin büyük bir tablosunu gerçek değerin şimdiye kadarki en iyi tahminiyle depolayarak ve her yeni tahminin tecrübe edildiği şekilde ortalamasını alarak yapar.
Sezgisel tarama için bir RL yöntemini ileriye yönelik minimax aramasıyla birleştirmek de mümkündür - bu, orijinal AlphaGo'nun yaptığı ve AlphaGo Zero'nun eğitim sırasında yaptığı şeydir. Bu güçlü bir yaklaşımdır, çünkü minimax araması RL tarafından oluşturulan buluşsal yöntemlerin iki kez kontrol edilmesi için çalışacaktır. Yeterince basit oyunlar için, RL mükemmel buluşsal yöntemler öğrenebilir ve yalnızca yerel aramaya ihtiyacınız olacaktır (bir sonraki hareketin ne olması gerekir).
Oyununuz çok basit olmadıkça (olası tüm durumlar belleğe sığar), RL algoritmasının içinde bir tür fonksiyon tahmincisine ihtiyacınız olacaktır. Sinir ağları standart bir seçimdir. Bu bölüm için bir şeye sahip olmak kaçınılmazdır - başka bir iyi seçenek, bir grup proxy özelliğini tanımlamak (elle sezgisel olarak oluşturmak için kullanabileceğiniz) ve doğrusal bir tahminci kullanmaktır - tüm özelliklerin ağırlıklı bir toplamıdır. Bu yeterince iyi çalışabilir ve örneğin RL kullanılarak eğitilmiş dama oyuncularında (taslaklar) kullanılmıştır.
Aslında, kendi sezgisel işleviniz çok sıradışı değilse, muhtemelen doğrusal bir tahminci gibi davranabilir ve bunun için en iyi ağırlıkları öğrenmek için RL'yi kullanabilirsiniz.