La tecnologia dell’IA sta rivoluzionando i vari settori industriali e sta modificando il nostro modo di vivere e lavorare. Man mano che vengono integrati nei settori fondamentali per la sicurezza, come l’aerospazio, l’automotive e il settore sanitario (Figura 1), i sistemi di IA prendono decisioni che hanno un impatto diretto sulla sicurezza e il benessere dell’uomo. Da ciò deriva la necessità impellente di processi di verifica e validazione rigorosi, per poter spiegare, verificare e validare il comportamento dei modelli.
Nell’ambito della certificazione IA, le tecniche di verifica e validazione aiutano a identificare e a mitigare i rischi dimostrando che i modelli di IA e i sistemi basati su IA rispettano gli standard industriali e le normative del settore.
I workflow di verifica e validazione tradizionali, come il ciclo a V, potrebbero non essere sufficienti a garantire la precisione e l’affidabilità dei modelli di IA. Per adattarsi meglio alle applicazioni di IA, tali workflow hanno subito degli adattamenti ed è nato, per esempio, il processo di sviluppo a W (Figura 2).
Figura 2. Processo di sviluppo a W. Basato su un diagramma originale pubblicato dall’European Union Aviation Safety Agency (EASA). (Crediti dell’immagine: EASA)
Figura 2. Processo di sviluppo a W. Basato su un diagramma originale pubblicato dall’European Union Aviation Safety Agency (EASA). (Crediti dell’immagine: EASA)
Le sezioni seguenti ti guideranno attraverso le varie fasi di verifica e validazione del processo di sviluppo a W. Per analizzare il processo più nel dettaglio, dai un’occhiata alle risorse qui sotto.
Per saperne di più
Per dimostrare un caso pratico di questo processo, il presente white paper ti guiderà attraverso lo sviluppo di un sistema di IA medico progettato per capire se un paziente ha la polmonite tramite l’esame di radiografie del torace. Il seguente case study mette in evidenza i punti forti e le possibili problematiche poste dall’IA nelle applicazioni fondamentali per la sicurezza, mostrando il motivo per cui il modello di classificazione delle immagini deve essere sia accurato che robusto per prevenire diagnosi errate e dannose.
La prima metà del processo di sviluppo a W aiuta a garantire che i modelli di IA soddisfino gli standard richiesti e si comportino in modo affidabile nelle applicazioni del mondo reale.
Requisiti attribuiti alla gestione dei componenti di ML
La prima fase del ciclo a W consiste nel raccogliere requisiti specifici per il componente di Machine Learning. Le considerazioni principali includono implementazione, test e spiegabilità del modello. Requirements Toolbox™ facilita l’authoring, il collegamento e la validazione dei requisiti (Figura 3).
Figura 3. L’app Requirements Editor acquisisce i requisiti per il componente di Machine Learning.
Gestione dati
La fase successiva del ciclo a W prevede la gestione dei dati ed è fondamentale nell’apprendimento con supervisione in quanto richiede dati etichettati. MATLAB® mette a disposizione delle app di etichettatura, come Image Labeler e Signal Labeler, per svolgere operazioni di etichettatura interattive e automatizzate. Usando imageDatastore, che struttura i file immagine per la scalabilità, è possibile gestire grandi set di dati immagine ed eseguire, ad esempio, la gestione dei dati immagine per l’addestramento al rilevamento della polmonite:
trainingDataFolder = "pneumoniamnist\Train"; imdsTrain = imageDatastore(trainingDataFolder,IncludeSubfolders=true,LabelSource="foldernames"); countEachLabel(imdsTrain)
Gestione del processo di apprendimento
Prima dell’addestramento, è essenziale finalizzare l’architettura di rete e le opzioni di addestramento, tra cui l’algoritmo, la funzione di perdita e gli iperparametri. L’app Deep Network Designer consente di progettare e visualizzare le reti in modo interattivo. Il codice seguente definisce l’architettura di una rete neurale convoluzionale (CNN) per la classificazione delle immagini:
numClasses = numel(classNames);
layers = [
imageInputLayer(imageSize,Normalization="none")
convolution2dLayer(7,64,Padding=0)
batchNormalizationLayer()
reluLayer()
dropoutLayer(0.5)
averagePooling2dLayer(2,Stride=2)
convolution2dLayer(7,128,Padding=0)
batchNormalizationLayer()
reluLayer()
dropoutLayer(0.5)
averagePooling2dLayer(2,Stride=2)
fullyConnectedLayer(numClasses)
softmaxLayer];
Trovare gli iperparametri ottimali può essere complesso, ma l’app Experiment Manager aiuta esplorando valori diversi tramite sweeping o l’ottimizzazione bayesiana (Figura 4). È possibile testare più configurazioni di addestramento in parallelo, sfruttando l’hardware disponibile per semplificare il processo.
Figura 4. Configurazione del problema nell’app Experiment Manager per trovare il set ottimale di iperparametri dall’architettura esportata in Deep Network Designer.
Figura 4. Configurazione del problema nell’app Experiment Manager per trovare il set ottimale di iperparametri dall’architettura esportata in Deep Network Designer.
Addestramento del modello e validazione iniziale
La fase di addestramento inizia con l’esecuzione di esperimenti nell’app Experiment Manager, fino a ottenere un modello iniziale con un livello di accuratezza promettente (~96% sul set di validazione). Tuttavia, non soddisfa appieno tutti i requisiti predefiniti, come la robustezza. Poiché il ciclo a W è iterativo, occorrono ulteriori affinamenti.
Per saperne di più
Verifica del processo di apprendimento
Assicurarsi che i modelli di IA soddisfino requisiti specifici è molto importante, soprattutto per le applicazioni fondamentali per la sicurezza. Le fasi successive del processo di sviluppo a W prevedono l’implementazione di tecniche di verifica per confermare che le prestazioni del modello rispondano alle aspettative.
Test e informazioni sulle prestazioni del modello
Il modello è stato addestrato con una tecnica di tipo adversarial, ovvero il Fast Gradient Sign Method (FGSM), per ottimizzare la robustezza rispetto agli esempi avversari. Ha così raggiunto un livello di accuratezza superiore al 90%, ben oltre i benchmark e i requisiti predefiniti. Per capire meglio le sue prestazioni, sono stati analizzati i pattern di errore con una matrice di confusione, mentre le tecniche di spiegabilità come Grad-CAM (Figura 6) hanno fornito dati visivi approfonditi che migliorano l’interpretabilità e la fiducia nelle sue decisioni.
Esempi avversari
Gli esempi avversari sono delle piccole modifiche impercettibili agli input che possono indurre le reti neurali a fare classificazioni errate, sollevando dubbi in merito alla robustezza nelle attività critiche per la sicurezza, come la diagnostica per immagini (Figura 7).
Norma L-infinito
La norma L-infinito viene utilizzata per capire e quantificare le perturbazioni avversarie (Figura 8). Definisce un intervallo entro il quale i valori di pixel possono essere alterati. Da ciò risultano innumerevoli combinazioni possibili da testare, il che rende molto difficile la valutazione di tutti gli scenari.
Verifica formale della robustezza
I metodi di verifica formale offrono un approccio matematico che permette di valutare in modo sistematico e garantire la robustezza delle reti neurali rispetto a una vasta serie di potenziali esempi avversari. Deep Learning Toolbox™ Verification Library mette a disposizione dei metodi di verifica formale, come l’interpretazione astratta. Data un’immagine da un set di prova, è possibile scegliere una perturbazione che definisce un’ampia raccolta di immagini perturbate per un’immagine specifica (Figura 9).
Esistono tre potenziali esiti per ciascuna delle immagini:
- Verificato: l’etichetta di output rimane coerente.
- Violato: l’etichetta di output cambia.
- Non verificato: occorrono ulteriori verifiche oppure occorre migliorare il modello.
Rilevamento Out-of-Distribution
Un sistema di IA affidabile dovrebbe produrre previsioni accurate in un contesto noto. Tuttavia, il modello dovrebbe anche essere in grado di riconoscere esempi sconosciuti e rifiutarli o inviarli a un esperto umano per una gestione sicura. Con la Deep Learning Toolbox Verification Library, puoi creare un discriminatore di dati fuori distribuzione (OOD) per assegnare un livello di fiducia alle predizioni della rete, calcolando un punteggio di confidenza della distribuzione per ciascuna osservazione (Figura 10). Il discriminatore fornisce anche una soglia per separare i dati In-Distribution dai dati OOD.
Per saperne di più
Una volta verificato il processo di apprendimento, occorre adattare i modelli di IA per le applicazioni del mondo reale. Queste ultime fasi del processo di sviluppo a W prevedono la preparazione del modello per la distribuzione e tutte le operazioni necessarie a garantire che soddisfi i requisiti operativi.
Implementazione del modello e generazione di codice
Il passaggio dalla verifica del processo di apprendimento all’implementazione del modello nel flusso di sviluppo a forma di W rappresenta il momento in cui un modello di intelligenza artificiale passa dalla fase di perfezionamento alla sua applicazione nel mondo reale. La generazione di codice con MATLAB e Simulink® automatizza la conversione dei modelli addestrati in codice implementabile (come C/C++ o CUDA®; cfr. Figura 11), riducendo gli interventi di codifica manuale e minimizzando gli errori.
È possibile utilizzare la funzione analyzeNetworkForCodegen in MATLAB per verificare se il proprio modello di Deep Learning è pronto per la generazione di codice. Ciò garantisce compatibilità con le librerie target e, in relazione alle applicazioni critiche per la sicurezza, consente di generare codice senza dipendenze di terze parti. La generazione automatica di codice semplifica la certificazione, migliora la portabilità e garantisce una distribuzione affidabile tra piattaforme diverse.
analyzeNetworkForCodegen(net) Supported _________ none "Yes" arm-compute "Yes" mkldnn "Yes" cudnn "Yes" tensorrt "Yes"
Nei casi in cui la distribuzione richiede di ottimizzare la memoria, l’aritmetica a virgola fissa ed efficienza computazionale, Deep Learning Toolbox Model Quantization Library si rivela estremamente efficace. Tecniche quali la quantizzazione e il pruning possono notevolmente ridurre le dimensioni del modello e il carico computazionale, comprimendo ad esempio un modello di 4 volte con un calo dell’accuratezza dello 0,7% durante la conversione da virgola fissa a int8 usando l’app Deep Network Quantizer (Figura 12).
Con MATLAB Coder™ e GPU Coder™, è possibile generare codice C++ e CUDA per distribuire modelli di IA su sistemi real-time in cui velocità e bassa latenza sono aspetti fondamentali. Ciò prevede la configurazione del linguaggio target e delle impostazioni di Deep Learning, ad esempio l’uso di cuDNN per l’accelerazione GPU.
cfg = coder.gpuConfig("mex"); cfg.TargetLang = "C++"; cfg.GpuConfig.ComputeCapability = "6.1"; cfg.DeepLearningConfig = coder.DeepLearningConfig("cudnn"); cfg.DeepLearningConfig.AutoTuning = true; cfg.DeepLearningConfig.CalibrationResultFile = "quantObj.mat"; cfg.DeepLearningConfig.DataType = "int8"; input = ones(inputSize,"int8"); codegen -config cfg -args input predictCodegen -report
Verifica e integrazione del modello di inferenza
La fase di verifica e integrazione del modello di inferenza garantisce che un modello di IA, come quello usato per il rilevamento della polmonite, si comporti in modo affidabile con dati nuovi e mai visti e che si integri bene in un sistema sanitario più ampio.
Dopo la conversione del modello in C++ e CUDA, questa fase ne verifica l’accuratezza e lo integra all’interno di un sistema completo, insieme a componenti per il monitoraggio del runtime, l’acquisizione dei dati e la visualizzazione. Simulando il sistema in Simulink, è possibile verificare se il modello funziona in modo efficace in tempo reale e se mantiene lo stesso livello prestazionale all’interno del sistema più ampio (Figura 13).
Il monitoraggio del runtime può aiutare a distinguere tra input già noti e non (Figura 14). Segnala le previsioni con un alto livello di confidenza in verde quando i dati corrispondono alla distribuzione di addestramento, mentre contrassegna le potenziali anomalie in rosso per i casi OOD. Questa funzionalità ottimizza la sicurezza e l’affidabilità del sistema di IA, garantendo che non faccia solo delle previsioni accurate ma che identifichi anche e gestisca in modo opportuno i dati non ancora noti.
A questo punto, è fondamentale implementare una strategia di test globale. Usando MATLAB Test™ o Simulink Test™, è possibile creare dei test automatizzati per validare in modo approfondito l’accuratezza del modello di IA, le sue prestazioni e l’integrazione all’interno del sistema completo.
Verifica indipendente dei dati e dell’apprendimento
La fase di verifica indipendente dei dati e dell’apprendimento assicura che i seti di dati di addestramento, validazione e test siano gestiti in modo opportuno, completi e rappresentativi dello spazio di input dell’applicazione. Ciò prevede una revisione indipendente dopo la verifica del modello di inferenza sulla piattaforma target. Questa fase conferma altresì che la verifica dell’apprendimento, compresa l’analisi di copertura, sia stata completata in modo soddisfacente.
Verifica dei requisiti
La fase di verifica dei requisiti conclude il processo di sviluppo a W garantendo che tutti i requisiti siano completamente implementati e testati. Usando Requirements Toolbox™, le funzioni e i test sono collegati ai requisiti corrispondenti, il che chiude il ciclo di sviluppo. Eseguendo tali test da Requirements Editor, si verifica che tutti i requisiti siano stati adeguatamente soddisfatti (Figura 15).
Per saperne di più
Al termine della verifica dei requisiti, il processo di sviluppo a W è completo. In questo esempio di dispositivo medico, le fasi minuziose e meticolose di questo processo servono a garantire che il modello di IA per il rilevamento della polmonite sia accurato, robusto e pronto per la distribuzione. Collegando i requisiti a funzioni e test specifici, è possibile stabilire una tracciabilità chiara e verificare in modo sistematico ogni requisito, confermando che il modello è in grado di soddisfare i rigidi standard delle applicazioni in ambito sanitario. A questo punto, è possibile distribuire uno strumento affidabile che possa contribuire al miglioramento del servizio reso ai pazienti.
Seleziona un sito web
Seleziona un sito web per visualizzare contenuto tradotto dove disponibile e vedere eventi e offerte locali. In base alla tua area geografica, ti consigliamo di selezionare: .
Puoi anche selezionare un sito web dal seguente elenco:
Come ottenere le migliori prestazioni del sito
Per ottenere le migliori prestazioni del sito, seleziona il sito cinese (in cinese o in inglese). I siti MathWorks per gli altri paesi non sono ottimizzati per essere visitati dalla tua area geografica.
Americhe
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)