Programmazione di una linea seguendo il robot con l'apprendimento del rinforzo


15

Sto pensando di programmare una linea seguendo il robot usando algoritmi di apprendimento di rinforzo. La domanda su cui sto riflettendo è come posso ottenere l'algoritmo per imparare a navigare attraverso qualsiasi percorso arbitrario?

Dopo aver seguito il Sutton & Barto Book per l'apprendimento per rinforzo, ho risolto un problema di esercizio che riguardava una pista in cui l'agente automobilistico aveva imparato a non scendere in pista e regolare la sua velocità. Tuttavia, quel problema di esercizio ha indotto l'agente a imparare come navigare sulla pista su cui si è allenato.

È nell'ambito dell'apprendimento del rinforzo far sì che un robot percorra percorsi arbitrari? L'agente deve assolutamente avere una mappa del circuito o del percorso di gara? Quali parametri potrei eventualmente usare per il mio spazio di stato?


1
Non so come, ma sono certo che è possibile insegnargli a mantenersi all'interno di un percorso, indipendentemente dalla sua forma. L'obiettivo dell'insegnamento in questo caso dovrebbe essere quale decisione locale prende il robot in base ai suoi input immediati (o forse un po 'di storia). In questo modo, non importa quale sia la forma del percorso, poiché tutte le decisioni sono locali.
Shahbaz,

@Shahbaz - Cosa suggeriresti di usare per lo spazio degli stati?
Lord Loh.

In realtà non sono sicuro. Anche se ho studiato l'IA all'università, non è mai stato il mio campo di lavoro / ricerca. La risposta che hai accettato sembra ragionevole!
Shahbaz,

Stai usando una risposta per testare Markdown? Puoi semplicemente scrivere quello che vuoi e vedere il rendering immediato sotto di esso, quindi non pubblicarlo.
Shahbaz,

Risposte:


8

Una delle misure chiave di qualsiasi algoritmo di apprendimento automatico è la sua capacità di generalizzare (vale a dire applicare ciò che ha imparato a scenari mai visti prima). Gli studenti di rinforzo (RL) possono generalizzare bene, ma questa capacità è in parte una funzione della formulazione dello spazio degli stati nella mia esperienza. Ciò significa che se riesci a trovare la giusta configurazione, lo studente RL non avrà bisogno di una mappa del circuito di gara.

Questo lascia la domanda su quali parametri usare. Senza sapere di più sui sensori disponibili sul tuo robot, posso solo speculare. La mia prima inclinazione è quella di provare a codificare l'orientamento relativo della linea e del robot (cioè il robot tende a destra, a sinistra o semplicemente si muove parallelamente alla linea). Ciò comporterebbe un piacevole piccolo spazio-stato. Sebbene non strettamente necessario, renderebbe l'implementazione semplice e veloce. Inoltre, se il robot non si sposta a una velocità costante, può essere utile codificare la velocità dei robot poiché il robot dovrà reagire più rapidamente quando si sposta a velocità più elevate.


Senza la mappa, lo spazio degli stati è esattamente ciò che il robot può percepire dalla sua posizione immediata. Quindi, in una certa misura, la mappa è solo un modo per "guardare avanti". Il comportamento appreso nello scenario senza mappe sarà essenzialmente "fare la stessa cosa di prima ma andare più piano perché non sappiamo dove sono le svolte questa volta". (Presumibilmente, sarai in grado di dire dove sono i bordi della traccia.)
Ian

Una politica ci dice quale controllo applicare in base a uno stato. Se lo spazio degli stati è ben formulato per l'agente RL, gli scenari distintamente diversi possono apparire uguali nello spazio degli stati e produrre lo stesso comportamento. Questo si chiama generalizzazione ed è desiderabile se fatto correttamente. Il robot avrà una velocità massima basata sulla velocità del suo circuito di controllo. Il comportamento appreso non sarà necessariamente quello di rallentare. Se la ricompensa è inversamente proporzionale al periodo di tempo della corsa, l'agente sarebbe incline a massimizzare la sua velocità rispetto alla velocità del suo circuito di controllo.
DaemonMaker,

0

Non sono sicuro del tipo di robot che possiedi, ma da qualche anno faccio la linea di salvataggio del robot. Ho capito che se vuoi seguire bene una linea usando il PID è una buona opzione. Lasciami espandere su questo. Se immagini due sensori di luce su entrambi i lati della linea, vorresti che avessero lo stesso valore in modo che la linea fosse nel mezzo. È quindi possibile utilizzare la differenza tra il valore dei due sensori per modificare la percentuale di rotazione del robot. Con questa tecnica è possibile fare in modo che un robot segua una linea a velocità straordinarie. mi piace che tu stia pensando di far imparare al robot a migliorare le sue capacità di tracciamento della linea. Quello che mi è venuto in mente è iniziare con i tuoi valori PID iniziali più alti di quelli che desideri che siano e utilizzare un sensore giroscopico per misurare la frequenza di oscillazione del robot mentre traccia la linea. Da lì puoi creare la tua funzione per determinare quanto abbassare i tuoi valori per ottenere un sistema stabile, questa non è esattamente un'intelligenza artificiale più simile a un algoritmo di ottimizzazione automatizzato, ma hey im 18 e ho imparato a programmare dal Internet. Spero che questo possa essere d'aiuto. Se avete domande scrivetemi, questo non è il mio indirizzo e-mail principale, quindi non lo controllerò regolarmente. 69darkeagle@sigaint.org

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.