Algoritmi evolutivi: cosa sono, in quali casi possono essere applicati

Algoritmi evolutivi: cosa sono, in quali casi possono essere applicati

Si tratta di processi ispirati alle principali teorie dell’evoluzione naturale della biologia moderna, da Darwin e Wallace a Weismann e Mendel. In generale, i pilastri fondamentali su cui si basano queste tecniche sono: riproduzione, variazione, competizione e selezione.

Nel mondo industriale moderno è necessario adattare continuamente il sistema produttivo per rispondere velocemente alle esigenze del mercato.

Il cambiamento può riguardare la modifica della configurazione di uno o più livelli dell’assetto aziendale: da un macchinario alla struttura del magazzino, dalla progettazione di un prodotto all’organizzazione aziendale e così via. Spesso non è possibile valutare tutte le possibili configurazioni e per questo le aziende si affidano all’esperienza o alle linee guida disponibili, per poi accontenta accontentarsi di livelli di prestazione non ottimali.

Nel campo dell’intelligenza artificiale sono stati sviluppati numerosi algoritmi che permettono di esplorare velocemente le possibili configurazioni di un sistema individuando quelle che permettono di raggiungere prestazioni migliori.

Algoritmi evolutivi, cosa sono

Un approccio applicato in diversi settori industriali è rappresentato da un insieme di meta-euristiche appartenenti alla categoria degli algoritmi evolutivi. Questi algoritmi si ispirano alle principali teorie dell’evoluzione naturale della biologia moderna: evoluzione e selezione naturale (Darwin, Wallace), selezionismo (Weismann) e genetica (Mendel). In generale, i pilastri fondamentali su cui si basano queste tecniche sono i seguenti:

  • riproduzione
  • variazione
  • competizione e selezione

La riproduzione è il processo di generazione di nuovi elementi di una popolazione a partire dai genitori. La variazione è una sorta di mutazione, spesso inattesa e casuale che si ha nel processo di generazione della nuova progenie. Infine, la competizione tra i nuovi elementi e la selezione dei migliori sono i processi inevitabili di sopravvivenza in un ambiente con risorse limitate.

Per approfondire la conoscenza sul funzionamento di un algoritmo evolutivo si potrebbe provare a risolvere il seguente indovinello delle otto regine.

Nell’indovinello delle otto regine si devono posizionare otto regine, appunto, sulla scacchiera in modo tale che nessuna regina sia minacciata da un’altra. Per chi non avesse esperienza del gioco degli scacchi la regina può mangiare muovendosi in orizzontale, verticale e in diagonale di un numero a piacere di caselle. Per esempio, la regina in d5 di figura 1b minaccia le regine in b3c6f3, e h5. Le possibili disposizioni delle otto regine sulla scacchiera sono 4.426.165.368 (sì, più di 4 miliardi) e anche solo limitando le possibilità mettendo al massimo una regina per ciascuna riga (o colonna) avremmo comunque 16.777.216 possibili configurazioni da valutare e solo 92 soluzioni che risolvono l’indovinello. Provare tutte le possibili soluzioni non aiuterebbe la ricerca di una soluzione plausibile.

Un modo per risolvere il problema, esplorando un numero contenuto di configurazioni è l’utilizzo di un algoritmo genetico, un algoritmo evolutivo che si ispira al processo di trasmissione dei geni dal cromosoma dei genitori ai figli. L’algoritmo genetico si compone di una sequenza di operazioni:

  1. generazione di una popolazione iniziale
  2. crossover
  3. mutazione
  4. valutazione della popolazione
  5. selezione

La fase 1 è eseguita una sola volta, all’inizio del processo, le fasi successive sono ripetute in sequenza per un numero di volte stabilito inizialmente. Solitamente si decide di fermare l’esecuzione dell’algoritmo dopo un certo periodo di tempo/numero di cicli o se la soluzione è soddisfacente.

Fase 1: Generazione di una popolazione iniziale

In generale la popolazione dell’algoritmo è composta da decine, centinaia o migliaia di elementi in modo tale da avere maggiore variabilità e poter esplorare un numero più ampio di configurazioni. Per questo esempio ci limiteremo a due soli elementi.

Le due configurazioni Genitore 1 e 2 in figura 1 non sembrano molto promettenti perché molte regine si minacciano a vicenda. La soluzione dell’indovinello sembrerebbe ancora lontana.

  1. Genitore 1
  1. Genitore 2

Figura 1. Genitore 1 e Genitore 2 sono due possibili soluzioni che non risolvono l’indovinello delle otto regine.

Fase 2: Crossover

Si immagina la scacchiera come se fosse una sequenza di cromosomi e si genera un Figlio prendendo metà del patrimonio genetico dei due genitori. A titolo di esempio, si potrebbe dividere le due scacchiere a metà, trasmettere la parte sinistra di Genitore 1 e la parte destra di Genitore 2 come mostra figura 2 e unire le due parti in un Figlio in figura 3.

  1. Genitore 1
  1. Genitore 2

Figura 2: Consideriamo le scacchiere come sequenze di DNA e teniamo la parte sinistra di Genitore 1 e la parte destra di Genitore 2.

Figura 3: Figlio prima della mutazione. La metà sinistra di Genitore 1 unita alla metà destra di Genitore 2.

Fase 3: Mutazione

La mutazione genetica è un cambiamento, spesso casuale, che comporta una modifica del genoma. Analogamente, l’algoritmo genetico applica una variazione alla configurazione Figlio in figura 3 cambiando la posizione di uno o più elementi del genoma. Al fine della buona riuscita dell’algoritmo una mutazione “fortunata” della configurazione è lo spostamento di e1 in f1 e f3 in e3 che genera una soluzione dell’indovinello in figura 4.

Figura 4: Soluzione

Fase 4: Valutazione

La valutazione degli elementi della popolazione permette di scartare le configurazioni peggiori. In questo caso un criterio potrebbe essere quello di contare il numero di coppie di regine che si minacciano. Ad esempio, Genitore 1 ha 7 coppie di regine minacciate ed è una configurazione leggermente migliore di Genitore 2 che ne ha 8. Il Figlio Mutato in figura 4 è una soluzione dell’indovinello dove non ci sono coppie di regine che si minacciano.

Fase 5: Selezione

Adesso abbiamo 3 configurazioni Genitore 1Genitore 2 e Figlio Mutato, che si valuta con il criterio del numero di coppie di regine minacciate, rispettivamente 7, 8 e 0. La selezione permette solo agli elementi migliori di sopravvivere e in questo caso le soluzioni migliori sono Genitore 1 e Figlio Mutato perché sono configurazioni con un numero minore di regine minacciate.

A questo punto l’algoritmo può interrompersi e mettere a disposizione le soluzioni trovate oppure continuare a esplorare configurazioni ripartendo dalla Fase 2.

Gli algoritmi evolutivi sono una valida opzione per poter risolvere un vasto panorama di problemi. I principi alla base del funzionamento sono generici e adattabili a molteplici utilizzi.

L’applicazione degli algoritmi evolutivi

Per questi motivi, gli algoritmi evolutivi sono stati applicati con successo a molti problemi sia classici sia industriali. A titolo di esempio, il problema di scheduling è un problema che ogni azienda industriale si trova ad affrontare quando una serie di lavorazioni deve essere svolta in un determinato tempo e secondo una determinata sequenza, occupando delle risorse spesso limitate, come strumenti, macchinari o materie prime.

In questa categoria di problemi l’obiettivo è trovare la giusta configurazione di assegnamento di operazioni e risorse per ottimizzare la produzione. Un’altra applicazione trasversale a molti settori industriali riguarda i problemi di instradamento per la logistica interna ed esterna, più in dettaglio: decidere quanti mezzi sono necessari per la movimentazione, quali percorsi sono migliori e quando i mezzi devono mettersi in movimento. Gli algoritmi evolutivi sono anche stati applicati a problemi di specifici settori, ad esempio, la verifica dei componenti dei telefoni cellulari.

CONCLUSIONI

Per concludere, quando si usano queste tecniche una particolare attenzione deve essere rivolta alla scelta della funzione di valutazione degli elementi della popolazione. Da un lato, gli algoritmi evolutivi funzionano meglio se la valutazione della configurazione descrive con maggiore l’accuratezza la bontà della soluzione. Riprendendo l’esempio dell’Indovinello delle Regine un criterio per valutare una scacchiera potrebbe essere binario: giusto o sbagliato. Una configurazione è giusta se risolve l’indovinello, sbagliata altrimenti.

Però, come abbiamo visto, ci sono diverse gradazioni di sbagliato: 7 coppie di regine si minacciano, 8 coppie di regine… In questo modo abbiamo una descrizione migliore di quanto siamo distanti dalla soluzione e questo semplifica il lavoro del nostro algoritmo perché permette di scartare le soluzioni peggiori e tenere quelle più vicine all’obiettivo (anche se non sempre aiuta).

Dall’altro lato la valutazione è l’operazione con maggior costo computazionale e una funzione complessa può rallentare l’esecuzione dell’algoritmo.

In breve, i benefici e i punti deboli degli algoritmi evolutivi sono i seguenti:

Pros:

  • più veloci di altri algoritmi
  • semplici: richiedono poca conoscenza del dominio di applicazione
  • l’interruzione anticipata restituisce comunque una soluzione

Cons:

  • non si ha certezza di aver trovato l’ottimo assoluto
  • può non essere facile definire una funzione di valutazione

 

Bibliografia

Kaufmann, Paul, Castillo, Pedro A. (Eds.), “Proceedings of the 22nd International Conference, EvoApplications” 2019, Held as Part of EvoStar 2019, Leipzig, Germany, April 24–26, 2019.

Sanchez, Ernesto, Giovanni Squillero, and Alberto Tonda. “Industrial applications of evolutionary algorithms.” 2012.

Medicina e intelligenza artificiale: come le macchine possono migliorare la nostra salute

Medicina e intelligenza artificiale: come le macchine possono migliorare la nostra salute

Il settore della medicina sta mostrando un grande interesse nei confronti dell’Intelligenza Artificiale e soprattutto delle tecniche di Machine Learning in grado di fornire strumenti migliori agli operatori sanitari e più personalizzazione delle cure ai pazienti. Riflettori puntati sul Deep Learning con cui gestire in modo automatizzato le terapie.

Col passare degli anni, sono sempre più le discipline che stanno mostrando un grande interesse nei confronti dell’intelligenza artificiale: una di queste è il settore medico, con la ricerca proiettata nell’utilizzo di tecniche di Machine Learning in grado di migliorare le diagnosi, individuare le schematicità di una ben determinata patologia e, più in generale, di fornire strumenti migliori a disposizione dei dottori, in modo da poter intervenire sui singoli pazienti tramite contromisure adattate ad esigenze specifiche. Non solo: le recenti tecniche di deep learning potrebbero consentire in un futuro prossimo di avere fasi delle terapie totalmente automatizzate, permettendo a medici e operatori del settore di dedicarsi maggiormente allo studio di nuove soluzioni.

AI in campo medico

Cosa succederebbe se un gruppo di esperti potesse essere sempre ai servizi di un singolo paziente? Come fare per ridurre gli errori che possono essere compiuti nella formulazione di una diagnosi? In un mondo ideale, ogni terapia verrebbe formulata andando incontro con estrema precisione alle esigenze del singolo, prendendo spunto sia dalla sua storia clinica che dalla conoscenza collettiva data da milioni di altri pazienti: grazie al Machine Learning, i medici possono rompere i limiti imposti da una conoscenza circostanziale, derivante dall’applicazione di terapie su un numero ristretto di pazienti, attraverso l’uso di una “esperienza condivisa”, grazie alla quale formulare terapie ottimizzate per una persona specifica [1]. Non solo: l’adozione di tecniche di intelligenza artificiale può permettere la totale automazione di alcune fasi cliniche, agevolando il lavoro degli specialisti.

Prognosi

Una prognosi è un procedimento grazie al quale si può predire lo sviluppo di una certa malattia. Un modello di machine learning è in grado di permettere ai medici di prevedere eventi futuri: tra quanto verosimilmente un paziente potrà tornare alla vita di tutti i giorni dopo essersi sottoposto a delle cure? Quanto velocemente progredirà una malattia? Un modello algoritmico richiede dei dati in grado di fornire un quadro completo, inclusi i risultati delle terapie alle quali il paziente si è sottoposto in passato [1]. A livello clinico, andranno collezionati diversi tipi di dati, quali: risultati di test fenotipici, genomici, proteomici e patologici, congiuntamente a immagini mediche [2].

Diagnosi

I migliori dottori sono in grado di comprendere quando un particolare avvenimento clinico sia effettivamente nella norma oppure se rappresenti un rischio per la salute del paziente. L’americana Institute of Medicine ha evidenziato che tutte le persone nel corso della loro vita incorrono almeno una volta in una diagnosi errata [3]: ridurre qualsiasi tipo di errore può essere cruciale nel caso di patologie non comuni, senza considerare il fatto che ciò possa avere un effetto benefico perfino nel caso di malattie a noi più familiari. Basti pensare che complicazioni ritenute debellate quali tubercolosi e/o dissenteria hanno almeno una possibilità di non essere individuate, sebbene nei paesi sviluppati vi sia un accesso adeguato a terapie in grado di far fronte a queste disfunzioni [4]. Attraverso i dati collezionati durante terapie di tutti i giorni, le tecniche di AI possono individuare le diagnosi più probabili durante una visita clinica e prospettare quali condizioni si manifesteranno in futuro nel paziente [1].

Trattamento

In un sistema sanitario su scala nazionale, con migliaia di medici impegnati con altrettanti pazienti, potrebbero presentarsi delle variazioni circa le modalità di trattamento di certi sintomi. Un algoritmo di ML può individuare queste naturali variazioni in modo da aiutare i dottori ad identificare un trattamento da preferire rispetto ad un altro [1]. Un’applicazione potrebbe essere quella di confrontare ciò che il dottore prescriverebbe a un paziente con un trattamento suggerito da un modello algoritmico [1].

Flussi di lavoro per i medici

L’introduzione delle cartelle elettroniche (EHR, Electornic Health Record) ha agevolato l’accesso ai dati, ma allo stesso tempo ha fatto emergere dei “colli di bottiglia” derivanti da passaggi burocratici e amministrativi, creando ulteriori complicazioni per i medici. Le tecniche di ML possono permettere lo snellimento di passaggi inefficienti e macchinosi all’interno del flusso di lavoro clinico [1]. Le stesse tecnologie che vengono utilizzate nei motori di ricerca possono porre in evidenza informazioni rilevanti nella cartella clinica di un paziente, agevolando il lavoro degli specialisti. Ciò consente inoltre ulteriori facilitazioni nell’inserimento di nuovi dati tenendo conto dello storico clinico di un soggetto [1].

Coinvolgimento di un maggior numero di esperti

L’adozione dell’intelligenza artificiale può dare la possibilità di raggiungere un maggior numero di specialisti in grado di fornire una valutazione medica senza che vi sia un loro coinvolgimento diretto [1]. Ad esempio: un paziente potrebbe inviare dal suo smartphone una foto, in modo tale da ottenere un’immediata diagnosi, senza ricorrere a canali medici destinati ai casi più urgenti [1].

Tecniche di Machine Learning comunemente usate in campo medico

Di seguito verranno illustrate le tecniche di ML più usate in letteratura medica. Si sottolinea che in questa sede avverrà una trattazione maggiormente orientata al campo medico, non approfondendo gli aspetti tecnici.

Support Vector Machine

Le SVM vengono utilizzate principalmente per classificare i soggetti all’interno dei due gruppi, aventi rispettivamente come “etichetta” Y = 1 e Y = -1[5]. Questi raggruppamenti sono definiti da un confine decisionale (decision boundary) definito dai dati X in ingresso:

L’obiettivo dell’addestramento della SVM è quello di rinvenire il parametro w ottimale, in modo tale che la classificazione risulti il più precisa possibile (Figura 1). Una delle proprietà più importanti delle SVM consiste nel fatto che la determinazione dei parametri è un problema di ottimizzazione convessa, dunque la soluzione è sempre un ottimo globale.

Figura 1: un esempio di come funziona una Support Vector Machine [5]

Convolutional Neural Network

L’accrescimento delle capacità computazionali dei dispositivi moderni ha permesso al Deep Learning di divenire uno dei campi di ricerca più gettonati all’interno di varie discipline scientifiche: in questo senso, la medicina non ha conosciuto eccezioni [5][6]. Grazie a queste tecniche di apprendimento “profonde” (cosiddette a causa della numerosa presenza di strati, in grado di astrarre schematicità molto complesse), si può effettuare un’analisi dettagliata di immagini mediche, come le scansioni a raggi X, sfruttando l’abilità di una rete neurale di gestire dati voluminosi e estremamente complessi, come appunto le immagini, in modo efficiente [5]. Nel corso degli anni, le Convolutional Neural Network hanno ottenuto un’enorme popolarità, specie nel mondo medico: basti pensare che dal 2014 in poi, questo particolare tipo di reti neurali ha soppiantato metodologie quali le Recurrent Neural Newtork e le Deep Belief Neural Network [5] (Figura 2).

Figura : popolarità degli algoritmi di Deep Learning nel campo medico [5]

Una CNN si basa sull’utilizzo di un’operazione detta di convoluzione, in grado di tenere traccia dei vari cambiamenti di un dato multidimensionale, avendo la posizione di un misuratore all’interno di uno spazio [7]. Considerando un’immagine bidimensionale I, e un kernel K (un array multidimensionale riportante i parametri appresi dall’algoritmo):

In figura 3 viene riportata una struttura a grandi linee di una CNN, mentre nella figura 4 è possibile notare ciò che viene prodotto tramite l’applicazione dell’operazione di convoluzione.

Figura 3: bozza di una CNN [8]
Figura 4: risultato di alcune operazioni di convoluzione[8]

Random Forest

La Random Forest è una tecnica che contempla l’utilizzo di più regressori, strutturati “ad albero” (i.e.: gli alberi di decisione). Ogni albero esprime un proprio candidato attraverso un algoritmo di classificazione: successivamente, i voti di tutti gli alberi vengono sottoposti a una media.

Nell’equazione il termine B sta ad indentificare i singoli bagging, ovvero gli addestramenti degli alberi di decisione su differenti istanze del dataset [9]. In campo medico, questo tipo di tecnica può essere utilizzata, ad esempio, per discriminare caratteri fenotipici di un organismo [10], oppure per classificare i dati clinici di un paziente in modo tale da poter fornire una diagnosi accurata [11].

Limiti dell’AI in campo medico

Disponibilità di dati di qualità

Uno dei temi centrali nella costruzione di un modello ML è quello di poter attingere a un dataset rappresentativo di tutti i possibili soggetti, in modo che sia il più diversificato possibile [1]. L’ideale sarebbe riuscire ad addestrare algoritmi utilizzando dati molto simili, se non identici, a quelli riportati all’interno delle cartelle cliniche elettroniche [1]: purtroppo molte volte si avrà a che fare con dataset piccoli, raccolti da piccoli centri clinici, talvolta di qualità scarsa (riportanti del rumore, ossia delle irregolarità generate da dei dati erronei).

Privacy

Come detto, avere dataset costituiti da cartelle cliniche correttamente compilate sarebbe l’ideale. Tuttavia, questi dati agli occhi della legislazione vigente sono considerati sensibili, dunque di difficile reperibilità, rendendo più difficile la delineazione di modelli di ML. Una soluzione naturale potrebbe essere quella di consegnare i dati clinici al paziente stesso, che deciderà poi che uso farne [1].

Apprendimento da pratiche passate sbagliate

Tutte le attività umane sono sottoposte involontariamente a dei bias cognitivi: alcuni degli aspetti da considerare nello sviluppare un sistema ML è quello di comprendere quanto questi bias, rappresentati dai dati, influenzeranno il modello finale [12] e quali strumenti porre in campo per far fronte a questa problematica [13].

Esperienza nella valutazione finale

Similmente a quanto avviene nei sistemi sanitari, l’applicazione di tecniche di ML richiede una sofisticata struttura regolatoria, in grado di assicurare il giusto impiego degli algoritmi nel campo medico [1]. I medici e pazienti devono capire i limiti di questi strumenti, come ad esempio l’impossibilità di una determinata struttura di poter generalizzare su un altro tipo di problematica [13]. L’affidarsi ciecamente ai modelli ML può condurre a decisioni erronee: ad esempio un medico potrebbe abbassare la guardia nel caso in cui l’algoritmo restituisca un risultato sbagliato, al di sotto di una certa soglia d’allarme [1].

Cooperazione interdisciplinare

Team di informatici, biologi e medici devono collaborare in modo da poter costruire modelli utilizzabili nei loro rispettivi settori. Una mancata comunicazione può condurre a risultati inutilizzabili da parte dei medici [1]. Spesso le pubblicazioni scientifiche vengono pubblicate online sottoforma di prestampa (i.e.: preprint) su portali quali arXiv e bioRxiv, senza considerare la moltitudine di manoscritti informatici che non vengono pubblicati sui giornali scientifici tradizionali ma bensì all’interno di conferenze quali NeurIPS e ICML [1].

Tecniche di AI applicate al COVID-19

Dall’inizio della pandemia del virus SARS-CoV-2, il mondo scientifico ha posto la sua attenzione nel porre in campo metodi in grado di poter contrastare l’accrescimento dei contagi: basti pensare che soltanto nel mese di marzo, sono stati pubblicati 24000 prestampati sui portali arXiv e bioRxiv concernenti l’utilizzo di tecniche di AI con il compito di individuare pazienti affetti da COVID-19 [15]. Molti autori hanno realizzato lavori in cui le CNN vengono usate per discriminare i malati COVID da altri con patologie più comuni, utilizzando dataset costituiti da scansioni a raggi X di pazienti affetti da polmoniti (Figura 5) [16][17].

Figura 5: struttura di una CNN per l’individuazione di pazienti affetti da SARS-CoV-2[16]

Inoltre, sono stati proposti diversi metodi in real-time per l’individuazione immediata della malattia: l’utilizzo degli smart-watch, ad esempio, permette il monitoraggio di diversi parametri fisici in grado di indicare se il soggetto abbia contratto il virus o meno [18].

Conclusioni

Marco, un paziente di 49 anni, avverte un dolore alla spalla e, nonostante ciò, decide di non richiedere assistenza medica. Qualche mese dopo, decide di farsi visitare da un dottore che gli diagnostica una cheratosi seborroica (un’escrescenza cutanea simile a un grosso neo).

Successivamente, Marco si sottopone a una colonscopia e un’infermiera nota una macchia scura sulla sua spalla. Marco decide di farsi visitare da un dermatologo, il quale ottiene un campione dell’escrescenza: le analisi effettuate evidenziano una lesione benigna del pigmento. Il dermatologo, però, non si fida e decide di effettuare una seconda analisi: stavolta la diagnosi parla di un melanoma invasivo. Dunque, un oncologo sottopone Marco a un trattamento chemioterapico ma, nel frattempo, un amico del dottore chiede al povero paziente come mai non si sia ancora sottoposto a immunoterapia [1].

Se Marco avesse avuto accesso alle più moderne tecnologie di ML, avrebbe potuto semplicemente fare una foto alla spalla tramite il suo smartphone per poi inoltrare l’immagine a un dermatologo esperto tramite un’app dedicata. Successivamente a una biopsia della lesione, raccomandata dal dermatologo, si sarebbe giunti alla diagnosi di melanoma al primo stadio: a quel punto, il dermatologo avrebbe potuto recidere la lesione [1].

L’applicazione dell’intelligenza artificiale in medicina potrà far risparmiare tempo, impiegare al meglio il know-how degli specialisti, permettere di giungere a diagnosi maggiormente accurate e, più in generale, migliorare la vita dei pazienti e snellire il lavoro degli operatori del settore.

  • Pros:

– Diagnosi più precise

– Snellimento dei procedimenti medici e burocratici

– Acquisizione di una conoscenza terapeutica globale

– Maggiore specializzazione del personale medico

  • Cons:

– Disponibilità di dati di qualità

– Mancanza di procedure di raccolta dati condivisi

– Componente umana fondamentale nella valutazione finale della diagnosi

References

[1] Rajkomar, A. – Dean, J. – Kohane, I.. “Machine Learning in Medicine.” New England Journal of Medicine, 380. 1347-1358. (2019)

[2] Qayyum, A – Junaid Q. – Muhammad, B. – Ala A.. “Secure and Robust Machine Learning for Healthcare: A Survey.” IEEE reviews in biomedical engineering (2020)

[3] McGlynn, E. – McDonald, K. – Cassel C..”Measurement is Essential for Improving Diagnosis and Reducing Diagnostic Error: A Report from the Institute of Medicine.” The Journal of the American Medical Association, Vol. 314(23), pp. 1-2 (2015)

[4] Das, J. – Woskie, L. – Rajbhandari, R. – Abbasi, K. – Jha, A.. “Rethinking assumptions about delivery of healthcare: implications for universal health coverage.” The British Medical Journal (Clinical research ed.), Vol. 361 (2018)

[5] Jiang, F. – Jiang, Y. – Zhi, H. – Dong, Y. – Li, H. – Ma, S. – Wang, Y. – Dong, Q. – Shen, H. – Wang, Y.. “Artificial Intelligence in Healthcare: Past, Present and Future.” Stroke and Vascular Neurology Vol. 2 (2017)

[6] Mori, J. – Kaji S. – Kawai H. – Kida S. – Tsubokura M. – Fukatsu, M. – Harada, K. – Noji H. – Ikezoe T. – Maeda T. – Matsuda A.. “Assessment of dysplasia in bone marrow smear with convolutional neural network.” Scientific Reports Vol.10 (2020)

[7] Goodfellow, I. – Bengio, Y. – Courville, A.. “Deep Learning.” MIT Press (2016)

[8] Yamashita, R. – Nishio, M. – Do, R., – Togashi, K.. “Convolutional neural networks: an overview and application in radiology.” Insights into imaging, Vol. 9(4), pp. 611–629 (2018)

[9] Breiman, L.. “Random Forests.” Machine Learning Vol.45(1), pp. 5 – 32 (2001)

[10] Chen, T. – Cao, Y. – Zhang, Y. – Liu, J. – Bao, Y. – Wang, C. – Jia, W. – Zhao, A.. “Random forest in clinical metabolomics for phenotypic discrimination and biomarker selection.” Evidence-based complementary and alternative medicine : eCAM (2013)

[11] Alam, Z. – Rahman, S. – Rahman, S.. “A Random Forest based predictor for medical data classification using feature ranking.” Informatics in Medicine Unlocked, Vol. 15, (2019)

[12] Gianfrancesco, MA. – Tamang, S. – Yazdany, J. – Schmajuk, G.. “Potential Biases in Machine Learning Algorithms Using Electronic Health Record Data.” Journal Of American Medical Association, Internal Medicine, Vol.178(11), pp. 1544-1547 (2018)

[13] Rajkomar, A. – Hardt, M. – Howell, M. D. – Corrado, G. – Chin, M. H.. “Ensuring Fairness in Machine Learning to Advance Health Equity.” Annals of internal medicine, Vol.169(12), pp. 866–872 (2018)

[14] Krumholz, H. M.. “Big data and new knowledge in medicine: the thinking, training, and tools needed for a learning health system.” Health affairs (Project Hope), Vol.33(7), pp. 1163-70 (2014)

[15] Hao, K.. ”Over 24,000 coronavirus research papers are now available in one place”. MIT Technology Review, URL: https://www.technologyreview.com/2020/03/16/905290/coronavirus-24000-research-papers-available-open-data/ (2020)

[16] Jain, G. – Mittal, D. – Thakur, D. – Mittal, M. K.. “A deep learning approach to detect Covid-19 coronavirus with X-Ray images”. Biocybernetics and biomedical engineering, Vol.40(4), pp. 1391-1405 (2020)

[17] Hemdan, E.E – Shouman, M. – Karar, M.. “COVIDX-Net: A Framework of Deep Learning Classifiers to Diagnose COVID-19 in X-Ray Images.” ArXiv, abs/2003.11055 (2020)

Mishra, T. – Wang, M. – Metwally, A.A., Bogu G.K. – Brooks A. W. – Bahmani A. – Alavi A. – Celli A. – [18] Higgs, E. – Dagan-Rosenfeld O. – Fay, B. – Kirkpatrick, S. – Kellogg, R. – Gibson M. – Wang, T. – Hunting E. M. – Mamic P. – Ganz A. B. – Rolnik, B. – Li, X. – Snyder M. P.. “Pre-symptomatic detection of COVID-19 from smartwatch data.” Nature Biomedical Engineering (2020).

Analisi del parlato: sentimenti, emozioni e dialetto

Analisi del parlato: sentimenti, emozioni e dialetto

L’analisi dell’audio è molto importante oggi, poiché la maggior parte delle interazioni sono costituite da supporti interattivi vocali. L’informazione principale estratta dal vocale è la semantica, ossia il significato dei concetti espressi.

Alcuni ambiti di applicazione sono:
– il riconoscimento vocale, ad esempio dei sentimenti e/o delle emozioni;
– la provenienza geografica;
– informazioni mediche (indicazioni sui sintomi di alcune patologie).

Una possibile risoluzione dei compiti legati all’audio, e in particolare alla voce, è molto impegnativa e le tecniche usate per risolvere questi problemi si basano spesso su approcci di Deep Learning che richiedono elevate potenze di calcolo.

Federico Schipani, Machine learning engineer

regolamento europeo AI

Introduzione

Le interazioni vocali sono sempre più diffuse perché permettono di migliorare il rapporto utente-utente e quello utente-software/macchine.
Come esempi troviamo: i controlli vocali all’interno delle automobili, sugli smartphone o anche per applicazioni industriali e, più in generale, tutte quelle situazioni in cui non si possono, o non si vogliono, usare le mani per digitare un testo.
Per questo l’analisi dell’audio è diventato un argomento molto importante nel mondo contemporaneo in quanto, rispetto a un file di testo, le informazioni contenute all’interno di una frase parlata sono molto più dettagliate.
Nel mondo delle vendite è sempre più difficile affermarsi e rendersi appetibili agli occhi di potenziali clienti e per questo avere informazioni riguardo le conversazioni può giocare un ruolo determinante sia nella fase di vendita sia in fase di analisi. Durante una trattativa è di fatti possibile raccogliere molte informazioni che possono migliorare l’esperienza di vendita: capire velocemente il grado di interesse delle parti per valutare il proseguimento, oppure modulare un’offerta per renderla più appropriata; a livello strategico è importante per i manager conoscere l’andamento delle campagne e poter analizzare dati aggregati, affiancati da opportune metriche di valutazione, da poter esplorare e su cui basare le decisioni future.

In letteratura, problemi del genere solitamente sono risolti con tecniche di deep learning, infatti un grande limite a cui si va incontro quando si lavora con l’audio è senza dubbio la grande mole di dati necessaria all’addestramento di modelli di questo tipo. Inoltre, gran parte dei modelli disponibili sono stati sviluppati per la lingua inglese e applicazioni per la lingua italiana sono meno diffuse e molte volte non sono sufficienti per ottenere delle buone prestazioni; questo comporta che sia spesso necessario passare da una fase di raccolta dati che molte volte può essere lunga e costosa.

Andando più nello specifico si possono identificare quattro task riguardanti l’analisi dell’audio: speech recognition, sentiment analysis, emotion analysis e riconoscimento del dialetto.

Speech recognition

La speech recognition è il cardine dell’analisi dell’audio: a partire da un ingresso audio vocale, lo scopo è trascrivere il suo contenuto in un documento di testo e per questo è quindi equiparabile a una versione più complessa di un classificatore di suoni. Infatti, molte volte i problemi di questo tipo sono modellati come classificatori di fonemi, poi eventualmente seguiti da altri modelli per la predizione del testo in base ai fonemi riconosciuti.

Riconoscimento dei dialetti

Senza ombra di dubbio il task su cui si hanno meno difficoltà a comprenderne la natura è l’identificazione di un dialetto. In questo caso, infatti, partendo da un file audio, lo scopo finale è identificare la provenienza dell’interlocutore. Seppure una nazione possa condividere un’unica lingua molte volte tra territori differenti quest’ultima varia dando origine a dei dialetti. Il caso limite, ad esempio, è in Italia: la lingua nazionale è l’Italiano, ma in Sardegna si parla il Sardo che è considerato come una lingua autonoma piuttosto che un dialetto.

Figura : Raggruppamento dei dialetti in Italia [7]

In generale i dialetti però tendono ad avere alcune somiglianze tra di loro, quindi se anche questo può essere considerato alla stessa stregua di un problema di classificazione linguistica diventa decisamente più complicato.

Sentiment ed Emotion analysis

Molte volte si tende a usare in maniera intercambiabile l’espressione sentiment analysis con emotion analysis. La sostanziale differenza tra analisi dei sentimenti e analisi delle emozioni risiede nel numero di classi. L’analisi dei sentimenti è riconducibile a un problema di classificazione binario, in cui l’input può essere assegnato a una classe negative oppure positive. In alcuni casi invece si preferisce introdurre un ulteriore livello di precisione inserendo la classe neutral.

L’analisi delle emozioni invece è un problema più articolato e difficoltoso da gestire. Al contrario del primo tipo di analisi non ci sono due o tre classi con evidenti differenze, ma in questo caso si hanno più classi che possono avere similarità tra di loro. Ad esempio, si può avere la classe happiness ed excitement che pur essendo due tipi di emozioni differenti hanno diverse caratteristiche in comune come il volume o il tono della voce.

In alcuni contesti è possibile vedere l’analisi delle emozioni come un’estensione dell’analisi dei sentimenti, il che porta ad ottenere una visione più dettagliata e meno semplificata di una conversazione. Ad esempio, angry oppure bored va da sé che sono due emozioni che non sono propriamente positive, infatti in un’eventuale analisi dei sentimenti verrebbero inserite nella classe negative.

Per via della natura dei problemi talvolta, quando si hanno a disposizione solo informazioni testuali, come possono essere recensioni di un prodotto, si tende a preferire l’analisi dei sentimenti rispetto all’analisi delle emozioni in quanto non avendo audio o immagini il primo task è nettamente più difficoltoso.

Tecniche per analizzare l’audio

L’analisi dell’audio può essere fatta tramite diverse tecniche, ognuna con un tipo di pre-processamento del file audio differente. La più naturale che può venire in mente è sicuramente effettuare il riconoscimento del parlato per poi lavorare sul testo tramite strumenti di Natural Language Processing. Altre tecniche, un po’ meno intuitive, passano per la generazione di feature audio che verranno poi analizzate tramite un classificatore realizzato tramite una Rete Neurale.

Classificazione tramite Reti neurali

Una Rete neurale artificiale non è altro che un modello matematico il cui scopo è approssimare una determinata funzione. La sua composizione è detta a livelli in quanto contiene un primo livello di input, dei livelli intermedi detti nascosti e un ultimo livello di output. Ogni livello nascosto della rete è composto da un numero predefinito di unità di elaborazione, dette neuroni. Ogni neurone al livello ha diversi segnali in ingresso provenienti dai neuroni al livello n-1 e un segnale di uscita per i neuroni al livello n+1.

Figura : Rete neurale artificiale [2]

Le reti più comuni e che descriveremo di seguito sono dette feedforward in quanto il loro grafo di computazione è diretto e aciclico. Vediamo ora come funziona l’apprendimento da parte di una rete neurale. Bisogna innanzitutto descrivere più nel dettaglio la struttura interna di un neurone. Come precedentemente detto la singola unità computazionale ha un ingresso e un’uscita, ma il dato come viene trasformato al suo interno?

Figura : Neurone artificiale [3]

Definiamo per ogni connessione i, entrante in un neurone, un input x e un peso associato w; gli input vengono quindi combinati linearmente con i pesi associati effettuando l’operazione

.

Il risultato di questa operazione viene dato come input a una funzione detta funzione di attivazione. Riassumendo e formalizzando in maniera più concisa le operazioni effettuate all’interno di un singolo neurone si ha che l’output è:

La funzione di attivazione è quel componente del modello che si occupa di determinare il valore di uscita in base alla combinazione lineare dei pesi del neurone con gli output dei layer precedenti. Esistono diverse funzioni di attivazione: allo scopo attuale è sufficiente sapere che per i layer intermedi viene spesso usata la funzione (non lineare) chiamata ReLU; mentre se si risolve un problema di classificazione sull’ultimo layer viene usata una funzione detta Softmax, la cui proprietà è restituire in output una distribuzione di probabilità sulle varie classi.

L’ultimo nodo da sciogliere ora riguarda l’addestramento di un modello di questo tipo. L’addestramento di una Rete Neurale avviene in due fasi: una prima fase, detta di forward propagation, in cui le si danno in pasto dei dati presi da un insieme di addestramento e una seconda fase, detta di back propagation, in cui si fa il vero e proprio addestramento.

Nella forward propagation si utilizza una parte del dataset chiamata train set per calcolare la predizione del modello e confrontarlo con la realtà. Il confronto, calcolato per mezzo di una funzione di loss, è una misura oggettiva di quanto la predizione del modello sia corretta. L’addestramento è l’ottimizzazione matematica della funzione di loss: in altre parole i pesi del modello sono modificato nel tentativo di ridurre la funzione di loss e quindi far sì che la predizione del modello sia il più vicino possibile alla realtà. Si fa uso quindi, nella fase di back propagation, di una regola per il calcolo delle derivate detta chain rule; in questo modo, calcolando la derivata della funzione di loss rispetto ai pesi dei livelli, possiamo variare i pesi per cercare di diminuire il valore della funzione oggetto di ottimizzazione.

Preprocessing dell’audio

I file audio, prima di essere dati in input a un classificatore, devono subire una fase di preprocessing dove si vanno ad estrarre dei coefficienti detti feature.

Un file audio ha una caratteristica detta frequenza di campionamento. Solitamente si assume essere 16 kHz, questo vuol dire che in un secondo di audio ci sono sedicimila campioni. Assumeremo questa frequenza come uno standard negli esempi successivi. Calcolare un set di coefficienti per ogni campione è un’operazione molto onerosa, oltre che inutile in quanto la variazione tra un campione e il suo successivo, o precedente, è minima. Si considerano quindi batch di campioni consecutivi di dimensione 400, corrispondenti quindi a 25 ms. Per ogni insieme di campioni si andranno a calcolare le feature audio. Per i task di speech recognition in genere sono usate un tipo particolare di feature chiamate Mel-Frequency Cepstral Coefficent (MFCC); che si calcolano con il seguente procedimento:

  1. Preso il batch di frame viene calcolata la Trasformata di Fourier. Considerando:

  1.  

E data la frequenza di campionamento

si avrà che la frequenza corrispondente a è data da

.

Calcolandolo per tutti i batch di campioni otterremo quindi

detta Short Time Fourier Transform Matrix (STFT Matrix)

  1. Si effettua il calcolo del Mel Filterbank:
    1. Tramite formula di conversione si passa dalla scala delle frequenze alla scala Mel:

  1. Dati:

Con F numero di filtri.

  1. Si calcola

dopodiché, tramite formula inversa, si porta questo valore in scala delle frequenze ottenendo

  1. Il banco di filtri Mel è dato da questa funzione:

  1. Si procede al calcolo di MFCC:
    1. Si passa alla scala logaritmica delle Mel:

  1. Si applica la discrete cosine transform:

ottenendo così che la colonna p-esima della matrice Phi rappresenta i coefficienti MFCC del segnale corrispondente.

Da calcolo di questi coefficienti si può generare spettrogrammi o matrici con cui poi si andranno a effettuare le relative analisi.

Analisi dell’audio tramite Reti ricorrenti

Al giorno d’oggi due tipi di reti ricorrenti molto efficaci sono le Long Short Term Memory (LSTM) e le Bidirectional LSTM (BiLSTM). Per una descrizione accurata su questo tipo di struttura si rimanda a un articolo precedentemente pubblicato.

Il grande svantaggio di questo tipo di strutture però è l’impossibilità di variare la dimensione dell’input in quanto ricevono sempre un vettore di dimensione fissata.

Tuttavia, esistono dei lavori recenti basati sul meccanismo dell’attenzione che risolvono questo problema e al contempo riescono a gestire in maniera più efficace le dipendenze a lungo termine. A titolo esemplificativo è possibile descrivere uno dei più semplici meccanismi dell’attenzione come un vettore. Definiamo innanzitutto

come la matrice di input di forma T x F, dove T è il numero di frame e F è il numero di feature per frame. Il meccanismo di attenzione è un vettore

tale per cui, se moltiplicato per H, formando

produce una attention map. Un utilizzo possibile per questa attention map può essere come fattore pesante per l’output di una RNN, in maniera tale da dire al modello dove prestare più attenzione.

Analisi dell’audio tramite CNN

Dalle feature audio estratte durante il preprocessing è possibile generare uno spettrogramma, ovvero una rappresentazione grafica tridimensionale sotto forma di immagine che mostra variazione dello spettro delle frequenze secondo il tempo. Sull’asse orizzontale c’è quindi il tempo, mentre sull’asse verticale è presente la frequenza. La terza dimensione è rappresentata dalla scala di colori utilizzata per mostrare la variazione di ampiezza di una frequenza.

Anger Disgust Fear
(d) Happiness (e) Sadness (f) Neutral

Figura : Esempi di spettrogrammi per ciascuna classe di emozione

A tutti gli effetti, essendo quindi immagini, ci si riconduce a un problema di classificazione di immagini e quindi diventa possibile usare le CNN, o modelli basati su di essa, per classificarli. Per una rapida e dettagliata spiegazione di cosa sia una Convolutional Neural Network si rimanda a un articolo precedentemente pubblicato.

Al giorno d’oggi esistono molti modelli di Deep Learning adatti a effettuare Image Classification, uno dei più famosi è VGG in tutte le sue possibili declinazioni.

Inoltre, grazie a preaddestramenti effettuati su altri dataset è possibile raggiungere risultati soddisfacenti con relativamente pochi dati a nostra disposizione. Infatti, molte volte nelle librerie di DL che implementano questi modelli si può scegliere anche se scaricare un set di pesi da cui far partire l’addestramento. In questo caso si parla di Transfer Learning o Fine Tuning.

Conclusioni

L’analisi dell’audio si sta diffondendo in molti campi di applicazione e permette attraverso l’interazione vocale di comandare software e macchine risolvendo molte situazioni in cui l’utente è impossibilitato, o ostacolato, nell’interazione fisica con il device. Attraverso strumenti di deep learning è possibile estrarre molte informazioni dall’interazione vocale, ad esempio riguardanti l’emozione o la provenienza dell’interlocutore, e questo permette di migliorare l’interazione e l’esperienza dell’utente, ma porta anche a raccogliere nuovi dati su cui generare degli indicatori di performance molto più esaustivi e precisi.

L’utilizzo di questi strumenti sta avendo un impatto molto positivo nell’ambito dell’assistenza telefonica in quanto permette una migliore gestione delle chiamate, un’accurata analisi in tempo reale e la pianificazione di strategie più efficaci. Inoltre, è possibile usare dei modelli di question answering per supportare le risposte in maniera molto più rapida dei classici strumenti di ricerca.

Infine, in ambito di prevenzione medica, le ultime ricerche hanno investigato la possibilità di usare l’analisi dell’audio, in particolar modo dei colpi di tosse, per potere aiutare i medici nell’individuazione di soggetti positivi alla COVID-19. Gli studi [8], seppur preliminari, sembrano molto promettenti e permetterebbero di effettuare degli screening veloci, non invasivi e su larga scala con semplici strumenti di raccolta audio come gli smartphone.

In sintesi, i pregi e i difetti dell’utilizzo di tecniche di analisi audio sono:

  • Pro
    • Acquisizione di nuovi dati e realizzazione di KPI più efficaci
    • Ottimizzazione del flusso di lavoro
    • Miglioramento delle interazioni uomo-macchina
  • Contro
    • Necessità di molti dati con annotazioni
    • Difficoltà di reperimento di dataset italiani
    • Gestione della privacy e del contenuto dei dati

Riferimenti

[1] Choi, Keunwoo, et al. “A comparison of audio signal preprocessing methods for deep neural networks on music tagging.” 2018 26th European Signal Processing Conference (EUSIPCO). IEEE, 2018.

[2] https://en.wikipedia.org/wiki/Artificial_neural_network#/media/File:Colored_neural_network.svg

[3] https://en.wikipedia.org/wiki/Artificial_neuron

[4] Muaidi, Hasan, et al. “Arabic Audio News Retrieval System Using Dependent Speaker Mode, Mel Frequency Cepstral Coefficient and Dynamic Time Warping Techniques.” Research Journal of Applied Sciences, Engineering and Technology 7.24 (2014): 5082-5097.

[5] Kopparapu, Sunil Kumar, and M. Laxminarayana. “Choice of Mel filter bank in computing MFCC of a resampled speech.” 10th International Conference on Information Science, Signal Processing and their Applications (ISSPA 2010). IEEE, 2010.

[6] Ramet, Gaetan, et al. “Context-aware attention mechanism for speech emotion recognition.” 2018 IEEE Spoken Language Technology Workshop (SLT). IEEE, 2018.

[7] https://it.wikipedia.org/wiki/Lingue_dell%27Italia

[8] Laguarta et al. “COVID-19 Artificial Intelligence Diagnosis using only Cough Recordings”, IEEE Open Journal of Engineering in Medicine and Biology, IEEE, 2020.

Deep Learning e dataset sintetici

Deep Learning e dataset sintetici

Come affrontare la mancanza di dati

In applicazioni come Industria 4.0, non sempre i dati disponibili rispondono alle necessità delle strutture algoritmiche complesse, né riportano labeling corretti. Ecco perché si ricorre a dati sintetici, per sopperire a tutte quelle mancanze che possono essere presenti nei dataset reali.

Per una serie di problematiche fondamentali, l’interesse verso lo sviluppo di procedure in grado di generare dati sintetici si sta facendo via via sempre più forte nel mondo dell’industria 4.0: oltre alle ben note difficoltà legate al rispetto della privacy, vi è la necessità da parte di strutture algoritmiche complesse (come, ad esempio, le reti neurali) di dover approvvigionarsi di un grande quantitativo di dati. Non solo: i dati a disposizione dovrebbero riportare una caratteristica determinante per l’ottenimento di risultati realistici, ovvero un’accurata annotazione (altresì detto labeling). Purtroppo, per tutta una serie di svariati motivi, non sempre è possibile poter soddisfare tali requisiti.

Nel corso degli ultimi anni sono stati sviluppati molteplici metodi in grado di poter generare efficacemente dei dataset sintetici, aggiungendo quindi un ulteriore livello procedurale all’interno di una pipeline di apprendimento: ciò permette di ottenere dati molto verosimili, andando a tagliare ulteriori costi derivanti dalla raccolta e annotazione di questi ultimi.

Nell’ideare algoritmi di Deep Learning in grado (ad esempio) di permettere l’automazione di robot all’interno della propria fabbrica o di fornire assistenza quando si è alla guida di un’automobile, è fondamentale poter attingere a tantissimi dati visivi (come immagini e video), annotati con dovizia di particolari. L’atto di andare ad evidenziare specifiche regioni riportate all’interno di foto e video viene denominato segmentazione: la precisione nel delineare queste aree può fare la differenza nell’avere o meno un algoritmo in grado di interagire efficacemente con l’ambiente circostante. Solitamente questa operazione viene effettuata da annotatori umani, risultando essere un ulteriore costo da tenere in considerazione, oltre alla scarsa precisione delle annotazioni. Altro fatto da considerare sono le restrizioni in termini di privacy che possono emergere nel caso in cui vi sia la necessità di avere a disposizione categorie di dati che agli occhi della legislazione vigente sono giudicati come “sensibili”. Tutte queste difficoltà possono essere superate, grazie a nuove metodologie in grado di generare dataset sintetici, ovvero insiemi di dati creati prendendo spunto da dei dati reali. Ciò è possibile grazie a tecniche che apprendono ciò che “contraddistingue” i dati reali: tra le architetture più celebri in letteratura in questo senso vi sono le GAN (Generative Adversarial Neural Network), in grado di plasmare nuovi dati grazie all’addestramento di due strutture, ossia un generatore e un discriminatore D. I nuovi dati sintetici possono essere resi ancor più realistici affiancando tecniche di ibridizzazione. Inoltre, i moderni game-engine possono concorrere alla realizzazione di scenari virtuali, utili per poter addestrare efficacemente dei robot all’interno di una catena di produzione automatizzata.

Indice degli argomenti

1 – Limitazione dei dataset attualmente esistenti

Come è possibile poter generare delle annotazioni il più precise possibili, nel caso in cui si abbia a che fare con un imponente quantitativo di dati (come 100.000 immagini)? Sebbene per alcune funzioni (es.: classificazione di immagini) siano già disponibili dei dataset più che soddisfacenti (ImageNet), in altre situazioni si potrebbe avere a che fare con dati che peccano in mancanza di annotazioni precise (Fig. 1). Questo fenomeno viene definito in letteratura come la maledizione dell’annotazione del dataset (The curse of dataset annotation)[1]. Altri limiti di cui tenere conto sono:

  • Valutazione del modello: il solo utilizzo di dati reali potrebbe non risultare sufficiente nel caso in cui si voglia testare la propria architettura “profonda”, nel tentativo di far emergere eventuali falle nel design di quest’ultima. L’utilizzo di dataset sintetici può porre sotto i riflettori qualsivoglia criticità, consentendo la formulazione di ipotesi da sottoporre a dei test tramite la generazione di un “ambiente controllato”[2].
  • Alleviamento dei bias: alcuni dataset potrebbero non essere in grado di generalizzare al meglio tutte le possibili casistiche da sottoporre ad un eventuale algoritmo di apprendimento. Il rischio è quello di addestrare una struttura “carente” nei confronti di alcuni dati in input: più in generale, questo tipo di problema viene definito in statistica con il termine bias. Dunque, i dataset sintetici possono aiutare a coprire eventuali falle statistiche presenti all’interno di una raccolta dati reale[2].
Figura 1: due immagine provenienti dal dataset MS COCO. Notare la segmentazione imprecisa e grezza, prodotta da annotatori umani [2]
  • Ottimizzazione dello spazio: se la generazione di dati sintetici risulta migliorare l’algoritmo a cui verranno dati in pasto, sarà possibile poter produrre “sul posto” nuovi dataset, ottimizzando dunque l’utilizzo della memoria[2].
  • Risoluzione di problemi legati alla privacy: la produzione di dati sintetici può aiutare a superare eventuali ostacoli legati all’utilizzo di dati sensibili. Per esempio, nel caso in cui si debba avere a che fare con informazioni riguardanti lo stato di salute o la situazione economico-finanziaria di una persona.

2 – Esempi di dataset sintetici

Attualmente i dataset sintetici vengono applicati con successo in due campi: la guida autonoma (autonomous driving, AD) e l’automazione industriale. Per dovere di cronaca, verranno citati due celebri dataset virtuali per l’AD: Virtual Kitti[3] e SYNTHIA[5].

Virtual Kitty nasce con l’idea di mimare l’acquisizione di video e immagini all’interno di uno scenario urbano, esattamente come avveniva nella sua controparte reale, ovvero KITTI[4]: anziché far viaggiare una vera auto con telecamere, scanner 3D e laser, le stesse operazioni di acquisizione vengono compiute in un mondo virtuale all’interno del game-engine di Unity[3]. Tra gli aspetti da non sottovalutare, c’è il fatto che questo tipo di acquisizione rende possibile un’accurata annotazione delle scatole di delimitazione 3D 2D (3D 2D bounding box): come il nome suggerisce, si trattano di coordinate spaziali in grado di permettere l’individuazione dell’area occupata da un oggetto all’interno di uno spazio 3D o di un’area a 2 dimensioni. SYNTHIA pone maggiore enfasi sull’annotazione semantica degli oggetti presenti nel mondo virtuale: esso propone 13 classi di labeling, in modo tale da avere a disposizione un gran numero di aree di segmentazione[5]. Anche qui, l’area urbana è stata generata tramite l’utilizzo di Unity[5]. Una delle caratteristiche più interessanti di SYNTHIA risiede nel fatto che tutti gli oggetti 3D sono stati resi scaricabili[5]: di conseguenza, sarà possibile generare nuove aree metropolitane in modo del tutto casuale, utilizzando ogni componente come una singola unità (Figura 2).

Figura 2: alcune immagini scattate all’interno di ambienti virtuali generati tramite gli asset 3D di SYNTHIA

3 – Dal sintetico al reale: gli Autoencoder

Gli Auto-Encoder furono originariamente introdotti con lo scopo di effettuare una riduzione di dimensionalità delle feature di un dataset in maniera più efficiente rispetto a quanto avviene con tecniche analitiche ben più note, come la PCA[7]. Prendendo spunto da quanto avveniva in una macchina di Boltzmann ristretta (restricted Boltzmann Machine), in cui ogni coppia di layer funge da feature detector in modo tale da acquisire le caratteristiche necessarie per poter delineare delle corrette funzioni di attivazione, i vari strati sono fusi in una sorta di schema “ad imbuto”: in questo modo, si crea una struttura a pila in grado di poter effettuare la corretta riduzione di dimensionalità, mantenendo inalterata le capacità di generalizzazione concessa dall’architettura di Boltzmann. La nuova rete profonda sottosta ad una “funzione di perdita” (Loss Function) che deve fornire una misura qualitativa del dato ricostruito, rispetto al dato originale passato in input.

Figura 3: l’architettura di un AE, a partire dalle coppie di layer di una RBM[7]

Nella formula, viene riportato il learning rate e la discrepanza che esiste tra il dato originale e quello ricostruito[7]. In sintesi, un autencoder è caratterizzato da due sotto-strutture, un encoder e un decoder, aventi rispettivamente la funzione di ridurre e di ripristinare la dimensionalità del dato. E’ possibile far sì che un auto-encoder sia in grado di astrarre la distribuzione probabilistica che governa il dataset, in modo tale da generare nuovi dati tramite lo spazio latente derivato dall’encoder: ciò è attuabile tramite i Variational Auto-Encoder (VAE), all’interno dei quali l’encoder e il decoder vengono denotati in maniera probabilistica [8]. Stavolta, la discrepanza della ricostruzione viene formulata tramite una divergenza di Kullback-Leibler, tenendo conto delle due distribuzioni:

Figura 4: il grafico probabilistico di un VAE[8]

Utilizzando una struttura profonda, sarà possibile poter creare un campione a partire dalla distribuzione statistica: questa tecnica viene denominata come trucco di re-parametrizzazione (reparametrization trick).

Sebbene gli autoencoder abbiano riportato risultati notevoli per quanto concerne la generazione di dati, la loro inferenza statistica si basa fortemente sui Metodi di Monte-Carlo, che può indurre a una difficile trattazione analitica del problema da affrontare[9].

4 – Imparare a creare: le GAN

Le Generative Adversarial Neural Network (GAN) sono ormai considerate uno standard per la generazione di dati. La logica che governa questa architettura profonda è la seguente: due modelli, D, vengono allenati su una porzione di dataset. Il compito di (ovvero il “Discriminatore”) è quello di stimare la probabilità che un campione provenga dal dataset di training anziché da (il “Generatore”). Lo scopo di questo “gioco a due” è quello di far sì che diventi abile a tal punto da ingannare D[9]. La Figura 5 descrive tutto questo: la funzione di G e quella del training set si sovrappongono, facendo sì che D non sia più in grado di discernere l’origine dei dati. In termini statistici, D viene addestrata in maniera tale da massimizzare la probabilità che un dato provenga dal dataset, contrariamente a G che deve minimizzare: questa competizione viene definita come minmax game, e viene descritta dalla seguente funzione:

Il principale punto di forza delle GAN risiede nel fatto che tutti i problemi derivanti dall’utilizzo di catene di Markov e metodo di Monte-Carlo vengono bypassati: il gradiente viene ottenuto tramite l’implementazione dell’algoritmo di retropropagazione (backprop), rimuovendo la necessità di formulare inferenze statistiche[9]. Una volta terminato l’allenamento di questa struttura, si potrà generare dati ex-novo, sfruttando il set probabilistico memorizzato da G.

Figura 5: Distribuzioni probabilistiche imparate da D (la linea blu a puntini), G (la linea verde) e quella sottointesa dai dati (la linea nera a puntini)[9]

Degne di menzione sono gli Adversarial Auto-Encoder (AAE), ovvero degli auto-encoder probabilistici che implementano delle GAN in grado di poter effettuare inferenza statistica sulla variabilità dei dati, facendo sì che una distribuzione a posteriori di un vettore di codifica di un auto-encoder combaci con un’arbitraria distribuzione a priori (figura 6)[10]. La misura di verosimiglianza riportata dagli output degli esperimenti fanno presagire che gli AAE possano condurre a ulteriori passi in avanti nella generazione di dati sintetici[10].

Figura 6: Un AAE con capacità di generare nuovi dati. Le informazioni di labeling vengono separate dal vettore nascosto: in questo modo, le caratteristiche dell’input vengono imparate dalla struttura[10]
Figura 7: volti di persone generati tramite un AAE. I ritratti originali sono situati sull’ultima colonna a destra[10]

5 – Un maggiore realismo: Parallel Imaging e PBR

E’ importante sottolineare il fatto che il solo utilizzo di strutture algoritmiche per modellare nuovi dati rischia di immettere nuovi bias, a causa di alcuni pattern ripetuti che potrebbero compromettere la variabilità del nuovo dataset[2]. Ciò deriva in larga parte dal fatto che l’utilizzo di dati generati artificialmente per applicazioni reali equivale a “spostarsi” da un mondo fittizio a quello reale: prendendo come esempio i dati visivi, è stato notato come sia importante un rendering realistico per attenuare lo shock derivante dalla traslazione di dominio. Questo problema è noto come adattamento di dominio (domain adaptation)[2]. Per porre rimedio a questo tipo di problematiche, nel corso degli anni sono state proposte architetture ibride, in grado di trarre il meglio delle strutture profonde congiuntamente a metodi di manipolazione di dati reali: è il caso di Parallel Imaging, un framework che utilizza approcci guidati di AI assieme ad altri legati all’utilizzo di immagini e video veri. Queste schematizzazioni non escludono l’utilizzo dei vari game-engine, che possono permettere l’aggiunta di un ulteriore fattore di verosimiglianza[12]. In alcuni casi, sono state proposte architetture che contemplano l’utilizzo di tecniche di rendering prese in prestito direttamente dal mondo degli effetti speciali[13], con risultati a dir poco impressionanti (Figura 8).

Figura 8: immagine 3D renderizzata con l’uso di tecniche di PBR (Phisical Based Rendering)[13]

6 – Esempi di applicazione industriale

Sono molteplici i casi di applicazioni all’interno di fabbriche e industrie dei dati sintetici: ciò non solo permette all’imprenditore di poter accelerare i tempi di adozione di soluzioni maggiormente orientate verso l’automazione, ma anche di poter guadagnare in termini formazione, sia per gli umani che per le macchine. Prendendo spunto dalle architetture viste precedentmente, l’utilizzo dei VAE rende possibile il training delle macchine interamente all’interno di ambienti virtuali[6]: sarà dunque possibile utilizzare lo stesso identico decoder per effettuare un’efficace traslazione di dominio da uno scenario simulato ad uno reale, utilizzando due differenti encoder in grado di poter trattare le due casistiche. Una volta addestrate le varie strutture, sarà possibile utilizzare una Convolutional Neural Network (CNN) per rinvenire le coordinate spaziali con estrema precisione di un qualsiasi oggetto (figura 9)[6].

Nel caso di generazione di dataset, Fallen Things (FAT) è sicuramente meritevole di essere menzionato: sviluppato dalla Nvidia, FAT permette un addestramento ottimale di automi per applicazioni industriali, fornendo una modalità di creazione casuale di scenari altamente realistici. Questa generazione risulta essere abbastanza singolare: una volta delineato il fondale, gli oggetti vengono letteralmente lanciati all’interno dell’ambiente, in modo che la disposizione finale sia guidata dal motore fisico del game-engine Unreal[11]. Completata questa operazione, l’utente avrà a disposizione una dettagliata annotazione dello scenario, utili per l’allenamento di strutture profonde.

Figura 9: struttura che utilizza i VAE per gestire il domain shift da virtuale a reale. Una CNN si occuperà poi di individuare le coordinate spaziali di un oggetto

7 – Conclusioni

Le reti neurali e più in generale le cosiddette architetture “profonde” stanno causando un cambiamento nelle procedure normalmente utilizzate in alcuni campi inerenti agli algoritmi di apprendimento: anziché sviluppare metodi per risolvere specifici problemi, la ricerca sta puntando verso l’adozione di “paradigmi universali”, in grado di poter mappare uno spazio di input (ovvero, il dato che viene dato in ingresso da un utente) direttamente nel corrispondente spazio di output (il dato prodotto dall’algoritmo)[1]. I dati sintetici non solo accelereranno la ricerca in questa direzione, ma contribuiranno a sopperire a tutte quelle mancanze che possono essere presenti nei dataset reali.

  • Pros
    • Miglioramento qualitativo dei dataset
    • Possibilità di costruzione on-the-fly di dati
    • Ottimizzazione nei processi di automazione (basti pensare che attualmente la BMW sta addestrando i suoi co-piloti artificiali per il 95% su piste virtuali)
    • Strutture profonde che possono essere ispezionate ed analizzate grazie a dati “controllati”, risultando meno black-box
  • Cons
    • Rischio di inserire nuovi bias se la generazione non risulti essere abbastanza imprevedibile
    • Verosimiglianza necessaria
    • Necessità di ibridizzare con il reale per alleviare il domain shift