Stesso codice, misure diverse: come si misura un classificatore AI dentro il rumore
Lo stesso classificatore ha dato 30 e 27 errori in due giri identici. Misurare un modello dentro il rumore: più giri, errori stabili, holdout congelato.
In breve. Il 9 e 10 ottobre 2026 ho sottoposto ad audit il classificatore che smista i feedback di Arvo: lo stesso codice, sugli stessi 131 casi, ha dato 30 e 27 errori materiali in due giri, con 20 errori presenti in entrambi. Da lì ho ricavato il metodo che uso ora per misurare qualunque modello dentro il rumore: più giri, gli errori stabili, un holdout congelato prima di guardare i risultati. Tutti i numeri vengono dal report dell'audit e dalla PR #2312.
Trenta errori, poi ventisette, stesso codice
Il banco di prova: 131 casi reali congelati, giudici ciechi, codice di produzione fermo. Due giri, nessun cambio in mezzo. Primo giro: 30 errori materiali. Secondo giro: 27. Venti errori c'erano in entrambi; il resto cambiava da un giro all'altro, con il modello dentro il giro.
Su cinque giri il quadro si allarga invece di restringersi: media 29,0, intervallo da 25 a 32. La prima misura che avevo in mano — un numero solo da un giro solo — poteva essere qualunque valore in quell'intervallo. Un solo run, con un modello nel giro, non misura niente: campiona il rumore e lo spaccia per risultato.
Il candidato migliore, e cosa dice l'holdout
Il candidato migliore, H3, fa media 23,0 con intervallo da 20 a 26 contro 29,0 del baseline su cinque giri. Sembra un passo avanti, e in parte lo è. Ma la prova che conta è l'holdout cieco: 45 feedback organici mai usati per progettare, congelati prima di girare i candidati. Lì, appaiato contro il baseline, H3 corregge 4 casi e ne rompe 2, con p = 0,69. Un effetto che il caso spiega benissimo.
È il punto che mi ha cambiato il metodo: il benchmark misura sul terreno dove hai progettato, l'holdout misura sul terreno che non hai visto. Finché il secondo non parla, il primo è un'ipotesi di lavoro, non un risultato. Ne ho scritto dal lato del metodo in come verificare un agente AI in produzione: chiedere al verificatore cosa non misura vale anche per i benchmark.
Le etichette non reggono a un secondo collegio
La parte più scomoda è arrivata dal rigiudizio. Tre giudici ciechi hanno riletto 20 casi: 10 tensioni d'etichetta e 10 controlli. Hanno cambiato 9 tensioni su 10 — fin qui, atteso. Ma hanno cambiato anche 6 controlli su 10. Il rumore d'etichetta è dello stesso ordine dell'effetto che si vuole misurare: quando il metro balla quanto l'oggetto, ogni confronto va letto con gli occhi stretti.
Il verdetto dell'audit è onesto e mi sta bene: non ancora un input fidato per la factory. Si decide sui feedback nuovi che arrivano, con primo checkpoint verso il 30 ottobre 2026. Misurare meglio, in questo caso, ha voluto dire scoprire che non si poteva ancora decidere. È un esito che rispetto più di un via libera tirato per i capelli, e il motivo è quello che ho scritto nei marginal gains delle macchine: le strade escluse contano quanto le cause confermate.
Le tre mosse che mi tengo
Prima: mai un giro solo. Cinque giri danno media e intervallo; un giro dà un numero a caso con l'aria da risultato.
Seconda: guardare gli errori stabili, quelli presenti in tutti i giri, prima dei totali. Sono 20 su 131 nel caso del baseline: il segnale dentro il rumore. Il resto è il modello che cambia idea, non il codice che cambia comportamento.
Terza: congelare l'holdout prima di guardare i risultati, e decidere solo lì. Le quattro proprietà che rendono una trace una prova — chiudibile da altri, leggibile dalle macchine, append-only, con perimetro — le ho descritte in trace e audit come prova: l'holdout congelato è la versione per i benchmark della stessa disciplina.
Fatti e limiti
FACT. Il 9 e 10 ottobre 2026, audit del classificatore feedback di Arvo su 131 casi reali congelati con giudici ciechi; lo stesso codice di produzione dà 30 e 27 errori materiali in due giri, con 20 errori presenti in entrambi (report dell'audit, PR #2312 in bozza).
FACT. Su cinque giri: media 29,0, intervallo da 25 a 32. Il candidato H3 fa media 23,0 con intervallo da 20 a 26 contro 29,0 del baseline.
FACT. Sull'holdout cieco di 45 feedback organici, appaiato contro il baseline: 4 casi corretti e 2 rotti, con p = 0,69.
FACT. Il rigiudizio di 3 giudici ciechi su 20 casi ha cambiato 9 tensioni su 10 e 6 controlli su 10. Verdetto: non ancora input fidato per la factory; si decide sui feedback nuovi, primo checkpoint verso il 30 ottobre 2026.
INTERPRETATION. Con un modello nel giro, un solo run non misura niente: servono più giri, gli errori stabili e un holdout congelato prima di guardare i risultati.
INTERPRETATION. Il rumore d'etichetta è dello stesso ordine dell'effetto da misurare: quando il metro balla quanto l'oggetto, i confronti vanno letti con prudenza. I numeri sopra sono una fotografia di due giorni, non una statistica sul classificatore.
Domande frequenti
Perché due giri dello stesso codice danno risultati diversi?
Perché dentro il giro c'è un modello, e il modello non è deterministico: a parità di codice e di casi, alcune decisioni cambiano da un giro all'altro. Su 131 casi, 20 errori erano stabili e il resto si muoveva fra 25 e 32 totali.
Quando un candidato è davvero migliore del baseline?
Quando vince sull'holdout cieco con un margine che il caso non spiega: qui 4 corretti contro 2 rotti con p = 0,69 non bastano. Il benchmark serve per progettare, l'holdout per decidere.
Cosa fate adesso con questo classificatore?
Si accumulano feedback nuovi con giudizio cieco delle coppie, verso un checkpoint di circa 100 casi intorno al 30 ottobre 2026. Fino ad allora il classificatore resta fuori dagli input fidati della factory.