Paithon Book Paithon Book

Il Libro di Intelligenza Artificiale che spiega due volte.

Il Libro di Intelligenza Artificiale che spiega due volte.#

L’intelligenza artificiale ha la fama di essere una materia per pochi, e in giro si trovano soprattutto due cose: articoli che promettono tutto senza spiegare niente, e testi che spiegano bene ma danno per acquisiti corsi universitari di analisi e statistica. Questo libro prova a stare nel mezzo, in italiano, partendo da zero e senza saltare i passaggi difficili. Ogni concetto che conta è spiegato due volte, una con un’analogia di tutti i giorni e una con la notazione e le formule per intero. Non è la stessa spiegazione in versione corta e in versione lunga: sono due strade per lo stesso posto, e prendendone una non perdi l’altra.

Invece di cercare di produrre un programma che simuli la mente adulta, perché non provare piuttosto a produrne uno che simuli quella di un bambino?

Alan Turing, Computing Machinery and Intelligence, 1950

E «due volte» ha un secondo senso, che riguarda come queste pagine sono scritte. Le stende un’intelligenza artificiale; le rilegge un’altra AI, che alla stesura non ha partecipato e ha un compito solo, cercare l’errore; e alla fine passano da me, ed è quel passaggio a decidere che cosa resta. Questo libro è, alla lettera, l’AI che spiega se stessa. Perché il metodo è severo, su che cosa il libro scommette, e perché il segno qui sopra è un triangolo impossibile, sta nella Prefazione.

Il comando per scegliere è in alto nella barra, . Vale per tutto il libro in un colpo solo, e si cambia quando vuoi.

Questa versione online del libro è gratuita ed è in continuo aggiornamento per stare al passo con le innovazioni di questa materia: aggiungiamo regolarmente sezioni, argomenti ed esempi in Python. Il codice usa PyTorch, NumPy e scikit-learn, e per provarlo non devi installare niente. Dove in alto compare Esegui il codice, quel capitolo ha un notebook: una copia della pagina in cui i blocchi di codice, invece di stare lì solo da leggere, si eseguono uno dopo l’altro. Il collegamento lo apre su Google Colab, un servizio gratuito che fa girare il codice su una macchina di Google (serve un account Google). Qualche pagina è essa stessa un notebook, e si riconosce dall’icona a razzo 🚀 in alto a destra: lì il codice si esegue restando nel libro. Altrove si legge qui e si copia dove preferisci.

Che cosa è cambiato, e quando, sta scritto: Aggiornamenti è il registro delle sezioni nuove e delle correzioni, una voce per pubblicazione, con il link alla pagina toccata. Questa è la versione 1.6.3 (17 agosto 2026).

Scarica il libro intero in PDF · versione 1.6.3

Leggilo nel browser

Tutti i capitoli in un file solo, impaginato per la lettura e per la stampa. Dove qui il libro anima una figura, là trovi tre fermi immagine e l’indirizzo per vederla muoversi. Leggerlo nel browser vuol dire aprirlo su Zenodo, l’archivio del CERN dove il libro è depositato: quel collegamento è il suo DOI, l’identificativo permanente che porta sempre all’ultima versione, la mostra pagina per pagina e dà la scheda per citarla.


Il percorso#

Trentacinque capitoli, dall’alfabeto (Python e matematica) alle frontiere (Transformer, modelli di diffusione, agenti LLM, generazione audio, produzione con l’MLOps). Se qui sotto trovi molti nomi che non ti dicono niente, è normale, ed è il punto: sono le cose che imparerai. I capitoli si leggono nell’ordine, e l’ordine è pensato per costruire un mattone alla volta, ognuno dando per acquisito quello prima; chi le basi già le ha salta dove gli pare.

Introduzione Che cos'è l'intelligenza artificiale, da ELIZA a oggi, e il primo programma da eseguire. Python Il linguaggio dell'AI: basi, NumPy, pandas e matplotlib. Richiami di matematica Algebra lineare, ottimizzazione, probabilità, teoria dell'informazione, analisi numerica e la matematica di un LLM. Machine Learning Imparare dai dati: apprendimento supervisionato, overfitting e metriche, alberi ed ensemble, SVM, clustering e riduzione della dimensionalità, dati che cambiano. Reti Neurali Dal percettrone alla backpropagation: come una rete impara davvero. PyTorch Tensori, autograd, moduli e training loop: il framework del libro. GPU e calcolo parallelo Sotto il cofano dell'hardware: architettura, memoria, kernel, GEMM e tensor core, Flash Attention e parallelismo su più GPU. Deep Learning Reti convoluzionali, ottimizzazione, regolarizzazione, architetture storiche e una rete sola per molti compiti. Visione Artificiale Classificare, riconoscere, segmentare: le macchine che vedono. Reinforcement Learning Imparare per tentativi: i bandit, gli MDP e le funzioni di valore, i metodi Monte Carlo, il Q-learning. Deep Reinforcement Learning Quando il RL incontra le reti profonde: DQN e policy gradient, controllo continuo, RL basato su modello, imitazione, offline RL, esplorazione e reward hacking. Natural Language Processing Dal testo ai numeri: token, embedding, modelli n-gram, reti ricorrenti, traduzione e attenzione, entità, parsing, dialogo e chatbot. Transformers L'architettura che ha cambiato tutto: self-attention, GPT e BERT, i grandi modelli linguistici, Mixture of Experts, il post-addestramento (RLHF, DPO), retrieval e RAG, multimodalità e multilingua. Attenzione lineare Oltre il costo quadratico: dal trucco del kernel alla delta rule, con RetNet, RWKV e xLSTM. State Space Model Da S4 a Mamba: sequenze a tempo lineare dai sistemi dinamici, fino a Mamba-2 e Mamba-3. Visione e linguaggio Modelli che vedono e parlano: addestramento contrastivo, connettori, fusione precoce e il costo del dettaglio. Agenti e applicazioni LLM Quando gli LLM agiscono: tool use e ReAct, RAG avanzato, context engineering, valutazione. Prompt, contesto e loop Programmare gli LLM a parole su tre livelli concentrici: prompt engineering, context engineering e loop engineering. Sistemi multi-agente Quando gli agenti sono molti: costo del coordinamento, topologie, consenso, apprendimento per rinforzo multi-agente e sciami. Audio oltre la voce Dallo spettrogramma alla generazione: AudioSet, wav2vec, codec neurali, MusicGen. Speech Recognition Dalla voce al testo e ritorno: allineamento, CTC, Whisper, sintesi vocale. GAN Due reti che si sfidano: il gioco avversario che genera immagini. Modelli di Diffusione Rumore e ritorno: da DDPM a Stable Diffusion e ai Diffusion Transformer. Verosimiglianza esatta I modelli che sanno dire quanto è probabile un dato: un pixel alla volta, oppure deformando lo spazio. Modelli a energia Il paesaggio invece della probabilità: da Hopfield e Boltzmann allo score matching, la lingua in cui sono scritte diffusione e JEPA. Auto-supervisione Il paradigma che regge quasi tutto il libro, detto una volta sola: come si fabbrica un segnale dai dati, le quattro famiglie (contrasto, distillazione, ridondanza, ricostruzione) e il dibattito sul rinforzo. World Model Simulatori interni della realtà: dai sogni di Ha & Schmidhuber alla via di LeCun (JEPA). Graph Neural Network Reti che imparano su dati a grafo: message passing, GCN, GraphSAGE e GAT, dalle molecole alla scoperta di farmaci e alle raccomandazioni. Sistemi di Raccomandazione Dal Netflix Prize alla raccomandazione neurale: i modelli che scelgono per noi. Serie temporali Prevedere dal passato: decomposizione e modelli classici (ARIMA, Holt-Winters), validazione temporale e metriche, forecasting neurale (TCN, DeepAR, N-BEATS, Transformer e foundation model). Physics-Informed Neural Networks Le leggi della fisica dentro la loss: reti che rispettano le equazioni differenziali. MLOps Dal notebook alla produzione: versioning, serving, monitoraggio del drift, LLMOps e deploy. Interpretabilità e XAI Aprire la scatola nera: modelli trasparenti e importanza delle feature, spiegazioni locali (LIME, SHAP, controfattuali), attribuzione (Grad-CAM, integrated gradients) e interpretabilità meccanicistica. AI responsabile Equità e bias algoritmico, privacy (differential privacy, federated learning) e robustezza agli attacchi avversari, attaccare e difendere un LLM (prompt injection, jailbreak), allineamento (RLHF, DPO) e governance (l'AI Act europeo). Conclusioni Bilancio del viaggio e letture per proseguire.

Livelli di Complessità#

Il libro presenta due livelli di complessità: Elementare e Superiore:

  • Elementare: spiega i concetti nel modo più semplice e accessibile possibile, con analogie concrete e quotidiane. È ideale per chi è alle prime armi negli argomenti trattati nel libro.

  • Superiore: approfondisce i concetti in modo più formale e dettagliato. Si presume che il lettore abbia una comprensione di base consolidata e sia pronto per esplorare aspetti più complessi.

Alternare la lettura tra questi due livelli può favorire una comprensione più profonda: si può leggere un capitolo tutto all’Elementare, tutto al Superiore, o costruire gradualmente la propria competenza passando dall’uno all’altro.

Come si sceglie. Ogni concetto ha due schede, e si apre quella che si vuole. Ma se sai già da che parte vuoi stare, in alto nella barra (accanto alla ricerca e al chiaro/scuro), c’è un’icona a due barrette: la prima piena e la seconda vuota quando sei all’Elementare, entrambe piene quando passi al Superiore. Premendola imposti il livello di tutto il libro in un colpo, e la scelta resta salvata nel browser: la ritrovi al ritorno, capitolo dopo capitolo.

Le due cose convivono. L’interruttore decide da dove parte ogni pagina; aprire una singola scheda al livello opposto resta un’eccezione locale, che non contagia i paragrafi dopo. Se leggi all’Elementare e vuoi sbirciare una formula, sbirciala: due paragrafi più sotto sarai di nuovo all’Elementare.

Ad esempio, ecco la funzione ReLU nelle due modalità:

La ReLU è un filtro, e per parlare di filtri serve una scrittura che conviene fissare subito: \(f(x)\) si legge «quello che il filtro restituisce quando gli si dà \(x\)». La \(x\) è il numero che entra, \(f(x)\) quello che esce.

Immagina allora uno sportello che smista movimenti di denaro: entra una somma \(x\) in Euro (€) e lo sportello lascia passare soltanto gli importi positivi. Se \(x\) è positivo, esce \(x\) tale e quale; se \(x\) è negativo o zero, cioè un movimento che toglierebbe denaro invece di aggiungerne, non passa niente ed esce \(0\). Tutto qui: la ReLU lascia passare quello che entra quando è positivo, e blocca completamente il resto.

Esempi:

\[\begin{split} \begin{aligned} x &= 10, & f(x) &= 10 \\ x &= -3, & f(x) &= 0 \end{aligned} \end{split}\]

E perché occuparsene? Perché un filtro così banale, ripetuto milioni di volte, è uno dei mattoni delle reti neurali: è la regola che decide quali segnali proseguono dentro la rete e quali si fermano lì. Il capitolo sulle reti neurali racconta perché proprio questa funzioni meglio di alternative in apparenza più raffinate.

La funzione di attivazione ReLU (Rectified Linear Unit) è definita come:

\[ f(x) = x^+ = \max(0, x) \]

Questa funzione può anche essere definita «a tratti» (piecewise) nel seguente modo:

\[\begin{split} f(x) = \begin{cases} x & \text{se } x > 0, \\ 0 & \text{altrimenti}. \end{cases} \end{split}\]

Questa funzione prende un input \(x\) e restituisce \(x\) se \(x\) è positivo; altrimenti, restituisce zero. La ReLU è ampiamente utilizzata nelle reti neurali perché introduce una non linearità essenziale e la sua derivata vale esattamente \(1\) per \(x > 0\): durante la backpropagation, lungo i cammini attivi, il gradiente non si attenua per colpa dell’attivazione, e sparisce la saturazione che affligge sigmoide e tangente iperbolica.

Attenzione però a non chiedere alla ReLU più di quanto dia. Il gradiente che attraversa uno strato è \(\mathbf{W}^\top \mathrm{diag}(\mathbb{1}[z>0])\): l’attenuazione la producono i pesi e le unità spente, non l’attivazione. Che il segnale sopravviva a molti strati dipende quindi dalla scala dell’inizializzazione, e con quella sbagliata si vede subito: attraversando cinquanta strati di sole ReLU, con la scala di Xavier (giusta per la tangente iperbolica) il gradiente si attenua di sette ordini di grandezza, e con una scala un po’ troppo grande esplode di otto. È proprio la ReLU a richiedere una scala sua, il fattore \(2\) di He, perché azzera metà delle unità: la frazione di derivate nulle, misurata, è \(0{,}50\).

In \(x = 0\) la funzione non è derivabile (il grafico ha un punto angoloso); il sottodifferenziale è l’intervallo \([0, 1]\) e nella pratica, PyTorch compreso, si adotta la convenzione \(f'(0) = 0\).


Supporta il progetto#

Ogni progetto ha bisogno di supporto per crescere e migliorare. I progetti open source come questo si basano sul sostegno e l’entusiasmo della comunità. Se questo libro ti è stato utile o credi nel suo valore, ecco come puoi mostrarmi il tuo apprezzamento:

  • Metti una ⭐ e condividi il progetto GitHub Paithon Book

  • Supporta il progetto per contribuire al suo sviluppo ❤️

  • Aiutaci a scoprire errori e migliorare il progetto: selezionando un pezzo di testo in qualunque pagina compare un pulsante che apre una segnalazione (una issue) già compilata su GitHub, dove la correzione viene discussa e poi accolta.

  • Invia i tuoi feedback ✉ a info@paithon.it. Saranno utilizzati esclusivamente per migliorare e arricchire il libro.