Takviye öğrenmede kısıtlı bir eylem alanı nasıl uygulanır?


13

Tensorflow'un üzerine inşa edilmiş çok iyi Tensorforce kütüphanesi sayesinde bir PPO ajanıyla takviye öğrenme modelini kodluyorum.

İlk sürüm çok basitti ve şimdi her adımda tüm eylemlerin mevcut olmadığı daha karmaşık bir ortama daldım.

Diyelim ki 5 eylem var ve bunların kullanılabilirliği bir iç duruma (önceki eylem ve / veya yeni durum / gözlem alanı tarafından tanımlanan) bağlıdır:

  • 2 eylem (0 ve 1) her zaman kullanılabilir
  • 2 eylem (2 ve 3) yalnızca internal_state == 0 olduğunda kullanılabilir
  • 1 eylem (4) yalnızca internal_state == 1 olduğunda kullanılabilir

Bu nedenle, internal_state == 0 olduğunda kullanılabilir 4 eylem ve internal_state == 1 olduğunda 3 eylem kullanılabilir.

Bunu uygulamak için birkaç olasılık düşünüyorum:

  1. Internal_state'e bağlı olarak her adımdaki eylem alanını değiştirin. Bunun saçmalık olduğunu düşünüyorum.
  2. Hiçbir şey yapmayın: modelin kullanılamayan bir eylem seçmenin hiçbir etkisi olmadığını anlamasına izin verin.
  3. Neredeyse hiçbir şey yapmayın: model uygun olmayan bir eylem seçtiğinde ödülü biraz olumsuz etkiler.
  4. Modele yardım edin: modele internal_state değeri + madde işareti noktası 2 veya 3'ü bildiren durum / gözlem alanına bir tam sayı ekleyerek

Bunu uygulamanın başka yolları var mı? Deneyimlerinizden hangisi en iyi olurdu?

Yanıtlar:


5

En basit çözüm, her eylemi "yasal" hale getirmek, ancak potansiyel olarak yasadışı eylemlerden farklı yasal işlemlere kadar tutarlı ve belirleyici bir eşleme uygulamaktır. Kullandığınız PPO uygulaması yasadışı bir işlem seçtiğinde, bunu yalnızca eşleştiği yasal işlemle değiştirirsiniz. PPO algoritmanız, yine de yasadışı eylem seçilmiş gibi kendini güncelleyebilir (yasadışı eylem, yasal işlem için bir "takma ad" gibi olur).

Örneğin, açıkladığınız durumda:

  • 2 eylem (0 ve 1) her zaman kullanılabilir
  • 2 eylem (2 ve 3) yalnızca internal_state == 0 olduğunda kullanılabilir
  • 1 eylem (4) yalnızca internal_state == 1 olduğunda kullanılabilir

Durumlarda internal_state == 0aksiyon eğer, 4(yasadışı eylem) seçildi, her zaman diğer eylemlerden biri için takas ve bunun yerine birini oynayabilir. Tutarlı olduğunuz sürece hangisini seçtiğiniz (teorik olarak) gerçekten önemli değil. Algoritmanın yasadışı bir eylem seçtiğini bilmesine gerek yoktur, gelecekte aynı yasadışı eylemi benzer durumlarda tekrar seçtiğinde, sürekli olarak aynı yasal eyleme eşleştirilecektir, bu yüzden bu davranışa göre takviye edersiniz.


01


İlk "çözüm" için, haritayı nasıl seçtiğinizi "teorik olarak" önemli olmadığı yazdım. Buradaki seçimlerinizin pratikte öğrenme hızı üzerinde bir etkisi olmasını kesinlikle bekliyorum. Bunun nedeni, öğrenme sürecinizin ilk aşamalarında, muhtemelen rasgele yakın eylem seçiminiz olacaktır. Bazı eylemler çıktılarda "birden çok kez görünürse", ilk yakın tor-andom eylem seçimiyle seçilme olasılıkları daha yüksek olacaktır. Bu nedenle, topladığınız deneyim üzerinde bir etkisi olan ilk davranışınız üzerinde bir etki olacak ve bu da öğrendiklerinizi de etkileyecektir.

internal_stateDeğişken için girdi özelliklerini ekleyebilirseniz performans için kesinlikle yararlı olacağını umuyorum.

Belirli yasadışı eylemlere bir şekilde "anlamsal olarak yakın" olan bazı yasal eylemler tanımlanabilirse, performansın, "eşlemedeki" bu "benzer" eylemleri, yasadışı işlemden yasal işlemlere özel olarak bağlaması da faydalı olabilir. bu çözüm. Örneğin, tavanın çok düşük olduğu durumlarda (başınızı çarptığınız için) yasadışı hale gelen bir "ileri atla" eyleminiz varsa, bu işlemi bir "ileriye doğru hareket" eylemiyle ( hala benzer, ikisi de ileri gidiyor), bir "geriye doğru hareket" eylemiyle eşleştirmekten daha fazla. Bu "benzer" eylemler fikri yalnızca belirli alanlar için geçerli olacaktır, ancak bazı alanlarda eylemler arasında böyle bir benzerlik olmayabilir.


2

Amaç, Tensorforce gibi bir çerçeve kullanarak, devlet tarafından yönlendirilen kurallara bağlı eylem alanı üzerinde belirli kısıtlamaları olan proksimal bir politika optimizasyon bileşeni tasarlamaktır.

Soruda Listelenen Tasarım Seçenekleri

Bu seçenekler, aşağıda ilk analizi okurken hızlı başvuru için burada listelenmiştir.

  • Internal_state'e bağlı olarak her adımdaki eylem alanını değiştirin. Bunun saçmalık olduğunu düşünüyorum.
  • Hiçbir şey yapmayın: modelin kullanılamayan bir eylem seçmenin hiçbir etkisi olmadığını anlamasına izin verin.
  • Neredeyse hiçbir şey yapmayın: model uygun olmayan bir eylem seçtiğinde ödülü biraz olumsuz etkiler.
  • Modele yardım edin: modele internal_state değeri + madde işareti noktası 2 veya 3'ü bildiren durum / gözlem alanına bir tam sayı ekleyerek

İlk Analiz

Her hareket için eylem alanını değiştirmek gerçekten mantıklı. Aslında, sorunun belirtildiği gibi normal bir temsili ve insanların normal oyun oynama şekli ve bilgisayarların Satranç ve Go'da insanları dövmesi.

Bu fikrin bariz anlamsızlığı sadece Tensorforce projesi yol haritası boyunca ilerlemenin ve her ikisi de daha büyük resimde genç olan pekiştirme teorisi boyunca kaydedilen ilerlemenin bir ürünüdür. Tensorforce belgelerini ve SSS'yi okurken, çerçevenin eylem alanını belirlemek için bir kural motoru takmak üzere tasarlandığı görülmemektedir. Bu açık kaynağın bir eksikliği değildir. Kural şartlı Markov zinciri kararları için teori veya algoritma öneren herhangi bir makale yok gibi görünüyor.

Hiçbir şey yapma seçeneği, literatürde temsil edilen mevcut stratejilere uyan seçenektir. Neredeyse hiçbir şey, muhtemelen daha güvenilir ve belki de daha çabuk arzulanan davranış üretecek olan yaklaşımdır.

Modele yardım kavramının sorunu, modeli genişletmekten daha güçlü bir fikir olmamasıdır. Açık kaynakta, bu, modeli temsil eden sınıfları genişleterek yapılacak ve kodlamadan önce bazı teorik çalışmalar gerektirecektir.

    a. Represent rule-conditioned learning in nomenclature
    b. Represent convergence mathematically using the new nomenclature
    c. Determining a method of convergence
    d. Proving convergence
    e. Rechecking
    f. Defining a smooth and efficient algorithm
    g. Providing PAC learning information for planning
    f. Peer review
    g. Extending the classes of the library
    h. Proof of concept with the current problem above
    i. Additional cases and metrics comparing the approach with the others
    j. Extending the library flexibility to support more such dev

Öğrenme sistemlerinin kural kısıtlı vakayı kapsayacak şekilde genişletilmesi, doktora tezi için harika bir fikirdir ve birçok olası uygulamaya sahip bir proje önerisi olarak araştırma laboratuvarlarında uçabilir. Tüm adımların araştırmacıyı caydırmasına izin vermeyin. Temelde herhangi bir doktora tezi veya finanse edilen AI laboratuvar projesi için atılacak adımların bir listesidir.

Kısa vadeli bir çözüm için, modelin çalışmasına yardımcı olabilir, ancak AI'nın fikirlerini takviye öğrenme yolu boyunca ilerletmek için sağlam bir strateji değildir. Belirli bir sorunun kısa vadeli çözümü olarak işe yarayabilir. Neredeyse hiçbir şey yapma fikri daha sağlam olabilir, çünkü Tensorforce'un kullanması muhtemel belirli bir uygulamaya yol açan yakınsama kanıtlarına sığar.

Yakınsamaya yardımcı olmak için neredeyse hiçbir şey yapmadan yeniden adlandırmak, denemeden önce doğru perspektifi geliştirmeye yardımcı olabilir. Bir öğrenme hızında olduğu gibi, aşmayı önlemek için yakınsamaya yaklaşırken asistanı zayıflatmanız gerekebilir.


3
Tipik olarak, örneğin AlphaGo'da, Sinir Ağındaki düşük seviyeli temsil, çok büyük bir eylem alanını temsil eder, bunların çoğu mevcut durumda imkansızdır (bunu, sabit boyutlu vektörler veren basit NN'lerin sınırlamaları nedeniyle yapar ). Daha sonra kodun başka bir kısmı, yalnızca izin verilen hareketlerin olasılıklarını seçmek ve normalleştirmek için bir filtre uygular. Birleşik NN ve filtre ajanın bir parçasıdır. Bu nedenle, ajanın bir bütün olarak "her hareket için eylem alanını değiştireceğini" söylemek adil - bunun Tensorforce kütüphanesinde nasıl başarılabileceğini bilmiyorum.
Neil Slater

1

Normal olarak, ajanın gerçekleştirebileceği eylemler zamanla değişmez, ancak bazı durumlarda farklı durumlarda imkansız hale gelebilir (örneğin, TicTacToe oyununun herhangi bir pozisyonunda her hareket mümkün değildir).

Kodun pice de örnek olarak bir göz atın https://github.com/haje01/gym-tictactoe/blob/master/examples/base_agent.py :

ava_actions = env.available_actions()
action = agent.act(state, ava_actions)
state, reward, done, info = env.step(action)
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.