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:
- Keacakan dalam pemilihan tindakan menyebabkan variasi dalam pengembalian yang kami amati
- Mungkin ada keacakan yang melekat pada lingkungan itu sendiri, yang mengarah ke varians ekstra dalam pengamatan kami (beberapa lingkungan tidak deterministik)
- Tidak seperti pengaturan Supervised Learning, dalam Reinforcement Learning kita sering benar-benar menggunakan prediksi kita sendiri sebagai bagian dari fungsi kehilangan / sinyal pelatihan kita. Misalnya, dalam pembelajaran perbedaan temporal (seperti Q-learning / DQN), target yang kami perbarui terlihat seperti . Dalam istilah itu, hanya merupakan observasi kebenaran dasar (seperti yang akan kita gunakan dalam pembelajaran yang diawasi), dan istilah lainnya adalah prediksi kita sendiri. Selama proses pembelajaran, bagian-bagian yang terakhir (prediksi kami sendiri) berubah seiring waktu. Ini adalah masalah " target bergerak ", yang dapat dilihat sebagai variasi tambahan dalam sinyal pembelajaran kami.r+maxa′Q(s′,a′)r
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.
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?
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
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.
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.