Negli ultimi anni il linguaggio di programmazione Python ha visto un sempre maggiore utilizzo nella realizzazione di progetti legati al Machine Learning. L'apprendimento automatico consiste nell'utilizzare i dati per fare in modo che una macchina prenda decisioni intelligenti. Ad esempio, è possibile creare un algoritmo di rilevamento dello spam in cui l'apprendimento delle regole dai dati avviene esaminando le mail precedenti. In questo articolo andremo a descrivere la prima parte della realizzazione passo passo di un progetto di machine learning utilizzando il linguaggio di programmazione Python.
Introduzione
L'apprendimento automatico non è altro che riconoscere i modelli nei dati. Sviluppare procedure per l'apprendimento automatico implica estrarre, elaborare, definire, pulire, organizzare e quindi comprendere i dati. Tutte queste operazioni sui dati non sono di facile implementazione e richiedono conoscenze approfondite sia in termini matematico/statistici che in termini di programmazione. Python è un linguaggio di programmazione open source che presenta delle caratteristiche tali da rendere più agevole una qualsiasi implementazione di applicazione per il Machine Learning (ML).
I punti di forza di Python in relazione al machine learning sono i seguenti:
- linguaggio facilmente leggibile e con minore complessità rispetto a C, C++ e Java
- sebbene sia più lento di altri linguaggi, la capacità di gestione dei dati è ottima
- i numerosi package presenti in repository open source permettono di svolgere le operazioni più complesse partendo da zero.
In questo articolo si daranno per noti molti dei concetti riguardanti il linguaggio di programmazione Python. L'oggetto di questo articolo è l'implementazione di procedure di ML attraverso Python, e non la descrizione del linguaggio. Comunque sia, nel caso si fosse completamente ignari dell'esistenza di Python esiste una guida online in italiano dettagliata e gratuita. [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2114 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
Grande Articolo!!!
L’ML è il futuro dell’umanità. E’ tutto connesso con la potenza del calcolo parallelo e Big Data.
Anche a livello scacchistico, al momento ci sono esperimenti che stanno surclassando i più forti Chess Engine della storia, vedi Alpha Zero, LCzero, ecc.
Complimenti Andrea, un grande articolo!
Grazie a tutti, esageratamente buoni
Complimenti, articolo molto interessante!
La ringrazio
Buongiorno,
Vorrei sperimentare una applicazione di Intelligenza artificiale su Espertino. Si tratta del gioco del 32, chi lo supera con la sommatoria di puntate progressive, perde.
È possibile? Come crearmi un database e come memorizzare i dati di una seduta di apprendimento per riprenderli successivamente?
Grazie e cordiali saluti
C.Dall’Olio.
Salve,
realizzare una AI per giocare al 31 è sicuramente possibile, visto che si realizzano cose assai più complicate (vedere Deepmind).
Prima però vorrei capire in che modo intende usare Espertino all’interno del suo progetto. Se potesse essere i lpiù dettagliato possibile.
Grazie e cordiali saluti
Buongiorno,
Userei Espertino perché lo ho e lo conosco un poco.
Svilupperei uno sketch con le istruzioni del gioco e con associato un opportuno data base che associerebbe un punteggio positivo o negativo ad ogni giocata in corrispondenza ad ogni valore della sommatoria raggiunta: in due parole un data base 5 x 31.
Quindi farei giocare Espertino contro se stesso migliaia di partite in modo da popolare il data base.
A questo punto Espertino è pronto a giocare contro chiunque. Ad ogni valore della sommatoria di una partita, sceglierá la giocata corrispondente al punteggio più alto.
Ho risposto alla sua domanda?
Il discorso dell’apprendimento macchina (ML) sui microcontrollori è qualcosa di davvero molto recente, questo perchè di norma la potenza e la memoria necessarie per far girare l’algoritmo e tutti i dati richiesti è davvero oneroso.
Che io sappia ad oggi l’applicazione di ML su microcontrollori (Arduino soprattutto) avviene attraverso reti di Deep Learning utilizando un framework apposito chiamato “TensorFlow lite”.
Esiste anche un libro di recente pubblicazione: “TinyML – Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers”. Sono argomenti complessi che richiedono conoscenze anche di Python ma non solo.
La sua idea, seppur valida, non credo che si possa etichettare come ML, per il semplice fatto che se lei fa ” giocare Espertino contro se stesso migliaia di partite ” , la macchina non può apprendere. Affinchè possa apprendere occore fornirgli degli input provenienti da casi reali (ad esempio partite tra persone) e devono essere davvero tanti casi.
Difficile in un commento fare un discorso più ampio, ma il suo progetto resta validissimo anche se non credo si tratti di apprendimento macchina.
Rivolgendomi al sig. Dall’Olio.
Se desidera sperimentare Python su schede di prototipazione in genere, e non necessariamente per progetti di ML che possono essere molto complessi, può sfruttare l’ambiente messo a disposizione da Zeerynth (https://www.zerynth.com/zerynth-studio/) che può permetterle di muovere i primi passi. L’ambiente è disponibile sia per Windows che per Linux e Mac. Personalmente non l’ho usato ma sembra promettere bene. Il materiale credo sia tutto in inglese ma se può esserle utile ben venga.
Saluti
Grazie lo farò..
Per ora ho sviluppato il gioco del 31 su ESPertino e sono in procinto di farlo giocare automaticamente contro un avversario casuale integrato in sè stesso per imparare le mosse vincenti. Ci vorrà del tempo e molta elettricità per riempire la matrice vincente ma son curioso di vedere come va a convergere.
Cordiali saluti e grazie dei consigli.