Takviye öğreniminin satranç gibi oyunlara uygulanmasıyla ilgili birkaç şüphe


9

Satranç benzeri bir masa oyunu icat ettim. Otonom olarak oynayabilmek için bir motor yaptım. Motor temel olarak bir karar ağacıdır. Oluşturan:

  1. Her düğümde olası tüm yasal hareketleri bulan bir arama işlevi
  2. Tahta pozisyonuna sayısal bir değer atayan bir değerlendirme fonksiyonu (olumlu, ilk oyuncuların üstünlüğü elde ettiği anlamına gelir, negatif, ikinci oyuncunun kazandığı anlamına gelir)
  3. Alfabeta budama negamax algoritması

Bu motorla ilgili temel sorun, değerlendirme fonksiyonunun optimize edilmesinin gerçekten zor olmasıdır. Hangi faktörleri dikkate alacağımı ve hangi ağırlıkları koyacağımı bilmiyorum. Motoru geliştirmenin tek yolu, her seferinde farklı faktör ve ağırlık kombinasyonlarını deneyen oyunları tekrarlamaktır. Ancak, hesaplamalı olarak çok zor bir başarı gibi görünüyor (Derin öğrenme kullanmadan backpagagate yapabilir miyim?).

Kendine karşı oynayarak motorun gelişmesini sağlamak için pekiştirici öğrenmeyi kullanmak istiyorum. Konu hakkında okuyorum ama hala kafam karıştı.

Bir oyunda kazan ya da kaybet çıktının bir parçası olan başka bir ödül var mı (1 veya 0)? Her turda değerlendirme fonksiyonundan elde edilen çıktı gibi başka ödüller kullanırsam, bunu nasıl uygulayabilirim? Yineleme sonrasında daha iyi ödül yinelemesi sağlamak için değerlendirme işlevini nasıl değiştirebilirim?

Yanıtlar:


6

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.


"Takviye Öğrenme, gecikmiş ödüllere sahip ortamlara yöneliktir. Geçici hedef dışı hedefler için" yardımcı "ödüller eklemek genellikle karşı üretken olur." Şunu belirtmek isterim ki, ara hedefler “ Hindsight Experience Replay ” ı sunarak seyrek ödül problemini çözmeye çalışan bir makale var .
nbro

1
@nbro: Seyrek ödülleri çözmek için birçok girişim var, RL'de büyük bir açık uçlu soru, bir sorunun meydan okumasını artırmanın bir yolu ödülleri daha seyrek yapmaktır. Uygunluk izleri başka bir girişimdir, Hiyerarşik RL umut vaat eden başka bir alandır. . . OP'nin problemi için fizibilite ve konuya giriş hakkında daha fazla bilgi olduğu için, bu teknikleri bu yanıta eklemek istediğimi sanmıyorum
Neil Slater
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.