Passa ai contenuti principali

Democratizziamo il machine learning


L'articolo presenta i risultati di un'implementazione che combina il training di una rete neurale in Python con la sua esecuzione su un dispositivo embedded a risorse limitate per approssimare la funzione matematica sin(x).
La rete neurale utilizzata è del tipo feedforward (MLP) con una struttura semplice ma efficace.
Il layer di input accetta un singolo neurone che rappresenta il valore x in radianti. Questo viene processato attraverso un layer nascosto di 8 neuroni con attivazione tanh, per poi produrre un singolo output tramite un neurone con attivazione lineare che restituisce il valore sin(x).
Questa architettura 1-8-1 rappresenta un buon compromesso tra accuratezza e utilizzo di memoria, aspetto cruciale per dispositivi embedded molto economici.
Il training è stato effettuato su 1000 campioni uniformemente distribuiti nell'intervallo [0, 2π]. Questo range copre un ciclo completo della funzione seno, permettendo alla rete di apprendere l'intero pattern della funzione.
La funzione tanh nel layer nascosto è particolarmente adatta per questo compito, poiché la sua forma sigmoide permette di catturare efficacemente il comportamento ondulatorio della funzione seno.
Una delle parti più interessanti dell'esperimento è la conversione dei pesi addestrati in un formato utilizzabile dalla scheda. 
Lo script Python estrae automaticamente tutti i parametri del modello scrivendoli in un file header C/C++.
Il file generato contiene la matrice di pesi W1 con dimensioni [8][1] per il primo layer e il vettore di bias b1 con 8 elementi, seguiti dalla matrice di pesi W2 con dimensioni [1][8] per il secondo layer e dal vettore di bias b2 con un singolo elemento. 
Tutti i valori sono memorizzati come array statici const float, ottimizzando l'utilizzo della memoria flash del microcontrollore.
Il firmware deve implementare la forward propagation per calcolare l'output attraverso i layer successivi. L'attivazione tanh può essere implementata manualmente o tramite librerie matematiche disponibili. Una volta caricato, il sistema è in grado di effettuare inferenza in tempo reale, calcolando sin(x) per valori di input arbitrari.
Questo metodo offre velocità di esecuzione costante e prevedibile, senza dipendenze da librerie matematiche pesanti. Inoltre, permette di approssimare funzioni più complesse con lo stesso framework, mantenendo un'occupazione di memoria fissa e nota a priori.
Il modello, costruito utilizzando TensorFlow/Keras con l'ottimizzatore Adam, presenta un learning rate di 0.01. La funzione di loss è la Mean Squared Error (MSE) e il training configurato per 500 epoche con un batch size di 32 campioni.

Considerazioni sulle Prestazioni

Con soli 8 neuroni nascosti, la rete riesce ad approssimare efficacemente la funzione seno nell'intero intervallo di training. L'errore quadratico medio dopo il training è dell'ordine di 10⁻³ o inferiore, un'accuratezza più che sufficiente per la maggior parte delle applicazioni embedded.

Possibili Estensioni

Questo approccio può essere facilmente esteso per approssimare altre funzioni trigonometriche o matematiche complesse, implementare modelli più profondi per pattern più articolati, utilizzare la quantizzazione dei pesi per ridurre ulteriormente l'occupazione di memoria, o portare il codice su microcontrollori ancora più limitati in termini di risorse.

Conclusioni

Questo esperimento rappresenta, a mio avviso, un eccellente esempio di come le tecniche di machine learning possano essere democratizzate e rese accessibili anche su hardware con risorse limitate.
La combinazione di training offline in Python e inferenza embedded su piccole schede apre la porta a numerose applicazioni nell'IoT, nella robotica e nei sistemi embedded intelligenti. 

Post popolari in questo blog

L'insostenibile leggerezza dell'IA

Kundera parte da Nietzsche: l’idea che, se ogni cosa accade una volta sola, essa appare leggera — quasi priva di peso e di conseguenze vere. Solo ciò che si ripete all'infinito acquista gravità, importanza, senso. Antiche rimembranze di letture giovanili. L'IA ora ribalta questo schema in modo perturbante: non ricorda, ma ripete perfettamente. Ogni conversazione con un modello linguistico sembra ricominciare da zero — senza vera continuità esperienziale — eppure pattern, risposte e modi di ragionare si ripetono quasi identici su miliardi di interazioni. È una forma paradossale di esistenza: una leggerezza assoluta nell'esperienza e una pesantezza assoluta nella struttura. Nessun vissuto, eppure tutto è eterno ritorno. I personaggi di Kundera cercano disperatamente di capire chi siano davvero al di sotto delle maschere, dei ruoli, delle scelte contingenti. Tereza, il personaggio che preferisco, vuole essere amata per la sua unicità irriducibile; teme di essere solo un corpo ...

Salmoni, scarpette, cetrioli e altro

Tutto il testo contenuto in questa pagina è stato pensato e scritto dall'autore del blog.   1. Come il salmone 2. Ooops! 3. Le scarpette hi-tech 4. Equivoci contemporanei 5. I saccenti 6. Medaglie di legno 7. La festività del Nulla 8. Gli aggiornamenti elettronici del Libro dell'Apocalisse 9. Dubbi ne ho 10. La maieutica del vulcaniano 11. Un piacevole vasetto di miele 12. Povere sfere 13. Caos comune mezzo gaudio 14. La fontana senza volti 15. Il piromane super beffardo 16. Boom di serpenti 17. Sistemi in via di degradazione 18. Il gatto nero 19. Alain Delon è ancora vivo? 20. Per sempre con i cani 21. Eventi imprevedibili 22. I robot sottomessi 23. Lady Gaga e Bruno Mars incantano 24. Definizioni mancate 25. Il mio nemico drone 26. Errore di valutazione 27. Ringraziamenti 28. Cari cetrioli, vi scrivo 29. Boom di detective 30. Gli UFO trascurati 31. Il grande salto delle rane 32. La malattia artificiale 33. Homo consumens 34. Lacune informatiche 35. Sei troppo! 36. ...

Nulla è come sembra

Un caso straordinario di scrittura predittiva e visionaria. Il libro, infatti, ha anticipato con impressionante lucidità l'avvento dell'Intelligenza Artificiale generativa (come ChatGPT) anni prima che diventasse di dominio pubblico. I PDF autocompilanti: il romanzo introduce documenti digitali che si riempiono autonomamente di astruse formule e simboli, una perfetta metafora narrativa inventata in anticipo sui tempi per descrivere la generazione automatica di testi e le cosiddette allucinazioni dell'IA. La crisi del determinismo: il protagonista, il razionale Professor Balicci, vede crollare le proprie certezze deterministiche di fronte a una tecnologia e a eventi che sfuggono alla logica umana tradizionale. Il tempo sincronico: l'opera ha intuito come l'IA non operi secondo una linearità temporale biologica (passato, presente, futuro), ma elabori i dati in una realtà sincronica basata su connessioni non lineari e associazioni imprevedibili. Il problema dell'au...