Panduan
Reinforcement learning
Oloproof mengevaluasi kebijakan (policy) reinforcement learning dengan menjalankannya dalam episode, atau dari log kebijakan yang akan digantikannya. Jalankan kebijakan itu bila Anda bisa; gunakan log bila hasilnya hanya terjadi di dunia nyata. Halaman ini adalah referensi untuk keduanya, dan tutorial membahas masing-masing pada contoh yang dapat dijalankan.
Oloproof tidak meng-hosting, mengatur ulang, atau menyimulasikan lingkungan, dan tidak melatih kebijakan. Sistem Anda menjalankan lingkungannya sendiri, sebagaimana setiap sistem yang dievaluasinya menjalankan kodenya sendiri.
Episode
Sebuah tugas adalah sebuah kasus. Sebuah episode adalah satu pengukurannya: sistem Anda menjalankan kebijakan di lingkungannya dan merekam episode itu dengan current_case().rl_episode(...), sebagai artefak rl_episode/v1.
| Field | Tipe | Arti |
|---|---|---|
| steps | list langkah, index mulai dari 1 | reward setiap langkah, cost batasannya (bawaan 0), dan secara opsional action dan observation |
| success | true, false, atau tidak ada | Putusan lingkungan itu sendiri atas episode tersebut |
| truncated | boolean, bawaan false | Batas langkah mengakhiri episode sebelum mencapai state terminal |
| horizon | integer, opsional | Batas langkah; episode tidak boleh lebih panjang darinya |
Rekaman itu memuat setiap langkah episode. Episode yang terpotong adalah episode yang oleh protokol evaluasi didefinisikan berakhir pada batasnya, sehingga return dan biayanya lengkap, bukan batas bawah.
Deklarasikan jenis yang direkam sistem, sehingga sebuah eksekusi dapat menolak evaluator yang membutuhkan rekaman yang tidak pernah ditulis sistem:
system:
name: grid-agent
callable: env:run_baseline
records: [rl_episode/v1]Evaluator episode
| Tipe | Mengukur | Field |
|---|---|---|
| episode_return | Return, dengan setiap reward diberi bobot discount per langkah, sebagai skor | return_range (wajib), discount (bawaan 1) |
| episode_success | Lolos ketika episode merekam success: true; hilang ketika episode tidak merekamnya sama sekali | tidak ada |
| episode_cost_within | Lolos ketika jumlah biaya langkah-langkahnya paling banyak budget | budget (wajib) |
return_range adalah rentang tempat setiap return berada, seperti 30 langkah masing-masing -1 pada kondisi terburuk dan reward tujuan pada kondisi terbaik. Interval atas return rata-rata hanya berlaku di dalamnya, sehingga return di luarnya menghentikan eksekusi dengan kode keluar 2. Di SDK, kelasnya adalah EpisodeReturn, EpisodeSuccess, dan EpisodeCostWithin di oloproof.evaluators.
Beberapa episode per tugas
Tetapkan replicates: untuk menjalankan beberapa episode dari setiap tugas. current_case().replicate menyatakan episode mana yang sedang berjalan (0 untuk yang pertama), dan nilai itu merupakan bagian dari kunci eksekusi yang disimpan, sehingga lingkungan yang menurunkan seed episode darinya memutar ulang episode yang sama untuk replikasi yang sama, dan eksekusi kedua memakai kembali apa yang telah disimpannya.
Tugas tetap menjadi unitnya. Setiap kriteria menjadi rata-rata, atas tugas-tugas, dari rata-rata masing-masing tugas atas episodenya sendiri, dan interval menghitung tugas: lima episode dari satu tugas bukanlah lima tugas yang independen.
Tingkat kelulusan atas tugas yang direplikasi membaca proporsi episode yang lolos pada setiap tugas. Untuk bertanya apakah sebuah tugas lolos setiap kali, deklarasikan metrik every_replicate:
metrics:
- {id: solved_every_time, type: every_replicate, criterion: episode_success}Sebuah tugas hanya dihitung ketika semua episodenya lolos, sehingga setiap tugas adalah satu kelulusan atau satu kegagalan dan interval binomial eksak berlaku. Dengan satu episode per tugas, nilainya sama dengan tingkat kelulusan. Tugas dengan episode yang hilang dianggap hilang, bahkan ketika episode lainnya gagal.
Membandingkan dua kebijakan
oloproof compare memasangkan setiap tugas dengan dirinya sendiri, dengan setiap sisi bernilai rata-ratanya atas episodenya. Selisih return ditampilkan dalam satuan return itu sendiri, selisih tingkat kelulusan dalam poin persentase. Kedua eksekusi boleh menjalankan jumlah episode per tugas yang berbeda, kecuali untuk metrik every_replicate: berhasil pada setiap dari lima episode dan berhasil pada satu-satunya episode adalah pertanyaan yang berbeda, sehingga perbandingan itu tidak dihitung. Perbandingan kuantil dan peringkat tidak dihitung ketika salah satu eksekusi memiliki beberapa episode per tugas.
Evaluasi off-policy
Gunakan ini ketika hasil yang Anda pedulikan hanya terjadi di dunia nyata (tiket yang terselesaikan, pengguna yang kembali) dan Anda belum dapat mencoba kebijakan baru pada lalu lintas nyata. Buktinya adalah log keputusan yang diambil oleh kebijakan yang lebih lama.
Setiap kasus adalah satu keputusan yang dicatat:
{"id":"t001","input":{"topic":"technical","length":"short"},"expected":{"action":"small","logging_probabilities":{"small":0.7,"large":0.3},"reward":1}}| Field | Arti |
|---|---|
| input | Apa yang dilihat kebijakan ketika memutuskan |
| expected.action | Aksi yang diambil kebijakan pencatat (logging policy) |
| expected.logging_probabilities | Probabilitas yang diberikan kebijakan pencatat pada setiap aksi saat itu, berjumlah 1 |
| expected.reward | Apa yang menyusul, di dalam reward_range; tidak ada jika tidak pernah tiba |
Sistemnya adalah kebijakan yang ingin Anda evaluasi. Sistem ini menerima input dan mengembalikan probabilitasnya sendiri untuk setiap aksi di bawah probabilities, atau field yang Anda sebut di probabilities_field. Sistem ini tidak pernah menjalankan model atau menyentuh dunia nyata. input hanya memuat apa yang dilihat kebijakan pencatat ketika memutuskan: tidak pernah aksi yang dicatat atau reward-nya, yang tidak boleh dilihat oleh kebijakan yang diuji. Kebijakan yang mengambil sampel untuk pilihannya mengembalikan probabilitas yang menjadi sumber sampelnya, bukan aksi yang diambilnya; setiap keputusan dievaluasi dari awal bahkan ketika input-nya berulang. Aksi dinamai persis seperti log menamainya: aksi yang dieja berbeda dihitung sebagai aksi yang tidak pernah diambil kebijakan pencatat.
| Tipe | Mengestimasi |
|---|---|
| off_policy_value | Reward rata-rata kebijakan pada keputusan seperti yang dicatat |
| off_policy_improvement | Rata-rata itu dikurangi rata-rata milik kebijakan pencatat sendiri |
Keduanya menerima reward_range dan propensity_floor, probabilitas terkecil yang diberikan kebijakan pencatat pada aksi mana pun yang mungkin diambil kebijakan baru. Tetapkan nilainya dari cara kebijakan pencatat dirancang (tingkat eksplorasi, porsi minimum), jangan pernah dengan mencoba-coba nilai pada log. Setiap keputusan yang dicatat diberi bobot ulang sebesar probabilitas kebijakan baru atas aksinya dibagi probabilitas kebijakan pencatat, dan batas bawah itu membatasi bobot tersebut: tanpanya tidak ada interval yang berlaku. Di SDK, kelasnya adalah OffPolicyValue dan OffPolicyImprovement.
Apa yang dilakukan mesin terhadap keputusan yang tidak dapat dibacanya sebagaimana diberikan:
| Situasi | Hasil |
|---|---|
| Probabilitas yang tidak berjumlah 1, aksi tercatat dengan probabilitas 0, reward di luar reward_range | Eksekusi berhenti dengan kode keluar 2: probabilitas yang salah akan membuat interval salah tanpa terlihat |
| Kebijakan baru mungkin mengambil aksi yang tercatat dengan probabilitas di bawah batas bawah | Keputusan itu hilang dan dibatasi pada nilai terburuknya |
| Reward tidak ada | Keputusan itu hilang dan dibatasi pada nilai terburuknya |
Apa yang diasumsikan jawabannya:
- Probabilitas direkam ketika kebijakan pencatat memutuskan, dan merupakan probabilitas yang benar-benar dipakainya. Oloproof tidak pernah mengestimasinya.
- Reward setiap keputusan bergantung pada input dan aksinya sendiri, bukan pada keputusan lain.
- Kebijakan pencatat mempertahankan probabilitas yang sama sepanjang jendela waktu log.
- Jawabannya menggambarkan keputusan seperti yang dicatat, selama periode yang dicakup log.
Interval menjadi lebar ketika batas bawahnya kecil: keputusan yang memberi informasi tentang aksi yang jarang dipilih hanya sedikit, dan masing-masing dihitung berkali-kali lipat. Log yang lebih panjang, dan kebijakan pencatat yang lebih banyak bereksplorasi, mempersempitnya.
Apa yang belum dibangun
- Evaluasi off-policy atas serangkaian keputusan, ketika setiap pilihan mengubah apa yang terjadi berikutnya.
- Log yang kebijakannya mengubah probabilitasnya sambil belajar selama jendela waktu itu.
- Probabilitas yang diestimasi setelah kejadian.
- Meng-hosting atau mengatur ulang lingkungan dan simulator.
Langkah selanjutnya
- Tutorial: mengevaluasi kebijakan reinforcement learning: kedua bagian, dijalankan dari awal sampai akhir.
- Menulis suite: replikasi dan field suite lainnya.
- Referensi konfigurasi: setiap field dari evaluator ini.