Mengapa Anda tidak melihat lapisan dropout pada contoh pembelajaran penguatan?


13

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?


1
Sudahkah Anda mencoba menambahkan dropout ke jaringan RL untuk melihat apa yang terjadi? Saya punya (untuk pemecah LunarLander_v2 yang berfungsi dengan baik jika tidak), dan hasilnya mengerikan, mulai dari penyelesaian dalam 400 episode, untuk benar-benar gagal menyelesaikannya (dan saya mencoba banyak variasi di params lain). Regulatorisasi lainnya adalah OK, dan bahkan bermanfaat. Saya tidak tahu mengapa masalah dengan putus sekolah, berpikir untuk mengajukan pertanyaan di sini. . .
Neil Slater

Neil, ya, sepertinya pengalaman Anda di sana menggemakan apa yang dikatakan oleh Dennis di bawah ini. Seperti yang saya harapkan, dalam skenario jenis 'memecahkan teka-teki ini' Anda benar-benar ingin mengenakan pakaian berlebih karena Anda ingin memecahkan teka-teki spesifik itu. Dan Anda ingin tahu apakah Anda menghadapi alien biru vs alien merah karena mereka mungkin berperilaku berbeda dalam gim Anda.
Matt Hamilton

@MattHamilton Saya kebetulan melihat utas tweet dari seseorang tentang kisah "Para peneliti RL sedang mengevaluasi data pelatihan". Saya telah mengedit tautan untuk itu ke dalam jawaban saya. Intinya masih sama ketika menjawab pertanyaan Anda, tetapi saya setuju dengan rantai tweet yang saya tautkan di sana bahwa kebenarannya sedikit lebih bernuansa.
Dennis Soemers

Jawaban:


11

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+maxaQ(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.


1
Dennis, terima kasih banyak atas balasan Anda yang sangat terperinci! Banyak yang menegaskan saya pikir kecurigaan saya: yaitu bahwa lebih banyak RL sedang mencoba untuk memecahkan masalah yang sangat spesifik di lingkungan tertentu di mana sering ada satu solusi 'terbaik' yang jelas untuk masalah itu.
Matt Hamilton

2
@MattHamilton Perhatikan bahwa ada penelitian terhadap RL untuk lingkungan yang lebih umum. Jika Anda tertarik pada hal-hal itu, Anda akan ingin mencari kombinasi "Transfer belajar" dan "Belajar Penguatan", atau hal-hal seperti Multi-Task RL (Multi-Objective RL mungkin juga menarik, tetapi mungkin sedikit berbeda ). Upaya-upaya semacam itu masih cenderung kurang berkinerja signifikan daripada pendekatan tradisional pelatihan dan evaluasi pada satu lingkungan pada suatu waktu.
Dennis Soemers
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.