È possibile eseguire una rete neurale su un microcontrollore?


23

Potresti implementare una semplice rete neurale su un microprocessore come Arduino Uno da utilizzare nell'apprendimento automatico?


2
Per curiosità, perché dovresti farlo?
Josh Vander Hook,

1
Non sono un esperto in questo settore, ma l'ultima volta che ho sentito, l'addestramento dell'NN è stato fatto in simulazione e l'NN è stato implementato su uno chassis, e probabilmente uno con un controller di livello superiore rispetto all'Arduino.
Josh Vander Hook,

1
Bene, non è necessario collegarlo, basta addestrare l'NN in simulazione, quindi estrarre la topologia dell'NN, inclusi i bordi e i collegamenti dei nodi. Quindi programmate l'NN (è solo un'equazione che dovete risolvere). Penso che sia necessaria un po 'più di ricerca prima di intraprendere questo progetto.
Josh Vander Hook,

1
Vale probabilmente la pena ricordare che ho 16 anni e questo è il mio lavoro di elettronica principale per il liceo.
Giordania,

1
In tal caso, presumo che tu vada al di là della chiamata del dovere nel tentativo di attuare questo?
Joe Baker,

Risposte:


10

Potresti allenare una rete neurale su un microcontrollore? Forse, ma per favore non provarci. Potresti usare un NN per la classificazione, ecc. Su un microcontrollore? Certo, purché sia ​​possibile calcolare il risultato della propagazione dei valori del nodo e del bordo e gestire le moltiplicazioni.


1
Concordo. Supponendo che tu possa ottenere una rete neurale della complessità richiesta per allenarti su Arduino, sarai comunque pronto per una folle quantità di tempo di allenamento. L'addestramento off-board dell'NN è la strada logica da percorrere.
fgb,

23

È certamente possibile implementarlo su un Arduino. Ecco 3 librerie Arduino che implementano reti neurali:

La complessità della rete che Arduino è in grado di gestire è una domanda separata, soprattutto quando si tratta di formazione: decine di migliaia di iterazioni sui dati di formazione. Allenarsi su una macchina veloce e quindi copiare i pesi dei neuroni su Arduino sarà un modo più intelligente per sviluppare la tua implementazione.


5

Sì. Se lo esegui solo in modalità feed-forward e fai l'allenamento off-line altrove:

Ho programmato un feedforward ANN a 3 strati (5-5-2) su un Arduino UNO. Funzionava su un robot mobile. Ogni volta che il robot colpiva qualcosa, ri-addestrava la rete. La parte feedforward della rete correva in tempo reale; mentre l'addestramento alla propagazione all'indietro ha assunto un ordine di ~ 5-20 secondi. Suppongo che potresti tagliare la dimensione della rete e giocare con i parametri per farla funzionare un po 'più velocemente, ma se hai intenzione di fare la backpropagation su un Arduino, penso che sarebbe troppo lento.

Alcuni pensieri per accelerare le cose includono:

  • Usa punto fisso vs virgola mobile (per MCU senza FPU)
  • Utilizzare un MCU con FPU
  • tanh
  • Fai in modo che la fase di allenamento sia offline su un PC

Ecco un breve resoconto che ho fatto sulla rete.


3

Sì, in effetti, è possibile incorporare la rete neurale nei microcontrollori. Ci sono molti esempi di questo nella letteratura scientifica, ma posso citare un esempio lampante di cosa si può fare con un MCU molto semplice se sei abbastanza intelligente. In Evolutionary Bits'n'Spikes , gli autori descrivono l'implementazione di una rete neurale in tempo reale e un algoritmo genetico per addestrarlo, al fine di controllare un robot a ruota differenziale. L'intero codice viene eseguito in un piccolo MCU PIC16F628 da 4 MHz incorporato nel robot Alice da 1 pollice cubo.

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.