2011-10-16 16 views
6

PyBrain è una libreria basata su Python per la creazione di reti neurali. Ho guardato i tutorial sul loro sito ma non sembrano aiutarmi molto. La simulazione che ho intenzione di fare è avere un'auto che guida su una pista, equipaggiata con 5 telemetri che mostrano la distanza corrente tra questa e le pareti, compresa tra 0.0 e 1.0. La forma fisica si basa sulla velocità media. (Più alto sarebbe migliore) L'output sarebbe un numero, quanto girerai per quel momento specifico, dove tutto a destra è 1.0 e tutto a sinistra è -1.0 o 0.0, a seconda di quale sia più semplice.Come usare PyBrain?

Suppongo che usando questa configurazione avrei 5 neuroni di ingresso e 1 neurone di uscita. Ad esempio, suppongo di avere 4 neuroni nascosti. Supponiamo anche di aver creato una funzione chiamata runSimulation() che accetta una rete neurale come argomento, guida l'auto lungo una rotta che utilizza quella rete neurale e restituisce la velocità media (l'idoneità).

Come si può addestrare una rete neurale in base ai risultati ripetuti di runSimulation()?


spero sto spiegando correttamente, (per non parlare anche un po 'sapere che cosa sto facendo), ma se non lo sono, per favore mi dica.

risposta

9

Sembra che questo sia un problema di apprendimento supervisionato. In questo tipo di problema, è necessario fornire alcune risposte PRIMA di addestrare il proprio NN.

Si può provare seguente approccio

  1. creare un semplice labirinto per la vostra auto.
  2. Guida la tua auto manualmente in questo labirinto.
  3. raccogliere le vostre informazioni girando

lascia supporre che avete seguito auto.

  • rf = telemetro
  • rf_f = rangefinder_forward
  • rf_r = rangefinder_right
  • rf_l = rangefinder_left
  • rf_60 = rangefinder_60 grado
  • rf_320 = rangefinder_320 grado

Di seguito è riportato il vostro diagramma rf

320 f 60 
    \ |/
    \ |/
    \ |/ 
l--------------r 
     | 
     | 
     | 

Il tuo set di treni dovrebbe essere come sotto.

rf_f , rf_l , rf_r, rf_60, rf_320 , turn 
0  0  0 0 0  0  0 // we go directly, no obstacles detected 
0  0  0 0 0  0  0  // we go directly, , no obstacles detected 
1.0 0  0 0 0  0  0 // We see a wall in forward far away. 
0.9 1  0 0 0  0  0.2 // We see a wall in forward and left, 
              therefore turn right slightly etc. 
0.8 0.8  0 0 0  0  0.4 // We see a wall in forward and left, 
             therefore turn right slightly etc. 

Dopo aver fornito un set di dati di addestramento al tuo NN, puoi addestrarlo.