Funzioni e applicazioni: perché ogni modello di IA è una funzione
Dominio, immagine, iniettività, composizione, inversa, funzioni di più variabili e convessità — con i grafici della sigmoide, di ReLU e del paesaggio dell’errore.
Serie Basi di IA Parte 6 di 52
- Mappa dell’intelligenza artificiale: che cos’è ciascuna cosa e come si incastra tutto
- Breve storia dell’intelligenza artificiale: da Turing ai modelli linguistici
- Dati, modello, addestramento, inferenza: i concetti di base su un unico esempio
- Come leggere la notazione matematica: simboli, indici, sommatorie e quantificatori
- Insiemi e relazioni: i mattoncini con cui si costruiscono le definizioni nell’IA
- Funzioni e applicazioni: perché ogni modello di IA è una funzione
- Logica e dimostrazioni: le regole con cui si ragiona nell’IA
- Grafi e alberi: la struttura su cui poggiano la ricerca e le reti neurali
- Algebra lineare per l’apprendimento automatico: vettori, matrici e perché l’IA soprattutto moltiplica
- Derivate, gradiente e regola della catena: come un modello capisce in quale direzione imparare
- Discesa del gradiente: come impara un modello
- Che cos’è la probabilità: dal lancio di un dado agli assiomi di Kolmogorov
- Probabilità condizionata e teorema di Bayes: come cambiare una stima quando scopri qualcosa di nuovo
- Variabile aleatoria e funzione di ripartizione: una sola funzione che dice tutto sulla distribuzione
- Funzione di densità e funzione di massa: perché una variabile continua ha probabilità zero in un punto
- Valore atteso, varianza e covarianza: dove si trova una distribuzione, quanto è larga e che cosa è legato a che cosa
- Panoramica delle distribuzioni di probabilità: Bernoulli, binomiale, Poisson, uniforme, normale ed esponenziale
- Legge dei grandi numeri e teorema del limite centrale: perché le medie si comportano in modo così prevedibile
- Statistica e stima dei parametri: massima verosimiglianza, MAP e intervalli di confidenza
- Teoria dell’informazione: entropia, entropia incrociata e divergenza KL — da dove vengono le funzioni di perdita
- Ricerca nello spazio degli stati: BFS, DFS, UCS e A* con animazioni
- Giochi e avversari: minimax, potatura alfa-beta e Monte Carlo tree search
- Soddisfacimento di vincoli: backtracking, propagazione dei vincoli e AC-3 su un sudoku e una mappa delle regioni ceche
- Logica e sistemi basati sulla conoscenza: concatenazione in avanti e all’indietro, risoluzione e sistemi esperti
- Pianificazione: STRIPS, il mondo dei blocchi, euristiche dal rilassamento e pianificazione negli agenti IA
- Ricerca locale e ricottura simulata: un commesso viaggiatore tra i capoluoghi di regione cechi
- Algoritmi genetici: popolazione, incrocio, mutazione e selezione su uno zaino per l’escursione
- Strategie evolutive e programmazione genetica: dalla regola di un quinto alla legge di Keplero
- Ottimizzazione con colonie di formiche: come una traccia di feromone trova un percorso breve
- Ottimizzazione a sciame di particelle: inerzia, esperienza propria ed esperienza dello sciame
- Neuroevoluzione: evoluzione dei pesi e della forma delle reti neurali e l’algoritmo NEAT
- Insiemi fuzzy e funzioni di appartenenza: come scrivere «un po’ caldo»
- Logica fuzzy e probabilità: perché «un po’ caldo» non significa «probabilmente caldo»
- Logica fuzzy: t-norme, implicazioni e regole SE–ALLORA
- Controllo fuzzy: Mamdani e Sugeno, dal ventilatore al pendolo inverso su un carrello
- Clustering fuzzy: l’algoritmo fuzzy c-means e i punti tra i cluster
- Sistemi neuro-fuzzy (ANFIS): regole fuzzy che imparano dai dati
- Catene di Markov: matrice di transizione, distribuzione stazionaria e PageRank
- Modelli di Markov nascosti: l’algoritmo di Viterbi e il casinò disonesto
- Reti bayesiane: perché l’erba è bagnata e che cosa significa per l’irrigatore
- Filtro di Kalman: come stimare da misure imprecise dove si trova un’auto e a che velocità va
- Tipi di apprendimento automatico: supervisionato, non supervisionato, semi-supervisionato e altri
- Prompt, contesto e RAG: come dare a un modello le informazioni giuste
- Autoencoder variazionali (VAE): immagini nuove da uno spazio latente continuo
- Reti generative avversarie (GAN): il falsario contro il detective
- Modelli di diffusione: come il rumore puro diventa un’immagine
- Processi decisionali di Markov: stati, azioni, ricompense ed equazioni di Bellman
- Q-learning e DQN: imparare il valore delle azioni, dalla tabella alla rete neurale
- Policy gradient e PPO: imparare direttamente la politica
- Come funziona un agente IA: un modello linguistico in un ciclo con strumenti
- Programmare con agenti IA: incarico, test e controllo
- Valutazione e sicurezza dei sistemi di IA: come misurare e come sorvegliare
Programma completo della serie 52 di 83 argomenti pubblicati
- Che cos’è una funzione, il suo dominio e la sua immagine — e quali funzioni incontrerai più spesso nell’IA.
- Che cosa significano iniettiva, suriettiva e biiettiva, perché una rete neurale è una composizione di funzioni e quando esiste l’inversa.
- Perché la funzione di perdita è un paesaggio e perché la convessità conta quando se ne cerca il fondo.
Utile sapere prima: Come leggere la notazione matematica: simboli, indici, sommatorie e quantificatori, Insiemi e relazioni: i mattoncini con cui si costruiscono le definizioni nell’IA
Ogni modello di intelligenza artificiale è una funzione. Un classificatore di spam prende un’e-mail e restituisce «spam» o «non spam», un modello linguistico prende un testo e restituisce le probabilità della parola successiva, una rete neurale è una funzione composta da migliaia di funzioni più piccole. E l’apprendimento non è altro che la ricerca della funzione giusta.
La parte precedente si è chiusa con la definizione di funzione come relazione speciale. Qui ripartiamo da lì: che aspetto hanno le funzioni, quali proprietà hanno, come si compongono e perché tutto questo conta nell’IA.
1. Che cos’è una funzione
Definizione — funzione (applicazione)
Una funzione f : X → Y associa a ogni elemento x ∈ X esattamente un elemento f(x) ∈ Y. La parola applicazione significa la stessa cosa.
X è il dominio, Y il codominio (insieme di arrivo). L’immagine della funzione è l’insieme dei valori che essa assume davvero: f(X) = {f(x) : x ∈ X} ⊆ Y.
Il grafico della funzione è l’insieme delle coppie {(x, f(x)) : x ∈ X} ⊆ X × Y.
Una funzione è un distributore automatico: inserisci un ingresso ed esce esattamente un’uscita — sempre la stessa. Il dominio dice che cosa si può inserire nel distributore, il codominio che cosa ne può uscire. L’immagine è ciò che ne esce davvero.
La differenza tra codominio e immagine si vede nella sigmoide σ : ℝ → ℝ: potrebbe restituire qualsiasi numero reale, ma in realtà restituisce solo numeri tra 0 e 1. Per questo la si può leggere come una probabilità.
2. Le funzioni che incontrerai nell’IA
Una funzione di una variabile si capisce meglio dal suo grafico. Queste compaiono nell’intelligenza artificiale di continuo — come modelli, come funzioni di attivazione delle reti neurali o come funzioni di perdita:
- La funzione lineare è il modello più semplice — la regressione lineare non è altro.
- La funzione quadratica è la base dell’errore quadratico medio: la penalità cresce con il quadrato dello scarto.
- L’esponenziale e il logaritmo sono l’una l’inverso dell’altro; il logaritmo trasforma la moltiplicazione in addizione, ed è per questo che lo troverai in ogni funzione di perdita basata sulla probabilità.
- La sigmoide e tanh «schiacciano» qualsiasi numero nell’intervallo (0, 1), rispettivamente (−1, 1).
- ReLU lascia passare i numeri positivi e azzera quelli negativi. È così semplice che per molto tempo non si credeva potesse funzionare — oggi è la funzione di attivazione più usata.
3. Iniettiva, suriettiva e biiettiva
Definizione — funzione iniettiva, suriettiva e biiettiva
f : X → Y è iniettiva quando ingressi diversi danno uscite diverse: ∀x1, x2 : f(x1) = f(x2) ⇒ x1 = x2.
f è suriettiva quando raggiunge ogni elemento di Y: ∀y ∈ Y ∃x ∈ X : f(x) = y, cioè f(X) = Y.
f è biiettiva (corrispondenza biunivoca) quando è sia iniettiva sia suriettiva.
Iniettiva: nessuna coppia di ingressi condivide un’uscita — dall’uscita si capisce da dove è arrivata. Suriettiva: niente nell’insieme di arrivo resta abbandonato. Biiettiva: a ogni ingresso corrisponde esattamente un’uscita e viceversa — come in un guardaroba, dove ogni cappotto ha il suo scontrino.
Nell’IA quasi ogni modello è non iniettivo: un classificatore manda migliaia di foto diverse di gatti in un’unica classe, «gatto». L’informazione su quale foto fosse va così persa — e va bene, è proprio ciò che vogliamo da un classificatore. Al contrario, i modelli di compressione (autoencoder) cercano di essere «quasi iniettivi», perché dalla forma compressa si possa ricostruire di nuovo l’ingresso.
4. Composizione di funzioni
Definizione — funzione composta
Date f : X → Y e g : Y → Z, la funzione composta g ∘ f : X → Z è definita da (g ∘ f)(x) = g(f(x)).
La composizione è associativa, h ∘ (g ∘ f) = (h ∘ g) ∘ f, ma in generale non è commutativa: g ∘ f ≠ f ∘ g.
La composizione è una catena di montaggio: l’uscita di una macchina entra direttamente nella successiva. L’ordine conta — prima vestirsi e poi lavarsi non finisce come il contrario.
Prendiamo f(x) = 2x + 1 e g(x) = x2:
(g ∘ f)(3) = g(f(3)) = g(7) = 49
(f ∘ g)(3) = f(g(3)) = f(9) = 19
È esattamente così che è costruita una rete neurale. Ogni strato è una funzione — un passo lineare seguito da una funzione di attivazione — e l’intera rete è la loro composizione: f = f3 ∘ f2 ∘ f1. Una rete «profonda» è semplicemente una composizione lunga. E quando nelle prossime parti impareremo a derivare, la regola della catena ci dirà proprio come derivare le funzioni composte.
5. Funzione inversa
Definizione — funzione inversa
Una funzione f−1 : Y → X è l’inversa di f : X → Y quando f−1(f(x)) = x per ogni x ∈ X e f(f−1(y)) = y per ogni y ∈ Y.
Teorema. La funzione inversa esiste se e solo se f è biiettiva.
La funzione inversa fa un passo indietro: dall’uscita ricava l’ingresso. È possibile solo quando nessuna coppia di ingressi porta alla stessa uscita (altrimenti non sarebbe chiaro dove tornare) e quando ogni uscita porta davvero da qualche parte.
L’esponenziale e il logaritmo sono una coppia di funzioni inverse: ln(ex) = x. L’inversa della sigmoide è la funzione logit, logit(p) = ln(p / (1 − p)) — da una probabilità ricava di nuovo un numero reale qualsiasi. Per questo le uscite della rete prima della sigmoide o del softmax si chiamano «logit».
6. Funzioni di più variabili
Definizione — funzione di più variabili
Una funzione f : ℝn → ℝ associa al vettore (x1, …, xn) un numero; una funzione f : ℝn → ℝm associa a un vettore un vettore (funzione vettoriale).
La maggior parte delle funzioni reali prende più ingressi insieme: il prezzo di un appartamento dipende dalla superficie, dalla posizione e dall’età. Uno strato di una rete neurale prende un intero vettore e restituisce un altro vettore.
Una funzione di due variabili si può disegnare come una mappa: coloriamo ogni punto (x, y) secondo il valore f(x, y). Ecco la funzione di Himmelblau, un test classico per gli algoritmi di ottimizzazione. Le zone scure sono valli di valore basso, i punti bianchi sono i quattro minimi, nei quali la funzione vale zero:
È esattamente così che devi immaginare la funzione di perdita di un modello: l’ingresso sono i suoi parametri, l’uscita è l’errore. L’addestramento è la ricerca del punto più basso del paesaggio — solo che, invece di due dimensioni, il paesaggio di un modello reale ne ha milioni.
7. Monotonia e convessità
Definizione — funzione crescente e funzione convessa
f è strettamente crescente quando x1 < x2 ⇒ f(x1) < f(x2). Una funzione strettamente crescente è sempre iniettiva.
f è convessa quando per ogni x1, x2 e t ∈ [0, 1] vale f(tx1 + (1 − t)x2) ≤ t f(x1) + (1 − t) f(x2).
Teorema. Ogni minimo locale di una funzione convessa è anche globale.
Una funzione convessa ha la forma di una ciotola: il segmento tra due punti del grafico sta sempre sopra il grafico. In una ciotola c’è un solo fondo — chi scende sempre lo trova. Con una funzione non convessa puoi finire in una buca più piccola senza sapere nulla di quella più profonda lì accanto.
convessa: x², un solo minimo
non convessa: x⁴ − 3x² + x
La funzione non convessa x4 − 3x2 + x ha due minimi: quello globale in x ≈ −1,30 con valore ≈ −3,51 e quello locale in x ≈ 1,13 con valore ≈ −1,07. Chi comincia a cercare a destra e scende sempre finisce in quello peggiore. Le funzioni di perdita della regressione lineare e di quella logistica sono convesse — per questo il loro addestramento trova in modo affidabile la soluzione migliore. Le perdite delle reti neurali non sono convesse, e di come ci si convive parlerà la parte sulla discesa del gradiente.
8. Le funzioni nell’intelligenza artificiale
Ora tutto l’apprendimento automatico si può dire nel linguaggio delle funzioni:
- Un modello è una funzione fθ : X → Y con parametri θ — un’intera famiglia di funzioni, una per ogni scelta dei parametri.
- La funzione di perdita L : Y × Y → ℝ dice quanto costa la risposta ŷ quando quella giusta è y.
- L’apprendimento è la scelta di una funzione della famiglia: l’argmin su θ della perdita media — la funzione dei parametri che abbiamo appena disegnato come paesaggio.
- Le funzioni di attivazione (sigmoide, tanh, ReLU) trasformano strati lineari in una rete non lineare; senza di esse la composizione di funzioni lineari sarebbe di nuovo solo una funzione lineare.
9. Riepilogo
- Una funzione associa a ogni ingresso esattamente un’uscita; l’immagine è dove arriva davvero.
- Una funzione iniettiva non confonde due ingressi, una suriettiva copre tutto l’arrivo, una biiettiva ha l’inversa.
- La composizione di funzioni è una catena di montaggio — e una rete neurale è una composizione di strati.
- La funzione di perdita è un paesaggio sopra lo spazio dei parametri; un paesaggio convesso ha un solo fondo, uno non convesso può averne diversi.
La vedi diversamente? Scrivi a support@coden-app.com.