#AI #ArtificialIntelligence #deepLearning #CNN #computerVision #classificatore #correctiveAction #TateoBlog #TILLL
La produzione di un classificatore di immagini basato su reti neurali convoluzionali (CNN) è un processo iterativo nel quale dataset, architettura, addestramento e pipeline applicativa vengono progressivamente affinati per ottenere le prestazioni richieste dalla specifica. [1][4]
Ricordiamo brevemente che l'intero processo comprende la produzione e preparazione del dataset, la definizione, addestramento e validazione della CNN, la misura delle prestazioni, il controllo dei requisiti e, per finire, l'analisi degli errori e alla definizione delle azioni correttive.
È proprio quest'ultima fase a trasformare la semplice misurazione delle prestazioni in un vero processo di miglioramento del classificatore.
Il problema, infatti, non è soltanto stabilire se il sistema funziona, ma comprendere perché non raggiunge le prestazioni richieste e individuare dove intervenire per migliorarlo. La qualità dei dati, la loro rappresentatività rispetto al problema reale e la distribuzione delle classi possono influenzare significativamente prestazioni, robustezza e capacità di generalizzazione del modello. [4]
Nel processo le prestazioni vengono misurate sia sul Test Set (TS), per valutare il comportamento del classificatore, sia nella catena end-to-end, dove il modello viene inserito nella pipeline applicativa. Le prestazioni possono essere espresse, in funzione della specifica funzionale, attraverso indicatori quali DR (Detection Rate) e FPPU (False Positive per Unità Ispezionata).
Quando tali valori non soddisfano i criteri minimi prefissati, il processo non termina: ritorna alla fase precedente per individuare le cause dell'insufficienza e introdurre le opportune correzioni. [1][4]
- o -
L'approccio consiste nel trasformare il risultato della misura in una diagnosi tecnica.
Il percorso può essere sintetizzato in quattro passaggi:
- Misurare le prestazioni sul Test Set e nella catena end-to-end.
- Confrontare i risultati con i criteri minimi definiti dalla specifica.
- Analizzare gli errori per risalire alla loro causa.
- Applicare un'azione correttiva e riavviare il ciclo dalla fase interessata.
L'azione correttiva, quindi, non dovrebbe essere scelta semplicemente perché il classificatore "sbaglia", ma sulla base di una relazione tra errore osservato, causa ipotizzata e intervento effettuato. L'analisi degli errori deve guidare la successiva iterazione del processo. [1]
È inoltre importante distinguere tra un problema del modello, un problema dei dati e un problema della pipeline applicativa. Ogni causa richiede infatti un intervento specifico: modificare l'architettura della CNN può migliorare il modello, ma non può correggere dati poco rappresentativi, etichette errate o informazioni mancanti nel dataset. Allo stesso modo, un modello correttamente addestrato può fornire prestazioni insufficienti in esercizio se la pipeline applicativa elabora le immagini in modo diverso rispetto a quanto previsto durante l'addestramento. [4][6]
Le prestazioni insufficienti, perché inferiori ai requisiti, possono dipendere da diverse categorie di problemi:
- Dataset poco rappresentativo. I campioni non descrivono adeguatamente la variabilità delle condizioni operative reali. [4]
- Etichette errate o incoerenti. Annotazioni inesatte introducono informazioni contraddittorie nel processo di apprendimento. [4]
- Classi sbilanciate. Alcune categorie sono rappresentate molto meno delle altre, alterando l'apprendimento del modello. [4]
- Condizioni operative assenti. Il dataset non comprende scenari, condizioni o fenomeni presenti durante l'esercizio reale. [4]
- Architettura CNN inadeguata. La capacità del modello non è sufficiente, oppure risulta eccessiva rispetto al problema. [1]
- Iperparametri non ottimali. Parametri come learning rate, batch size o regolarizzazione possono limitare l'addestramento. [1]
- Overfitting o underfitting. Il modello può memorizzare i dati di addestramento oppure risultare incapace di apprenderne adeguatamente le caratteristiche. [1][5]
- Soglie decisionali inadeguate. La soglia adottata può produrre un compromesso non compatibile con i requisiti applicativi. [1][7]
- Problemi nella pipeline applicativa. Pre-processing, inferenza o integrazione possono introdurre differenze rispetto all'ambiente di addestramento. [6]
Una volta individuata la causa, l'intervento deve essere indirizzato alla componente responsabile.
- Ampliare il dataset. Aggiungere campioni rappresentativi delle condizioni operative maggiormente critiche o sottorappresentate. [4]
- Correggere le etichette. Verificare e correggere annotazioni errate, ambigue o incoerenti con la specifica. [4]
- Riequilibrare le classi. Aumentare la rappresentazione delle classi minoritarie mediante campionamento o strategie equivalenti. [4]
- Integrare condizioni operative mancanti. Acquisire immagini relative a scenari reali non adeguatamente presenti nel dataset. [4]
- Modificare l'architettura CNN. Selezionare o progettare un'architettura più adatta alla complessità del problema. [1]
- Ottimizzare gli iperparametri. Ricercare configurazioni più efficaci per learning rate, batch size, regolarizzazione e addestramento. [1]
- Contrastare overfitting o underfitting. Applicare regolarizzazione, data augmentation, modifica della capacità del modello o strategie di training. [1]
- Rivedere le soglie decisionali. Adeguare le soglie al compromesso richiesto tra falsi positivi e falsi negativi. [7]
- Correggere la pipeline applicativa. Eliminare discrepanze tra il preprocessing, cioè la preparazione delle immagini prima dell'elaborazione, e il riconoscimento effettuato dal modello durante l'utilizzo (inferenza), rispetto alle condizioni operative del sistema. [6]
Il principio fondamentale è quindi intervenire sulla causa e non soltanto sul sintomo.
Dopo l'azione correttiva, il classificatore deve essere nuovamente sottoposto alle misure previste. Se le prestazioni soddisfano i criteri minimi, il processo può procedere verso la conclusione; diversamente, l'analisi degli errori continua alimentando una nuova iterazione. [1][5]
In questo senso, la produzione di un classificatore CNN non è un processo lineare, ma un ciclo di misura → diagnosi → correzione → nuova misura, nel quale ogni iterazione dovrebbe aumentare la probabilità di ottenere un modello capace di generalizzare correttamente sulle condizioni operative reali. [1][4]
🔍 Approfondimenti consigliati:
Di seguito sono riportati alcuni riferimenti bibliografici (📖), e risorse disponibili sul Web (🌐), utili per approfondire gli argomenti trattati.
- [1] 📖 Aurélien Géron, Hands-On Machine Learning with Scikit-Learn, Keras and TensorFlow. Capitoli consigliati: Chapter 2: End-to-End Machine Learning Project; Chapter 3: Classification; Chapter 11: Training Deep Neural Networks. Lingua: Inglese 🇬🇧.
- [2] ♾️ TILLL; (5) Analisi degli errori e definizione delle azioni correttive; Come delegare alle macchine compiti che gli umani riescono a svolgere grazie alla loro intelligenza; 👉https://tateoblog.blogspot.com/p/artificial-intelligence.html (🧠AI-§8.5.5).
- [4] 🌐 Yuhan Zhou, Fengjiao Tu, Kewei Sha, Junhua Ding, Haihua Chen — A Survey on Data Quality Dimensions and Tools for Machine Learning; 👉 https://arxiv.org/pdf/2406.19614 . È particolarmente utile per rafforzare la parte relativa alla qualità del dataset, perché considera accuratezza, completezza, rappresentatività, sbilanciamento delle classi e altre dimensioni della qualità dei dati. Il lavoro evidenzia il ruolo della qualità dei dati rispetto a prestazioni, robustezza, sicurezza e scalabilità dei modelli ML.
- [5] 🌐 Google — Set di dati: suddivisione del set di dati originale; 👉 https://developers.google.com/machine-learning/crash-course/overfitting/dividing-datasets; Molto utile per approfondire training set, validation set, test set, generalizzazione, overfitting e qualità dei dati. Precisazione metodologica sul il riutilizzo ripetuto del test set per guidare le modifiche che può portare a un adattamento implicito al test set.
- [6] 🌐 Google — Regole del machine learning; 👉 https://developers.google.com/machine-learning/guides/rules-of-ml/; Particolarmente interessante per la fase di misura delle prestazioni nella catena end-to-end. Introduce il concetto di training-serving skew, cioè la differenza tra i dati e le trasformazioni utilizzati durante il training e quelli disponibili durante l'inferenza.
- [7] 🌐 scikit-learn — Tuning the decision threshold for class prediction; 👉 https://scikit-learn.org/stable/modules/classification_threshold.html; Approfondimento tecnico specifico per le soglie decisionali. Mostra perché la soglia predefinita non è necessariamente quella ottimale e come modificarla in funzione della metrica o del costo degli errori.
- [8] 📖 Jeff Prosise, Machine learning applicato e IA per ingegneri, O'Reilly Media, 2025, Lingua: 🇮🇹.






