Sto costruendo un'auto a guida autonoma telecomandata per divertimento. Sto usando un Raspberry Pi come computer di bordo; e sto usando vari plug-in, come una fotocamera Raspberry Pi e sensori di distanza, per feedback sull'ambiente circostante. Sto usando OpenCV per trasformare i fotogrammi video in tensori e sto usando TensorFlow di Google per costruire una rete neurale contorta per apprendere confini e ostacoli. La mia domanda principale è: dovrei usare l'apprendimento supervisionato per insegnare alla macchina a guidare o dovrei fornire obiettivi e penalità e fare l'apprendimento per rinforzo (cioè arrivare al punto B il più velocemente possibile senza colpire nulla e rimanere all'interno dei confini della strada)? Di seguito è riportato un elenco di pro e contro che ho escogitato.
Professionisti dell'apprendimento supervisionato:
- Gli input per l'algoritmo di apprendimento sono piuttosto semplici. L'auto impara ad associare il tensore del fotogramma video e le letture della distanza del sensore con lo spostamento della ruota avanti, indietro e angolare
- Posso più o meno insegnare all'auto a guidare esattamente come voglio (senza eccesso di equipaggiamento, ovviamente)
- Ho già affrontato tonnellate di problemi di apprendimento supervisionato e questo approccio sembra adattarsi perfettamente al mio set di competenze esistente
Contro di apprendimento supervisionato:
- Non è chiaro come insegnare la velocità e la velocità corretta è piuttosto arbitraria fintanto che la macchina non va così veloce da deviare dalla strada. Suppongo che potrei guidare veloce durante l'allenamento, ma questo sembra un approccio rozzo. Forse potrei aggiungere manualmente una variabile costante durante l'allenamento che corrisponde alla velocità per quella sessione di allenamento, e quindi quando viene distribuito l'algoritmo di apprendimento, imposto questa variabile in base alla velocità che voglio?
Professionisti dell'apprendimento per rinforzo:
- Se costruisco la mia auto con lo scopo specifico di guidare auto a guida autonoma di altre persone, l'apprendimento per rinforzo sembra essere il modo naturale per dire alla mia auto di "arrivarci il più velocemente possibile"
- Ho letto che RL è talvolta usato per droni autonomi, quindi in teoria dovrebbe essere più facile nelle auto perché non devo preoccuparmi di su e giù
Contro di apprendimento di rinforzo:
Sento che l'apprendimento per rinforzo richiederebbe molti sensori aggiuntivi e francamente la mia auto lunga un piede non ha molto spazio all'interno considerando che deve anche montare una batteria, il Raspberry Pi e una breadboard
All'inizio la macchina si comporterà in modo molto irregolare, tanto che forse si distruggerà da sola. Potrebbe anche essere necessario un tempo irragionevolmente lungo per imparare (ad esempio, mesi o anni)
- Non posso incoporare regole esplicite in seguito, ad esempio, fermarmi a un semaforo rosso giocattolo. Con l'apprendimento supervisionato, potrei incorporare numerosi algoritmi SL (ad esempio, un classificatore Haar Cascade per identificare i semafori) in un motore di regole configurabile che viene valutato tra ciascun fotogramma video. Il motore delle regole sarebbe quindi in grado di ignorare l'algoritmo di guida SL se vedesse un semaforo rosso anche se il semaforo potrebbe non aver fatto parte dell'addestramento dell'algoritmo di guida. RL sembra troppo continuo per farlo (cioè fermarsi solo allo stato terminale)
- Non ho molta esperienza con l'apprendimento del rinforzo applicato, anche se voglio sicuramente impararlo a prescindere