Una previsione plausibile con un conto impossibile
Un modello AI sostituisce una parte di un simulatore: riceve lo stato di un processo e prevede come si distribuirà una sostanza. Ogni valore, preso da solo, sembra ragionevole. Sommando, però, compaiono dodici chilogrammi dove ne erano disponibili dieci, senza ingresso dall’esterno. La previsione non è soltanto imprecisa: viola un’informazione che già conoscevamo. Possiamo correggerla senza ricominciare l’addestramento? E se il totale torna, possiamo finalmente considerarla giusta?
Questo approfondimento costruisce una risposta attraverso tre compartimenti e un vincolo di massa. Deriviamo la correzione minima, mostriamo perché può produrre quantità negative e aggiungiamo un secondo vincolo per evitarle. Poi distinguiamo una garanzia matematica reale da due promesse che non possiamo fare: conoscere la distribuzione vera e correggere un bilancio iniziale sbagliato. Tutti i numeri sono sintetici e calcolati con Python; non abbiamo addestrato una rete, simulato un fluido o validato un impianto EL-AI.
Che cosa sappiamo davvero del sistema
Consideriamo una sostanza distribuita in tre volumi di controllo. Usiamo direttamente le masse, in kg, non concentrazioni: x₁, x₂ e x₃ sono le quantità che vogliamo prevedere. Il sistema è chiuso rispetto a questa sostanza, senza sorgenti, reazioni che la producano o consumino, perdite o flussi esterni. La massa totale nota è M = 10 kg. Non stiamo affermando che ogni sostanza di ogni processo si conservi separatamente: l’ipotesi definisce questo esempio. Se esistono ingressi o uscite, il totale deve essere aggiornato dal relativo bilancio.
Una rete che minimizza un errore medio sui dati può imparare bene molte relazioni senza rispettare esattamente questa somma su ogni nuovo ingresso. Un vincolo morbido aggiunge una penalità alla funzione di addestramento; un vincolo rigido ammette soltanto risultati che soddisfano l’uguaglianza. Sono obiettivi diversi. Anche una penalità grande può lasciare un residuo, perché compete con altre parti dell’obiettivo e con una soluzione numerica non perfetta.
La correzione minima ha una definizione precisa
Indichiamo la previsione grezza con y = [8, 3, 1] kg. Somma dodici, quindi contiene un eccesso di due chilogrammi. Potremmo toglierli tutti dal primo compartimento, oppure distribuirli. Per scegliere dobbiamo dire che cosa significa “cambiare il meno possibile”. Qui minimizziamo la somma dei quadrati delle tre correzioni, trattando allo stesso modo un errore di un kg in qualunque compartimento. È una scelta di metrica, non una legge fisica.
Questa operazione si chiama proiezione: trova il punto ammissibile più vicino alla previsione secondo la distanza scelta. Prima imponiamo solo la somma, rinviando la non negatività. Introduciamo un moltiplicatore λ per il vincolo e costruiamo L = ½Σᵢ(xᵢ − yᵢ)² + λ(Σᵢxᵢ − M). Per minimizzare, la derivata rispetto a ogni xᵢ deve essere nulla: xᵢ − yᵢ + λ = 0. La correzione è quindi uguale su tutti i compartimenti; imponendo il totale troviamo quanto vale.
Otteniamo x = [22/3, 7/3, 1/3] kg, cioè circa [7,3333; 2,3333; 0,3333]. Il totale è esattamente dieci nell’aritmetica razionale usata dallo script. Togliere tutto l’eccesso dal primo compartimento darebbe [6,3,1], con correzione quadratica totale 4 kg²; distribuirlo uniformemente costa invece 4/3 kg². Per questo la proiezione preferisce il secondo risultato. La funzione quadratica è strettamente convessa e il vincolo è affine: il minimo è unico, quindi non dipende da una ricerca casuale o da un minimo locale.
Una garanzia utile, ma diversa dal conoscere la verità
Se la distribuzione vera fosse proprio t = [6,3,1], la correzione intuitiva sul primo compartimento sarebbe perfetta, mentre la proiezione no. La legge di conservazione non dice dove era l’errore. Tuttavia garantisce qualcosa di preciso: se t soddisfa il totale corretto, la proiezione euclidea non aumenta la distanza quadratica complessiva da t. Lo possiamo dimostrare senza conoscere i suoi tre valori.
Le doppie barre indicano la distanza euclidea, il cui quadrato è la somma degli errori al quadrato. Il vettore y − x ha componenti tutte uguali a λ; il vettore x − t ha somma zero, perché entrambi i totali sono M. Il loro prodotto scalare è quindi nullo: nell’espansione del quadrato il termine incrociato scompare. Nel caso A l’errore verso t scende da 4 a 8/3 kg². Due compartimenti prima esatti ora cambiano: il miglioramento riguarda la somma degli errori, non ogni componente separata.
Consideriamo anche y = [8,1,1]. La somma è già dieci, quindi la correzione è zero. Rispetto a t = [6,3,1] rimangono però 8 kg² di errore. Un modello può conservare perfettamente la massa e distribuire male quasi tutto. La conservazione è un requisito necessario del nostro sistema, non una misura completa di accuratezza. Non certifica neppure tempi di trasferimento, flussi locali, energia o reazioni che non abbiamo modellato.
Il totale torna, ma compare una massa negativa
Nel caso B la previsione è y = [−1,4,9] kg. Togliendo ancora 2/3 da ogni voce otteniamo [−5/3,10/3,25/3]. Il totale è dieci, ma il primo valore è ancora più negativo. Troncarlo a zero dopo la correzione porta il totale a 35/3, circa 11,6667 kg: abbiamo distrutto il vincolo appena imposto. Somma e non negatività devono essere soddisfatte insieme, non riparate una dopo l’altra con operazioni incompatibili.
θ è una soglia comune da determinare. La sua unità è kg. I compartimenti abbastanza grandi cedono la stessa quantità θ; quelli che scenderebbero sotto zero si fermano a zero. Nel caso B, fissando il primo a zero, gli altri devono sommare dieci: (4 − θ) + (9 − θ) = 10, quindi θ = 1,5 kg e x = [0; 2,5; 7,5] kg. I due vincoli sono rispettati contemporaneamente.
La forma con max non è un’intuizione lasciata senza prova. Nelle condizioni di ottimalità si aggiunge un moltiplicatore μᵢ non negativo per ciascun limite xᵢ ≥ 0. La derivata dà xᵢ − yᵢ + θ − μᵢ = 0 e la complementarità impone μᵢxᵢ = 0. Se xᵢ è positivo, μᵢ è zero e xᵢ = yᵢ − θ. Se xᵢ è zero, serve μᵢ = θ − yᵢ ≥ 0. Le due possibilità producono esattamente la formula precedente. L’insieme resta convesso, quindi queste condizioni individuano il minimo globale unico.
| Caso | Previsione (kg) | Solo somma (kg) | Somma + non negatività (kg) |
|---|---|---|---|
| A | [8; 3; 1] | [22/3; 7/3; 1/3] | [22/3; 7/3; 1/3] |
| B | [−1; 4; 9] | [−5/3; 10/3; 25/3] | [0; 2.5; 7.5] |
| C | [8; 1; 1] | [8; 1; 1] | [8; 1; 1] |

La metrica decide dove spostare la correzione
Abbiamo trattato i tre errori allo stesso modo. Se disponessimo di incertezze attendibili e indipendenti σᵢ², potremmo invece minimizzare ½Σᵢ(xᵢ − yᵢ)²/σᵢ². Correggere un compartimento molto incerto costerebbe meno che correggerne uno conosciuto bene. Con il solo vincolo di somma la derivazione dà xᵢ = yᵢ − σᵢ²(Σⱼyⱼ − M)/Σⱼσⱼ². Per y = [8,3,1] e varianze ipotetiche [4,1,1] kg² otteniamo [20/3,8/3,2/3] kg. Non abbiamo stimato quelle varianze da dati: servono a mostrare come cambia la domanda di ottimizzazione.
La garanzia sulla distanza deve usare la stessa metrica della proiezione: non possiamo cambiare i pesi e citare automaticamente il precedente risultato euclideo. Se le incertezze sono correlate, la matrice di covarianza cambia ancora il problema. Inoltre, passando da masse a concentrazioni cᵢ, il totale diventa ΣᵢVᵢcᵢ, con Vᵢ volume in m³ e cᵢ in kg/m³. Sommare semplicemente le concentrazioni su celle di volume diverso imporrebbe il vincolo sbagliato. La discretizzazione fa parte del significato fisico della formula.
Un vincolo sbagliato può peggiorare una buona previsione
Prendiamo una previsione quasi corretta, [5,9; 3; 1,1] kg, rispetto alla verità sintetica [6,3,1]. La somma è dieci e l’errore quadratico totale è 0,02 kg². Se imponiamo erroneamente M = 12, la proiezione aggiunge 2/3 kg a ogni voce e l’errore sale a circa 1,3533 kg². Non contraddice la dimostrazione precedente: la verità non appartiene all’insieme che abbiamo imposto. Un totale ricavato da una misura distorta, un flusso dimenticato o unità incoerenti può rendere una garanzia formale perfettamente precisa e fisicamente sbagliata.
È per questo che, quando il bilancio è incerto, una penalità morbida o una formulazione che includa l’incertezza possono essere più appropriate di un’uguaglianza rigida arbitraria. Nel nostro problema quadratico semplificato, aggiungere α/2(Σᵢxᵢ − M)² alla distanza dalla previsione lascia un residuo (Σᵢyᵢ − M)/(1 + nα). Per un eccesso iniziale di 2 kg e n = 3, α = 1 lascia 0,5 kg; α = 100 lascia circa 0,00664 kg. È una derivazione sul problema di correzione, non un benchmark di addestramento PINN. Mostra perché penalizzare e imporre non sono sinonimi.
Per verificare il residuo poniamo r = Σᵢxᵢ − M. La derivata del problema penalizzato dà xᵢ − yᵢ + αr = 0. Sommando sulle n componenti troviamo r = Σᵢyᵢ − M − nαr, da cui la frazione precedente. α è adimensionale perché entrambi i termini dell’obiettivo hanno unità kg². Questo calcolo non include la non negatività: se fosse necessaria, anche il problema penalizzato andrebbe risolto con quel vincolo.
Il collegamento con la ricerca, con i suoi limiti
Il preprint PINN-Proj di Baez e colleghi, arXiv v1 del 12 novembre 2025, studia proiezioni di integrali in reti informate dalla fisica. Abbiamo letto metodi ed esperimenti: cinque problemi differenziali, confronti tra penalità e proiezione, medie su dieci prove. Conservazione e accuratezza dello stato sono metriche separate; le tabelle non mostrano una vittoria universale sulla seconda. Il costo di addestramento cresce. Non abbiamo riprodotto quel lavoro, né estendiamo la nostra prova lineare a tutti i suoi vincoli quadratici.
PINN significa physics-informed neural network: una rete il cui addestramento incorpora anche il residuo di equazioni fisiche. Non tutte le reti surrogate sono PINN. Una correzione di uscita può essere usata dopo la previsione oppure inserita in una catena differenziabile durante l’addestramento; sono protocolli diversi da confrontare. Per il nostro vincolo affine la derivata della proiezione, con M costante, è I − 11ᵀ/n: elimina la componente uniforme delle variazioni. I è la matrice identità e 1 il vettore di tutti uno. Con non negatività compaiono cambi di insieme attivo e punti non differenziabili, per cui l’integrazione nel training richiede ulteriori scelte.
Riproduzione e verifica: che cosa calcola il codice
Il pacchetto usa frazioni esatte e non dipende da un solutore numerico esterno. affine sottrae l’eccesso medio e costa O(n). simplex ordina i valori in ordine decrescente, prova quante componenti rimangono positive e trova θ dalle somme prefisse; l’ordinamento domina il costo O(n log n). Le condizioni di ottimalità sono controllate per ogni componente. Per M = 0 restituisce tutti zeri; un totale negativo è incompatibile con masse non negative e viene rifiutato. Memorizzare vettori e ordinamento richiede O(n) spazio.
Un’applicazione reale dovrebbe verificare il bilancio con le unità corrette, distinguere conservazione globale e locale, documentare errori delle misure e della discretizzazione, e confrontare l’accuratezza prima e dopo la correzione su casi indipendenti. Un integrale discretizzato rispettato esattamente non dimostra che il campo continuo sia esatto. Nemmeno una correzione a ogni istante garantisce che la sequenza temporale rispetti la dinamica: potrebbe spostare massa tra compartimenti senza un flusso plausibile. Sono limiti del problema risolto, non dettagli da nascondere dietro un totale perfetto.
La risposta alla domanda iniziale
Sì, possiamo correggere una previsione che crea massa senza riaddestrare la rete, se conosciamo il bilancio e definiamo quali correzioni accettiamo. La proiezione rende esplicita questa scelta e, sotto ipotesi precise, offre una garanzia sulla distanza complessiva dalla verità ammissibile. Ma far tornare dieci chilogrammi non rivela dove debbano stare. Il risultato utile è una previsione coerente con più informazioni note, accompagnata da verifiche separate su distribuzione e dinamica. Per usare AI nella scienza, la domanda non è soltanto quanto bene predice: è anche quali proprietà possiamo dimostrare, con quali dati e fino a quale confine.
Fonti e codice eseguito
from experiment import affine, simplex, run
print([str(v) for v in affine([8, 3, 1], 10)])
print([str(v) for v in simplex([-1, 4, 9], 10)])
print(run()['wrong_total'])
Codice, dati e istruzioni · JSON. Calcoli didattici eseguiti con Python 3.14.0; figure con Matplotlib 3.11.2. Analisi con assistenza AI, senza dichiarare peer review o revisione umana. Copertina originale ImageGen, illustrativa: non documenta persone, sedi o installazioni EL-AI. Fonti consultate il 4 ottobre 2026.

