Yapay Sinir Ağları kullanarak Q-Learning hakkında sorular


14

Q-Learning'i aşağıda açıklandığı gibi uyguladım,

http://web.cs.swarthmore.edu/~meeden/cs81/s12/papers/MarkStevePaper.pdf

Yakl. S (S, A) Aşağıdaki gibi bir sinir ağı yapısı kullanıyorum,

  • Aktivasyon sigmoid
  • Girişler, giriş sayısı + Eylem nöronları için 1 (Tüm Girişler Ölçeklendirilmiş 0-1)
  • Çıkışlar, tek çıkış. Q-Değer
  • N M Gizli Katman sayısı.
  • Keşif yöntemi rastgele 0 <rand () <propExplore

Aşağıdaki formülü kullanarak her bir öğrenme tekrarında,

resim açıklamasını buraya girin

Bir Q-Target değeri hesaplıyorum, sonra kullanarak bir hata hesaplıyorum,

error = QTarget - LastQValueReturnedFromNN

ve sinir ağından geri yayılır.

S1, Doğru yolda mıyım? Her eylem için bir çıkış nöronu ile bir NN uygulayan bazı makaleler gördüm.

Q2, Ödül işlevim -1 ile 1 arasında bir sayı döndürüyor. Etkinleştirme işlevi sigmoid olduğunda -1 ile 1 arasında bir sayı döndürmek uygun mu (0 1)

S3, Yeterli eğitim örnekleri verildiğinde bu yöntemi anladığımdan, en uygun politika avantajını bulmak karantinaya alınmalı mı? XOR için antrenman yaparken bazen 2k yinelemeden sonra öğrenir, bazen 40k 50k yinelemeden sonra bile öğrenmez.


Meraktan, her ikisini de aynı anda ağa beslemek için durum girişini eylem girişi ile nasıl birleştirdiniz? Bu kod yığını herkese açık mı? Teşekkür ederim!
Pedro Lopes

Yanıtlar:


9

S1. Kesinlikle doğru yoldasınız, ancak birkaç değişiklik son derece yardımcı olabilir. Bazı kişiler eylem başına bir çıkış birimi kullanır, böylece eylem seçimi için ağlarını yalnızca bir kez çalıştırmaları gerekir (olası her eylem için ağınızı bir kez çalıştırmanız gerekir). Ancak bu, öğrenme açısından bir fark yaratmamalıdır ve sadece modelinizi önemli ölçüde artırmayı planlıyorsanız uygulamaya değer.

S2. Genel olarak, insanlar sinir ağlarının son katmanı , özellikle takviye öğrenimi için doğrusal bir aktivasyon fonksiyonu kullanırlar . Bunun çeşitli nedenleri vardır, ancak en önemlisi doğrusal bir aktivasyon fonksiyonunun, gerçek sayıların tamamını çıktı olarak temsil etmenize izin vermesidir. Böylece, göreviniz için ödüllerin sınırlarını bilmeseniz bile, o aralığı temsil edebileceğiniz garanti edilir.

Q3. Ne yazık ki, sinir ağlarını (ve genel olarak doğrusal olmayan fonksiyon yaklaşımı) takviye öğrenimi ile birleştirmeye yönelik teorik garantiler hemen hemen yoktur. Bahsettiğiniz yakınsama iddialarını yapabilen pekiştirici öğrenmenin (esas olarak Sutton laboratuarından) birkaç meraklı versiyonu var, ancak 'vahşi doğada' uygulanan algoritmaları hiç görmedim. Bunun nedeni, büyük performans vaat edilemese de, genellikle pratikte, hiper parametrelere ve başlangıç ​​koşullarına dikkat edilerek elde edilir.

Genel olarak sinir ağlarından bahseten son bir nokta: çok fazla gizli katmanı olan ağlar için sigmoid aktivasyon işlevlerini kullanmayın! 'Degradeleri yok etme' sorunu ile lanetlenmişler; hata sinyali önceki katmanlara neredeyse hiç ulaşmaz (işlevin türevine bakmak bunun neden böyle olduğunu açıklığa kavuşturmalıdır). Bunun yerine, genellikle derin ağlarda çok daha iyi performans sergilediğinden, düzeltilmiş doğrusal birimleri (RELU) veya 'yumuşak artı' birimleri kullanmayı deneyin.

Takviye öğrenimi ile eğitilmiş sinir ağlarının mükemmel bir uygulaması için bu makaleye bakın:

Mnih, Volodymyr ve ark. "Atari'yi derin pekiştirici öğrenme ile oynamak." arXiv baskı öncesi arXiv: 1312.5602 (2013).


0

Aktivasyon fonksiyonu için, maxout da iyi çalışır. Derin ağlar için uygun bir antrenör kullanmak çok önemlidir, çeşitli antrenörler denedim ama RMSprop ile çalışmaya karar verdim ve harika görünüyor!


1
Siteye hoş geldiniz, @ user3355911. Bu muhtemelen bir cevap olamayacak kadar seyrek. Genişletebilir ve daha fazlasını yapabilir misiniz?
gung - Monica'yı eski
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.