L’acquisizione di software che faccia uso di tecniche di apprendimento automatico è sicuramente la via più breve per introdurre queste tecnologie nel proprio processo produttivo. Molti software specifici consentono di svolgere compiti come riconoscere e tracciare oggetti oppure trattare testi in linguaggio naturale alla ricerca di informazioni. Molti servizi cloud come Microsoft, Amazon e Google offrono strumenti che offrono la possibilità di introdurre queste tecnologie utilizzando editor di alto livello e strumenti come il Sage maker, Azure ML o Vertex AI. Se l’uso di un software, o di un servizio cloud, consente rapidamente di introdurre tecniche AI nel ciclo produttivo, l’uso di sistemi che promettono di ottenere soluzioni AI senza programmare si scontra rapidamente con la necessità di capire aspetti essenziali del funzionamento delle tecniche di machine learning.
Se poi si dispone di programmatori si può considerare l’idea di introdurre l’apprendimento automatico direttamente all’interno dei propri sistemi rivolgendosi a librerie già pronte che promettono semplicità d’uso e risultato garantito. Anche in questo caso quando ci si avvicina si realizza rapidamente che l’uso di questi strumenti richiede alcune nozioni essenziali e la capacità di saper individuare all’interno del proprio processo produttivo i dati necessari ad alimentare correttamente gli algoritmi di apprendimento automatico.
In un certo senso tutto ciò è rassicurante: le macchine non sono ancora così intelligenti come può apparire leggendo le notizie.
Apprendimento automatico, le tecniche
In ultima analisi l’apprendimento automatico caratterizza un numero sempre crescente di tecniche il cui obiettivo è quello di inferire una funzione matematica partendo da tante coppie (input, output) che costituiscono i dati da cui si vuole estrarre conoscenza.
I sistemi di apprendimento automatico costruiscono il proprio funzionamento sull’idea di minimizzare l’errore nel generare un output partendo dall’input e verificando la distanza dall’output atteso. Iterando questo processo e adattando gli opportuni parametri di un algoritmo si può ottenere un modello che quando messo in produzione cerca associa l’output a un particolare input sulla base degli esempi visti durante la fase di apprendimento.
I dati
Poiché normalmente non è nota la relazione tra i dati di input e i rispettivi output c’è il rischio che i dati utilizzati per addestrare il modello siano incompleti e lo inducano in qualche modo in errore nelle previsioni su dati mai visti. È come se si cercasse di apprendere l’andamento delle temperature utilizzando solo dati estivi per poi stupirsi che il sistema non prevede correttamente la temperatura durante l’inverno.
Per mitigare questo rischio è prassi dividere i dati che si usano per addestrare un algoritmo in due insiemi: il primo e più grande da usare per l’addestramento (training set), e il secondo per validare il comportamento del modello generato a fronte di casi nuovi (test set). Se l’errore nella previsione dei dati del test set è sufficientemente contenuto possiamo concludere che l’apprendimento è avvenuto con successo e mettere in produzione il modello, monitorandone l’esecuzione e aggiustando per iterazioni successive del processo arricchendo i dati utilizzati per l’addestramento (vedi figura).
I dati sono quindi la linfa vitale di questo processo e la loro selezione spesso determina il successo che l’impiego di queste tecniche avrà nel processo produttivo.
È da sottolineare che ciascun input può essere costituito da centinaia o addirittura migliaia di “features” ovvero variabili distinte che caratterizzano un aspetto del problema. La costruzione del dataset necessario per l’apprendimento è quindi un passaggio molto complesso che richiede sforzi che non si limitano alla sola raccolta di dati, ma anche alla loro pulizia ed etichettatura per fornire all’algoritmo di apprendimento dati che possano essere di qualche utilità.
I dati vanno poi raccolti avendo in parte in mente quale algoritmo si intende utilizzare e questo richiede che all’interno di un’azienda si formino competenze specifiche capaci di capire le opzioni a disposizione e come preparare il dato e magari confrontare algoritmi differenti al fine di trovare quello che produce i risultati migliori dato un particolare dataset. Per questo motivo non vi sono scorciatoie particolari nell’adozione di tecniche di apprendimento automatico che facciano uso dei dati aziendali: la costituzione del dataset non può che essere fatta internamente.
Gli algoritmi
In questo periodo si sente parlare quasi solo di deep learning, ovvero l’impiego di una particolare forma di reti neurali capaci di fare cose incredibili. Ma se si ha in mano un martello non è vero che tutto il resto è un chiodo: esistono numerose tecniche studiate in oltre 50 anni di ricerca che possono essere impiegate e sono disponibili nelle librerie di apprendimento automatico. Tra questi troviamo clustering, support vector machines, alberi di decisione, solo per citare alcuni tra gli algoritmi più noti.
La prima cosa da fare è identificare cosa si vuole apprendere e in quale tipologia di apprendimento ricada il compito:
- regressione: stimare valori dato un particolare input
- classificazione: classificare un input in due o più classi
- raggruppare i dati: individuare gruppi di dati presenti nel dataset senza disporre di classi predefinite
La regressione e la classificazione vengono spesso fatti con un processo noto come supervisionato: la preparazione del dataset con le etichette e l’individuazione delle feature è svolta manualmente. Gli algoritmi che raggruppano autonomamente i dati consentono di apprendere la struttura di un dataset automaticamente e spesso sono riferiti come algoritmi non supervisionati, potendo lavorare direttamente sul dato.
Per ciascuno di questi compiti si fa uso di algoritmi noti (per la regressione un tipico esempio è la regressione lineare, per la classificazione gli alberi di decisione) e spesso si pone il problema di quale, a parità di compito, si comporti meglio. Per questo si stanno studiando tecniche automatiche di selezione dell’algoritmo migliore (spesso riferite come automated machine learning) che per dataset non troppo complessi cominciano ad essere un utile strumento per accelerare il processo.
In ambito industriale tra le tecniche più usate sono quelle di object detection, e anomaly detection. La rilevazione di anomalie in particolare trova numerose applicazioni alla ricerca di comportamenti inattesi di apparati o comunque di letture di sensori.
Se si vuole avere un’idea grafica di una semplice regressione si può interagire con una delle demo della libreria ConvNetJS che mostra graficamente una regressione monodimensionale in cui si possono aggiungere punti ad un grafico e vedere come una rete neurale convolutiva reagisce (ConvNetJS demo: Classify toy 2D data (stanford.edu) ).
La potenza di calcolo
È ormai noto come le GPU giochino un ruolo centrale nell’apprendimento automatico, ma ciò non significa che senza una GPU non si possa fare uso di queste tecniche. Questi acceleratori sono infatti molto efficaci nell’apprendimento automatico quando si fa uso di algoritmi basati su calcolo matriciale, come ad esempio per le reti neurali, ma per dataset non troppo grandi è possibile apprendere modelli anche senza l’ausilio di questi acceleratori.
In ogni caso è importante tener presente che la fase di apprendimento è quella che richiede la maggior parte della potenza di calcolo: una volta ottenuto il modello la sua esecuzione richiede solitamente una quantità di risorse di calcolo decisamente inferiore e spesso è possibile eseguire i modelli su apparati molto più piccoli di quelli usati per l’apprendimento. È possibile addirittura eseguire i modelli su controllori piccoli come un Raspberry Pi. Se il dataset non è enorme anche la parte di apprendimento può essere eseguita su processori di modeste dimensioni, questo è importante in ambito industriale poiché non è sempre possibile effettuare i calcoli in un datacenter ma solo sull’edge.
Apprendimento automatico: l’AI in ambito industriale
L’apprendimento automatico richiede un certo sforzo e quindi un investimento che non può essere di breve termine all’interno di un processo industriale. È necessario sviluppare skill all’interno del personale sul tema e lavorare alla costituzione dei dataset che diventano un asset essenziale per l’azienda che deve essere mantenuto e sviluppato.
Il codice sorgente riveste un ruolo decisamente poco strategico in questo scenario limitandosi solo a caricare un modello ed eseguirlo, è il modello ad avere il valore. Si pensi ad esempio al modello che verifica un tentativo di frode: da un punto di vista di codice quello del gigante Amazon sarà simile a quello di un piccolo shop, ma la qualità sarà diversa nei due casi visto che il dataset a disposizione del colosso della vendita on-line sarà decisamente più ricco di esempi e situazioni che l’apprendimento introdurrà nel modello.
In effetti il modello è una sorta di condensato della conoscenza dell’azienda, e ha un valore che dipende dalle energie necessarie al suo sviluppo (e alla corrente e ai costi di elaborazioni necessari a sintetizzarlo) ma che è di dimensioni contenute; è quindi essenziale proteggerlo poiché rappresenta una parte della conoscenza aziendale partendo dal quale si può guadagnare terreno in un particolare settore competitivo.
Conclusioni
L’apprendimento automatico sta trovando innumerevoli applicazioni in ambito industriale, ma è necessario considerare il fattore umano e capitalizzare i dati disponibili. I modelli ottenuti vengono spesso resi accessibili mediante dei microservizi a codice più tradizionale che ne fa uso come se fossero oracoli che rispondono a domande la cui risposta non è stata codificata da programmatori bensì appresa dalla macchina. Quando si lavora con questi sistemi è importante convivere con gli errori che le tecniche inevitabilmente introducono e concepire sistemi che siano robusti assumendo che anche il modello più accurato può fornire output errati.