Hai! Nama saya Eric Yu, dan saya menulis repositori ini untuk membantu pemula memulai secara tertulis Prokimal Kebijakan Optimalisasi (PPO) dari awal menggunakan Pytorch. Tujuan saya adalah memberikan kode untuk PPO yang telanjang (sedikit/tidak ada trik mewah) dan didokumentasikan/ditata dengan sangat baik dan terstruktur. Saya terutama menargetkan orang yang lelah membaca implementasi PPO tanpa akhir dan sama sekali tidak tahu apa yang terjadi.
Jika Anda tidak datang dari Medium, silakan baca seri saya terlebih dahulu.
Saya menulis kode ini dengan asumsi bahwa Anda memiliki pengalaman dengan Python dan Penguatan Pembelajaran (RL), termasuk bagaimana algoritma gradien kebijakan (PG) dan pekerjaan PPO (untuk PPO, seharusnya hanya terbiasa dengan tingkat teoretis. Lagipula, kode ini harus membantu Anda mempraktikkan PPO). Jika tidak terbiasa dengan RL, PG, atau PPO, ikuti tiga tautan di bawah ini untuk:
Jika tidak terbiasa dengan RL, baca OpenAI Pengantar RL (semua 3 bagian)
Jika tidak terbiasa dengan PG, baca penjelasan intuitif tentang gradien kebijakan
Jika tidak terbiasa dengan teori PPO, baca PPO Stack Overflow Post
Jika tidak terbiasa dengan ketiga, buka tautan di atas agar dari atas ke bawah.
Harap dicatat bahwa implementasi PPO ini mengasumsikan ruang pengamatan dan tindakan yang berkelanjutan, tetapi Anda dapat mengubah keduanya menjadi diskrit dengan relatif mudah. Saya mengikuti pseudocode yang disediakan dalam pemintalan Openai untuk PPO: https://spinningup.openai.com/en/latest/algorithms/ppo.html; Nomor baris pseudocode ditentukan sebagai "ALG Step #" di ppo.py.
Semoga ini bermanfaat, karena saya berharap saya memiliki sumber daya seperti ini ketika saya memulai perjalanan saya untuk belajar penguatan.
Terima kasih khusus kepada Zhirui Xia yang telah melakukan bagian 4 dari tutorial ini.
Pertama saya sarankan membuat lingkungan virtual Python:
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Untuk berlatih dari awal:
python main.py
Untuk menguji model:
python main.py --mode test --actor_model ppo_actor.pth
Untuk berlatih dengan model aktor/kritikus yang ada:
python main.py --actor_model ppo_actor.pth --critic_model ppo_critic.pth
Catatan: Untuk mengubah hyperparameter, lingkungan, dll. Lakukan di Main.py; Saya tidak memilikinya sebagai argumen baris perintah karena saya tidak suka berapa lama itu membuat perintah.
Main.py adalah executable kami. Ini akan menguraikan argumen menggunakan argumen.py, kemudian menginisialisasi lingkungan dan model PPO kita. Bergantung pada mode yang Anda tentukan (latih secara default), itu akan melatih atau menguji model kami. Untuk melatih model kami, yang harus kami lakukan adalah memanggil fungsi learn ! Ini dirancang dengan cara Anda melatih PPO2 dengan mempertimbangkan stabil_baselines.
Arguments.py adalah apa yang akan dipanggil oleh Main untuk parse argumen dari baris perintah.
ppo.py berisi model PPO kami. Semua keajaiban belajar terjadi dalam file ini. Harap baca seri menengah saya untuk melihat cara kerjanya. Metode lain yang saya rekomendasikan adalah menggunakan sesuatu yang disebut pdb , atau Python Debugger, dan melangkah melalui kode saya mulai dari saat saya menelepon learn di main.py.
network.py berisi sampel feed forward neural network yang dapat kita gunakan untuk mendefinisikan aktor dan jaringan kritik kami di PPO.
eval_policy.py berisi kode untuk mengevaluasi kebijakan. Ini adalah modul yang sepenuhnya terpisah dari kode lain.
Direktori Graph_Code berisi kode untuk secara otomatis mengumpulkan data dan menghasilkan grafik. Butuh ~ 10 jam di komputer yang layak untuk menghasilkan semua data dalam artikel medium saya. Semua data dari artikel medium harus tetap ada di graph_code/graph_data juga jika Anda tertarik; Jika Anda mau, Anda dapat meregenerasi grafik yang saya gunakan dengan data. Untuk detail lebih lanjut, baca readme di graph_code.
Berikut tutorial PDB yang bagus untuk memulai: https://www.youtube.com/watch?v=vqjcx3p89yk&ab_channel=TutoriEcedEd
Atau jika Anda ahli dengan debuggers, inilah dokumentasinya: https://docs.python.org/3/library/pdb.html
Berikut daftar lingkungan yang dapat Anda coba. Perhatikan bahwa dalam implementasi PPO ini, Anda hanya dapat menggunakan yang dengan Box untuk pengamatan dan ruang tindakan.
Hyperparameters dapat ditemukan di sini.
Silakan merujuk ke artikel medium saya.
Jika Anda memiliki pertanyaan atau ingin menjangkau saya, Anda dapat menemukan saya di sini:
Email: [email protected]
LinkedIn: https://www.linkedin.com/in/eric-yengineer/