Saya telah melihat pembelajaran penguatan, dan secara khusus bermain-main dengan menciptakan lingkungan saya sendiri untuk digunakan dengan OpenAI Gym AI. Saya menggunakan agen dari proyek stable_baselines untuk mengujinya.
Satu hal yang saya perhatikan di hampir semua contoh RL adalah bahwa sepertinya tidak pernah ada lapisan dropout di salah satu jaringan. Kenapa ini?
Saya telah menciptakan lingkungan yang mensimulasikan harga mata uang dan agen sederhana, menggunakan DQN, yang mencoba mempelajari kapan membeli dan menjual. Melatihnya selama hampir satu juta catatan waktu yang diambil dari satu set data spesifik yang terdiri dari data harga 5 menit senilai satu bulan sepertinya terlalu banyak dipakai. Jika saya kemudian mengevaluasi agen dan model terhadap nilai data bulan yang berbeda berkinerja buruk. Jadi terdengar seperti overfitting klasik.
Tetapi apakah ada alasan mengapa Anda tidak melihat lapisan putus di jaringan RL? Apakah ada mekanisme lain untuk mencoba dan mengatasi overfitting? Atau dalam banyak contoh RL apakah itu tidak masalah? misalnya mungkin hanya ada satu cara yang benar untuk mendapatkan skor tertinggi dalam permainan 'breakout', jadi Anda mungkin juga belajar hal itu, dan tidak perlu menggeneralisasi?
Atau apakah dianggap bahwa sifat kacau lingkungan itu sendiri harus memberikan kombinasi hasil yang cukup berbeda sehingga Anda tidak perlu memiliki lapisan putus sekolah?
sumber
Jawaban:
Dropout pada dasarnya memperkenalkan sedikit perbedaan. Dalam pengaturan pembelajaran yang diawasi, ini memang sering membantu mengurangi overfitting (walaupun saya percaya ada dropout juga sudah menjadi kurang .. modis dalam beberapa tahun terakhir daripada dalam beberapa tahun sebelumnya; saya tidak 100% yakin, itu bukan yang utama saya bidang keahlian).
Dalam Pembelajaran Penguatan, varian tambahan tidak benar-benar apa yang kita cari. Sudah ada banyak variasi dalam sinyal pembelajaran yang kita dapatkan, dan varian ini cenderung menjadi masalah utama untuk stabilitas pembelajaran dan / atau kecepatan belajar. Sebagai contoh:
Banyak bagian penting dari algoritma Deep RL (tanpanya proses pelatihan kami secara empiris berubah menjadi tidak stabil dan rusak) sangat dirancang untuk mengurangi varians itu. Misalnya, Jaringan Target di DQN diperkenalkan secara khusus untuk mengurangi masalah target bergerak. Dari sudut pandang ini, tidak mengherankan bahwa jika kita menambahkan lebih banyak varian buatan melalui cara lain lagi (seperti putus sekolah), bahwa ini akan merusak kinerja / ketidakstabilan pembelajaran.
Dalam sebagian besar penelitian Pembelajaran Penguatan (Mendalam) saat ini, overfitting memang tidak dipandang sebagai masalah. Sebagian besar penelitian RL terdiri dari pelatihan dalam satu lingkungan (misalnya Cartpole, atau Breakout, atau satu level tertentu di Pacman, atau menavigasi dalam satu labirin tertentu, dll.), Dan apakah secara konstan mengevaluasi kinerja selama proses belajar itu, atau mengevaluasi kinerja setelah proses pembelajaran di lingkungan yang sama .
Jika kita membandingkan metodologi evaluasi itu dengan apa yang terjadi dalam pembelajaran yang diawasi ... pada dasarnya kita mengevaluasi kinerja pada perangkat pelatihan * . Dalam pembelajaran yang diawasi, ini benar-benar tidak dapat diterima, tetapi dalam RL itu sangat diperlakukan sebagai aturan yang dapat diterima dan lebih dari pengecualian. Ada yang mengatakan ini hanyalah masalah dalam penelitian RL saat ini, sesuatu yang perlu diubah. Bisa juga dikatakan bahwa itu belum tentu menjadi masalah; jika kita benar-benar dapat melatih agen di lingkungan yang persis sama dengan yang ingin kita gunakan nanti ... well, lalu apa masalahnya dengan overfitting ke lingkungan itu?
Jadi, ketika kita menggunakan metodologi evaluasi yang dijelaskan di atas, memang kita terlalu cocok untuk satu lingkungan tertentu, tetapi overfitting lebih baik daripada buruk menurut kriteria evaluasi kita . Jelas bahwa metodologi ini tidak mengarah pada agen yang dapat menggeneralisasi dengan baik; jika Anda secara konsisten melatih agen untuk bernavigasi di satu labirin tertentu, ia kemungkinan tidak akan dapat menavigasi labirin yang berbeda setelah pelatihan.
* Catatan: kebenaran, menurut saya, sedikit lebih bernuansa daripada bahwa kita benar-benar "mengevaluasi set pelatihan" di RL. Lihat, misalnya, utas tweet yang bagus ini: https://twitter.com/nanjiang_cs/status/1049682399980908544
Perhatikan bahwa metodologi evaluasi Anda yang dijelaskan di sini memang tidak lagi sesuai dengan metodologi evaluasi yang lebih "umum". Anda memiliki masalah dengan konsep drift , dengan nonstasioneritas di lingkungan. Ini berarti overfitting mungkin menjadi masalah bagi Anda.
Namun, saya tidak yakin apakah dropout akan membantu (itu masih merupakan varian tambahan yang mungkin sakit). Pertama dan terutama, Anda ingin memastikan bahwa ada beberapa cara untuk melacak waktu / bulan dalam input Anda, sehingga Anda setidaknya memiliki kesempatan untuk mempelajari kebijakan yang menyesuaikan diri dari waktu ke waktu. Jika Anda memiliki batas yang jelas dan solid antara "fase pelatihan" dan "fase evaluasi", dan Anda tahu bahwa pergeseran konsep terjadi melintasi batas itu (Anda tahu bahwa lingkungan Anda berperilaku berbeda dalam fase pelatihan dari fase evaluasi) ... Anda benar-benar tidak memiliki banyak harapan untuk mempelajari suatu kebijakan hanya dari pengalaman dalam fase pelatihan yang masih berkinerja baik dalam fase evaluasi. Saya kira Anda harus menyingkirkan batas yang jelas dan solid itu. Kamu' Saya ingin terus belajar sepanjang fase evaluasi juga. Ini memungkinkan algoritma pembelajaran Anda untuk benar-benar mengumpulkan pengalaman dalam lingkungan yang berubah, dan beradaptasi dengannya.
sumber