Potresti implementare una semplice rete neurale su un microprocessore come Arduino Uno da utilizzare nell'apprendimento automatico?
Potresti implementare una semplice rete neurale su un microprocessore come Arduino Uno da utilizzare nell'apprendimento automatico?
Risposte:
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.
È 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.
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:
Ecco un breve resoconto che ho fatto sulla rete.
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.