Langsung ke konten

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.

FieldTipeArti
stepslist langkah, index mulai dari 1reward setiap langkah, cost batasannya (bawaan 0), dan secara opsional action dan observation
successtrue, false, atau tidak adaPutusan lingkungan itu sendiri atas episode tersebut
truncatedboolean, bawaan falseBatas langkah mengakhiri episode sebelum mencapai state terminal
horizoninteger, opsionalBatas 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

TipeMengukurField
episode_returnReturn, dengan setiap reward diberi bobot discount per langkah, sebagai skorreturn_range (wajib), discount (bawaan 1)
episode_successLolos ketika episode merekam success: true; hilang ketika episode tidak merekamnya sama sekalitidak ada
episode_cost_withinLolos ketika jumlah biaya langkah-langkahnya paling banyak budgetbudget (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}}
FieldArti
inputApa yang dilihat kebijakan ketika memutuskan
expected.actionAksi yang diambil kebijakan pencatat (logging policy)
expected.logging_probabilitiesProbabilitas yang diberikan kebijakan pencatat pada setiap aksi saat itu, berjumlah 1
expected.rewardApa 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.

TipeMengestimasi
off_policy_valueReward rata-rata kebijakan pada keputusan seperti yang dicatat
off_policy_improvementRata-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:

SituasiHasil
Probabilitas yang tidak berjumlah 1, aksi tercatat dengan probabilitas 0, reward di luar reward_rangeEksekusi 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 bawahKeputusan itu hilang dan dibatasi pada nilai terburuknya
Reward tidak adaKeputusan 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