Low-code, no-code e ancora di più gli agenti generativi e i vari copilot rendono possibile programmare senza saper programmare. La nostra interazione con le macchine è sempre più di alto livello, tanto che oggi si riesce a creare un mockup funzionante o il prototipo di un’applicazione semplicemente dialogando in linguaggio naturale con un agente, senza sapere nulla o quasi di quanto c’è sotto. Lo stesso per l’intelligenza artificiale: da argomento e pratica per iniziati, smanettoni e nerd è diventato linguaggio comune e strumento alla portata di tutti.
A guardare bene, non c’è niente di nuovo: la storia dell’informatica è sempre stata una progressiva evoluzione che ci ha allontato dalla meccanica, dai circuiti, dalle valvole, dal silicio prima e da linguaggi macchina di basso livello (di astrazione) come Assembly verso una relazione più naturale e umana con i computer, con cui si interagisce con linguaggi sempre più vicini a quello umano. Si pensi all’abisso che separa C e Python a livello di astrazione.
I programmatori degli albori erano esperti di elettronica: la distinzione stessa tra software e hardware è arrivata solo molto più tardi.
Uno dei primi computer, l’ENIAC, era costituito da pannelli giganteschi fatti di valvole e cavi: la programmazione del computer significava lo spostamento fisico dei circuiti.

Indice degli argomenti:
La macchina di Turing
Per capire cosa si intende è sufficiente aver visto anche solo qualche scena del bellissimo film The Imitation Game, di Morten Tyldum, in cui è ricostruita la vicenda che ha avuto per protagonista uno dei pionieri dell’informatica e dell’intelligenza artificiale coe Alan Turing e il suo calcolatore, Bomba, con cui sono stati decodificati i messaggi dei nazisti durante la Seconda Guerra Mondiale, permettendo all’esercito inglese di conoscere in anticipo le strategie e le tattiche dei nemici tedeschi. Gran parte del film si svolge di fronte a questa gigantesca macchina che Turing e gli altri programmatori, matematici e scienziati programmano modificando i circuiti.

Capire l’intelligenza artificiale
Per capire l’intelligenza artificiale non sono sufficienti brevi tutorial, serve studiare molto e continuare ad approfondire, anche per comprendere cosa ha significato l’accelerazione incredibile di questi ultimi mesi. I fondamentali, in ogni caso, rimangono. Forse è più utile, anzi, conoscere un tool in meno tra quelli usciti negli ultimi cinque giorni, e comprendere meglio cosa significa davvero machine learning, perchè le macchine imparano, cosa significa apprendimento profondo (o deep learning) e così via.
In questo articolo si prova a tracciare un possibile percorso attraverso 4 libri, per costruirsi una conoscenza un po’ più solida e permettere di riconoscere e distinguere gli hype dalle mutazioni di lungo periodo, una vera transizione o evoluzione tecnologica dal marketing degli uffici stampa.
Comprendere davvero l’intelligenza artificiale significa costruire una cultura tecnica e critica capace di unire:
- capacità operative nell’analisi e modellazione dei dati;
- comprensione teorica delle basi matematiche e statistiche;
- conoscenze ingegneristiche per la progettazione di soluzioni scalabili.
Questo articolo propone un percorso fondato su quattro libri selezionati per offrire un quadro ampio ma coerente, utile sia a chi muove i primi passi, sia a chi vuole rinforzare uno o più degli ambiti qui sopra. Una premessa è doverosa: l’utilizzo della data science e lo sviluppo di soluzioni di intelligenza artificiale rimangono attività di team, in cui diverse sono le competenze necessarie: non esiste nessuno che le possieda tutte con lo stesso livello di profondità.
“Python Data Science Handbook” di Jake VanderPlas
Dalla data science al machine learning

Il primo libro suggerito guida il lettore attraverso l’intero processo di data mining, con un approccio pratico e sistematico. Copre i passaggi fondamentali del framework CRISP-DM, il modello con cui i dati sono raccolti, integrati, puliti, preparati e poi utilizzati per la modellazione e la successiva validazione, fermandosi proprio a un passo dal vero e proprio deployment della soluzione in produzione, argomento più da machine learning engineer che da data scientist.
Il libro ha una prima parte dedicata alla comprensione delle strutture dati e alla manipolazione necessaria a esplorare e rappresentare le informazioni attraverso la preparazione e pulizia dei dati e lo sviluppo delle successivi analisi descrittive e diagnostiche, fino alla data visualization. Sono approfonditi temi come la gestione di vettori, matrici, dataframe e loro rappresentazione, inclusa l’analisi statistica di base. Il linguaggio di programmazione scelto è Python e sono approfondite le librerie necessarie alla manipolazione di vettori numerici come Numpy, dati in forma tabellare come Pandas, librerie per la data visualization come Matplotlib e Seaborn.
Nella seconda parte, si entra nel vivo del machine learning. Quello che oggi molti chiamano machine learning “tradizionale” o classico, per distinguerlo dal deep learning, che ne è un sotto-insieme, e ancora di più dalla generative AI.

Si tratta pertanto, di familiarizzare e praticare strumenti, algoritmi e soluzioni per la modellazione anzitutto di dati strutturati, attraverso apprendimento supervisionato e non supervisionato. Sono infatti descritti, con esempi ed esercizi guidati sia gli algoritmi di predizione numerica coe la regressione lineare e polinomiale o diversi modelli per la classificazione secondo variabili categoriali, come k-nearest-Neighbour, Naïve Bayes, Support Vector Machine, Decision and Classification Tree e Random Forest, sia algoritmi che permettono di esplorare e svelare la struttura dei dati, con gli algoritmi per il clustering come k-Means e Gaussian Mixture Model o per la riduzione delle dimensioni e l’analisi delle componenti principali (Principal Component Analysis o PCA).

Al termine di questo percorso, il lettore è in grado di:
- costruire e gestire pipeline di analisi dei dati end-to-end;
- applicare algoritmi supervisionati e non supervisionati;
- interpretare risultati e selezionare metriche appropriate per valutare le capacità predittive e di generalizzazione dei modelli creati;
- visualizzare pattern e insight e saperli spiegare in maniera comprensibile.
Il volume fornisce molti esercizi guidati nella risoluzione di problemi concreti, quali, ad esempio:
- analisi del churn in un’azienda di telecomunicazioni, aiutando l’impresa a prevedere i clienti a rischio abbandono;
- previsione del traffico dalle previsioni meteo;
- segmentazione della clientela
L’autore affronta anche alcuni problemi legati a dati non strutturati, come la classificazione delle immagini, il filtraggio di dati rumorosi, la compressione di fotografie, mostrando le potenzialità anche in presenza di dati non strutturati anche dei modelli “shallow”. Tuttavia, per questi problemi e tipologia di informazioni dati sono i modelli di approfondimento profondo (deep learning) a offrire le performance migliori. Sono questi algoritmi, proprio l’oggetto del secondo libro proposto.
“Deep learning with Python” di François Chollet
Dal machine learning al deep learning: comprendere le reti neurali artificiali

Il deep learning ha rappresentato la “big thing” degli anni 2010, diffondendo strumenti molto più potenti per il trattamento dei dati non strutturati. Sono modelli di deep learning anche i modelli trasformers alla base delle applicazioni di intelligenza artificiale generativa, come i modelli fondazionali e pre-allenati, come ChatGPT, Gemini, Claude, ecc.
Non a caso, il manuale è stato scritto dal creatore di Keras ed ex ingegnere di Google, François Chollet, ed è pensato per sviluppatori e analisti che conoscono il machine learning che desiderano approfondire la costruzione di reti neurali artificiali, con un approccio molto pratico che alterna codice, teoria applicata e casi d’uso realistici, con esercitazioni ed esempi risolti con Keras e TensorFlow.
Il libro parte dalle basi teoriche e da lì avvia un percorso guidato per l’implementazione di modelli con Keras e TensorFlow, fino ad arrivare all’applicazione di casi d’uso molto avanzati. Il libro è chiaramente didattico: ogni concetto è spiegato attraverso esempi pratici e osservazioni sulle buone pratiche di sviluppo. Anche qui, c’è una breve introduzione ai concetti teorici fondamentali, come vettori, matrici, tensori, algoritmi di ottimizzazione come stochastic gradient descent, funzioni di attivazione. Si entra poi nel vivo dei principali campi di applicazione come computer vision, text mining, analisi delle serie temporali e delle architetture più adatte a gestirle – reti convoluzionali (CNN), recurrent-neural-network (RNN), LSTM, fino ai modelli pre-allenati e alle reti generative avversarie (GAN).

Tra le molte applicazioni oggetto di analisi ed esercitazioni, si possono trovare casi tipici dell’apprendimento profondo come:
- la classificazione di immagini di radiografie toraciche usando una rete convoluzionale (CNN);
- la costruzione di una rete LSTM per analizzare il sentiment nei tweet e prevedere il sentiment relativo a uno specifico argomento;
- la creazione di schede prodotto per un e-commerce tramite applicazione di modelli transformer.
Anche in questo caso, si tratta di un approfondimento di modalità di manipolazione e gestione dei dati con un approccio fortemente sperimentale. Non si approfondisce però come trasformare i modelli sviluppati sui notebook dei data scientist nei prodotti che tutti noi incontriamo interagendo con applicazioni, piattaforme web, social network, e-commerce, ecc.
Come passare insomma dalla data science al machine learning engineering e allo sviluppo di applicazioni software. È questo l’oggetto del terzo libro proposto.
“Machine Learning Engineering with Python” di Andrew P. McMahon
Dalla prototipazione alla produzione

I data scientist sono più interessati alla sfida algoritmica e matematico-statistica. La differenza oggi la fa sempre di più la capacità di creare applicativi basati su modelli di machine learning scalabili, robusti e affidabili. Ed è qui che entra in gioco il machine learning engineering, che permette di trasformare un modello da prototipo sperimentale ad applicazione software, usando metodologie e competenze del software development, DevOps, MLOps.

Il testo si apre con i concetti fondamentali del ML engineering e del MLOps (Machine Learning Operations) la composizione di un team di Machine learning, di cui sono identificati i diversi ruoli (data scientist, ML engineer, MLOps specialist, ecc), e di cui sono presentate le principali sfide per portare i modelli in produzione.
Successivamente si approfondisce il tema dello sviluppo ML dal punto di vista ingegneristico, affrontando temi come la modularità e il riuso del codice, il deployment e l’utizzo di architetture a microservizi, container Docker, serverless (AWS Lambda), e tool avanzati come ZenML e Kubeflow per l’automazione delle pipeline, per concludere con l’utilizzo di tool come Apache Spark per l’elaborazione di dati di grandi dimensioni.
Il libro si conclude con un approfondimento dedicato ai modelli generativi, ai Large Language Models (LLM), con attenzione particolare per le sfide dei modelli LLM in ambiente di produzione, tra cui risorse computazionali, costi, sicurezza.
Con questo supporto teorico e pratico, i data scientist possono acquisire le competenze di base per lo sviluppo e il deployment dei loro modelli, permettendo di dialogare e interagire meglio con sviluppatore software, data engineer, ML engineer.
Qui ci si potrebbe fermare: per sviluppare un modello, allenarlo, validarlo e portarlo in produzione sono sufficienti queste conoscenze (arricchite da anni di pratica ovviamente). In nessuno dei testi menzionati fin qui si approfondiscono troppo gli aspetti matematici e algoritmici: sono testi molto orientati (giustamente) al saper fare. Per chi vuole avere una competenza più completa, occorre però aggiungere un mattone fondamentale: la comprensione delle strutture matematiche che hanno permesso lo sviluppo dei modelli di apprendimento automatico. È questo l’oggetto dell’ultimo libro di questa serie.
“Mathematics for Machine Learning” di Deisenroth, Faisal, Ong
I concetti matematici base per capire davvero il machine learning

Per chiudere, un testo pensato per chi voglia rinforzare anche le basi matematiche necessarie a comprendere davvero come operano gli algoritmi di machine learning, con un approccio che, pur non essendo solo teorico, parte dalla comprensione degli aspetti geometrici, matematici e statistici, per poi applicarli all’interno di modelli di machine learning a problemi reali. Si tratta di un testo certo non esaustivo, ma utile a fornire almeno una conoscenza entry-level dei concetti matematici di base.

Il libro permette di acquisire competenze base nelle aree fondamentali a comprendere il modo in cui le macchine imparano, quali sono le strutture di dati e come trattarle.
Un testo utile a ridurre quel po’ di mistero che circonda ancora l’AI, perlomeno nei modelli shallow, che sono a tutti gli effetti esplicabili e dei quali possono essere riconosciute le ragioni e le scelte, ed eventualmente individuati pregiudizi ed errori.
Il lettore è invitato anzitutto a familiarizzare con l’algebra lineare e con concetti quali spazi vettoriali, vettori, matrici, tensori, calcolo vettoriale e matriciale. Il secondo grande tema trattato è quello del calcolo differenziale, derivate gradienti, algoritmi di ottimizzazione. Infine, sono riprese le basi di probabilità e statistica, le distribuzioni, i teoremi di Bayes, i fondamenti della statistica descrittiva e inferenziale.
Tre campi della matematica che chiunque voglia occuparsi di intelligenza artificiale con consapevolezza dovrebbe padroneggiare. Nella seconda parte, questi concetti matematici di base sono applicati all’interno dei modelli di machine learning.
Conclusioni
Questi quattro libri coprono uno spettro ampio ma coerente di contenuti: dall’analisi dei dati alla matematica, dall’ingegneria del machine learning alla comprensione concettuale dell’apprendimento e costituiscono una base solida per chiunque voglia costruire modelli e sistemi intelligenti, comprendendo meglio cosa è e come funziona l’intelligenza artificiale.