Basit bir kendi kendine sürüş rc araba için süpervize öğrenme vs takviye öğrenme


12

Eğlenmek için uzaktan kumandalı kendi kendine giden bir araba yapıyorum. Ahududu Pi'yi yerleşik bilgisayar olarak kullanıyorum; ve aracın çevresiyle ilgili geri bildirim için Raspberry Pi kamera ve mesafe sensörleri gibi çeşitli eklentiler kullanıyorum. Video karelerini tensörlere dönüştürmek için OpenCV kullanıyorum ve yol sınırlarını ve engelleri öğrenmek için kıvrımlı bir sinir ağı oluşturmak için Google'ın TensorFlow'unu kullanıyorum. Asıl sorum şu: Arabayı sürmeyi öğretmek için denetimli öğrenmeyi kullanmalı mıyım yoksa hedefler ve cezalar sağlamalı mıyım ve takviye öğrenimi yapmalı mıyım (yani, hiçbir şeye çarpmadan ve yol sınırları içinde kalmadan B noktasına olabildiğince hızlı ulaşmalı mıyım)? Aşağıda ortaya çıkardığım artılar ve eksiler listesi.

Denetimli öğrenme uzmanları:

  • Öğrenme algoritmasının girdileri oldukça basittir. Araç, video çerçevesi tensörünü ve sensör mesafesi okumalarını ileri, geri ve açısal tekerlek yer değiştirmesiyle ilişkilendirmeyi öğrenir
  • Arabayı az çok istediğim gibi sürmeyi öğretebilirim (elbette aşırı uymadan)
  • Daha önce tonlarca denetimli öğrenme problemi yaptım ve bu yaklaşım mevcut beceri setime rahatça uyuyor gibi görünüyor

Denetimli öğrenme eksileri:

  • Hızın nasıl öğretileceği açık değildir ve araç o kadar hızlı gitmediği sürece doğru hız oldukça keyfidir. Sanırım antrenman sırasında hızlı araba sürdüm, ama bu kaba bir yaklaşım gibi görünüyor. Belki antrenman sırasında o antrenman seansının hızına karşılık gelen sabit bir değişkeni manuel olarak ekleyebilirim ve daha sonra öğrenme algoritması konuşlandırıldığında, bu değişkeni istediğim hıza göre ayarladım?

Takviye öğrenme profesyonelleri:

  • Arabamı diğer insanların kendi kendine giden arabalarıyla yarışmak amacıyla inşa edersem, takviye öğrenimi arabama "oraya olabildiğince çabuk ulaşmasını" söylemenin doğal bir yolu gibi görünüyor.
  • RL'nin bazen otonom uçağı için kullanıldığını okudum, bu yüzden teoride arabalarda daha kolay olmalı çünkü yukarı ve aşağı endişelenmem gerekmiyor

Takviye öğrenme eksileri:

  • Takviye öğreniminin çok fazla ek sensör gerektireceğini hissediyorum ve açıkçası ayak uzunluğundaki arabamın bir bataryaya, Raspberry Pi'ye ve bir breadboard'a da sığması gerektiğini düşünerek içeride o kadar fazla alan yok.

  • Araba ilk başta çok düzensiz davranacak, o kadar ki belki kendini yok edecektir. Öğrenmesi de mantıksız bir şekilde uzun sürebilir (örn. Aylar veya yıllar)

  • Daha sonra açık kuralları koordine edemem, örneğin bir oyuncak kırmızı ışıkta durma. Denetimli öğrenme ile, her video çerçevesi arasında değerlendirilen yapılandırılabilir bir kural motoruna çok sayıda SL algoritması (örneğin, stop ışıklarını tanımlamak için bir Haar Cascade sınıflandırıcısı) dahil edebilirim. Kural motoru, stop lambası sürüş algoritmasının eğitiminin bir parçası olmasa bile kırmızı bir stop lambası görürse sürüş SL algoritmasını geçersiz kılabilir. RL bunu yapmak için çok sürekli görünüyor (yani, sadece terminal durumunda durmak)
  • Uygulamalı pekiştirme öğrenimi ile ilgili çok fazla deneyimim yok, ancak ne olursa olsun kesinlikle öğrenmek istiyorum

Bu aslında bir cevap değil, aslında aynı projeyi yapıyorum, Q-learning (RL) ile kendi kendine sürüş yapan bir araba (hala başlangıçta) ve proje kodunuzun çevrimiçi bazı yerlerde mevcut olup olmadığını sormak istiyorum, benim için çok yardımcı olur. Şu anda takip ettiğim proje: medium.com/@harvitronix/… google deep Q learning (Atari gazetesi) gibi NN ile RL kullanıyor, ancak Denetimli öğrenmeyi kullanmıyor. Kodunu burada bulabilirsiniz: github.com/harvitronix/reinfo
Mahmoud Hossam

@MahmoudHossam kod için alternatif bir konumunuz var mı? Verdiğiniz bağlantı öldü.
Homunculus Reticulli

@MahmoudHossam Repo şuna benziyor: github.com/harvitronix/rl-rc-car
Ryan Zotti

Yanıtlar:


12

Size melez bir yaklaşımı denemenizi öneririm:

  • İlk olarak, gösteri yoluyla arabanızı denetimli bir şekilde eğitin . Sadece kontrol edin ve komutlarınızı etiket olarak kullanın. Bu, SL'nin tüm artılarını almanıza izin verecektir.
  • Ardından, güçlendirici öğrenmeyi kullanarak sinir ağınıza ince ayar yapın. Bunun için ekstra sensöre ihtiyacınız yoktur: ödüller mesafe sensörlerinden (daha büyük mesafeler = daha iyi) ve hızın kendisinden elde edilebilir. Bu size RL profesyonellerini verecektir ve NN'nizi taklit etme hedefi yerine engellerden kaçarken doğru sürüş hedefine doğru eğitecektir.
  • Her iki yaklaşımı birleştirmek, eksilerini ortadan kaldırırken hem SL hem de RL'nin profesyonellerini elde etmenizi sağlayacaktır. RL rastgele davranıştan başlamaz, sadece NN'yi öğrettiğinizden küçük kademeli sapmalar. Benzer bir yaklaşım Google DeepMind tarafından başarıyla uygulanmıştır AlphaGo .
  • Bunun üzerine her zaman açık kurallar ekleyebilirsiniz. Bunları yüksek öncelikli olarak uygulayın ve NN'yi yalnızca mevcut durum için açık bir kural olmadığında arayın. Bu, Tüketim Mimarisini andırıyor .

DeepMind bile heyecan verici Zürafa Satranç NN sonuçları taze Matthew Lai
kopardı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.