Secondo il primo documento , la corsa non è un problema. Quello era lo scopo. Solo c'è una limitazione sui pesi massimi:
Attualmente la limitazione dell'architettura integrata in questo microcontrollore è limitata solo dal numero di pesi necessari. La rete neurale è attualmente limitata a 256 pesi. Tuttavia, per la maggior parte delle applicazioni integrate questo peso di 256 non dovrebbe limitare il sistema.
Per quanto riguarda la formazione, per quanto ho capito l'implementazione descritta, il controller PIC riceve parametri da una fonte esterna.
I calcoli forward della rete neurale sono scritti in modo tale che ogni neurone sia calcolato individualmente in una serie di loop nidificati. Il numero di calcoli per ciascun ciclo e i valori per ciascun nodo sono tutti memorizzati in un semplice array in memoria.
[...]
Questi array contengono l'architettura e i pesi della rete. Attualmente, a scopo dimostrativo, questi array sono precaricati al momento della programmazione del chip, ma nella versione finale ciò non sarebbe necessario. Il microcontrollore può essere facilmente modificato per contenere un semplice caricatore di avvio che utilizza la porta seriale RS232 integrata che riceve i dati per i pesi e la topografia da una posizione remota. Ciò consentirebbe di modificare i pesi o persino l'intera rete mentre il chip si trova sul campo.
Ho il sospetto che la formazione sia eseguita anche esternamente.
L'articolo fornisce anche riferimenti per i trainer di reti neurali che sono stati probabilmente utilizzati per determinare i valori preprogrammati nella memoria del PIC.
- Wilamowski, BM; Cotton, N .; Hewlett, J .; Kaynak, O., "Trainer di reti neurali con algoritmi di apprendimento del secondo ordine"
- Wilamowski, BM; Cotton, NJ; Kaynak, O .; Dundar, G.,
"Metodo di calcolo del vettore gradiente e della matrice giacobina in reti neurali arbitrariamente connesse"
Ora, ho esaminato il primo che descrive le architetture di rete e gli algoritmi da usare con loro. Ma il software Neural Network Trainer utilizzato qui è implementato in MATLAB.
Attualmente, è disponibile pochissimo software di formazione per reti neurali che formerà reti completamente connesse. Pertanto a MATLAB è stato sviluppato un pacchetto con un'interfaccia utente grafica a tale scopo. Questo software consente all'utente di inserire facilmente architetture molto complesse, nonché pesi iniziali, parametri di allenamento, set di dati e la scelta di numerosi potenti algoritmi.
Devo dire che le reti completamente connesse hanno un numero di pesi inferiore per una stessa attività rispetto a un'architettura strato per strato. Ciò lo rende più adatto per i microcontrollori.
Non sono un esperto di reti neurali ed è piuttosto complesso, quindi posso sbagliarmi, ma sulla base di questi documenti direi che l'approccio di Cotton, Wilamowski e Dündar richiede una piattaforma esterna e più potente per eseguire l'addestramento.
A proposito della gestione di una rete neurale su un microcontrollore, ST Microelectronics ha appena annunciato un toolkit STM32Cube.AI: Converti reti neurali in codice ottimizzato per STM32 per convertire reti neurali pre-addestrate da librerie popolari alla maggior parte delle MCU STM32.