Bagaimana menerapkan ruang tindakan terbatas dalam pembelajaran penguatan?


12

Saya mengkode model pembelajaran penguatan dengan agen PPO berkat perpustakaan Tensorforce yang sangat baik , dibangun di atas Tensorflow.

Versi pertama sangat sederhana dan saya sekarang menyelam ke lingkungan yang lebih kompleks di mana semua tindakan tidak tersedia di setiap langkah.

Katakanlah ada 5 tindakan dan ketersediaannya tergantung pada keadaan internal (yang ditentukan oleh tindakan sebelumnya dan / atau keadaan baru / ruang observasi):

  • 2 tindakan (0 dan 1) selalu tersedia
  • 2 tindakan (2 dan 3) hanya tersedia ketika internal_state == 0
  • 1 tindakan (4) hanya tersedia ketika internal_state == 1

Oleh karena itu, ada 4 tindakan yang tersedia ketika internal_state == 0 dan 3 tindakan tersedia ketika internal_state == 1.

Saya memikirkan beberapa kemungkinan untuk mengimplementasikannya:

  1. Ubah ruang tindakan di setiap langkah, tergantung pada internal_state. Saya menganggap ini omong kosong.
  2. Jangan lakukan apa pun: biarkan model memahami bahwa memilih tindakan yang tidak tersedia tidak berdampak.
  3. Do -almost- nothing: berdampak sedikit negatif pada hadiah saat model memilih tindakan yang tidak tersedia.
  4. Bantu model: dengan memasukkan bilangan bulat ke dalam ruang keadaan / pengamatan yang menginformasikan model apa nilai internal_state + poin-poin 2 atau 3

Apakah ada cara lain untuk mengimplementasikan ini? Dari pengalaman Anda, mana yang terbaik?

Jawaban:


5

Solusi paling mudah adalah dengan membuat setiap tindakan "legal", tetapi menerapkan pemetaan yang konsisten dan deterministik dari tindakan ilegal yang berpotensi menjadi tindakan hukum berbeda. Setiap kali implementasi PPO yang Anda gunakan memilih tindakan ilegal, Anda cukup menggantinya dengan tindakan hukum yang dipetakan. Algoritme PPO Anda kemudian masih dapat memperbarui sendiri seolah-olah tindakan ilegal dipilih (tindakan ilegal menjadi seperti ... "julukan" untuk tindakan hukum sebagai gantinya).

Misalnya, dalam situasi yang Anda jelaskan:

  • 2 tindakan (0 dan 1) selalu tersedia
  • 2 tindakan (2 dan 3) hanya tersedia ketika internal_state == 0
  • 1 tindakan (4) hanya tersedia ketika internal_state == 1

Dalam kasus di mana internal_state == 0, jika tindakan 4dipilih (tindakan ilegal), Anda selalu dapat menukar dengan salah satu tindakan lain dan memainkan yang sebaliknya. Tidak masalah (secara teoritis) yang mana yang Anda pilih, selama Anda konsisten tentang hal itu. Algoritma tidak harus tahu bahwa ia mengambil tindakan ilegal, setiap kali ia mengambil tindakan ilegal yang sama di masa depan lagi di negara yang sama, ia akan secara konsisten dipetakan ke tindakan hukum yang sama sebagai gantinya, jadi Anda hanya perlu memperkuat sesuai dengan perilaku itu.


01


Untuk "solusi" pertama, saya menulis di atas bahwa tidak masalah "secara teoritis" bagaimana Anda memilih pemetaan. Saya benar-benar berharap pilihan Anda di sini akan berdampak pada kecepatan belajar dalam latihan. Ini karena, pada tahap awal proses pembelajaran Anda, Anda mungkin akan memiliki pilihan tindakan yang hampir acak. Jika beberapa tindakan "muncul beberapa kali" dalam output, mereka akan memiliki kemungkinan lebih besar untuk dipilih dengan pemilihan aksi close-tor-andom awal. Jadi, akan ada dampak pada perilaku awal Anda, yang berdampak pada pengalaman yang Anda kumpulkan, yang pada gilirannya juga berdampak pada apa yang Anda pelajari.

Saya tentu berharap ini akan bermanfaat bagi kinerja jika Anda dapat memasukkan fitur input untuk internal_statevariabel.

Jika beberapa tindakan hukum dapat diidentifikasi yang entah bagaimana "dekat secara semantik" dengan tindakan ilegal tertentu, itu juga dapat bermanfaat bagi kinerja untuk secara khusus menghubungkan tindakan "serupa" dalam "pemetaan" dari tindakan ilegal ke tindakan hukum jika Anda memilih untuk pergi bersama solusi itu. Misalnya, jika Anda memiliki tindakan "lompat ke depan" yang menjadi ilegal di negara bagian di mana langit-langitnya sangat rendah (karena Anda akan membenturkan kepala), mungkin lebih baik untuk memetakan tindakan itu ke tindakan "pindah ke depan" (yang masih agak mirip, mereka berdua maju), daripada memetakannya ke tindakan "mundur". Gagasan tindakan "serupa" ini hanya akan berlaku untuk domain tertentu, namun di beberapa domain mungkin tidak ada kesamaan di antara tindakan tersebut.


1

Tujuannya adalah untuk merancang komponen optimisasi kebijakan proksimal yang memiliki batasan spesifik pada ruang tindakan yang bergantung pada aturan yang digerakkan oleh negara, menggunakan kerangka kerja seperti Tensorforce.

Opsi Desain Tercantum dalam Pertanyaan

Opsi-opsi ini tercantum di sini untuk referensi cepat ketika membaca analisis awal di bawah ini.

  • Ubah ruang tindakan di setiap langkah, tergantung pada internal_state. Saya menganggap ini omong kosong.
  • Jangan lakukan apa pun: biarkan model memahami bahwa memilih tindakan yang tidak tersedia tidak berdampak.
  • Do -almost- nothing: berdampak sedikit negatif pada hadiah saat model memilih tindakan yang tidak tersedia.
  • Bantu model: dengan memasukkan bilangan bulat ke dalam ruang keadaan / pengamatan yang menginformasikan model apa nilai internal_state + poin-poin 2 atau 3

Analisis Awal

Memang masuk akal untuk mengubah ruang tindakan untuk setiap gerakan. Itu, pada kenyataannya, representasi yang tepat untuk masalah seperti yang dinyatakan dan cara normal manusia bermain game dan cara komputer mengalahkan manusia di Catur dan Go.

Tidak masuk akalnya gagasan ini hanyalah sebuah artefak dari kemajuan sepanjang peta jalan proyek Tensorforce dan kemajuan sepanjang teori penguatan, keduanya muda dalam gambaran yang lebih besar. Membaca dokumentasi Tensorforce dan FAQ, tampaknya tidak ada kerangka kerja yang dirancang untuk memasukkan mesin aturan untuk menentukan ruang tindakan. Ini bukan kelemahan dari open source. Tampaknya tidak ada makalah yang menyediakan teori atau mengusulkan algoritma untuk pengambilan keputusan rantai Markov yang dikondisikan oleh aturan.

Opsi do-nothing adalah opsi yang sesuai dengan strategi yang tersedia saat ini diwakili dalam literatur. The do-nyaris-tidak mungkin adalah pendekatan yang akan menghasilkan perilaku yang diinginkan lebih dapat diandalkan dan mungkin lebih langsung.

Masalah dengan konsep membantu model adalah bahwa itu tidak sekuat ide daripada memperluas model. Dalam open source, ini akan dilakukan dengan memperluas kelas-kelas yang mewakili model, yang akan memerlukan beberapa pekerjaan teoritis sebelum pengkodean ke

    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

Perpanjangan sistem pembelajaran untuk mencakup kasus yang dibatasi oleh aturan adalah ide bagus untuk tesis PhD dan mungkin terbang di laboratorium penelitian sebagai proposal proyek dengan banyak aplikasi yang memungkinkan. Jangan biarkan semua langkah menghalangi peneliti. Mereka pada dasarnya adalah daftar langkah-langkah untuk tesis PhD atau proyek laboratorium AI yang didanai.

Untuk solusi jangka pendek, membantu model dapat bekerja, tetapi itu bukan strategi yang tepat untuk memajukan ide-ide AI di sepanjang jalur pembelajaran penguatan. Sebagai solusi jangka pendek untuk masalah tertentu mungkin dapat bekerja dengan baik. Gagasan do-hampir-tidak mungkin lebih masuk akal, karena cocok dengan bukti konvergensi yang mengarah pada implementasi tertentu yang Tensorforce mungkin gunakan.

Mengganti namanya dari melakukan-hampir-tidak-menjadi-konvergensi dapat membantu mengembangkan perspektif yang benar sebelum mencobanya. Anda mungkin menemukan bahwa Anda harus menipiskan bantuan saat Anda mendekati konvergensi untuk menghindari overshoot seperti halnya dengan tingkat pembelajaran.


3
Apa yang biasanya terjadi, misalnya AlphaGo, adalah bahwa representasi tingkat rendah di Neural Network mewakili ruang tindakan yang sangat besar, yang sebagian besar tidak mungkin dalam keadaan saat ini (itu terjadi karena keterbatasan NNs sederhana yang menghasilkan vektor ukuran tetap ). Kemudian bagian lain dari kode menerapkan filter untuk memilih dan menormalkan probabilitas hanya untuk gerakan yang diizinkan. NN dan filter gabungan adalah bagian dari agen. Jadi wajar untuk mengatakan bahwa agen secara keseluruhan akan "mengubah ruang tindakan untuk setiap gerakan" - Saya tidak tahu bagaimana itu bisa dicapai di dalam perpustakaan Tensorforce.
Neil Slater

1

Biasanya, serangkaian tindakan yang dapat dilakukan agen tidak berubah dari waktu ke waktu, tetapi beberapa tindakan dapat menjadi tidak mungkin di negara yang berbeda (misalnya, tidak setiap gerakan mungkin dilakukan di posisi mana pun dari permainan TicTacToe).

Lihatlah sebagai contoh di pice of code 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)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.