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