Takviye öğreniminde geçersiz hareketler nasıl ele alınır?


20

Arka arkaya beş / gomoku oynayabilen bir yapay zeka yaratmak istiyorum. Başlıkta bahsettiğim gibi, bunun için pekiştirici öğrenmeyi kullanmak istiyorum.

Kullandığım ilke gradyan başlangıç ile, yani takviye yöntemi. Değer ve politika işlevi yaklaşımı için bir sinir ağı kullanıyorum . Evrişimli ve tamamen bağlı katmanlara sahiptir. Çıktı hariç tüm katmanlar paylaşılır. Politikanın çıktı katmanı (kartın boyutu) çıktı birimine ve bunlarda softmax değerine sahiptir . Yani stokastik. Ancak, ağ geçersiz bir hamle için çok yüksek bir olasılık üretirse ne olur? Geçersiz hareket, aracının içinde bir "X" veya "O" bulunan bir kareyi kontrol etmek istediği zamandır. Bence bu oyun durumunda sıkışabilir.8×8=64

Bu sorun için herhangi bir çözüm önerebilir misiniz?

Tahminim aktör-eleştirmen yöntemini kullanmak. Geçersiz bir hamle için olumsuz bir ödül vermeli ve dönüşü rakibe geçmeliyiz.

Yanıtlar:


10

Geçersiz hareketleri yok saymanız yeterlidir.

Keşif için sadece hareketi en yüksek olasılıkla yürütmekle kalmayacak, bunun yerine çıktı olasılığına göre rastgele hareketleri seçmeniz muhtemeldir. Sadece yasa dışı hamleleri cezalandırırsanız, yine de bazı olasılıkları koruyacaklardır (küçük olsa da) ve bu nedenle zaman zaman (nadiren) yürütülecektir. Bu nedenle, zaman zaman yasa dışı hareketler yapan bir ajan tutarsınız.

Bana göre, tüm yasadışı hareketlerin olasılıklarını sıfıra ayarlamak ve hareketinizi seçmeden önce çıktı vektörünü yeniden normalleştirmek daha mantıklı.


Teşekkür ederim. Muhtemelen net değildim ama çıktıyı çıkardığım olasılıklar tarafından rastgele seçtim. Yasadışı hamlelerin olasılığını sıfıra ayarlamak ve neler olacağını görmek için tavsiyenizi deneyeceğim. İyi günler.
Molnár István

8

Genellikle doğrusal işlev yaklaşımı kullanan ilke gradyan yöntemlerinde softmax yöntemleri, eylem seçme olasılığını hesaplamak için aşağıdaki formülü kullanır bir . Burada ağırlıklar olan θ özellikleri ve φ mevcut durumu bir fonksiyonudur s ve eylemler kümesinden bir eylem bir .

π(θ,bir)=eθφ(s,bir)Σbbireθφ(s,b)

Yasadışı hamleleri ortadan kaldırmak için, eylemler kümesi sadece yasal olanlarla sınırlandırılacaktır, dolayısıyla Legbirl(bir) .

π(θ,bir)=eθφ(s,bir)ΣbLegbirl(bir)eθφ(s,b),birLegbirl(bir)

Sözde kodda formül şöyle görünebilir:

action_probs = Agent.getActionProbs(state)
legal_actions = filterLegalActions(state, action_probs)
best_legal_action = softmax(legal_actions)

Doğrusal veya doğrusal olmayan fonksiyon yaklaşımı (sinir ağınız) kullanıldığında, fikir yalnızca softmax'ınızı hesaplarken yasal hareketleri kullanmaktır. Bu yöntem, sadece geçerli hamlelerin ajan tarafından verileceği anlamına gelir; bu, oyununuzu daha sonra değiştirmek istiyorsanız iyi olur ve eylemlerdeki sınırlı seçim arasındaki değer farkının, ajan tarafından ayırt edilmesinin daha kolay olacağı anlamına gelir. Ayrıca olası eylemlerin sayısı azaldıkça daha hızlı olacaktır.


Çok kullanışlı. Hem denklemleri hem de sözde kodu gönderdiğiniz için teşekkürler!
DukeZhou

1
Matematik ve sözde kod burada eşleşmiyor. Yasal hareket olasılıkları üzerindeki Softmax göreceli olasılıkları ayarlayacaktır. Örneğin, birinci ve üçüncü öğenin çıkarılmasıyla süzülen (0.3, 0.4, 0.2, 0.1), formülünüzle (0.0, 0.8, 0.0, 0.2) olacaktır, ancak sözde kod kullanılarak (0.0, 0.57, 0.0, 0.42) olacaktır. Sözde kod, eylem olasılık hesaplamaları öncesinde günlükleri almalıdır.
Neil Slater

4
Softmax'ın filtrelenmiş versiyonunun gradyanı nasıl hesaplanır? Geriye yayılımın başarılı bir şekilde çalışması için bunun gerekli olduğu görülüyor, değil mi?
brianberns

@brianberns Bir cevap bulmayı başardınız mı? Bana öyle geliyor gibi gözüküyor ama bir şekilde oyuncak örneğimde, sadece filitre edilmemiş softmax'ın günlük olasılıklarını kullanırken doğru cevabı alıyorum ...
tryingtolearn

5

IMHO geçersiz hamle fikri geçersiz. Koordinatlara bir "X" yerleştirdiğinizi düşünün (9, 9). Bunun geçersiz bir hamle olduğunu ve olumsuz bir ödül vereceğini düşünebilirsiniz. Absürt? Elbette!

Ama aslında geçersiz hamleleriniz temsilin bir kalıntısıdır (ki bu kendiliğinden anlaşılır ve iyidir). Bunların en iyi tedavisi, onları herhangi bir hesaplamadan tamamen hariç tutmaktır.

Bu satrançta daha belirginleşir:

  • a1-a8Konumsal bir sunumda, sadece oyunda bir Rook veya Kraliçe varsa a1(ve diğer bazı koşullar geçerlidir) oyuna ait olan hareketi düşünebilirsiniz .

  • Farklı bir sunumda, hareketi düşünebilirsiniz Qb2. Yine, bu oyuna ait olabilir veya olmayabilir. Mevcut oyuncunun Kraliçesi yoksa, kesinlikle yoktur.

Geçersiz hamleler oyundan ziyade temsil ile ilgili olduğundan, hiç dikkate alınmamalıdır.


1
Harika bir nokta. Sudoku'da oynanan [M] oyunlarda, kısıtlamalar ilk yerleştirmeden sonra birçok pozisyonu (koordinat + değer) yasadışı hale getirir. Bu yasadışı pozisyonları yerleşim açısından dikkate almanın bir değeri yoktur, ancak önemli bir stratejik katman, hangi yerleşimlerin kalan oynatılmamış pozisyonların değerini en aza indirdiğinin farkında olmaktır. (yani buraya 8 koyarsam, rakibimin o sıraya, sütuna veya bölgeye 8 yerleştirmesini engeller. Temel olarak, "bu yerleşim oyun tahtasından kaç stratejik konum kaldırır?")
DukeZhou

5

Son zamanlarda Mayın Tarlası ile benzer bir sorunla karşılaştım.

Bunu çözme şeklim, yasadışı / geçersiz hareketleri tamamen görmezden gelmekti.

  1. Tüm işlemlerinizin (geçerli ve geçersiz) Q değerlerini tahmin etmek için Q ağını kullanın
  2. Tüm geçersiz hareketleri sıfır / negatif bir Q değerine ayarlayarak Q-değerlerini önceden işleyin (senaryonuza bağlıdır)
  3. Rafine Q değerlerinden (örn. Açgözlü veya Boltzmann) bir eylem seçmek için seçtiğiniz bir politikayı kullanın
  4. Seçilen eylemi yürütün ve DQN mantığınıza devam edin

Bu yardımcı olur umarım.


1
Buna ekleyeceğim tek şey, yasadışı (s, a) çiftler için Q değerlerini büyük negatif değere ayarladığınızda DQN'de bir backprop yapmayı hatırlamanız gerektiğidir, böylece bu durumu, eylemi seçmemek için eğitilmiş bir dahaki sefere çiftler.
SN

Ancak büyük -ve hedef Q değerlerinin ayarının kayıp / hata fonksiyonunun sürekliliği veya şekli için ne yaptığını merak ediyorum (böylece degrade aramasını etkiler). Deneyiminiz neydi?
SN

1
@SN Ne demek istediğini anlıyorum. Fikir, geçersiz bir eylem olmayan en yüksek Q değerine sahip eylemi seçmektir . Ardından, bu eylemi yürütür ve bu eylemi güncelleme kuralınızda kullanırsınız (yani DQN'nizi uzun vadede bu eylemi destekleyecek şekilde eğitin). Bunun yaptığı, seçilen eylemin gelecekteki Q-değerlerini daha yüksek ve dolayısıyla daha uygun hale getirmektir. Bu olacak DEĞİL hep filtrelenir çünkü önemli değil, hangi yasadışı eylemler Q-değeri olsa düşürmek yapmak (sayılmaz). Bir örnekle daha fazla detaylandırmamı istiyorsanız bana bildirin. :)
Sanavesa

1
@Sanavesa kesinlikle mantıklı, temelde DQN'ye güveniyorsun sonunda sonunda zor seçimler okulu aracılığıyla doğru seçimlerin neler olduğunu öğreniyorsun. Ancak, yalnızca bir veya birkaç yasal seçeneğin olduğu durumlarda, çok yavaş bir öğrenim göreceksiniz. Önerdiğim yaklaşım, bu öğrenmeyi hızlandırmak için etki alanı K'yi soruna dahil etmenin bir yoludur. Ayrıca, orijinal
SN

1
@SNPrecisely! Her iki yaklaşımın da kendi değerleri vardır. Yasal hamleleri öğrenmek ya da sadece açıkça onları görmezden öğrenmek için uygulama bağlıdır. Büyük karmaşık uygulamalar için, geçersiz hareketleri görmezden gelmenin ajanın öğrenmesi için çok daha hızlı olduğunu hissediyorum, ancak bana bu konuda alıntı yapmayın.
Sanavesa
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.