Uczenie nadzorowane a uczenie się wzmacniające dla prostego samochodu rc z własnym napędem

12

Dla zabawy buduję zdalnie sterowany samochód. Używam Raspberry Pi jako komputera pokładowego; i używam różnych wtyczek, takich jak kamera Raspberry Pi i czujniki odległości, aby uzyskać informacje zwrotne na temat otoczenia samochodu. Używam OpenCV do przekształcania klatek wideo w tensory i używam Google TensorFlow do zbudowania zwiniętej sieci neuronowej do nauki granic drogowych i przeszkód. Moje główne pytanie brzmi: czy powinienem stosować nadzorowaną naukę do nauki prowadzenia samochodu, czy też powinienem zapewniać cele i kary oraz uczyć się wzmacniania (tj. Jak najszybciej dotrzeć do punktu B, nie uderzając niczego i pozostając w granicach drogi)? Poniżej znajduje się lista zalet i wad, które wymyśliłem.

Nadzorowani naukowcy:

  • Dane wejściowe do algorytmu uczenia się są dość proste. Samochód uczy się kojarzyć odczyty tensora ramki wideo i odległości czujnika z przemieszczeniem koła do przodu, do tyłu i pod kątem
  • Mogę mniej więcej nauczyć samochód prowadzić dokładnie tak, jak chcę (oczywiście bez nadmiernego wyposażenia)
  • Wcześniej miałem mnóstwo nadzorowanych problemów z uczeniem się i wydaje się, że takie podejście wygodnie pasuje do mojego istniejącego zestawu umiejętności

Nadzór nad uczeniem się:

  • Nie jest jasne, jak uczyć prędkości, a właściwa prędkość jest dość dowolna, o ile samochód nie jedzie tak szybko, że zjeżdża z drogi. Podejrzewam, że mógłbym szybko jeździć podczas treningu, ale wydaje się, że to surowe podejście. Może mógłbym ręcznie dodać stałą zmienną podczas treningu, która odpowiada prędkości dla tej sesji treningowej, a następnie, gdy zostanie wdrożony algorytm uczenia się, ustawiam tę zmienną zgodnie z żądaną prędkością?

Zalety nauki zbrojenia:

  • Jeśli buduję swój samochód w konkretnym celu, jakim jest ściganie się samochodami innych ludzi, uczenie się przez wzmocnienie wydaje się być naturalnym sposobem, aby powiedzieć mojemu samochodowi, aby „dotarł tam tak szybko, jak to możliwe”
  • Czytałem, że RL jest czasem używany do autonomicznych dronów, więc teoretycznie powinno być łatwiej w samochodach, ponieważ nie muszę się martwić o górę i dół

Wady uczenia się zbrojenia:

  • Wydaje mi się, że nauka wzmacniania wymagałaby wielu dodatkowych czujników, a szczerze mówiąc, mój długi samochód nie ma tak dużo miejsca w środku, biorąc pod uwagę, że musi również zmieścić akumulator, Raspberry Pi i płytkę

  • Samochód będzie początkowo zachowywał się bardzo nieobliczalnie, tak bardzo, że może sam się zniszczy. Nauka może również zająć zbyt dużo czasu (np. Miesiące lub lata)

  • Nie mogę później wdrożyć wyraźnych zasad, np. Zatrzymać się na zabawkowym czerwonym świetle. Dzięki nadzorowanemu uczeniu się mogłem włączyć wiele algorytmów SL (np. Klasyfikator Cascade Haar do identyfikowania świateł stop) w konfigurowalnym silniku reguł, który jest oceniany między każdą klatką wideo. Silnik reguł byłby zatem w stanie zastąpić algorytm jazdy SL, gdyby zobaczył czerwone światło stopu, mimo że światło to mogło nie być częścią szkolenia algorytmu sterowania. RL wydaje się zbyt ciągły, aby to zrobić (tzn. Zatrzymaj się tylko w stanie terminalnym)
  • Nie mam dużego doświadczenia w stosowaniu uczenia wzmacniającego, chociaż zdecydowanie chcę się go uczyć niezależnie od tego
Ryan Zotti
źródło
To nie jest właściwie odpowiedź, faktycznie wykonuję ten sam projekt, samojezdny samochód z Q-learning (RL) (wciąż na początku), i chciałbym zapytać, czy twój kod projektu jest dostępny w Internecie, to byłby dla mnie bardzo pomocny. To projekt, który teraz obserwuję: medium.com/@harvitronix/... używa RL z NN, jak Google Q deep learning (praca Atari), ale nie korzysta z Supervised learning. Jego kod jest dostępny tutaj: github.com/harvitronix/reinfo
Mahmoud Hossam
@MahmoudHossam, czy masz alternatywną lokalizację dla kodu? Podany link jest martwy.
Homunculus Reticulli
@MahmoudHossam Wygląda na to, że repo zmieniło się na: github.com/harvitronix/rl-rc-car
Ryan Zotti

Odpowiedzi:

12

Proponuję wypróbować podejście hybrydowe:

  • Najpierw wytrenuj swój samochód w pokazowy sposób pod nadzorem . Po prostu kontroluj i używaj poleceń jako etykiet. To pozwoli ci zdobyć wszystkie zalety SL.
  • Następnie dostrój sieć neuronową za pomocą uczenia wzmacniającego. Nie potrzebujesz do tego dodatkowych czujników: nagrody można uzyskać z czujników odległości (większe odległości = lepsze) i od samej prędkości. To da ci zalety RL i wytrenuje Twój NN do właściwego celu szybkiej jazdy, unikając przeszkód zamiast naśladować cię.
  • Połączenie obu podejść zapewni ci zalety zarówno SL, jak i RL, unikając jednocześnie ich wad. RL nie zacznie się od losowego zachowania, tylko niewielkie stopniowe odchylenia od tego, o co chodziło w NN. Podobne podejście zostało pomyślnie zastosowane przez Google DeepMind z AlphaGo .
  • Zawsze możesz dołączyć do tego wyraźne reguły. Zaimplementuj je z wysokim priorytetem i wywołaj NN tylko wtedy, gdy nie ma wyraźnej reguły dla bieżącej sytuacji. Jest to podobne do architektury Subsumption .
rcpinto
źródło
DeepMind zerwał nawet Matthew Lai, świeżo po swoich ekscytujących wynikach szachy Giraffe NN: motherboard.vice.com/en_us/article/…
DukeZhou