Pembelajaran terawasi vs pembelajaran penguatan untuk mobil rc yang mudah dikendarai sendiri


12

Saya sedang membangun mobil self-controlled yang dikendalikan jarak jauh untuk bersenang-senang. Saya menggunakan Raspberry Pi sebagai komputer internal; dan saya menggunakan berbagai plug-in, seperti kamera Raspberry Pi dan sensor jarak, untuk umpan balik tentang lingkungan mobil. Saya menggunakan OpenCV untuk mengubah bingkai video menjadi tensor, dan saya menggunakan Google TensorFlow untuk membangun jaringan saraf yang berbelit-belit untuk mempelajari batasan dan rintangan jalan. Pertanyaan utama saya adalah, haruskah saya menggunakan pembelajaran terawasi untuk mengajar mobil mengemudi atau haruskah saya memberikan tujuan dan hukuman dan melakukan pembelajaran penguatan (yaitu, sampai ke titik B secepat mungkin tanpa memukul apa pun dan tetap berada dalam batas-batas jalan)? Di bawah ini adalah daftar pro dan kontra yang telah saya buat.

Pro pembelajaran yang diawasi:

  • Input ke algoritma pembelajaran sangat mudah. Mobil itu belajar mengasosiasikan pembacaan frame tensor dan jarak sensor dengan perpindahan roda depan, belakang, dan sudut
  • Saya bisa kurang lebih mengajarkan mobil untuk mengemudi persis seperti yang saya inginkan (tanpa overfitting, tentu saja)
  • Saya telah melakukan banyak masalah pembelajaran yang diawasi sebelumnya, dan pendekatan ini tampaknya cocok dengan keahlian saya yang ada

Kontra pembelajaran yang diawasi:

  • Tidak jelas bagaimana cara mengajarkan kecepatan, dan kecepatan yang tepat cukup sewenang-wenang asalkan mobil tidak melaju begitu cepat sehingga membelok dari jalan. Saya kira saya bisa mengemudi cepat selama latihan, tetapi ini sepertinya pendekatan yang kasar. Mungkin saya bisa secara manual menambahkan variabel konstan selama pelatihan yang sesuai dengan kecepatan untuk sesi pelatihan itu, dan kemudian ketika algoritma pembelajaran digunakan, saya mengatur variabel ini sesuai dengan kecepatan yang saya inginkan?

Pro pembelajaran penguatan:

  • Jika saya membangun mobil saya dengan tujuan khusus balap mobil self-driving orang lain, pembelajaran penguatan tampaknya menjadi cara alami untuk memberitahu mobil saya untuk "sampai di sana secepat mungkin"
  • Saya pernah membaca bahwa RL kadang-kadang digunakan untuk drone otonom, jadi secara teori seharusnya lebih mudah di mobil karena saya tidak perlu khawatir tentang naik turun

Kontra pembelajaran penguatan:

  • Saya merasa seperti pembelajaran penguatan akan membutuhkan banyak sensor tambahan, dan terus terang mobil kaki panjang saya tidak memiliki banyak ruang di dalamnya mengingat itu juga harus sesuai dengan baterai, Raspberry Pi, dan papan tempat memotong roti

  • Mobil itu akan berperilaku sangat tidak menentu pada awalnya, sedemikian rupa sehingga mungkin itu menghancurkan dirinya sendiri. Mungkin perlu waktu lama untuk belajar (mis., Berbulan-bulan atau bertahun-tahun)

  • Saya tidak bisa memasukkan aturan eksplisit nanti, misalnya, berhenti di lampu merah mainan. Dengan pembelajaran yang diawasi, saya dapat menggabungkan banyak algoritma SL (misalnya, pengklasifikasi Haar Cascade untuk mengidentifikasi lampu latar) ke dalam mesin aturan yang dapat dikonfigurasi yang akan dievaluasi antara setiap bingkai video. Mesin aturan dengan demikian akan dapat mengesampingkan algoritma SL mengemudi jika melihat lampu merah meskipun lampu merah mungkin tidak menjadi bagian dari pelatihan algoritma mengemudi. RL tampaknya terlalu berkelanjutan untuk melakukan ini (mis., Berhenti hanya pada kondisi terminal)
  • Saya tidak punya banyak pengalaman dengan pembelajaran penguatan terapan, meskipun saya pasti ingin mempelajarinya

Ini sebenarnya bukan jawaban, saya benar-benar melakukan proyek yang sama, mobil self-driving dengan Q-learning (RL) (masih di awal), dan saya ingin bertanya apakah kode proyek Anda tersedia di beberapa tempat online, itu akan sangat membantu saya. Ini adalah proyek yang saya ikuti saat ini: medium.com/@harvitronix/… dia menggunakan RL dengan NN seperti pembelajaran google deep Q (makalah Atari), tetapi dia tidak menggunakan pembelajaran Supervised. Kode-Nya tersedia di sini: github.com/harvitronix/reinfo
Mahmoud Hossam

@ MahmoudHossam apakah Anda memiliki lokasi alternatif untuk kode? Tautan yang Anda berikan sudah mati.
Homunculus Reticulli

@MahmoudHossam Sepertinya repo berubah menjadi: github.com/harvitronix/rl-rc-car
Ryan Zotti

Jawaban:


12

Saya sarankan Anda untuk mencoba pendekatan hybrid:

  • Pertama, latih mobil Anda dengan cara yang diawasi dengan demonstrasi . Kontrol saja dan gunakan perintah Anda sebagai label. Ini akan memungkinkan Anda mendapatkan semua pro dari SL.
  • Kemudian, sempurnakan jaring saraf Anda menggunakan pembelajaran penguatan. Anda tidak memerlukan sensor tambahan untuk itu: hadiah mungkin diperoleh dari sensor jarak (jarak lebih besar = lebih baik) dan dari kecepatan itu sendiri. Ini akan memberi Anda pro dari RL dan melatih NN Anda untuk tujuan yang benar mengemudi cepat sambil menghindari rintangan, bukan tujuan meniru Anda.
  • Menggabungkan kedua pendekatan akan membuat Anda mendapatkan pro dari SL dan RL sambil menghindari kontra mereka. RL tidak akan mulai dari perilaku acak, hanya sedikit penyimpangan bertahap dari apa yang Anda pikirkan NN. Pendekatan serupa diterapkan dengan sukses oleh Google DeepMind dengan AlphaGo .
  • Anda selalu dapat memasukkan aturan eksplisit di atas ini. Terapkan mereka dengan prioritas tinggi dan panggil NN hanya ketika tidak ada aturan eksplisit untuk situasi saat ini. Ini mengingatkan pada Arsitektur Subsumption .

DeepMind bahkan memetik Matius Lai, segar dari hasil NN Catur
Jerapahnya yang
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.