192
IL MONDO DELL’INTELLIGENZA ARTIFICIALE Istituto Tecnico Tecnologico Statale “Fedi - Fermi” Pistoia Classe V IA Anno Scolastico 2020/2021 Esame di maturità

IL MONDO DELL’INTELLIGENZA ARTIFICIALE

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

IL MONDODELL’INTELLIGENZA

ARTIFICIALE

Istituto Tecnico Tecnologico Statale “Fedi - Fermi”

Pistoia

Classe V IA

Anno Scolastico 2020/2021

Esame di maturità

Page 2: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Indice generale

Editoriale 3

Artificial Intelligence: state of art and beyond 5

SISTEMI ESPERTI 21

Reti Bayesiane 31

I linguaggi di programmazione delle moderne IA 39

La programmazione funzionale e le moderne AI 51

Big data e Intelligenza artificiale 57

Reti Neurali Artificiali 72

AI: una rete neurale con i LEGO e Raspberry Pi 85

Machine Learning and self driving cars: deep neural networks versus human perception 97

THE EXPLOITATION OF MACHINE LEARNING FOR CYBERSECURITY 113

Machine-learning Algorithms Detect Malicious Threats that Evade Traditional IDS 121

L' AI nell'era dei computer quantistici 137

L’intelligenza artificiale oltre le email 149

The Evolution of Artificial Intelligence in Video Games 161

VR content creation and exploration with deep learning 175

Il futuro dell’agricoltura? 182

Neurocrittografia / Speedgate: il primo sport al mondo generato da un’Intelligenza Artificiale 189

Page 3: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

EditorialeL’Intelligenza Artificiale (AI - Artificial Intelligence) è la tecnologia più “affascinante” degliultimi anni, diventata argomento di dialogo anche tra chi non è esperto in materia.Nonostante si parli di AI addirittura dagli anni ‘50, l’enorme diffusione nell’utilizzo didispositivi che si basano su questa disciplina è avvenuta solo in tempi recenti. Una branca dell’intelligenza artificiale è rappresentata dai sistemi esperti, che auspicano arisolvere problemi e fornire supporto decisionale utilizzando le reti Bayesiane.In particolare, una rete Bayesiana è un grafo aciclico orientato, formato da nodi e archi.Combinando questi, si possono ottenere delle reti, anche molto complesse, per lo studioprobabilistico della realtà. Per il suo corretto funzionamento, l’intelligenza artificiale necessita di alcuni linguaggi diprogrammazione, tra cui: Java, PHP e Python. Quest’ultimo ha ottenuto il maggior successograzie all’elevato numero di librerie e funzioni dedicate alle IA.Importante è anche la programmazione funzionale, che offre numerosi vantaggi neiprogrammi di AI. Saranno quindi messe a confronto le possibili soluzioni funzionali eimperative ad alcuni classici problemi di programmazione.I Big Data rendono possibile la gestione di grandi moli di dati, lasciando però irrisolta laquestione riguardante la privacy degli utenti. Gli studi si concentrano dunque su comepotremmo risolvere questa problematica anche grazie all’intelligenza artificiale.Nell’ambito dell’AI ricoprono un ruolo fondamentale le reti neurali artificiali, poichéconsentono di risolvere problemi complessi per la mente umana. Fra le applicazioni praticheche le utilizzano vi sono: il riconoscimento facciale, di immagini e vocale, i veicoli a guidaautonoma e gli assistenti vocali. Un’applicazione pratica analizzata in questo studio ècapace riconoscere e classificare varie tipologie di mattoncini LEGO attraverso l’utilizzo diun RaspBerry PI.Nel mondo informatico le minacce necessitano sempre più attenzione e, a tal proposito, leintelligenze artificiali riescono ad analizzare i Big Data in modo rapido e efficace. I pericoliinformatici però riguardano anche la rete. Qui entrano in gioco gli IDS (Intrusion DetectionSystem), che si basano sul Machine Learning, in particolare Deep Learning. Questi algoritmisono in grado di trovare autonomamente le differenze fra i dati normali e anormali con unagrande precisione.L’AI sta cambiando ogni giorno di più la nostra vita ed è utilizzata in varie discipline, comemusica, arte, scienza e tecnologia. Ormai le applicazioni di questa disciplina ricoprono varicampi differenti tra cui: lo sviluppo dei computer quantistici, le emails, i videogames e larealtà virtuale, l’agricoltura e la crittografia.Nell’ultimo decennio sono stati fatti incredibili progressi nello sviluppo dei computerquantistici, i quali consentono di raggiungere una velocità di calcolo che supererà quella deipiù potenti supercomputer in applicazioni come la crittografia, le simulazioni chimiche efisiche o l’ottimizzazione degli algoritmi di ricerca. L’intenzione è quella di utilizzare l’intelligenza artificiale per creare un sistema di allerta emanovra automatico in sostituzione del macchinoso sistema delle emails, in modo tale danon commettere certi errori, potenzialmente catastrofici. L’Intelligenza Artificiale nei videogiochi ha avuto un ruolo ed un’evoluzione negli anni semprepiù importanti sulla qualità del videogioco stesso. L’obiettivo è quello di trovare il giustoequilibrio tra AI e qualità di gameplay, per arrivare allo sviluppo della realtà virtuale, che offreuna simulazione artificiale generata dal computer di un ambiente di vita reale.L’AI non ha applicazioni solo all’interno del mondo informatico, infatti il settore agricolo sta

Page 4: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

attraversando un passaggio culturale che porta verso l’AI, che ci aiuta a ridurre gli sprechi erende più efficaci ed efficienti molti processi in campo agricolo.

Artificial Intelligence: state ofart and beyond

Intelligenza artificiale: stato dell’arte e oltre

Niccolò Maestripieri

Page 5: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

AbstractL’Intelligenza Artificiale (AI - Artificial Intelligence) è la tecnologia più “affascinante” degliultimi anni ormai diventata argomento di dialogo anche tra chi non è esperto in materia.Nonostante si parli di AI addirittura dagli anni ‘50, l’enorme diffusione nell’utilizzo didispositivi che si basano su questa disciplina è avvenuta solo in anni recenti. L’AI sta cambiando ogni giorno di più la nostra vita ed ormai è utilizzata in varie discipline,come musica, arte, scienza e tecnologia. Spesso non ci accorgiamo nemmeno dove vieneeffettivamente utilizzata questa tecnologia, tale è la sua presenza nelle nostre vite. Vedremoda dove nasce il concetto di intelligenza artificiale, come si è evoluto nel corso degli anni,quali sono le tecniche utilizzate e le principali innovazioni che sono state presentate negliultimi tempi.

1. IntroduzioneSpesso durante le nostre conversazioni con le altre persone, che siano amici, colleghi dilavoro o parenti, viene fuori il termine Intelligenza Artificiale (AI - Artificial Intelligence). Ormaine sentiamo parlare anche su internet, in televisione e pure sui giornali. Ma che cos’è questaAI di cui tanto si parla, su quali principi si basa e quali sono le applicazioni nella nostra vita ditutti i giorni?Per dare un’idea di cosa stiamo parlando, iniziamo con una prima definizione di AI: è unadisciplina ampia che ha l’obiettivo di creare macchine intelligenti [1]. La prima cosa che vienein mente leggendo questa definizione è “Come fa una macchina a essere intelligente?”.L’intelligenza umana è descritta come la capacità di acquisire e applicare conoscenze ecompetenze[40], quindi l’obiettivo di questa disciplina è fare in modo che una macchina sia ingrado di fare queste cose, che per un essere umano sono scontate e vengono messe in attofin dalla nascita.Possiamo dire quindi che una macchina è intelligente se si comporta come un essereumano, quindi deve essere in grado di imparare, fare ragionamenti e risolvere problemi inmodo autonomo, senza l'intervento di un operatore umano che la indirizzi verso un campospecifico. Dato che stiamo parlando di concetti astratti, difficili da quantificareconcretamente, è stato deciso che per determinare se una macchina è intelligente si utilizzail “test di Turing”, proposto da Alan Turing in un suo articolo del 1950. Se una macchinariesce a superare questo test è considerata intelligente, altrimenti no.Quando si parla di una macchina intelligente, cioè che ha superato il test di Turing, si staparlando di un’AI forte. Una macchina con una AI forte è in grado di pensare proprio comefacciamo noi esseri umani. Quindi è in grado di effettuare ragionamenti, collegamenti tra ciòche succede nell’ambiente e quali azioni deve eseguire, imparare dalle esperienze. Seinvece una macchina non supera il test di Turing ci troviamo di fronte ad una AI debole. Unamacchina con una AI debole si comporta come se pensasse. Una AI di questo tipo è ingrado di risolvere problemi e di imparare dalle esperienze, ma si specializza in un solocontesto applicativo, e ha comunque bisogno dell’intervento umano per funzionarecorrettamente nelle prime fasi di apprendimento. Nonostante gli anni di ricerca in questadisciplina, ancora non esiste una macchina che abbia superato il test di Turing, anche seconsiderando gli enormi traguardi raggiunti negli ultimi anni è ragionevole pensare che primao poi una macchina lo supererà.

Page 6: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

2. StoriaIl primo lavoro inerente alla AI di cui si ha traccia risale al 1943, quando McCulloch e Pittspresentarono il primo modello di neurone artificiale. Un altro passo importante nella nascitadi questa disciplina avvenne nel 1950, quando Alan Turing pubblicò il suo articolo“Computing machinery and intelligence”, dove si pose per la prima volta la domanda “Unamacchina può pensare?” e propose il test che da lui prende il nome.Nonostante questi importanti contributi si assume come anno di nascita della AI il 1956,quando in una conferenza tenutasi al Dartmouth College di Hanover, New Hampshire, JohnMcCarthy[38] coniò il termine “Intelligenza Artificiale”. Durante questa conferenza non fusoltanto deciso il nome della nuova disciplina, ma furono anche presentati dei primiprogrammi di AI come il “Logic Theorist”, che era in grado di dimostrare teoremi matematici.Un altro anno importante per l’AI fu il 1958, quando Frank Rosenblatt presentò il primomodello di rete neurale artificiale, chiamato percettrone. Dopo un primo entusiasmo ci sirese conto che con questo modello non era possibile eseguire operazioni semplici come loXOR, e quindi lo sviluppo delle reti neurali venne messo in stand-by fino agli anni ‘80. Oltre aquesto sempre nello stesso anno McCarthy inventò il LISP, il linguaggio di programmazionedominante in questo campo per i successivi trent’anni.Al primo entusiasmo degli anni ‘50 e ‘60 seguì una brusca frenata nello sviluppo negli anni‘70, quando emersero le prime limitazioni legate alle interazioni delle macchine conl’ambiente e alle difficoltà riscontrate nell’analisi del linguaggio umano.Lo sviluppo riprese grazie all’invenzione dei primi sistemi esperti, come MYCIN eDENDRAL, arrivati negli anni ‘70. Da questo momento in poi la diffusione della AI saràimpressionante e arriverà presto a coinvolgere tutto il globo. Negli anni ‘80 infatti iniziaronole prime ricerche in questo campo condotte al di fuori degli Stati Uniti, più precisamente inEuropa e in Giappone, e le AI furono introdotte anche all’interno delle industrie, dove laprima fu la Digital Equipment con il suo R1. Infine in questi anni tornarono in auge anche lereti neurali artificiali, grazie alla riscoperta dell’algoritmo di “error-back propagation” utilizzatoper la prima volta da Rosenblatt per il suo percettrone.La crescita inarrestabile della AI continua negli anni ‘90 quando il computer di IBM DeepBlue riesce a sconfiggere il campione di scacchi dell’epoca Gary Kasparov. Dagli anni 2000ai giorni nostri infine abbiamo visto tante altre innovazioni, come le macchine a guidaautonoma e gli assistenti vocali di Google, Microsoft e Apple.

3. Algoritmi di ricercaGli algoritmi di ricerca (Searching algorithms) sono largamente utilizzati dalle AI per risolvereproblemi. Per definizione questi algoritmi risolvono problemi di ricerca e, in particolare,hanno il compito di trovare un determinato valore all’interno di una struttura dati, oppurecalcolarlo nello spazio di ricerca del dominio del problema. Il motivo del loro utilizzo nella AIderiva dal fatto che questo tipo di algoritmi “insegnano” alla macchina ad agirerazionalmente, nell’ottica di dover raggiungere un obiettivo a partire da un certo valore diinput [11].Gli algoritmi di ricerca devono avere quattro importanti proprietà: completezza, ottimalità,complessità spaziale e complessità temporale. Al momento gli algoritmi di ricerca abbinatialla AI hanno molteplici applicazioni. Per esempio sono utilizzati per pianificare le rotte deimovimenti dei robot, per la progettazione di chip VLSI e per la formazione di proteine. Questialgoritmi trovano anche applicazione in problemi più semplici come la fattorizzazione di un

Page 7: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

intero, l’individuazione di una combinazione/password oppure il recupero di un record da undatabase. Un’altra applicazione meno relativa a campi scientifici è la risoluzione di puzzlecome sudoku o cruciverba.Gli algoritmi di ricerca si classificano in due categorie principali: disinformati (UninformedSearch Algorithms) e informati (Informed Search Algorithms). Per gli algoritmi descritti faròriferimento ad esempi di ricerca di un valore all’interno di un albero.

3.1. Uninformed Search AlgorithmsGli algoritmi di ricerca che appartengono a questa categoria non hanno alcuna conoscenzadel dominio dove vanno a effettuare la ricerca, quindi sono anche chiamati algoritmi diricerca brute-force (forza bruta). Per questo motivo lavorano bene in situazioni dove lospazio di ricerca non è troppo ampio. Questi algoritmi conoscono solamente comeattraversare lo spazio di ricerca e come identificare il nodo obiettivo. Quindi esaminano ogninodo dell’albero fino a che non trovano il nodo obiettivo.Tra gli algoritmi di questo tipo rientra il Breadth-First Search (BFS), che analizza tutti i livellidell’albero da sinistra a destra fino a che non raggiunge il nodo obiettivo. BFS trova sempreil percorso più breve ma è inefficiente dal punto di vista della memoria, dato che devememorizzare ogni livello all’interno di una struttura di tipo FIFO. Alcuni esempi di utilizzo diquesto algoritmo sono i sistemi GPS e l’analisi delle reti.Un altro algoritmo disinformato è il Depth-First Search (DFS), che è simile al BFS maesegue la ricerca in base alla profondità, quindi esamina ogni sottoalbero fino al livello piùprofondo in modo ricorsivo partendo dal sottoalbero a sinistra. Per memorizzare i varisottoalberi si utilizza una struttura di tipo LIFO. DFS è molto più lento rispetto a BFS ma habisogno di meno memoria. DFS è poco utilizzato, e dove trova applicazione si utilizza unavariante chiamata Depth Limited Search, che introduce un limite alla profondità che siraggiunge durante la ricerca, in modo da ridurre il tempo che si impiega.Un’altra variante del DFS è l’iterative deepening DFS (ID-DFS), che è una combinazione diDFS e BFS. Infatti questo algoritmo esegue una ricerca DFS fino a un certo limite diprofondità e se non ha ancora trovato il nodo obiettivo incrementa questo limite fino a chenon arriva al risultato. In questo modo si uniscono i vantaggi dei due algoritmi visti inprecedenza: la velocità di ricerca del BFS e la poca memoria utilizzata dal DFS.

Page 8: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Altri due algoritmi disinformati che si utilizzano sono Uniform Cost Search (UCS) e quello diricerca bidirezionale. UCS è utilizzato quando a ogni arco è assegnato un costo. L’obiettivodi questo algoritmo è quello di trovare il percorso che conduce al nodo obiettivo e che abbiail minor costo complessivo possibile. Infine c’è la ricerca bidirezionale, che prevede, oltre auna ricerca che parte dal nodo iniziale per arrivare al nodo obiettivo, anche una ricerca cheparte dal nodo obiettivo per arrivare al nodo iniziale. Queste due ricerche sono eseguitecontemporaneamente e a un certo punto si incontreranno in uno stato intermedio. Pereffettuare queste ricerche si utilizza uno degli algoritmi visti in precedenza (BFS, DFS, UCSecc…), e il vantaggio di questa tecnica è che la ricerca è veloce e utilizza poca memoria.Tuttavia implementare un algoritmo di questo tipo è molto difficile ed è necessario conoscerein anticipo il nodo obiettivo, cosa che non sempre è possibile. [2.2][4.1]

3.2. Informed Search AlgorithmsAl contrario degli algoritmi disinformati quelli informati utilizzano la conoscenza del dominioper svolgere la ricerca, quindi sono più efficienti in termini di prestazioni. Altre informazioniutilizzate da questi algoritmi ad esempio sono la distanza dall’obiettivo, il costo del percorsoe come raggiungere l’obiettivo. Questo tipo di algoritmi utilizza l’euristica, che garantisce ditrovare una buona soluzione in un tempo ragionevole. Inoltre l’euristica permette diassegnare un valore a uno stato che indichi quale sia il costo del tragitto che va da quellostato allo stato obiettivo. L’utilizzo dell’euristica rende questi algoritmi più adatti ad affrontareproblemi che hanno uno spazio di ricerca ampio, che non sarebbero affrontabili utilizzandotecniche di ricerca disinformate.In questi algoritmi si utilizza quindi una funzione euristica, indicata con h(n), per stimarequanto si è vicini all’obiettivo. Questa funzione non trova sempre la soluzione migliore, magarantisce di trovare una buona soluzione in tempi ragionevoli.Il più semplice algoritmo di ricerca informata è la ricerca euristica pura. In questo tipo diricerca si analizzano i nodi in base al loro valore euristico. I nodi sono memorizzati in dueliste, una aperta e una chiusa. Nella lista chiusa si mettono i nodi già analizzati, mentre nellalista aperta si mettono quelli non ancora analizzati. A ogni iterazione si analizza il nodo con ilvalore euristico minore e da questo si trovano i successivi nodi da analizzare. L’algoritmo siesegue fino a che non si trova una soluzione.Un algoritmo di questo tipo è il Best-First Search, detto anche Greedy Search, che analizzaa ogni iterazione il nodo più vicino all’obiettivo. Per determinare quale sia questo nodo siutilizza la funzione euristica. Il Best-First Search unisce i vantaggi di BFS e DFS e perquesto è più efficiente dei due algoritmi disinformati. Però c’è anche la possibilità chel’algoritmo finisca in un loop infinito.La forma più conosciuta del Best-First Search però è l’A* Search, che utilizza la funzioneeuristica e una funzione di costo per raggiungere lo stato obiettivo a partire da quello iniziale.L’A* Search combina elementi di UCS e del Greedy Best-First Search, e questo è uno deimotivi per i quali risolve i problemi in maniera efficiente. L’obiettivo di questo algoritmo èquello di trovare il percorso più breve tra quelli nello spazio di ricerca utilizzando la funzioneeuristica. Nonostante richieda l’impiego di una grande quantità di memoria questo è uno deimigliori algoritmi in circolazione. [2.3][4.1]

4. Rappresentazione della ConoscenzaUn altro aspetto importante della AI è la rappresentazione della conoscenza. Questo campo

Page 9: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

ha lo scopo di rendere “comprensibile” alle macchine la conoscenza che noi esseri umaniutilizziamo naturalmente per i nostri ragionamenti e le nostre deduzioni. La rappresentazionedella conoscenza quindi è quella parte della AI che si occupa del pensiero della macchina edi come questo pensiero contribuisce al suo comportamento. La macchina potrà poiutilizzare questa conoscenza per risolvere i complessi problemi che le si presentano quandointeragisce con l’ambiente. Inoltre rappresentare la conoscenza permette alla macchina diimparare da questa conoscenza, e di conseguenza di aumentare le proprie performance.Per interagire con l’ambiente la prima azione che svolge la macchina è la percezionedell’ambiente, grazie alquale acquisisceinformazioni dallo stesso.Solitamente per raccoglierequesti dati la macchinautilizza dei sensori, chesiano visivi, uditivi o tattili.A questo punto entra ingioco l’apprendimento, cheutilizza i dati ottenutidall’ambiente permigliorare le performancedella macchina. La partefondamentale di questainterazione è rappresentatadalla rappresentazione della conoscenza e dal ragionamento, che permettono poi dieseguire la pianificazione e l’esecuzione delle azioni che la macchina ha deciso dieseguire[2.6].Ci sono quattro approcci che sono utilizzati per rappresentare la conoscenza: relazionalesemplice, ereditario, inferenziale e procedurale. Nell’approccio relazionale semplice siutilizza il metodo relazionale che organizza i dati in delle tabelle simili a quelle utilizzate daidatabase relazionali. L’approccio ereditario invece organizza i dati in una gerarchia di classi,come quelle utilizzate nella programmazione a oggetti. Un altro approccio è quelloinferenziale, che utilizza la logica e infine c’è l’approccio procedurale, che utilizza breviprogrammi scritti in LISP o in Prolog per descrivere come devono essere eseguite le varieazioni.Le principali tecniche usate per rappresentare la conoscenza sono la rappresentazionelogica, la rappresentazione con reti semantiche, la rappresentazione mediante frame e larappresentazione basata su regole di produzione. La rappresentazione logica si basa sudelle regole concrete espresse tramite proposizioni, che sono utilizzate per giungere a delleconclusioni. Questa tecnica può utilizzare due tipi di logica diversi: la logica delleproposizioni e la logica dei predicati. Un’alternativa alla logica dei predicati sono le retisemantiche, che rappresentano la conoscenza sotto forma di grafi dove i nodi sono oggetti egli archi sono i collegamenti tra questi oggetti. La rappresentazione mediante frame inveceorganizza i dati in delle strutture che contengono delle coppie attributo-valore. Infine siutilizzano anche i sistemi che si basano su regole di produzione che utilizzano coppiecondizione-azione, quindi se si verifica una certa condizione la macchina eseguirà l’azionecorrispondente [22].

Page 10: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

4.1. Sistemi EspertiI sistemi esperti sono un esempio di sistemi che si basano sulla conoscenza. Per definizioneil loro scopo è quello di risolvere problemi che siano circoscritti a un determinato campoapplicativo, replicando in qualche modo quello che fa un umano esperto in un determinatocampo (ad esempio un medico). I sistemi esperti si basano sulla logica dei predicati [2.7],un’espansione della logica delle proposizioni, che permette di costruire frasi complesse apartire da frasi atomiche e di effettuare deduzioni a partire da queste frasi. Le componentifondamentali di un sistema esperto sono la base di conoscenza, il motore inferenziale el’interfaccia utente. La base di conoscenza è popolata da un esperto umano, aiutato da uningegnere della conoscenza, con i predicati che il sistema utilizzerà per fare le suededuzioni. Il motore inferenziale è l’elemento che effettua le deduzioni applicandodeterminate regole sulla base di conoscenza. L’interfaccia utente è la componente chepermette l’interazione tra il sistema esperto è l’utente, che non è esperto in quel campo.I primi sistemi esperti furono DENDRAL e MYCIN, che nacquero negli anni ‘60-’70. Da quelmomento hanno conosciuto una costante evoluzione e ora trovano applicazione in svariaticampi, come quello medico, dove sono utilizzati per diagnosticare malattie, quellofinanziario, dove sono utili per individuare frodi e attività sospette, oppure anche nel mondodel design, ad esempio per le automobili. [Alice Amitrano]

4.2. Probabilità e Reti BayesianeUn altro sistema che si basa sulla rappresentazione della conoscenza sono le retiBayesiane. A differenza dei sistemi esperti, che usano la logica dei predicati, le retiBayesiane utilizzano la probabilità per descrivere la realtà. In pratica una rete Bayesiana èun grafo aciclico orientato, dove ogni nodo del grafo rappresenta una variabile mentre ogniarco rappresenta una dipendenza condizionale tra due nodi. Inoltre una rete Bayesianaassocia a ogni nodo una tabella che contiene la probabilità semplice e la probabilitàcondizionale di quel nodo.Al momento le reti Bayesiane trovano applicazioni in quei campi in cui è necessarioeffettuare previsioni, come nella medicina per eseguire diagnosi sui pazienti, o nei filtri per lospam per decidere se un’email è spam o meno. Altri campi in cui sono utilizzate le retiBayesiane sono la classificazione di documenti, il recupero di informazioni, l’elaborazione diimmagini e la ricerca semantica, cioè il miglioramento dell’accuratezza dei risultati di una

Page 11: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

ricerca su un browser [18]. [Samuele Mancini]

5. Reti Neurali ArtificialiA contrapporsi ai sistemi basati sulla rappresentazione della conoscenza ci sono i sistemibasati sull’apprendimento, che hanno nelle reti neurali (Artificial Neural Network, ANN) i loromaggiori esponenti. Lo scopo delle reti neurali artificiali è quello di imitare le reti neuralibiologiche, quindi il nostro cervello, per elaborare delle informazioni e produrre degli output apartire da queste. In sostanza una rete neurale è un modello matematico, per essere precisiun grafo aciclico orientato. I nodi di questo grafo rappresentano i neuroni, mentre gli archisono i collegamenti che ci sono tra i vari neuroni.Un rete neurale è composta da almeno tre strati: uno strato iniziale dove si prendono i valoridi input, uno strato finale dove si restituiscono i valori di output e uno o più strati intermedi,chiamati anche nascosti, dove avviene l’elaborazione dei dati. Ogni arco del grafo èassociato a un numero detto peso, mentre ogni nodo a un numero detto bias. Questi valorisono passati, insieme ai valori che arrivano dallo strato precedente, a una funzione diattivazione caratteristica della rete neurale, e in base al valore restituito da questa funzioneun nodo si attiva, inviando il proprio output ai nodi dello strato successivo, oppure no [4.3].

Il primo esempio di rete neurale fu il percettrone di Rosenblatt, presentato nel 1958. Neglianni seguenti ci si rese conto che questo modello non era in grado di eseguire alcunesemplici operazioni come lo XOR, perché non aveva degli strati nascosti per l’elaborazionedei dati. Lo sviluppo delle reti neurali rimase quindi bloccato fino agli anni ‘80, quando siiniziarono ad aggiungere strati nascosti e si iniziò ad utilizzare l’algoritmo di error-backpropagation.Esistono varie tipologie di reti neurali, ma le più comuni sono le reti neurali feed-forward,dove le informazioni attraversano la rete in una sola direzione, dallo strato di input fino allostrato di output, e quindi non si può formare un ciclo dato che non possono tornare indietro.Un'evoluzione delle reti neurali feed-forward sono le reti neurali feed-back, che, comesuggerisce il nome, permettono alle informazioni di attraversare la rete anche nel versoopposto rispetto a quello usuale, formando talvolta dei cicli. Le reti neurali feed-back trovanoapplicazione in campi come la medicina, la matematica, l’ingegneria e la classificazione di

Page 12: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

oggetti e immagini [3].Al momento sono molto utilizzate le reti neurali profonde (deep neural networks), che sonoreti neurali con più di uno strato nascosto. I maggiori esponenti di questo tipo di reti neuralisono le reti neurali convoluzionali e le reti neurali ricorrenti, entrambi derivanti dalle reti feed-forward.Come già detto le reti neurali artificiali trovano applicazione nei campi più disparati, peresempio si va dalla chimica quantistica all’identificazione facciale, dai giochi da tavolo alriconoscimento di immagini e dalla medicina alla finanza. Altre applicazioni possiamotrovarle nelle traduzioni, nelle previsioni di disastri naturali, nei social network e nellacybersecurity. [Gioele Zerini]

5.1. Reti Neurali ConvoluzionaliUna rete neurale convoluzionale (Convolutional Neural Network, CNN) è una rete neuralemultistrato di tipo feed-forward ispirata alla corteccia visiva umana. L’ispirazione presa daquesta specifica parte del nostro cervello non è casuale, infatti le reti neurali convoluzionalisono al momento le più efficienti, e di conseguenza anche le più utilizzate, per ilriconoscimento di immagini, e quindi trovano grandissima applicazione nel campo dellaComputer Vision [20].La differenza principale tra una rete neurale convoluzionale e una rete neurale feed-forwardè la presenza dei livelli di convoluzione. Questi livelli permettono di individuare nell’immagineche si sta analizzando dei dettagli particolari, che permetteranno poi nella fase finale diclassificazione di calcolare in maniera più rapida ed efficiente l’output [10].Nel corso degli anni sono state sviluppate diverse architetture per le reti neuraliconvoluzionali, ma quella utilizzata attualmente è ResNeXt-50, sviluppata nel 2019. Leprincipali applicazioni di questo tipo di rete neurale lo troviamo appunto nel riconoscimentodi immagini e nell’analisi dei video, ma è possibile anche il loro utilizzo nei controlliantidroga[35].

5.2. Reti Neurali RicorrentiUna rete neurale ricorrente (Recurrent Neural Network, RNN) è una rete neurale multistratodove ogni output è calcolato basandosi anche sull’output precedente, a differenza di quelloche succede nelle reti neurali classiche, dove ogni output è calcolato basandosi solo suivalori ricevuti in input. Questo rende le reti neurali ricorrenti molto indicate per lavorare condati espressi come una sequenza, come ad esempio un testo da tradurre da un linguaggio aun altro [5].A seconda del numero di valori di input e di output che gestiscono le reti neurali ricorrentisono classificate come uno a uno, uno a molti, molti a uno o molti a molti. Anche le retineurali ricorrenti possono avere diverse architetture, e la più utilizzata è LSTM (Long Short-Term Memory)[37] che introduce tra i nodi della rete dei collegamenti di tipo feedback.Le applicazioni delle reti neurali ricorrenti riguardano principalmente la manipolazione deltesto, quindi ad esempio traduzioni, trascrizioni da audio a testo, sintesi vocale,composizione di musica e traduzione del linguaggio dei segni.

6. Machine LearningIl Machine Learning è una branca dell’intelligenza artificiale che si occupa

Page 13: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

dell’apprendimento delle macchine. Questo apprendimento permette alla macchina dieseguire programmi senza che gli venga specificatamente detto come eseguirli.L’apprendimento avviene attraverso l’esperienza, quindi è necessario un certo periodo ditempo prima che la macchina sia effettivamente in grado di lavorare in autonomia [36].Gli algoritmi di Machine Learning sono utilizzati in vari campi, e tra questi trovano utilizzoinsieme alle reti neurali, dove hanno lo scopo di addestrare la rete ad eseguire unadeterminata azione.Ci sono diversi approcci utilizzati nel Machine Learning, ma i più conosciuti sonol’apprendimento supervisionato, l’apprendimento non supervisionato e l’apprendimento perrinforzo.

6.1. Apprendimento SupervisionatoL’apprendimento supervisionato (Supervised Learning) è la più semplice tipologia diMachine Learning. In questo apprendimento infatti si danno come informazioni allamacchina dei valori di input abbinati ai valori di output corrispondenti. Questo permette allamacchina di sapere quale dovrebbe essere il risultato per ogni input che si processa. Peraddestrare una macchina in questo modo si devono preparare due insiemi di dati: untraining set da utilizzare per la fase di apprendimento ed un test set da utilizzare una voltaterminato l’apprendimento per testare se la macchina funziona come sperato. Training set etest set insieme formano il learning set.L’apprendimento supervisionato si utilizza per risolvere problemi di classificazione e diregressione. Nei problemi di classificazione la macchina deve decidere in quale categoriarientra l’input che sta analizzando. Quindi ad esempio se si data come input l’immagine di uncane la macchina dovrà essere in grado di dire che quello nella foto è un cane. Per farequesto è necessario che nel learning set siano presenti moltissimi esempi, sia giusti(immagini che rappresentano un cane), sia sbagliati (immagini che non rappresentano uncane). Alcuni dei più comuni algoritmi di classificazione sono gli alberi decisionali e leSupport Vector Machine (SVM). Nei problemi di regressione invece lo scopo è quello distudiare la relazione tra due variabili indipendenti tra di loro per fare delle previsioni su quelloche accadrà. Possono essere utilizzati due tipi di regressione: la regressione lineare o laregressione logistica.Alcuni degli utilizzi più comuni dell’apprendimento supervisionato sono nel riconoscimento diimmagini, nell’analisi predittiva e nell’individuazione dello spam. [6]

6.2. Apprendimento Non SupervisionatoNell’apprendimento non supervisionato (Unsupervised Learning) i dati utilizzati perl’addestramento della macchina non sono valori di input con corrispondenti valori di outputma sono solo valori di input. Questo tipo di apprendimento è quindi usato per risolvereproblemi di raggruppamento o di associazione, che sono risolti cercando relazioni o schemitra i dati che si analizzano. Nei problemi di raggruppamento la macchina deve appuntoraggruppare dati che presentano caratteristiche simili, mentre nei problemi di associazionelo scopo è quello di trovare regole e correlazioni tra i dati che si analizzano.Questo tipo di apprendimento è utilizzato ad esempio per dividere notizie in categorie, perriconoscere oggetti e immagini, per individuare anomalie, per dare consigli di ricerca e perl’analisi dei social network.Nel mezzo tra apprendimento supervisionato e non supervisionato c’è l’apprendimento semi-

Page 14: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

supervisionato, che si utilizza quando si hanno dei dati etichettati, cioè che sono abbinati alloro output corretto, e dei dati non etichettati. [7]

6.3. Apprendimento per RinforzoL’apprendimento per rinforzo (Reinforcement Learning) è un tipo di apprendimento moltodiverso rispetto ai due visti in precedenza. La differenza principale è che l’apprendimentoper rinforzo non utilizza un learning set, ma acquisisce informazioni direttamentedall’ambiente, che è dinamico. Un altro aspetto fondamentale è che la macchina deveraggiungere un obiettivo e, nel caso ci riesca, ottenere una ricompensa. Se al contrario lamacchina dovesse sbagliare riceverà una penalità. Di conseguenza la macchina cercherà diraggiungere l’obiettivo e quindi di massimizzare il valore della ricompensa, diminuendo alcontempo la penalità e quindi gli errori [17].La grande interazione che questa tipologia di apprendimento ha con l’ambiente la rendeparticolarmente adatta alle auto a guida autonoma. Altre possibili applicazioni sono in ambitoindustriale, per automatizzare i processi di produzione, in ambito finanziario, nel mondo delmarketing e della pubblicità e infine nel mondo ludico e videoludico [21].

6.4. Deep LearningIl Deep Learning (DL) non è una vera e propria tipologia di apprendimento, ma è unsottoinsieme del Machine Learning che fa riferimento all’apprendimento delle reti neuralimultistrato, cioè che hanno più di uno strato nascosto. Le tipologie di reti neurali cherientrano nel DL sono quelle multistrato tradizionali, quelle convoluzionali e quelle ricorrenti.Il concetto fondamentale del DL è che gli output di uno strato siano utilizzati come input perlo strato successivo, in modo da garantire un’elaborazione completa dei dati. Nel DL sonoutilizzati sia algoritmi di apprendimento supervisionato che non supervisionato, a seconda didove si va ad utilizzare la rete neurale che si vuole addestrare.L’utilizzo del DL è dovuto alla volontà di imitare più fedelmente possibile il ragionamentoumano, infatti possiamo pensare ai vari livelli di una rete neurale multistrato come se fosseroi vari livelli di astrazione applicati dal nostro cervello, dove ogni livello si occupa di uncompito specifico.La vasta diffusione del DL degli ultimi 10 anni, quindi in tempi abbastanza recenti, è dovuta atre motivi: l’incremento dei dati a disposizione grazie alla diffusione dei big data, ilmiglioramento delle prestazioni di sistemi di calcolo parallelo come le GPU e l’ottimizzazionedei metodi di apprendimento delle reti neurali.Dato che utilizza algoritmi di apprendimento supervisionato e non supervisionato i campi diapplicazione del DL sono quelli visti in precedenza per questi tipi di apprendimento. Quindi ilDL è utilizzato nella Computer Vision, cioè in tutti quei compiti che comprendono l’analisi diimmagini come ad esempio il riconoscimento facciale, nell’elaborazione del linguaggio, nellacybersecurity, nella medicina e nella bioinformatica. [8][12]

7. Natural Language ProcessingL’elaborazione del linguaggio naturale (Natural Language Processing, NLP), è un aspettodella AI che si occupa di far comprendere alle macchine il linguaggio naturale parlato da noiesseri umani, italiano, inglese o spagnolo che sia. Principalmente il metodo più utilizzato peril NLP sono le reti neurali, istruite attraverso algoritmi di Machine Learning. La grande

Page 15: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

difficoltà che incontrano gli sviluppatori di questo campo è causata dalla complessità deinostri linguaggi, caratterizzati da moltissime eccezioni ed irregolarità, che rende difficilecodifcarne la comprensione per una macchina.Il NLP si occupa di riconoscimento del discorso, cioè la trascrizione di un discorso in untesto scritto, di riconoscere il significato di una parola in base al contesto, di analisi deisentimenti e generazione di testi in linguaggio naturale.Come si può intuire il NLP trova applicazione dove è necessario analizzare del testo. Quindiè utilizzato per individuare email di spam, per effettuare traduzioni da un linguaggio ad unaltro, per sviluppare assistenti virtuali come Siri o Alexa, per analizzare i social media e perriassumere testi. [9]

8. ApplicazioniCome abbiamo già visto, l’intelligenza artificiale trova applicazione in svariati campi, e inmolti di questi non siamo nemmeno a conoscenza del suo utilizzo. Andremo ora a fare unabreve panoramica di questi campi applicativi e a vedere le ultime innovazioni presentatenell’anno appena trascorso.Una delle applicazioni più scontate che l’AI può avere è quella nella robotica. In questomodo si è in grado di creare robot “intelligenti” che apprendono dalle loro esperienze grazieagli algoritmi di Machine Learning. Altri possibili utilizzi sono per la pianificazione deimovimenti, che avviene tramite il calcolo di rotte che si basano sulle condizioni ambientali, eper analizzare i dati che si ottengono dai sensori [13]. Sotto gli occhi di tutti, ci sono le auto a guida autonoma, che fanno un ampio utilizzo delletecnologie della AI. Queste auto utilizzano Deep Learning e Computer Vision per muoversisulle strade senza l’intervento di un operatore umano. Alcuni produttori di questa tipologia diauto sono Tesla e Google [Alexandru Vasile Boncan]. Applicazioni meno evidenti della AInelle auto le troviamo ad esempio nei dispositivi per il parcheggio assistito e per il cruisecontrol, ormai comuni alla maggior parte dei veicoli in circolazione.I social media come Instagram, Facebook e Twitter utilizzano largamente l’AI, visto chedevono gestire e analizzare milioni di dati. Ad esempio, i post che ci sono consigliati inautomatico sono scelti utilizzando il Machine Learning in base ai post che abbiamo visto inprecedenza. Inoltre, Facebook fa uso del Machine Learning per riconoscere le persone nelleimmagini in modo da poterle taggare, mentre Twitter sfrutta l’AI per un altro interessanteaspetto: individuare tweet che incitano all’odio, al razzismo oppure ad atti terroristici pereliminarli dalla piattaforma. Questi Social Media utilizzano anche il Natural LanguageProcessing per tradurre i post da una lingua ad un’altra [13][16]. La cybersecurity è una disciplina particolarmente adatta all’applicazione della AI. Inquest'ambito, è molto importante la protezione dei dati, che viene garantita grazie all’utilizzodel Deep Learning per analizzare il flusso delle informazioni ed individuare eventualianomalie [Marco Wei Jie Zhang]. Un utilizzo simile della AI lo troviamo nel mondo bancario,dove è necessario individuare le frodi che potrebbero essere messe in atto dai vari utenti.L’AI può essere utilizzata anche come tutor scolastico per aiutare i ragazzi nello svolgimentodei compiti. Un vantaggio di avere un tutor di questo genere è la sua accessibilità inqualsiasi momento se ne abbia bisogno [24]. Un’altra applicazione della AI si trova nel mondo finanziario, in particolare per il trading. Inquesto campo si devono fare previsioni sull’andamento del mercato, analizzando imovimenti passati, e ciò lo rende molto adatto all’utilizzo del Machine Learning. Sempre inquest’ambito, l’AI è usata per la concessione di prestiti, analizzando il comportamento dei

Page 16: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

richiedenti per valutare la loro affidabilità [16].Anche in medicina l’AI ha trovato importanti sbocchi applicativi. Per esempio, i sistemiesperti possono essere usati dai medici come supporto decisionale per la diagnosi dimalattie o per la prescrizione di terapie. L’utilizzo di queste tecnologie permette di ridurredrasticamente la percentuale di errore da parte del medico e può aiutare in alcuni casi asalvare la vita alle persone [13][16]. Spesso utilizziamo assistenti virtuali come Alexa, Siri e Google Assistant, e anche dietro aquesti utili dispositivi, che sono anche integrati nei nostri telefoni, troviamo l’AI. Infatti, grazieal Natural Language Processing e al Machine Learning, questi assistenti sono in grado diinterpretare ciò che gli diciamo e di rispondere alle nostre richieste [13][16]. Anche nell’e-commerce si fa un ampio utilizzo della AI, in particolare del Machine Learningper consigliare dei prodotti agli utenti in base a quello che hanno già acquistato e del NaturalLanguage Processing per gli assistenti virtuali che automatizzano le funzioni del servizioclienti [28]. Anche nel marketing l’AI si utilizza per profilare gli utenti in modo da offrire unservizio “su misura” per ognuno, utilizzando pubblicità mirate scelte in relazione a cosafacciamo e a quello che cerchiamo su Internet. Un esempio di questa applicazione è Netflix,che utilizza l’analisi predittiva per consigliare film e serie tv in base a ciò che si è giàguardato sulla piattaforma [13][16].Nei reparti di risorse umane si utilizza l’AI per facilitare il processo di assunzione, oltre cheper automatizzare alcuni compiti in modo da permettere al personale di dedicarsiall’interazione con gli altri dipendenti. L’AI si rivela utile pure in campo legale, dov’è utilizzataper evitare agli avvocati i compiti monotoni e ripetitivi. Grazie al Natural LanguageProcessing è possibile automatizzare il processo di analisi dei documenti, semplificando illavoro all’essere umano [13].L’AI è utile anche per la gestione di alcuni aspetti logistici, ad esempio la pianificazione, leconsegne e l’automazione. In particolare, le consegne possono essere svolte utilizzandoauto a guida autonoma o droni progettati appositamente, mentre i magazzini possonoessere automatizzati attraverso l’utilizzo di robot [31].Un campo dove non ci si aspetta l’utilizzo dell’intelligenza artificiale è l’agricoltura [DenisDaka]. Le nuove tecnologie sono usate ad esempio per monitorare lo stato del raccolto e delterreno. Per fare questo analizzano immagini del suolo e delle coltivazioni, quindi si utilizzaprincipalmente Computer Vision e Deep Learning. Anche nel settore turistico troviamoinaspettatamente applicazioni per l’AI. Infatti, strutture come alberghi e resort utilizzanoqueste tecnologie per profilare i clienti in modo da sapere cosa desiderano prima ancora chelo chiedano. Questo aumenta il grado di soddisfazione dei clienti che così saranno invogliatia tornare nella stessa struttura [23].L’AI è utilizzata sia in ambito ludico che in quello videoludico. Per quanto riguarda i giochi datavola, come scacchi o Go, sono stati sviluppati dei software (Deep Blue e AlphaGo) ingrado di battere i rispettivi campioni della disciplina. Invece, per quanto riguarda ivideogiochi, ad esempio i personaggi non controllati dal giocatore sono gestiti da delle AI.[Davide Ieri]Un'applicazione interessante dell’AI si trova nel betting. In quest’ambito, le quote dei varieventi relativi a una partita si decidono in base ad enormi quantità di dati, e ciò rende moltoadatta l’AI a svolgere questo compito [23]. Anche nell’esplorazione dello spazio si usa l’AI, adesempio per analizzare la grande quantità di dati che viene prodotta dai telescopi cheosservano lo spazio e dai rover che vengono inviati su altri pianeti per delle missionispaziali[16]. Infine, ci sono i sistemi di navigazione, come Google Maps, che utilizzano l’AI, ein particolare le reti neurali convoluzionali, per determinare il miglior percorso che si possa

Page 17: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

intraprendere per viaggiare tra le due località indicate dall’utente [13].

8.1. State of AI Report 2020Lo “State of AI Report 2020” [1] è un documento redatto ogni anno dai britannici NathanBenaich e Ian Hogarth che analizza gli sviluppi più interessanti riguardanti l’AI relativiall’anno appena trascorso. Dal documento relativo al 2020 emergono alcune cose moltointeressanti. Per esempio dall’analisi dei vari articoli sulla AI pubblicati in questo lasso ditempo emerge che il framework più utilizzato negli ambienti di ricerca è PyTorch diFacebook, che ha superato TensorFlow di Google, che comunque rimane il più utilizzatonegli ambienti di produzione.Nonostante si stiano utilizzando modelli sempre più grandi e costosi che richiedono miliardidi parametri per raggiungere un livello di performance accettabile, ci sono alcune casistichedove modelli più piccoli sono più adatti. Ad esempio il modello ConveRT, sviluppato dallacompagnia londinese PolyAI, si è rivelato migliore di BERT, il modello sviluppato da Googleper applicazioni di conversazione come i chatbot. Questa è una delle tante dimostrazioni deigrandi risultati che si sono raggiunti grazie al Natural Language Processing nel riassumere,tradurre e generare testo. Sono stati addirittura sviluppati dei programmi in grado digenerare e correggere il codice di programmi software.Un'interessante applicazione della AI è quella nella lotta al COVID-19, in particolare per ladiagnosi dei sintomi e per la prescrizioni dei medicinali adeguati.Per quanto riguarda le auto a guida autonoma si stanno facendo passi da gigante, tanto chein molti stati americani si stanno prorogando nuove leggi riguardanti questo tipo di veicoli.Però la guida completamente autonoma è ancora in fase di sviluppo, e le compagniearrivate a questa fase sono meno di quelle che ci si potrebbe aspettare.Dal documento viene fuori la grande diffusione del Machine Learning e delle tecnologie aesso collegate, come Computer Vision, RPA (Robotic Process Automation) e NaturalLanguage Processing, che ha in BERT il suo maggior esponente.Gli autori trattano anche aspetti etici della AI, in particolare il riconoscimento facciale. Questatecnologia è ormai utilizzata nella maggior parte dei paesi del mondo e crea sempre unenorme dibattito. Nonostante questo solo tre governi (Belgio, Lussemburgo e Marocco)hanno parzialmente proibito l’utilizzo del riconoscimento facciale e lo autorizzano solo in casiparticolari. D’altra parte i governi stanno facendo grandi investimenti per l’utilizzo della AI inambito militare.

9. ConclusioniOrmai l’AI è la tecnologia più in voga del nostro tempo e lo sarà anche negli anni a venire.Nonostante i legittimi dubbi legati principalmente agli aspetti etici di queste innovazionidobbiamo abituarci alla loro presenza nella vita di tutti i giorni, che continuerà a crescereanno dopo anno. É necessario che tutte le parti coinvolte, cioè governi, aziende, ricercatori ecittadini collaborino allo sviluppo di questa disciplina. Solo così l’AI influirà positivamentenelle nostre vite e sarà in grado di migliorarle notevolmente.

Sitografia[1] State of AI Report 2020 (ultima consultazione: 31/05/2021)

Page 18: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

[2] AI Tutorial | Artificial Intelligence Tutorial (ultima consultazione: 31/05/2021)[2.1] Search Algorithms in AI (ultima consultazione: 31/05/2021)[2.2] Uninformed Search Algorithms (ultima consultazione: 31/05/2021)[2.3] Informed Search Algorithms in AI (ultima consultazione: 31/05/2021)[2.4] Knowledge Representation in Artificial Intelligence (ultima consultazione:

31/05/2021)[2.5] AI Techniques of Knowledge Representation (ultima consultazione: 31/05/2021)[2.6] Expert Systems in Artificial Intelligence (ultima consultazione: 31/05/2021)[2.7] First-order logic in Artificial Intelligence (ultima consultazione: 31/05/2021)[2.8] Bayesian Belief Network in Artificial Intelligence (ultima consultazione:

31/05/2021)[2.9] Application of AI (ultima consultazione: 31/05/2021)

[3] State-of-the-art in artificial neural network applications: A survey (ultima consultazione: 31/05/2021)[4] Artificial Intelligence Tutorial (ultima consultazione: 31/05/2021)

[4.1] AI - Popular Search Algorithms (ultima consultazione: 31/05/2021)[4.2] Artificial Intelligence - Expert Systems (ultima consultazione: 31/05/2021)[4.3] Artificial Intelligence - Neural Networks (ultima consultazione: 31/05/2021)[4.4] AI - Natural Language Processing (ultima consultazione: 31/05/2021)

[5] What are Recurrent Neural Networks? (ultima consultazione: 31/05/2021)[6] What is Supervised Learning? (ultima consultazione: 31/05/2021)[7] What is Unsupervised Learning? (ultima consultazione: 31/05/2021)[8] Deep Learning: cos'è, come funziona e quali sono i casi d'uso (ultima consultazione: 31/05/2021)[9] What is Natural Language Processing? (ultima consultazione: 31/05/2021)[10] Come funziona una rete neurale CNN (convolutional Neural Network) (ultima consultazione: 31/05/2021)[11] Searching Algorithms for Artificial Intelligence | by Made Lapuerta (ultima consultazione:31/05/2021)[12] Guida al Deep Learning: significato, esempi e applicazioni pratiche (ultima consultazione: 31/05/2021)[13] AI applications: Top 10 Artificial Intelligence Applications [Updated 2021] (ultima consultazione: 31/05/2021)[14] What is Knowledge Representation in AI? | Different Techniques (ultima consultazione: 31/05/2021)[15] Bayesian Networks: Combining Machine Learning and Expert Knowledge into Explainable AI (ultima consultazione: 31/05/2021)[16] Top 10 Real World Artificial Intelligence Applications | AI Applications (ultima consultazione: 31/05/2021)[17] Introduzione al reinforcement learning: cos'è, quando si usa? (ultima consultazione: 31/05/2021)[18] Top 10 Real-world Bayesian Network Applications - Know the importance! (ultima consultazione: 31/05/2021)[19] Machine Learning e principio di funzionamento (ultima consultazione: 31/05/2021)[20] Computer Vision: definizione, funzionamento e applicazioni (ultima consultazione: 31/05/2021)[21] 10 Real-Life Applications of Reinforcement Learning - neptune.ai (ultima consultazione: 31/05/2021)

Page 19: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

[22] Classifying Knowledge Representation In Artificial Intelligence (ultima consultazione: 31/05/2021)[23] Top 11 Uses and Applications of Artificial Intelligence and ML in Business (ultima consultazione: 31/05/2021)[24] 5 Main Roles Of Artificial Intelligence In Education (ultima consultazione: 31/05/2021)[25] 15 Key Examples Of AI In Finance You Should Know 2021 (ultima consultazione: 31/05/2021)[26] AI and Law: 9 Ways Artificial Intelligence is Transforming the Legal Industry (ultima consultazione: 31/05/2021)[27] What Is Artificial Intelligence for Social Media? What is AI and how can it give your (ultima consultazione: 31/05/2021)[28] How Artificial Intelligence is transforming the E-commerce Industry — Countants : Scalable Custom… (ultima consultazione: 31/05/2021)[29] Man vs. Chatbot: 5 Ways Chatbot Improves Customer Experience (ultima consultazione: 31/05/2021)[30] 7 Ways Artificial Intelligence Is Reinventing Human Resources (ultima consultazione: 31/05/2021)[31] 15 AI Applications/ Use Cases / Examples in Logistics in 2021 (ultima consultazione: 31/05/2021)[32] How Machine Learning and Wearables will take Healthcare to the next level - (ultima consultazione: 31/05/2021)[33] Sports trading and AI: Taking the human out of sports betting (ultima consultazione: 31/05/2021)[34] Machine Learning: cos'è e applicazioni dell'apprendimento automatico (ultima consultazione: 31/05/2021)[35] Convolutional Neural Network Architecture | CNN Architecture (ultima consultazione: 31/05/2021)[36] Cos'è il machine learning? (ultima consultazione: 31/05/2021)[37] Long short-term memory (ultima consultazione: 31/05/2021)[38] John McCarthy (ultima consultazione: 31/05/2021)[39] The state of artificial intelligence (AI) in 2021 (ultima consultazione: 31/05/2021)

Bibliografia[40] Mondal B. (2020) Artificial Intelligence: State of the Art. In: Balas V., Kumar R., Srivastava R. (eds) Recent Trends and Advances in Artificial Intelligence and Internet of Things. Intelligent Systems Reference Library, vol 172. Springer, Cham.[41] Hussein, Burhan & Haleem, Chongomweru & Siddique, Muhammad. (2020). The Futureof Artificial Intelligence and its Social, Economic and Ethical Consequences. 5. 17-19.

ApprofondimentiI. Alice Amitrano - Sistemi Esperti

II. Alexandru Vasile Boncan - Machine Learning and self driving cars: deep neural networks versus human perception

III. Denis Daka - Il futuro dell'agricoltura? È nell'intelligenza artificiale!IV. Davide Ieri - The Evolution of Artificial Intelligence in Video Games

Page 20: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

V. Samuele Mancini - Reti BayesianeVI. Gioele Zerini - Reti Neurali Artificiali

VII. Marco Wei Jie Zhang - The Exploitation of Machine Learning for Cybersecurity

SISTEMI ESPERTIAlice Amitrano

AbstractUna branca dell’intelligenza artificiale è rappresentata dai sistemi esperti, i quali possonoessere identificati come programmi software che riproducono le prestazioni di una o piùpersone esperte, in un determinato campo di attività.

I sistemi esperti sono dei software intelligenti che rispondono alle domande degli utenti; illoro obiettivo è quello di aiutarli a risolvere i problemi o a prendere decisioni, basandosisu una particolare base di conoscenze. Grazie ad esse un sistema esperto è in grado didedurre nuove informazioni. Un sistema esperto può essere visto come un unprogramma informatico in grado di riprodurre le performance di una persona esperta inuna determinata attività.

I sistemi esperti sono composti da tre elementi fondamentali: la base delle conoscenze, ilmotore inferenziale e l’interfaccia utente, temi che saranno approfonditi in seguito epossono essere classificati in sistemi esperti basati su regole oppure basati su alberi.

Page 21: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

1 IntroduzioneUn sistema esperto è una branca dell'intelligenza artificiale, può riprodurre operazionisviluppate da esperti nel settore e riesce a risolvere problemi, di natura complessa,analizzando una grande quantità di informazioni, arrivando ad una soluzione finale, chepuò essere certa o molto probabile.Sostanzialmente, può essere definito come un programma informatico che una voltaistruito gestisce ed analizza gli input (le informazioni iniziali), per sviluppare degli output(le informazioni dedotte).

I sistemi esperti si basano su tre fondamentali:● la base di conoscenza: il database che contiene le regole e le conoscenze

dell’esperto;● il motore inferenziale: il software che elabora le informazioni contenute nella base

di conoscenza;● l’interfaccia utente: l’elemento che permette all’utente di interagire con il sistema

esperto.

I sistemi esperti si classificano in sistemi di prima, di seconda e di terza generazione.I sistemi esperti di ultima generazione (la terza) si basano sulla logica Fuzzy che mette indiscussione il concetto di logica binaria e permette di valutare opzioni diverse rispetto aiclassici stati vero e falso.Oltre alla classificazione in prima, seconda e terza generazione, i sistemi esperti sidividono in sistemi esperti basati su regole e basati su alberi.

2 Storia dei sistemi espertiNella seconda metà degli anni Sessanta i sistemi esperti rispondevano ai limiti dellestrategie generali di risoluzione dei problemi, limiti riconosciuti anche da figurecarismatiche dell'intelligenza artificiale come Allen Newell (ricercatore nel campodell’intelligenza artificiale, vincitore insieme a Herbert Simon del premio Turing) e HerbertSimon (ricercatore nel campo dell’intelligenza artificiale e vincitore del premio Turing).Tra la fine degli anni Sessanta e l’inizio degli anni Settanta erano già stati sviluppatidiversi sistemi che hanno contribuito a rendere popolare l’approccio tipico dei sistemiesperti, come: MYCIN, DENDRAL.Nel 1977 in un intervento inviato al congresso internazionale di intelligenza artificiale daE. Feigenbaum di Stanford è stato consolidato il lato teorico della disciplina.Nello stesso periodo sono comparsi alcuni strumenti dedicati allo sviluppo dei sistemiesperti, tra cui il linguaggio a regole OPS; infine sono stati sviluppati alcuni nuovi sistemidi interesse pratico, tra i quali citiamo PROSPECTOR.Negli anni Ottanta i sistemi esperti iniziano a diffondersi e questa tecnologia è usatacome aggiunta di valore a sistemi che lavorano con grandi quantità di dati da gestire.I sistemi esperti possono essere suddivisi in tre diverse generazioni.

2.1 I sistemi esperti di prima generazioneLa prima generazione di sistemi esperti si sviluppa intorno agli anni Settanta.Parliamo di sistemi che si fondano sulla logica booleana (una logica che si basava sullesole opzioni verso o falso), sulle reti neurali (modello computazionale formato da neuroniartificiali) e sul ragionamento logico in condizioni di certezza stabilito su un modellodeterministico (causa → effetto).Il limite di questa prima generazione di sistemi esperti è rappresentato dalla mancanza diuna rappresentazione della realtà per questo, l’uomo risultava superiore al sistemaesperto.

Page 22: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

2.2 I sistemi esperti di seconda generazioneLa seconda generazione di sistemi esperti si fonda sul calcolo probabilistico (causa →possibili effetti), che venne introdotto per far fronte ai problemi della prima generazione,infatti questa generazione di sistemi esperti riesce a rappresentare la realtà.Il limite di questa seconda generazione è rappresentato dalla complessitàcomputazionale dovuta al calcolo delle distribuzioni di probabilità su tutti gli eventipossibili e dal fatto che la risposta più probabile non è sempre la più utile.

2.3 I sistemi esperti di terza generazioneLa terza generazione di sistemi esperti (o sistemi di supporto alle decisioni) è statarealizzata intorno agli anni Ottanta e Novanta, si basa su processi inferenziali avanzati elogica Fuzzy (una logica sfumata ed approssimata); grazie a questo otteniamo sistemimolto più efficienti con un minore dispendio di risorse e tempo.Da questo momento in poi si è cominciato a parlare di sistemi di supporto alle decisioni,inoltre grazie all’implementazione di reti bayesiane (modello probabilistico cherappresenta un insieme di variabili e le loro condizioni, è rappresentato tramite un grafoaciclico diretto) e delle reti di decisione sono stati sviluppati sistemi in grado di proporreinformazioni utili al processo decisionale.

3 Cosa sono i sistemi espertiI sistemi esperti possono essere visti come delle applicazioni che appartengono allacategoria dell’intelligenza artificiale e definiti come dei programmi software in grado diriproporre le mansioni di esperti in determinate attività.Un sistema esperto può mettere in atto procedure di logica e, attraverso un processoinduttivo (è un procedimento che cerca di generalizzare una legge partendo da un singolocaso particolare) o deduttivo (è un procedimento che cerca di arrivare al caso particolarepartendo dal generale), arrivare ad una conclusione; il fine è risolvere problemi tramitel’analisi di fatti e di circostanze.

Un sistema esperto è in grado di dedurre, una volta istruito, informazioni (output)partendo da un insieme di dati di partenza (input); può lavorare su dati qualitativi edincompleti utilizzando la logica Fuzzy, i ragionamenti approssimativi che ne conseguonoportano a risultati molto probabili anche se non certi. Questi sistemi sono di aiuto percercare soluzioni a problemi senza l’aiuto di un esperto.

Possono essere individuate delle caratteristiche di un sistema esperto, fra cui:● Possesso di conoscenza specifica: "Per rendere un programma intelligente

inserisci in esso molta conoscenza specifica, di alta qualità, riguardante un bendeterminato dominio" 1;

● Capacità di ragionamento: il sistema esperto deve saper gestire ed utilizzare leproprie conoscenze effettuando deduzioni e prendendo decisioni ragionando sullasua conoscenza;

● Capacità di interazione con l’esterno: il sistema esperto deve avere un protocollodi comunicazione con il mondo esterno al fine di prendere informazioni e darespiegazioni sul ragionamento all’utente;

● Capacità di rendere comprensibile il proprio lavoro: il sistema esperto devespiegare il ragionamento attraverso il quale è arrivato alla soluzione del problema;

● Capacità di apprendimento: i sistemi esperti devono essere in grado diapprendere nuove informazioni ed esperienze (questa è una caratteristica tipicadell’esperto umano);

● Adattamento alla realtà: il modello della realtà deve essere rappresentato così

1 D. Waterman, Guide to expert system, 20 maggio 2021.

Page 23: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

com’è senza essere troppo astratto.

"Un Sistema Esperto è un programma di calcolatore, che usa conoscenze e tecniche diragionamento per risolvere problemi che normalmente richiederebbero l’aiuto di unesperto. Un Sistema Esperto deve avere la capacità di giustificare o spiegare il perché diuna particolare soluzione per un dato problema."2

4 Classificazione dei sistemi espertiI sistemi esperti si possono suddividere in due principali categorie:

● i sistemi esperti basati su regole;● i sistemi esperti basati su alberi.

4.1 Sistemi espertibasati su regoleSi tratta di sistemi basati su regoleclassiche nella forma IF e THEN e dauna serie di fatti, da questo, i sistemiesperti, sono in grado di fornire nuovifatti attraverso le regole fornite.In pratica il sistema valuta tutte lecondizioni che vengono rispettate ededuce, ottimizzando il valore dellaprobabilità, la soluzione finale.

Supponiamo di avere i seguenti sintomi:● mal di testa;● raffreddore;● temperatura corporea maggiore

di 38°.

Tramite la seguente elaborazione: IF mal di testa + IF raffreddore + IF temperatura corporea a 38° –> THEN influenza.

Inoltre se è stata riconosciuta l'influenza si possono verificare due azioni principali:

● mettersi a letto;● contattare il medico.

2 https://ugochirico.com/page/sistemi-esperti.aspx, 29 maggio 2021

Page 24: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

4.1.1 JESS

Un esempio di sistema esperto basato su regole è Jess (Java Expert System Shell): èsviluppato in Java ed è usato principalmente a scopo didattico.Si basa su tre principali componenti: i fatti che rappresentano le informazioni, le regoleche possono produrre conoscenza a partire dai fatti e il motore inferenziale che controllase le condizioni di tutte le regole vengono rispettate.

4.2 Sistemi esperti basati su alberiSi tratta di sistemi che, partendo da un determinato insieme di informazioni e deduzioni,producono un albero contenente le alternative possibili, con esso classificano i dati.L’analisi dei nuovi dati avviene attraversando l’albero, il nodo finale rappresenta il fattocercato.Il sistema è in grado di riconoscere problemi in base a una sequenza di fatti, decisioni oazioni: dalla situazione iniziale partono tutte le scelte possibili, si dividono in varie azioni,rappresentate dagli archi, e situazioni,rappresentate dai nodi, che portano allasituazione finale.In ogni nodo si trova un’indicazione sullasuccessiva decisione da prendere.

Questa tipologia di sistemi è in grado digestire una grande quantità di dati intempi molto brevi, tenendo così molteregole e dettagli che un esperto umanopotrebbe tralasciare.

Come già detto in precedenza i nodirappresentano le situazioni che possonoverificarsi e gli archi le azioni che si verificano effettivamente.La sequenza della scelta è eseguita tramite l’operatore logico AND, mentre le situazionipossibili sono gestite direttamente dall’operatore logico OR.

5 Come funzionano i sistemi espertiCome abbiamo visto, i sistemi esperti consultano la propria base di conoscenza perrestituire una risposta in output, questi sistemi non restituiscono solo la risposta bensìforniscono una spiegazione e riportano il ragionamento logico compiuto per arrivare alrisultato, inoltre forniscono i motivi per cui le altre soluzioni non sono state ritenuteadeguate.I sistemi esperti sono capaci di modificare la propria base di conoscenza con il tempo el’apprendimento o inferenza (l'inferenza è un ragionamento logico che consente digiungere a una conclusione a partire da un insieme di premesse. È uno dei principaliprocessi di conoscenza del genere umano. Esistono tre distinte tipologie di inferenza:abduzione, induzione, deduzione3).Seguendo un processo simile al ragionamento qualitativo il sistema esperto puòrealizzare nuovi concetti o regole.

3 https://www.okpedia.it/inferenza , 21 maggio 2021

Page 25: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

5.1 Componenti di un sistema espertoPer il funzionamento di un sistema espertovengono identificati delle componentifondamentali:

● la base di conoscenza;● il motore inferenziale;● l’interfaccia utente;● l’area dati.

Tra utente e interfaccia troviamo le domandee le risposte.Tra l’interfaccia e il motore inferenzialetroviamo le domande e i segni.Tra il motore inferenziale e la base diconoscenza vengono passati i contenuti diconoscenza.Tra l’area dati e il motore inferenziale vengono passati i dati iniziali e i dati parziali dovutialla computazione.L’esperto e l’ingegnere delle conoscenze si occupano di gestire e inserire le informazioninella base di conoscenza.

5.1.1 Base di conoscenza

La base di conoscenza, anche detta dominio, rappresenta il database dove sonomemorizzate le conoscenze dell’esperto e le regole deduttive (ad esempio regole di tipoif-then) che permettono al sistema di seguire e applicare un ragionamento logico.Durante il funzionamento il sistema esperto è in grado di ampliare la base di conoscenzain funzione delle sue esperienze, questo processo di aggiornamento avvieneaggiungendo informazioni e non tramite una sostituzione.

5.1.2 Motore inferenziale

Il motore inferenziale può essere definito come il software che ha il compito di elaborarele nozioni recuperate dalla base di conoscenza, porta avanti dei ragionamentiselezionando le parti della base della conoscenza utili per risolvere quel determinatoproblema, inoltre si intreccia con l’utente.Si tratta di procedure deduttive che, partendo dalle premesse (date dalla base diconoscenza) sono in grado di capire il problema e successivamente di dedurre esviluppare delle conclusioni.Per esempio, un motore inferenziale si può basare sull’euristica4 e sul ragionamentoapprossimato della logica Fuzzy.

5.1.3 Interfaccia utente

L'interfaccia utente è l’elemento che fa da tramite tra l’utente e il motore inferenziale, puòmostrarsi come semplice interfaccia input/output attraverso la quale l’utente interagisce\digita la domanda attraverso la tastiera per poi leggere il risultato a schermo.I sistemi più avanzati possono utilizzare il riconoscimento vocale, e questi sistemi offronointerfacce semplici e facili da comprendere per l’utente.L'interfaccia utente non è indispensabile ma è utile e apprezzata, pensiamoall’elaborazione di un linguaggio naturale e alla robotica.

5.1.4 Area dati

L’area dati è usata per memorizzare tutte le informazioni di partenza e di aggiornamento,

4 https://www.treccani.it/enciclopedia/euristica/ , 25 maggio 2021

Page 26: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

i risultati parziali, le informazioni aggiuntive che vengono richieste dall’utente.

6 Teoria classica degli insiemiLa teoria degli insiemi è considerata alla base della matematica.A differenza della logica Fuzzy e dell’insieme Fuzzy, gli insiemi tradizionali sono compostida elementi ben determinati e tra i quali è posto un netto confine fra appartenenza e non.Il punto centrale della teoria degli insiemi è rappresentato, infatti, dalla nozione diappartenenza (Possiamo riprendere una celebre frase di Aristotele: “E’ impossibile che ilmedesimo attributo, nel medesimo tempo, appartenga e non appartenga al medesimooggetto e sotto il medesimo riguardo5).La teoria si basa solo sulle risposte vero o falso, infatti lafunzione di appartenenza è una funzione booleana cheassume due valori: 1 per appartiene e 0 per non-appartiene.

L’unione di due insiemi si ha se un elemento x appartiene o all’insieme A o all’insieme B.

L’intersezione di due insiemi si ha se un elemento x appartiene contemporaneamente siaall’insieme A che all’insieme B.

7 Progettazione dei sistemi espertiPer la progettazione di un sistema esperto vengono combinati i ruoli e le abilità delprogettista e dell’esperto del settore.Il progettista deve codificare la conoscenza e il meccanismo cognitivo dell’esperto,mentre l’esperto deve definire i termini specifici, attingendo alla propria conoscenza eall’esperienza di lavoro.

Inoltre, il progettista deve anche comprendere e applicare al meglio le informazioni fornitedall’esperto.Per la progettazione di un sistema esperto vengono eseguite diverse fasi:

1) l’identificazione: vengono definite le caratteristiche del problema e gli elementi checompongono la base di conoscenza;

2) Concettualizzazione: l’obiettivo è evidenziare i concetti chiave e stabilire i rapportidegli elementi analizzati nella prima fase, in questa seconda fase il problema èdiviso in moduli minori e indipendenti;

3) Formalizzazione: rappresenta la fase di scelta del linguaggio di rappresentazionee dell’organizzazione della struttura del sistema;

4) Implementazione: è la fase di stesura delle regole che fanno parte della base diconoscenza;

5) Test: questa fase rappresenta il controllo sulla qualità e del lavoro svolto, è ilmomento in cui l’esperto del settore valuta le prestazioni del sistema esperto.

La progettazione segue le fasi sopra indicate in modo poco rigido poiché durante losviluppo di un sistema esperto c’è un continuo processo di revisione, di riprogettazione, diriformulazione dei concetti che adeguano la modellazione all’evolversi del problemareale.Possiamo dire che un sistema esperto non è mai considerato completo (caratteristicacomune a tutte le intelligenze artificiali che simulano un comportamento umano) per due

5 Aristotele, https://blog.debiase.com/2012/01/03/il-principio-di-non-contraddiz/#:~:text=Aristotele%20dice%20nella%20metafisica%3A%20%C2%AB%C3%88,di%20interesse%20perch%C3%A9%20non%20informa., 23 maggio 2021

Page 27: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

principali motivazioni:1) La conoscenza dell’esperto non sarà mai completa e ci sarà sempre modo di

aggiungere nuove informazioni e tecniche;2) Il sistema esperto potrebbe dare risposte non corrette, quindi, ci sarà sempre la

possibilità di aggiungere una nuova euristica per ottenere risultati migliori.

8 A cosa servono i sistemi espertiI sistemi esperto vengono usati principalmente per risolvere i problemi complessi, perevitare all’esperto del settore un lavoro che richiederebbe molto più tempo.Il loro principale impiego riguarda quei processi che richiedono problem solving.

Possono essere identificate alcune principali azioni e compiti:● Interpretazione: i sistemi esperti possono essere usati per analizzare dati

complessi al fine di determinare il loro significato, in casi dove è necessarioricevere una descrizione di dati derivanti da diverse fonti;

● Diagnosi: i sistemi esperti possono essere applicati all’analisi di dati perdeterminare una malattia e suggerire una diagnosi;

● Monitoraggio: i sistemi esperti possono essere usati per controllare una situazionepotenzialmente e attraverso l’analisi dei dati capire se è necessario lanciare unallarme;

● Pianificazione e Programmazione: i sistemi esperti possono aiutare in questoambito poiché sono in grado di selezionare una sequenza di azioni per arrivare almeglio ad un determinato obiettivo;

● Previsione: i sistemi esperti sono in grado di predire un modello futuro (adesempio un modello economico), analizzando i modelli del passato e delpresente;

● Progettazione e configurazione: i sistemi esperti, partendo da precise specifichepossono progettare delle soluzioni o delle risposte.

9 Applicazioni di sistemi espertiLe applicazioni di un sistema esperto spaziano dal campo medico, aiutano la diagnosimedica, alla localizzazione come anche all’analisi di guasti e/o di errori su macchinarioppure all’interpretazione di dati relativi alle misure, e ancora al campo delle vendite,dove vengono utilizzati all’interno di configuratori commerciali di un prodotto (soluzioniche devono essere in grado di aiutare il cliente a cercare, individuare, valutare erichiedere il prodotto senza l’aiuto di un esperto).

Generalmente vengono usati nel campo del problem solving e dell’ingegneria delsoftware. Principalmente forniscono un aiuto nelle diagnosi mediche; come ad esempio iMedical Expert System che forniscono un appoggio diagnostico, di analisi dei dati dilaboratorio.

9.1 Fuzzy logicLa Fuzzy logic è una teoria matematica che si occupa di modellare l’incertezza, possiamoanche considerarla una estensione della teoria classica degli insiemi. E’ definitaestensione della teoria classica dei sistemi perché per la logica Fuzzy non valgono iprincipi di non-contraddizione (principio che afferma la falsità che A e la sua negazionesiano entrambe vere allo stesso tempo e nello stesso modo) e del terzo escluso (principioche esclude la possibilità che ci sia una terza opzione nel momento in cui ne vengono giàpresentate due). Possiamo determinare l’insieme Fuzzy come un insieme di oggetti nel quale non c’è unconfine ben preciso tra gli oggetti che lo compongono e quelli che non lo compongono.

Page 28: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

La Fuzzy logic consente di descrivere e operare usando definizioni vaghe, infatti, levariabili Fuzzy possono assumere un grado di veritàcompreso tra 0 e 1. Con grado di verità si intendequanto è vero un fatto o una proprietà, il valore 1rappresenta il vero e lo 0 il falso ma nella logica Fuzzyle variabili possono assumere anche valori intermedi.E’ stato introdotto il sistema Fuzzy e quindi, diconseguenza, la logica Fuzzy poiché l’appartenenzanon basta per descrivere concetti e descrizioni del pensiero umano.La Fuzzy logic è stata implementata a partire dalla terza generazione di sistemi esperti,risulta particolarmente utile in questo contesto perché affronta l’incertezza el’approssimazione della realtà. Questa logica è capace di rappresentare situazioni tipicheche si trova ad affrontare l’esperto, quindi può essere usata per rispondere alle domandecome farebbe l’uomo. Grazie all’implementazione di questa logica possiamo iniziare a parlare di sistemi disupporto alle decisioni (DSS, Decision Support System).

Come possiamo vedere nell’immagine, lalogica Fuzzy è in grado di stabilire deivalori intermedi per garantire unarappresentazione della realtà molto piùfedele.Ad esempio le frasi “un neonato ègiovane” e “un trentenne è giovane” sonoentrambe vere ma nel caso della teoriaclassica verrebbero considerate vere allostesso modo, mentre, tramite la logicaFuzzy viene stabilito che il trentenne èmeno giovane del neonato (trentenne →0,6; neonato → 1).

L’intersezione di due insiemi Fuzzy A e B sull’universo del discorsoX: ∩ = min [ , ]; l’intersezione rappresenta il grado di appartenenza più𝑓𝐴 𝑓𝐵 𝑓𝐴 𝑥 𝑓𝐵basso.

L’insieme unione di due insiemi Fuzzy A e B sull’universo del discorso X: = m [ , ]; l’unione rappresenta il grado di appartenenza più alto.𝑓𝐴 ∪ 𝑓𝐵 𝑎𝑥 𝑓𝐴 𝑥 𝑓𝐵 𝑥

9.2 Germ Watcher e PEIRSGerm Watcher è un sistema esperto che è usato per le analisi dei dati delle colturemicrobiologiche basandosi sui criteri nazionali o locali.Peirs (Pathology Expert Interpretative Reporting System) si basa sullo stesso concettodel precedente ma consente un’affidabilità molto più elevata, fino al 95%.

9.3 MYCINMycin era un sistema esperto che utilizzava l’intelligenza artificiale per la diagnosi dellemalattie che causano la coagulazione del sangue, per identificare i batteri che causanoinfezioni come, ad esempio, la meningite e per consigliare cure e antibiotici. Il sistema

Page 29: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

prende il nome proprio da questi antibiotici che hanno il suffisso “-mycin”.E’ stato scritto in Lisp e attinge da una base di conoscenza di circa 600 regole. Funzionaattraverso semplici domande al medico alle quali vengono attribuite risposte si/no cheportano alla formazione di un elenco di tutti i possibili batteri colpevoli con annesseprobabilità.

10 ConclusioneLe intelligenze artificiali puntano a sviluppare oggetti intelligenti che tramite

l’apprendimento aiutino l’uomo a prendere decisioni e sviluppare azioni. I sistemi espertiforniscono un valido aiuto sulle decisioni, soprattutto in campo medico attraverso la fasediagnostica e di scelta della cura più adatta per il paziente. I sistemi esperti contengonotutte le conoscenze di un esperto e non possono dimenticarle, al contrario di un uomo.

Nonostante tutto, c’è il rischio che l’output fornito dal sistema esperto sostituiscal'opinione dell’esperto e potremmo andare incontro alla banalizzazione del problemasottoposto.

I sistemi esperti sono poco usati poiché richiedono un grande dispendio di risorse,sia umane che economiche.

In futuro potrebbero svilupparsi unendo vari prototipi di varie discipline al fine dicoprire un campo maggiore e risolvere problemi al momento non risolvibili.

11 Bibliografia “unife”, Sistemi esperti e tools , ultima consultazione: 28 maggio 2021“unirc”, La teoria dei Fuzzy set , ultima consultazione: 30 maggio 2021

12 Sitografia “ ai4business ”, Sistemi esperti: cosa sono, la loro classificazione, come funzionano e a cosa servono, ultima consultazione: 21 maggio 2021“okpedia”, Sistema esperto, ultima consultazione: 28 maggio 2021 “wikipedia”, Sistema esperto , ultima consultazione: 20 maggio 2021 “andrea minini”, Sistemi esperti cosa sono e come funzionano , ultimaconsultazione: 22 maggio 2021 “ ugosweb ”, Sistemi esperti , ultima consultazione: 29 maggio 2021 “matematica e oltre”, Introduzione ai sistemi esperti , ultima consultazione: 28maggio 2021 “okpedia”, Sistema esperto basato sugli alberi logici , ultima consultazione: 24maggio 2021 “ niagiara ”, I sistemi esperti , ultima consultazione: 27 maggio 2021

“Treccani”, sistemi esperti, ultima consultazione: 20 maggio 2021 “wikipedia”, logica Fuzzy , ultima consultazione: 30 maggio

Page 30: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Reti BayesianeSamuele Mancini

AbstractLe reti Bayesiane sono usate come supporto alle decisioni: semplificano il lavoro umanonell’effettuare una serie di scelte. In particolare una rete Bayesiana è un grafo aciclicoorientato, formato da nodi e archi. I nodi rappresentano gli eventi che si vogliono consideraree gli archi rappresentano le dipendenze condizionali tra i nodi che legano. Per costruire unarete si usano i quattro grafi fondamentali: causa diretta, causa indiretta, causa comune edeffetto comune. Combinando questi, si possono ottenere delle reti, anche molto complesse,per lo studio probabilistico della realtà. Si possono applicare in vari contesti, come per ladiagnosi di malattie, filtri di tipo informatico (antispam), per l’elaborazione di immagini,ricerca semantica e tanto altro. Questi oggetti si basano sui principi probabilistici dellamatematica, in particolare il teorema di Bayes, la chain rule e il concetto di eventicondizionalmente indipendenti.

Page 31: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

1 - IntroduzioneL’evoluzione umana e soprattutto grazie alle nuove scoperte in ambito tecnico scientifico,hanno portato a un miglioramento della vita delle persone. Attraverso una schematizzazionedella realtà scienziati e ricercatori hanno potuto capire, o si sono avvicinati a capire, comefunziona il mondo, il corpo umano e l'universo. Con il trascorrere del tempo laschematizzazione, inizialmente più semplice, si complica sempre di più al fine di soddisfarele necessità del progresso. I dettagli aumentano e molti più fattori influenzano il quadrogenerale. Questo bisogno avrebbe determinato una linea di confine insormontabile perl’uomo, il cervello umano infatti non si sarebbe evoluto in tempo per poter soddisfare leesigenze della scoperta e quindi l’avrebbe rallentata se non bloccata. Al fine di risolverequesto problema molti si sono cimentati nella ricerca di una soluzione e l’hanno trovatanell’ambito dell’intelligenza artificiale. Con l’appoggio di una macchina, con una velocità euna potenza di calcolo parecchio superiore a quella umana, si sarebbe riusciti a colmarequella lacuna. In particolare furono introdotti i cosiddetti “sistemi esperti”, i quali con delletecniche di data mining potevano elaborare grandi quantità di dati e fornire risposte,simulazioni o ipotesi. Esistono molti tipi di sistemi esperti, ma in questo articolo se neaffronterà solo uno: le Reti Bayesiane. Si risponderà alla domanda “a cosa servono?”, “cosasono?”, si parlerà di come costruirle, successivamente alcuni esempi delle loro applicazioni,in seguito si introduce la matematica che le fa funzionare e infine si vedrà un esempio di unarete Bayesiana.

2 - A cosa servono le reti BayesianeLe reti Bayesiane sono particolarmente utili per rappresentare la conoscenza in un contestodi incertezza. Vengono utilizzate nel campo tecnico-scientifico per dare supporto alledecisioni in un contesto dove la mente umana sarebbe insufficiente o troppo lenta. Inparticolare una rete può rispondere a due tipi di domande: lo scienziato può fornire alsistema di elaborazione un'ipotesi, ovvero un insieme di dati che identificano un possibilestato della realtà che si analizza, e questo calcola la probabilità che un evento accada;oppure è anche possibile fare il ragionamento inverso: dato un evento già accadutocalcolare la probabilità degli eventi (ipotesi) che l’hanno scaturito. [6][9]

3 - Cosa sono le reti BayesianeLe reti Bayesiane, anche chiamate reti di Bayes, sono una tecnica di data mining, ovverosono sistemi in grado di analizzare grandi quantità di dati (nell’ordine dei gigabyte oaddirittura terabyte) e ricavarne informazioni non ovvie. Per non ovvie si intende che sonodifficilmente tracciabili a prima vista e che quindi richiedono uno sforzo di analisi moltoelevato. Logicamente possiamo rappresentare una rete come modello grafico di probabilità:un grafo aciclico orientato composto da nodi, che rappresentano gli eventi studiati nelsistema, e da archi che collegano due nodi se sono dipendenti tra di loro. Si dice orientatoperché gli archi hanno una direzione rappresentata da una freccia, aciclico significa chepartendo da un nodo e percorrendo la direzione di un qualunque arco collegato a quel nodosarà impossibile tornare al punto di partenza. Ogni nodo ha una distribuzione di probabilità

Page 32: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

condizionate che elenca gli effetti sul nodo in questione, in base ai vari stati che possonoassumere i suoi nodi genitori. La tabella della distribuzione delle probabilità condizionateè completa per ciascun nodo. Una variabile aleatoria [2] è una variabile che può assumerevalori diversi in dipendenza a qualche fenomeno aleatorio. Ad esempio il lancio di un dado è

un fenomeno aleatorio e l'insieme deivalori che la variabile può assumere èquindi un numero compreso tra uno esei. Se due variabili sono collegate daun arco si dicono dipendenti, se invecedue nodi non sono direttamenteconnessi allora sono indipendenti. [6][9]

4 - Costruzione diuna rete

Si deve tenere presente che una rete Bayesiana rappresenta un dominio di conoscenza,ovvero rappresenta un insieme di informazioni che sintetizzano una parte della realtà.Pertanto, al fine di creare un grafo corretto, si deve procedere con l’analisi della realtà diriferimento. Si devono quindi tracciare i fenomeni che ci interessano, escludendo ciò chenon influenza il sistema o ciò che è trascurabile. Questa procedura è chiamata elenco deinodi: si elencano tutti i fattori e si trasformano in variabili e quindi in nodi. Successivamentesi procede nell’identificare i nodi genitori: ovvero quei nodi che influenzano le altre variabili.Questi sono i più importanti perché se in questi c’è un errore, questo si ripercuoterà in tutti inodi connessi direttamente e indirettamente a quel nodo genitore. I nodi invece che noncondizionano nessun'altra variabile sono detti nodi foglia o nodi terminali. Come terzopassaggio si deve individuare un sottoinsieme di nodi, tra i nodi genitori, che non sonoinfluenzati da altre variabili. Questi nodi si dicono nodi radice o nodi causa. Deve esisterealmeno un nodo radice e deve esistere almeno un nodo foglia. Infine si devono tracciare gliarchi che collegano tra di loro i nodi: si procede partendo dai nodi radice e si prosegue finoai nodi terminali. [3]

Per rendere più semplice la progettazione della rete si possono prendere come riferimento iquattro grafi fondamentali:

1. causa diretta: dove un nodo A influenza direttamente il nodo B;

2. causa indiretta: dove il nodo A influenza B e quindi influenza anche C;

3. effetto comune: quando due nodi A e B influenzano lo stesso nodo C;

Page 33: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

4. causa comune: quando un nodo A influenza due nodi B e C.

Combinando questi quattro grafi possiamo ottenere anche reti molto complesse comequesta di seguito per la diagnosi di un disturbo epatico:

Inoltre a ciascun nodo si deve associare una tabella con i possibili valori aleatori e le relativeprobabilità. [5] Il caso più semplice è quello dei nodi radice perché la probabilità di ogni statonon è influenzata dagli altri nodi della rete; nel caso di un nodo foglia, invece, la tabella delleprobabilità può diventare molto grande e complessa perché si devono prendere in

Page 34: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

considerazione le variabili aleatorie che sono “genitori” di quel nodo e le relative probabilitàcondizionali.Per rendere più semplice la progettazione si possono usare dei programmi creatiappositamente per questo scopo sia a pagamento che gratuiti:

1. MSBN (Microsoft Belief Networks) creato da Microsoft (gratuito);2. Netica, creato dalla ditta Norsys (gratuito);3. BRMLtoolbox, sviluppato da David Barber (a pagamento). [4][10]

5 - ApplicazioniLe reti Bayesiane possono essere usate in moltissimi contesti dove si richiede di analizzarele probabilità che un evento possa accadere. Si può spaziare dal contesto medico a quelloingegneristico, dall’informatica alla classificazione.In particolare, alcune possibili applicazioni sono:

● la diagnosi di malattie: dando in input i sintomi si possono ricavare le possibilimalattie;

● filtri anti spam: nel caso ad esempio delle email la rete controlla le parole checontiene un messaggio e valuta la probabilità che quello sia spam;

● ricerca semantica: usata nei motori di ricerca;● per studiare vari fenomeni: incidenti stradali, attentati, furti, attacchi informatici…;● il calcolo dell’affidabilità di un prodotto. [9]

6 - Principi matematiciLe reti Bayesiane si basano, come già detto, sulle teorie della probabilità. La probabilità èuna branca della matematica che studia l’incertezza e permette di associare a un evento unnumero (espresso in frazione o percentuale) che indichi la sua possibilità di verificarsi. Inparticolare le reti di Bayesiane si basano sul teorema di Bayes, sulla chain rule e sulconcetto di eventi condizionalmente indipendenti. Nello specifico, il teorema di Bayes si basasul concetto di probabilità condizionata e sulla probabilità di intersezione di due eventi. Se siconsiderano due eventi A e B non indipendenti tra loro, quindi uno influenza l’altro,laseguente formula calcola la probabilità dell’evento intersezione:

P( A ∩ B)=P( A)∗P (B∨A).Visto che la probabilità dell’intersezione è anche uguale a :

P( A ∩ B)=P(B)∗P( A∨B), uguagliando le due formule si ottiene

P(B)∗P( A∨B)=P( A)∗P(B∨A ). Da questa

uguaglianza si ottiene il Teorema di Bayes

P( A∨B)=P( A)∗P(B∨A)

P(B). Si nota che il

numeratore è composto dalla probabilitàdell’intersezione, mentre per calcolare la probabilitàdel denominatore si utilizza il teorema didisintegrazione. Dati una collezione di eventi E1,E2,..., En che forma una partizione dell’insiemeuniverso, per ogni evento E, vale l’uguaglianza

P(E)=P (E)∗P(E∨E1)+P( E2)∗P(E∨E2)+¿

Page 35: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

...+P(En)∗P (E∨En).[7] L’insieme universo è l’insieme che contiene tutti i sottoinsiemi

compreso se stesso e l’insieme vuoto. L’insieme universo si può dividere in partizioni, nellafigura a sinistra ci sono due partizioni A1 e B1.[8] Nell’esempio a sinistra per calcolare laprobabilità di B, si può applicare il Teorema di disintegrazione in questo modo:

P(B)=P( A1)∗P(B2∨A1)+P(B1)∗P(B2∨B1). Un altro aspetto fondamentale è quello della chain rule che permette di calcolare laprobabilità dell’intersezione di eventi. Considerando che le reti Bayesiane posso avere moltilivelli, ovvero molti archi da un nodo radice a un nodo foglia, la chain rule permette di

ottenere la probabilità dell’intersezione di tutti queinodi. Un esempio è, prendendo come eventi A, B, e

C: P( A ∩ B ∩C)¿ P( A∨B ∩C )∗P(B ∩C)=¿¿ P( A∨B ∩C )∗P(B∨C )∗P(C). Tuttavia questa

formula risulta essere troppo complessa e moltodispendiosa a livello di risorse computazionali. Nelcaso delle reti Bayesiane, sfruttando il concetto dieventi condizionalmente indipendenti, la formula sisemplifica rendendo i calcoli più veloci ed efficienti. Due eventi A e B si dicono condizionalmente

indipendenti dato un altro evento C se: P( A∨B ∩C )=P( A∨C). [2]

Nelle reti Bayesiane due eventi non collegati direttamente da un arco sono condizionalmenteindipendenti dati i padri.Per fare un esempio se si vuole calcolare la probabilità che nella rete a sinistra tutti gli eventi

accadano si calcola: P( A ∩ B ∩C ∩ D ∩ E)=¿¿ P(E∨C)∗P (D∨B∩ C)∗P(C∨A)∗P(B∨A)∗P( A).

7 - Esempio di rete BayesianaQui di seguito sarà presentato un esempio di rete Bayesiana per la diagnosi di problemi diavviamento di un motore di un’automobile. Si userà il software Netica per larappresentazione grafica. Di seguito la rete:

Page 36: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Si può notare che in questa rete ci sono dieci nodi, ogni nodo è rappresentato da un nome eda una tabella contenente gli stati dei nodi e le loro probabilità. Si nota anche che il grafo èaciclico e che seguendo la direzione degli archi si arriva ai nodi terminali: Fari, Indicatorelivello, Avviamento motore. I nodi foglia dipendono dai nodi genitori e dai nodi radice.Un’altra cosa da osservare è che la rete è formata da i quattro grafi fondamentali, adesempio tra Età batteria e Stato batteria c’è un grafo a causa diretta, tra Tensione batteria,Indicatore livello e Serbatoio c’è un grafo a effetto comune. Con i dati così forniti la probabilità che il motore si accenda è molto alta. Tuttavia se simodificano i valori, ottenendo uno stato diverso del sistema, il risultato può essere diverso,come nell’immagine che segue:

Page 37: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

In questo caso si osserva che la probabilità che il motore si accenda è nulla. Pertantomodificando i dati dei nodi padri si possono ottenere risultati differenti. Come già accennato è possibile fare anche il ragionamento inverso. Sapendo che il motorenon si è acceso si può calcolare la probabilità che ci sia stato un malfunzionamento diqualche componente o che il serbatoio sia vuoto. Con questa visione, questa rete puòessere utile per le autocarrozzerie, facilitando l’individuazione di un problema, permettendoquindi di risolverlo in modo più veloce ed efficiente. Infatti basterà che il meccanico controlli icomponenti che hanno più probabilità di non funzionare; tuttavia è anche possibile il caso incui un pezzo, nonostante abbia una probabilità molto alta di essere guasto, funzionicorrettamente, mentre un altro con una probabilità ad esempio del 2% di non funzionare, siain realtà il pezzo guasto. [1]

8 - ConclusioniIn conclusione le reti Bayesiane sono molto utili nei contesti dove è richiesta l’analisidell’incertezza, della probabilità che un evento accada tenendo conto di tutte le altre variabilipresenti nel sistema. Usate per il supporto alle decisioni, si possono trovare in moltissimicontesti come la medicina, l’ingegneristica e l’informatica. Sono strumenti che permettono dianalizzare situazioni molto complesse che l’essere umano non sarebbe in grado diaffrontare in tempi utili. Sono strumenti complessi che richiedono un'analisi molto accurata,ma fondamentali; in futuro saranno usate sempre di più e saranno sempre più accurate.

Page 38: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Sitografia1. Reti di Bayes - Esempi applicativi

2. Variabile casuale

3. La costruzione della rete bayesiana - Okpedia

4. 5. Coding

5. Artificial Intelligence – Bayes Network

6. Rete bayesiana - Okpedia

7. Il teorema di disintegrazione e la formula di Bayes

8. Partizione di un insieme

9. RETI BAYESIANE

10. Top 8 Open Source Tools For Bayesian Networks

Bibliografia1. Applicazione delle reti bayesiane nell'ambito dell'affidabilità e della manutenzione

industriale

2. Studio del fenomeno degli incidenti stradali in Toscana

Page 39: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

I linguaggi di programmazionedelle moderne IA

Francesco Maltese

■ L'Intelligenza Artificiale è un settore dell’informatica che negli ultimi anni sta godendo di una costante crescita, suscitando sempre di più l’interesse di molti sviluppatori e aziende in tutto il mondo, pronti a dare la loro risposta alla domanda “Può un computer pensare come un uomo?”.

L’obiettivo dell’Intelligenza Artificiale è proprio quello di “insegnare” ad un computer a pensare come un umano, e per questo c’è bisogno di comunicare le azioni da compiere in determinate situazioni.

I linguaggi di programmazione sono il mezzo di comunicazione tra il programmatore e il computer, alcuni di questi offrono molte librerie mirate allo sviluppo di intelligenze artificiali, tra i più usati: Java, PHP e Python; alcuni di essi sono invece stati creati esclusivamente per questo obiettivo, ed offrono quindi una comunicazione semplificata attraverso librerie e funzioni dedicate allo specifico ambito, ad esempio il linguaggio Julia.

Negli ultimi anni, al di sopra degli altri linguaggi dedicati allo sviluppo di IA, spicca Python, che grazie all’elevato numero di librerie e funzioni dedicate alle IA ( Intelligenze Artificiali - IA ), unito ad una serie di caratteristiche come semplicità e flessibilità, risulta il migliore e il più semplice da utilizzare, rispetto ad altri concorrenti, come JavaScript o Julia.

Cos’è un linguaggio di programmazione?Come suggerisce la parola, un linguaggio di programmazione è uno strumento che ciconsente di comunicare[20]; più precisamente di controllare il comportamento di un computero di un software attraverso la scrittura del suo codice sorgente, permettendoci di inviareistruzioni e comandi al computer.

Ogni linguaggio di programmazione ha un proprio lessico, una sua sintassi e una propriasemantica, tuttavia ci sono alcuni concetti che sono presenti in più linguaggi, ad esempio levariabili, le costanti, i commenti, le strutture dati.

Page 40: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Attualmente, esistono più di 2000 linguaggi di programmazione più o meno noti, chevengono classificati basandosi su alcune caratteristiche principali:

● Linguaggio compilato o interpretato: La compilazione e l’interpretazione sono due tecniche che ci consentono di tradurre ilcodice sorgente del programma in linguaggio macchina, il linguaggio in cui opera ilcomputer a livello fisico. La compilazione traduce il codice sorgente in linguaggio macchina attraverso unprogramma chiamato Compilatore. Questa tecnica offre vantaggi in ambito diprestazioni, soprattutto in fase di esecuzione, tuttavia lo svantaggio principale è che ilcodice eseguibile è diverso a seconda dell'Hardware su cui viene compilato e delSistema Operativo, perciò è necessario compiere una nuova compilazione ogni voltache si cambia computer, questa caratteristica viene chiamata portabilità di unlinguaggio. Alcuni esempi di linguaggi compilati sono il C e il C++. L’interpretazione, invece, utilizza un programma chiamato Interprete, che durante lafase di avvio di un programma controlla e interpreta ogni riga di codice prima ditradurla in linguaggio macchina. L’interpretazione ha prestazioni nettamente inferioririspetto alla compilazione, al contrario però ha un’elevata portabilità e, diconseguenza, non sono vincolati dalla piattaforma su cui vengono eseguiti. Alcuniesempi di linguaggi interpretati sono tutti i linguaggi destinati alla programmazioneWeb e i linguaggi di scripting. Tuttavia, c’è un’altra tecnica di traduzione in linguaggio macchina, intermedia trainterpretazione e compilazione, utilizzata dai linguaggi Pascal, Java e Python. Questa tecnica intermedia utilizza un linguaggio altrettanto intermedio tra linguaggiomacchina e linguaggio di programmazione, chiamato bytecode. Utilizzando questatecnica, il codice sorgente viene compilato in linguaggio bytecode, che saràsuccessivamente interpretato al momento dell’esecuzione del programma per essereeseguito dalla macchina. I vantaggi di questa tecnica sono la portabilità e unainterpretazione più veloce, grazie alla prima compilazione eseguita.

● Linguaggio imperativo, dichiarativo o funzionale: A seconda del paradigma di programmazione che utilizzano, i linguaggi siclassificano in Imperativi, Dichiarativi e Funzionali. Linguaggio Imperativo: In un linguaggio imperativo le istruzioni del codice vengonoeseguite una dopo l’altra, seguendo un ordine preciso. Usare un linguaggioimperativo corrisponde a dire alla macchina la serie di istruzioni da eseguire perraggiungere il risultato, passo dopo passo. Nella programmazione imperativasolitamente i calcoli vengono fatti tramite ripetizioni, piuttosto che attraversoricorsione, utilizzando istruzioni come WHILE, FOR, IF THEN ELSE. Alcuni linguaggiimperativi tra i più famosi sono C, Python e Java. Linguaggio funzionale: I linguaggi funzionali si basano interamente sul concettomatematico di funzione per l’assegnazione delle variabili e lo svolgimento dei calcoli ,attraverso la ricorsione delle funzione stesse. La struttura dati più utilizzata è la lista,cioè una sequenza di elementi collegati tra loro tramite puntatori. Tra i più famosi

Page 41: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

troviamo Lisp e Haskell. Linguaggio dichiarativo: Nei linguaggi dichiarativi ogni istruzione viene definita“clausola” che descrive le relazioni tra i dati esistenti. In un linguaggio dichiarativo èimportante definire tutte le relazioni tra i dati, e in che modo i dati devono evolversidurante i calcoli per raggiungere il risultato desiderato. Le clausole non sonoeseguite in un ordine preciso, bensì è compito dell’interprete capire l’ordine giusto daseguire. Il linguaggio dichiarativo più famoso è Prolog.

● I linguaggi di scripting: I linguaggi di scripting sono linguaggi nati con lo scopo di automatizzare compitilunghi e ripetitivi da eseguire, le cui istruzioni vengono salvate in un file direttamenteeseguibile, piuttosto che essere eseguite una dopo l’altra. Sebbene inizialmentefossero considerati dei linguaggi di “seconda mano”, nel corso degli anni, grazie alrilascio di nuove librerie, unite alle elevate prestazioni e alla loro portabilità, ilinguaggi di scripting sono diventati i più utilizzati nel settore delle intelligenzeartificiali e nello sviluppo di web server. Alcuni tra i più famosi e influenti del momento sono Python, PHP e JavaScript.

Linguaggi per lo sviluppo di IANegli ultimi anni, lo sviluppo delle Intelligenze Artificiali in svariati ambiti - come assistentivocali o traduttori di testo - ha portato molti linguaggi ad aggiornare le versioni successive,implementando librerie orientate al Machine Learning a al Deep Learning: ad esempio illinguaggio PHP, nella sua ultima versione rilasciata ( PHP 8 ) ha reso pubblica l’intenzione divolersi affacciare a questo nuovo mondo, introducendo un nuovo metodo di compilazione, inmodo da aumentare le prestazioni del linguaggio stesso e renderlo quindi utilizzabile per losviluppo di Intelligenze Artificiali.

Con il passare degli anni, la classifica dei linguaggi più usati è cambiata in modo costante [4],fino ad arrivare al 2020, in cui, tra i più utilizzati, troviamo:

❖ Python❖ C❖ Java❖ Haskell❖ Lisp

Anche se non sono stati inseriti nella classifica soprastante, ci sono linguaggi cheultimamente si stanno affermando in maniera piuttosto evidente in questo ambito, comePHP e Julia[6]: il primo sta riscuotendo grande successo grazie al rilascio di una nuovaversione citata in precedenza, il secondo invece è un linguaggio molto recente creatoappositamente per lo sviluppo software collegati alle IA.

I motivi del successo di determinati linguaggi, come Python, è dovuto principalmente allecaratteristiche del linguaggio stesso e al numero di librerie utilizzabili per il Machine e il DeepLearning; ma cosa rende un linguaggio migliore di un altro in un confronto diretto?

Di seguito verranno confrontati Python, valutato come il miglior linguaggio dell’anno per losviluppo di IA; Java, che nel corso degli anni ha subito un forte declino in questo ambitorispetto al passato; e PHP, un linguaggio che sta emergendo ultimamente ma che sembra

Page 42: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

non abbia nulla da invidiare rispetto ad altri già conosciuti e rinomati in questo tipo disviluppo software.

Perché scegliere Python?

Cosa ha reso Python il miglior linguaggio nel corso degli anni [7]? Sicuramente il suo elevatonumero di librerie per Machine Learning e Deep Learning: attualmente è il linguaggio diprogrammazione con più librerie rivolte a questo settore e garantisce una gestione completae semplificata del software che si vuole sviluppare. In confronto a Java e PHP, è piùsemplice da imparare e utilizzare, e vanta di un’ incredibile portabilità. Garantisce elevateprestazioni su programmi brevi, ma tende a rallentare su programmi corposi, a differenza diJava. Questa piccola carenza viene però compensata dalla facilitazione di qualsiasi compitoda svolgere rispetto agli altri linguaggi di programmazione.

PYTHON

Punti a Favore Punti a Sfavore

Semplice da utilizzare e imparare Scarsa ottimizzazione su programmicorposi

Numero elevato di librerie per lo sviluppo diIA

Elevata portabilità

Community ampia

Performante su programmi brevi

Perché scegliere Java?

Java nel corso degli anni ha perso importanza in diversi settori a cause dell’ascesa diPython: di fatto, tutto ciò che poteva offrire Java in passato, ora è offerto da Python condiverse aggiunte e semplificazioni. Tuttavia, Java rimane comunque una valida scelta[18],grazie alla diversità di librerie a disposizione dell’utente, anche non relative direttamente alleIA. La forza di Java risiede nella sua community, difatti, essendo stato ed essendo uno deilinguaggi di programmazione più usati da moltissime applicazioni e software, Java puòvantare un ottimo supporto tecnico, sia grazie alla sua documentazione che grazie ai forumaperti dai programmatori stessi, i quali hanno già risolto alcune problematiche. Inoltre, Java,a livello di prestazioni, rimane più veloce di Python, grazie alla sua maggiore ottimizzazione,ed è quindi consigliabile per progetti di elevate dimensioni.

JAVA

Punti a Favore Punti a Sfavore

Page 43: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Community molto ampia Apprendimento non così immediato

Discreto numero di librerie volte allosviluppo di IA

Più complesso per la soluzione di problemi

Ottimizzato

Perché scegliere PHP?

PHP è uno degli ultimi arrivati nell’ambito delle IA, tuttavia si presenta già pronto adimostrare di non essere inferiore alla concorrenza, grazie al rilascio di PHP 8 [12]. Tra i puntidi forza di PHP possiamo trovare l’ottima documentazione presente sul sito ufficiale e su variforum dedicati. PHP viene aggiornato periodicamente grazie ai feedback della community, alfine di risolvere bug e aggiungere librerie utili. PHP inoltre necessita solo di un browser pervisualizzare il contenuto di un file .php: ciò rende PHP una scelta economica da nonsottovalutare, dato che è anche un linguaggio open source.

PHP è supportato dalla maggior parte dei web hosting servers e da tutte le piattaforme [17]

( Linux, Windows, MAC OS… ), inoltre garantisce una comunicazione facilitata con MySQLgrazie al supporto integrato per quest’ultimo, anch’esso open source, ma rimane compatibileanche con altri software di database diversi da MySQL.

PHP

Punti a Favore Punti a Sfavore

Ottima documentazione Scarsità di librerie orientate allo sviluppo diIA

Community molto ampia

Richiede poche risorse per essere utilizzato

Supportato da quasi tutti i web host

Comunicazione facilitata con MySQL

Python, il linguaggio del futuro

Page 44: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Come detto in precedenza, Python è considerato il miglior linguaggio di programmazione delmomento, in quasi ogni settore, compreso lo sviluppo di intelligenze artificiali, e non sembravoler cedere il posto a nessun altro linguaggio ancora per molto tempo, dati gli innumerevoliaggiornamenti fatti recentemente. Python è un linguaggio di programmazione ad alto livellomulti paradigma, adatto a qualsiasi scopo: scripting, sviluppo applicazioni, computazionenumerica e sviluppo di IA, dove eccelle particolarmente [5]. Ha un forte controllo dei tipi dellevariabili che vengono controllati a runtime del programma. Ma quali sono queste rinomatelibrerie dedicate al Machine Learning che hanno reso Python il miglior linguaggio in questosettore[8]?

Librerie per il Machine Learning di Python:

❖ Scikit-learn: Una tra le più famose librerie di Machine Learning del linguaggioPython, è una libreria di apprendimento automatico e fornisce diverse tipologie dialgoritmi, tra cui classificazione, regressione e clustering (raggruppamento dielementi omogenei in un insieme di dati). Inoltre, contiene algoritmi per laregressione logistica, classificatori bayesiani, K-mean e DBSCAN. La libreria Scikit-learn lavora a stretto contatto con le librerie SciPy e NumPy, difatti richiedel’installazione della libreria SciPy prima di poter essere utilizzata.

❖ Pandas: La libreria Pandas è dedicata completamente alla manipolazione eall'analisi dei dati, fornisce varie strutture dati al fine di facilitare la gestione di questiultimi. Pandas può essere considerata una libreria di supporto, poiché ha il compitodi recuperare e preparare i dati che verranno successivamente utilizzati da altrelibrerie, come Scikit-learn o TensorFlow. Pandas permette il recupero di dati dadatabase SQL, file di testo, file .csv, Excel e molti altri formati anche meno famosi.Una volta che i dati sono stati recuperati e sono salvati in memoria, Pandas offre unavarietà di funzioni adibite all'analisi e alla trasformazione dei dati, nonché un set difunzioni volte alla statistica e anche varie operazioni di tipo SQL.

❖ NumPy: NumPy - abbreviazione di Numeric Python - è la libreria fondamentale pereseguire calcoli scientifici e matematici su Python. La libreria offre diverse funzionimatematiche di altissimo livello per eseguire operazioni sulle strutture dati piùutilizzate, come array o matrici multidimensionali, a cui NumPy fornisce grandesupporto attraverso i metodi forniti dalla libreria. La specialità di NumPy tuttavia è lasua interfaccia array, che può essere utilizzata per esprimere immagini, onde sonoreo anche matrici di numeri reali. NumPy è la libreria più utilizzata per l’apprendimentoautomatico e per svolgere calcoli scientifici e complessi.

❖ Matplotlib: Matplotlib è una libreria generalmente usata come supporto a NumPy,specializzata nella creazione di grafici 3D e diagrammi. Tuttavia Matplotlib rimaneuna libreria a basso livello, ciò significa che richiede molti comandi per riuscire acreare grafici e diagrammi belli da vedere rispetto ad altre librerie Python. Quindiperché Matplotlib è la libreria più usata per la creazione di grafici e diagrammi? Larisposta è la sua flessibilità, infatti Matplotlib, con sufficienti comandi permette dicreare qualsiasi tipo di grafico, anche senza utilizzare coordinate cartesiane.

Librerie per il Deep Learning di Python:

❖ Theano: Theano è una libreria di deep learning molto simile a NumPy, si specializzainfatti nello sviluppo di espressioni che agiscono direttamente su arraymultidimensionali. Theano basa il suo prestigio sull'ottimizzazione della CPU e dellaGPU, migliorando le prestazioni del calcolo intensivo di dati. Nonostante non siaaggiornata da ormai quasi 4 anni, rimane una delle librerie di Deep Learning piùusate.

❖ Tensor Flow: Tensor Flow è una libreria sviluppata da Google stessa, che la utilizzanei suoi sistemi di ricerca tramite foto e ricerca vocale. Tensor Flow è infatti unalibreria volta alla creazione di algoritmi per lo svolgimento di compiti percettivi e di

Page 45: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

comprensione generale, ad esempio la comprensione della voce. Attraverso unelevato numero di tensori - ovvero matrici multidimensionali in Tensor Flow - èpossibile rappresentare anche le reti neurali sotto forma di grafici computazionali.

❖ Pytorch: Pytorch è la diretta concorrente di Tensor Flow sviluppata da Facebook, edè infatti specializzata nello sviluppo degli stessi algoritmi utilizzati nella comprensionedel linguaggio umano e nella computer vision. Pytorch dispone anche diun'interfaccia in C++, ma il motivo che ha spinto molti utenti a preferirla a TensorFlow è la sua semplicità: oltre ad essere veloce e flessibile, Pytorch risulta molto piùsemplice da imparare rispetto a Tensor Flow.

❖ Keras: Keras è una libreria volta all’apprendimento automatico e alle reti neurali,supporta le librerie di Tensor Flow e Theano. Keras permette la configurazione di retineurali profonde in modo molto semplificato, fornisce inoltre alcune funzioni perl’elaborazione di dati, la compilazione di modelli, la valutazione dei risultati, lavisualizzazione di grafici e molto altro. Rispetto a Pytorch, Keras ha una communitymolto più ampia, inoltre le librerie supportate e la semplicità nell’utilizzo dei metodirendono Keras la libreria più consigliata per avvicinarsi al Machine Learning.

L’Intelligenza Artificiale nella cybersecurity L’Intelligenza Artificiale sta riscuotendo molto successo anche nel settore della sicurezzainformatica, con lo scopo di automatizzare sistemi di sicurezza e aumentare la protezionedegli utenti sul web.

Sistemi automatici di controllo e sicurezza, insieme a funzioni di crittografia e protocolli dicomunicazione sicura compongono, al giorno d’oggi, la base della sicurezza online. Perquanto riguarda i primi, è già presente un articolo dedicato in cui sono approfonditi neldettaglio[19]. Per quanto riguarda le funzioni di crittografia, ad esempio le funzioni hash, sonogià parte integrante degli odierni linguaggi di programmazione, permettendo la cifratura didati sensibili già all’interno del codice del programma.

Tra i linguaggi citati in precedenza, Python e PHP consentono il cripting di dati in modomolto semplice e immediato, a differenza di Java che, come anche citato nei suoi punti asfavore, richiede molti più passaggi, anche piuttosto complessi.

Funzioni Hash in linguaggio Python

Uno dei metodi offerti da Python stesso per il cripting dei dati risiede nella libreria hashlib[16],che consente di effettuare la crittografia di una stringa tramite una funzione hash, offrendo lapossibilità di scegliere l'algoritmo di crittografia tra quelli offerti dalla libreria OpenSSL, tracui:

❖ md5❖ sha1❖ sha224❖ sha256❖ sha384❖ sha512

Di seguito, un semplice esempio di utilizzo della libreria hashlib per cifrare una stringa ditesto:

Page 46: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Funzioni hash in linguaggio PHP

Anche in PHP, come in Python è possibile cifrare una stringa in pochi e semplici passaggi,attraverso un metodo offerto dal linguaggio stesso, ovvero hash().

Hash() è un metodo in linguaggio PHP che necessita di due parametri in input per essereutilizzato - l’algoritmo di crittografia da utilizzare e la stringa da cifrare - secondo il seguenteordine:

hash( algoritmo_di_crittografia , stringa ); → hash( ‘md5’ , ‘Stringa’);

Il metodo restituirà come output una stringa alfanumerica corrispondente alla stringa data ininput, cifrata attraverso l'algoritmo scelto in input.

Gli algoritmi di crittografia supportati da PHP sono moltissimi, e possono essere visualizzatiall’interno della documentazione ufficiale PHP relativa al metodo hash().

Di seguito un semplice esempio di utilizzo del metodo hash() in linguaggio PHP

Che restituisce in Output:

Page 47: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Cos’è una funzione hash?

Una funzione hash è una funzione non reversibile che riceve in ingresso una stringa di testodi lunghezza variabile e restituisce in output una stringa alfanumerica di lunghezza fissa, checambia in base all'algoritmo di codifica utilizzato[1].

Una buona funzione hash deve rispettare alcuni punti fondamentali per essere consideratavalida[2]:

1. La stessa stringa in input si traduce sempre nello stesso hash di output.2. Deve essere semplice e veloce.3. Deve essere impossibile ricavare la stringa in input a partire dal suo output, a meno

che non si provino tutte le stringhe possibili.4. Due stringhe differenti in input, anche se simili, non devono generare lo stesso hash.

Le funzioni hash trovano molto successo in vari ambiti relativi alla sicurezza informatica,come firme digitali e inoltro di messaggi cifrati[3].

L’Attacco del Compleanno

Con “Attacco del Compleanno” o “Birthday Attack” ci riferiamo ad un tipo di attaccocrittografico utilizzato per riuscire a determinare il contenuto di un'informazione cifrata senzaconoscere il testo originale. L’”Attacco del Compleanno” deve il suo nome al “Paradosso delCompleanno”, un paradosso di teoria delle probabilità.

Il Paradosso del Compleanno afferma che bastano circa 23 persone per far sì che ci siaalmeno un 50% di probabilità che due di loro siano nate lo stesso giorno [13]. Questaaffermazione lascia spesso stupite molte persone, ma capiamo come si arriva a questarisposta:

Per facilità, calcoliamo quale sia la probabilità che 3 persone ( A - B - C ) siano nate in giornidiversi:

Se A è nato il 24 Agosto, B ha una probabilità di 364/365 (364 giorni su 365 sono diversi dal24 Agosto) di essere nato in un giorno diverso da A.

C ha quindi una probabilità di 363/365 ( 363 giorni su 365 sono diversi dal 24 Agosto e dalcompleanno di B ) di essere nato in un giorno diverso da quello di A e B.

Proseguendo così, si ottiene che la probabilità che un numero p di compleanni cadano tuttiin giorni diversi è:

Di conseguenza, per conoscere la probabilità che i compleanni cadano lo stesso giorno èsufficiente calcolare l’evento complementare, cioè:

Page 48: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Il “Paradosso del Compleanno” in crittografia viene utilizzato per capire quanto un algoritmosia resistente alle collisioni. E’ utilizzato, infatti, per stimare il numero di messaggi chedevono essere generati al fine di avere una probabilità del 50% che due di essi producano lostesso hash. In caso la resistenza sia bassa, il numero di blocchi in cui l’algoritmo divide lastringa in input, deve essere modificato.

L’ ”Attacco del Compleanno” si basa sugli stessi calcoli utilizzati per la soluzione delparadosso, ponendosi una domanda differente: “Quanti messaggi devo generare affinchè 2di loro generino lo stesso risultato hash?”. La risposta è 2n/2 dove N equivale alla lunghezzain bit del risultato hash. In seguito a questi calcoli, è risultato essenziale che i risultati hashdebbano essere lunghi il doppio del numero di bit per avere una sicurezza discreta.

Per questo motivo le moderne funzioni hash producono risultati di almeno 128 bit. Diseguito, una tabella che, in base al numero di bit del risultato hash, mostra il numero dimessaggi richiesti per trovare una collisione.

λ → Probabilità che due messaggi generino lo stesso risultato.

L’Attacco a compleanno si riassume in 4 punti principali [15]:

1- Il mittente A sta per associare ad un messaggio cifrato f un codice cifrato con la propriachiave privata, che quindi ne garantisce l’autenticità.

2- Il criminale c genera 2n/2 varianti di m, con lo stesso significato e sintassi diversa. Generainoltre la stessa quantità di messaggi, ma con significato totalmente diverso.

3- Secondo quanto afferma il Paradosso del Compleanno, c ha più del 50% di probabilitàche riesca a trovare due messaggi: una variante e uno falso, che producono lo stessocodice hash come risultato.

4- Dato che i due messaggi generano lo stesso risultato, c potrà convincere A a firmare ilmessaggio con la propria chiave privata, e dato che i due messaggi producevano lo stessocodice hash, produrranno anche la stessa firma, una volta soggetti alla chiave privata di A.In questo modo, A è stato ingannato, e ha firmato un messaggio falso.

Page 49: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Sitografia:1. Funzione di hash

2. Funzioni crittografiche di hash

3. Applicazione delle funzioni hash

4. Migliori linguaggi di programmazione per lo sviluppo di IA

5. Python

6. Pro e contro dei migliori linguaggi

7. Il linguaggio di programmazione delle moderne AI

8. Librerie di Python più usate nel Machine e Deep Learning

9. Librerie di Python

10. Cosa si può fare con il deep learning di Python

11. Java e l'Intelligenza Artificiale

12. PHP 8

13. Paradosso del Compleanno

14. Funzioni hash in php

15. Attacco del Compleanno

16. Hashlib

17. Vantaggi di PHP

18. Vantaggi di Java

19. Zhang Wei Jie Marco - The Exploitation of Machine Learning for Cybersecurity

20. Linguaggio di programmazione

Page 50: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

La programmazione funzionale ele moderne AI

Gian Marco Cialdi

AbstractI programmi di intelligenza artificiale consistono principalmente in complessi calcolimatematici, e devono essere altamente parallelizzabili. La programmazione funzionalesoddisfa alla perfezione tali requisiti: permettendo soltanto funzioni pure, consente dicambiare arbitrariamente l’ordine di quasi tutte le operazioni, rendendo i programminaturalmente parallelizzabili; ha delle peculiarità che semplificano in modo sostanziale lacreazione di software che svolgono calcoli matematici: l’assenza di effetti collaterali, lefunzioni pure, etc.. Oltre a ciò, lo stile funzionale sta prendendo campo in tutti gli ambitidell’informatica: dai compilatori e interpreti, alle interfacce grafiche e Web app.

In questo articolo verranno descritte le caratteristiche della programmazione funzionale e ivantaggi che esse offrono nei programmi di AI (intelligenza artificiale). Infine, saranno messea confronto delle possibili soluzioni funzionali e imperative ad alcuni classici problemi diprogrammazione.

IntroduzioneCome tutti i campi dell’informatica, anche lo studio dei paradigmi di programmazione è incostante progresso. All’inizio, il modo di programmare determinava notevolmente gliapplicativi risultanti, perciò la programmazione fece importanti progressi nei primi annidell’era digitale. In seguito, con l’avvento della programmazione a oggetti, sembrava che nonvi fosse modo migliore per scrivere codice efficiente, nonostante alcuni algoritmirichiedessero codice ridondante e più lungo del dovuto.

Pochi anni più tardi, con l’arrivo delle intelligenze artificiali moderne, gli sviluppatoriiniziarono a sentire gli svantaggi dell’OOP (programmazione orientata agli oggetti), data lanatura matematica delle AI, invece che oggettivamente modellabile. Essi iniziarono, diconseguenza, a usare un altro paradigma, molto meno usato fino a quel momento: laprogrammazione funzionale. Quest’ultima si rivelò particolarmente efficiente data la suacorrispondenza con la matematica, il naturale parallelismo, e la prevedibilità dei risultati

Page 51: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

grazie all’assenza di effetti collaterali.

CaratteristicheLa programmazione funzionale ha caratteristiche molto diverse da quella imperativa. Lamaggior parte delle funzionalità seguenti è stata implementata per ridurre al minimo i bug, lelinee di codice necessarie a risolvere il problema, e a rendere i programmi più facili datestare.[1]

Funzioni pureNei linguaggi funzionali le funzioni possono accedere solamente a variabili interne al loroscope, in modo da non causare effetti collaterali, o side-effects. Questo garantisce unnotevole vantaggio: quando si modifica una funzione, non c’è il rischio che alteri ilfunzionamento di altre routine, rendendo il testing di programmi appena modificati molto piùsemplice.

Per mostrare quanto l’accesso a variabili esterne renda i programmi meno robusti, siconsideri il seguente pseudo-codice, scritto in stile imperativo:

y = 0function f(x): y = y + x return x + 1

La funzione f restituisce il successivo naturale di x, ma modifica una variabile globale y.Cosa succederebbe se altri blocchi di codice usassero la stessa variabile globale?

function g(x): return x + y

z = f(0) * f(3) + g(2) * f(1)

Sembrerebbe facile calcolare il valore di z, tuttavia è necessario tenere conto del valore di yogni volta che viene invocata una funzione che la modifica. Inoltre, applicando nuovamentelo stesso calcolo si ottengono risultati diversi:

z = f(0) * f(3) + g(2) * f(1) # 1 * 4 + 5 * 2 = 14 , y = 4k = f(0) * f(3) + g(2) * f(1) # 1 * 4 + 9 * 2 = 22 , y = 8

L’importanza dell’ordine delle operazioni e l’accesso a variabili globali causa bug difficili datrovare – e spesso anche da risolvere. La programmazione funzionale elimina quasitotalmente questo problema con le funzioni pure, nelle quali solo diversi valori in inputpossono produrre output diversi; di conseguenza il comportamento di una routine dipendeunicamente dai suoi parametri. Tale proprietà viene indicata anche come trasparenzareferenziale.

ImmutabilitàIl princìpio di immutabilità garantisce la quasi totale assenza di bug difficili da trovare espesso anche da correggere, tipici del paradigma imperativo. Si consideri ad esempio ilseguente snippet imperativo:

Page 52: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

a = 0...editA(&a);...b = editA2(&a);...print(b)

È difficile determinare il valore di b senza aver analizzato con attenzione l’andamento dellavariabile a in ogni funzione che la modifica. La programmazione funzionale elimina questoproblema permettendo soltanto costanti, ovvero non è possibile modificare alcun dato in unprogramma. Sebbene sembri un incubo per un programmatore imperativo, tale vincolo e lefunzioni pure garantiscono ai programmi funzionali un’altissima tolleranza ai guasti (fault-tolerance).

RicorsioneNella programmazione imperativa, se non cambia lo stato – ovvero si modifica qualchevariabile – non esiste un modo per uscire da un ciclo. Tuttavia nella programmazionefunzionale, dove lo stato del programma non può cambiare, si deve fare uso di un metodoalternativo: la ricorsione. Nello specifico, il funzionale utilizza funzioni ricorsive per ripeterel’esecuzione di blocchi di codice; esse derivano dalla matematica, dove sono definite comefunzioni che richiamano se stesse.

Vantaggi con l’intelligenza artificialeLa natura intrinseca della programmazione funzionale la rende uno dei migliori paradigmiper la programmazione di AI.[2]

Maggiore facilità di implementazioneNon a caso la programmazione funzionale è uno dei paradigmi più usati nei programmi diintelligenza artificiale: essendo specializzata nei calcoli matematici, essa si rivela molto utilenel risolvere la colossale quantità di calcoli che un’AI deve compiere – ad esempiooperazioni su matrici o su vettori – poiché un linguaggio a oggetti introdurrebbe un overheadcomputazionale non indifferente. Oltre a ciò, dal momento che il codice in stile funzionale è –in genere – una serie di equazioni, risulta più facile prevedere il risultato di un programmamatematico.

ParallelismoDato che linguaggi funzionali godono della trasparenza referenziale, solo l’ordine logico delleoperazioni è importante. È dunque possibile modificare l’ordine delle computazioniintermedie in modo arbitrario, rendendo i programmi funzionali naturalmente parallelizzabili.

Considerato che le intelligenze artificiali richiedono dei livelli di parallelismo sempre piùelevati, il funzionale è una delle vie più semplici per l’implementazione di tale aspetto.

Tolleranza ai guastiCome è già stato detto sopra, i programmi funzionali sono altamente tolleranti ai guasti. Ciònon solo rende più robusti i programmi ordinari, ma anche quelli di intelligenza artificiale,

Page 53: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

dove spesso la sicurezza è di fondamentale importanza. Si consideri ad esempio le auto aguida autonoma: se fosse presente un bug all’interno del sistema, l’automobile potrebbecausare un incidente, probabilmente ferendo non solo il passeggero, ma anche gliautomobilisti intorno.

Linguaggi funzionaliI linguaggi funzionali si dividono in puri e impuri : coloro che seguono rigorosamente ilparadigma funzionale, e quelli che aggiungono anche altri costrutti, come i cicli imperativi –for, while, do-while –, riducendo però i vantaggi dell’immutabilità.

Di seguito sono listati alcuni tra i linguaggi funzionali più usati[3].

Puri● Haskell● Miranda● PureScript● Curry

Impuri● Lisp● OCaml● Scala● F#● Kotlin● Elixir

Il linguaggio che verrà usato negli esempi contenuti in questo documento sarà Haskell, dalmomento che è funzionale puro ed è uno dei più usati al giorno d’oggi. Esso è stato persinousato da Facebook nel proprio filtro anti-spam[4].

EsempiDi seguito si prenderanno in considerazione alcuni esempi di programmi scritti in stileimperativo e i loro corrispettivi in funzionale. I linguaggi di esempio sono C (imperativo) eHaskell (funzionale).

FattorialeUno degli esempi più classici di confronto tra programmazione imperativa e funzionale è ilcalcolo del fattoriale di un numero:

C Haskell

Page 54: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

1 unsigned long fact(unsigned n) 2 { 3 unsigned long acc = 1UL, i;5 for (i = 0UL; i < n; ++i)6 acc *= n – i;7 return acc;8 }

1 fact :: Integer -> Integer 2 fact 0 = 13 fact n = n * fact (n-1)

La prima caratteristica degna di nota è che l’Haskell ha bisogno di molte meno righe dicodice per risolvere lo stesso problema. Questo perché, a differenza dell’imperativo dove sidanno i passi per raggiungere la soluzione, nel funzionale si definisce la soluzione stessa: lariga 1 letteralmente racconta “il fattoriale di 0 è 1”, e la seconda “il fattoriale di un numero n èn per il fattoriale del numero precedente”. Non vi è alcuna istruzione che dica come calcolareil fattoriale, soltanto cos’è effettivamente. Inoltre, viene usato un ciclo ricorsivo per il calcolo,invece che un’iterazione come in C. Si noti anche che in Haskell non viene modificata alcunavariabile, esattamente come specificato dal paradigma funzionale.

La soluzione in Haskell si può tradurre nel formalismo matematico come:

0! = 1n! = n(n – 1)!

Operazioni sugli arrayNei linguaggi funzionali – Haskell in particolare – le operazioni sugli array sonoestremamente facilitate rispetto alle loro controparti imperative. Ad esempio, volendocalcolare il quadrato di tutti gli elementi in un array e restituirne la somma:

C Haskell1 int squareSum(int a[], unsigned n)2 {3 int acc = 0, i;5 for (i = 0; i < n; ++i)6 acc += a[i] * a[i];7 return acc;8 }

1 squareSum :: [Int] -> Int2 squareSum [] = 03 squareSum (x:xs) = x*x + squareSum xs

Anche in questo caso per risolvere il problema nel funzionale viene usato un ciclo ricorsivo,dando il caso base (riga 2) e il passo induttivo (riga 3).

In particolare, nel passo induttivo, viene preso in input il primo elemento x di una lista dielementi xs – “x” al plurale –, e viene sommato il quadrato di esso al resto dei calcoli.

Nel linguaggio matematico, usando S come l’insieme di input:

squareSum( ) = 0∅squareSum(Sx ∈ S) = Sx

2+squareSum(S)

per ogni elemento Sx appartenente a S.

Page 55: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

ConclusioniSebbene trovi maggiormente applicazione nell’intelligenza artificiale, la programmazionefunzionale sta prendendo campo anche in altri ambiti dell’informatica: dai compilatori alleinterfacce grafiche e Web app. Tuttavia prevedere che essa superi i paradigmi “impuri”,come la programmazione a oggetti, è alquanto improbabile: spesso non è immediatorappresentare la realtà d’interesse senza cambiare lo stato, e ciò richiederebbe del tempoaggiuntivo ai programmatori, laddove la concorrenza esige buoni prodotti nel minor tempopossibile.

Malgrado la sua difficoltà, il paradigma funzionale è uno dei migliori e, anche seprobabilmente non supererà l’imperativo, molti linguaggi – in particolare quelli orientati aglioggetti – stanno prendendo spunto da esso. La possibilità di creare espressioni lambda o dipassare funzioni come parametri e/o di restituirle – funzioni di prima classe – sta quasidiventando una necessità nei linguaggi come Python, C#, C++, e JavaScript.

Il futuro della programmazione molto probabilmente sarà nei linguaggi general-purp\ose,ossia quelli che permettono di programmare in tutti gli stili. Esistono già delle librerie inJavaScript, ad esempio, che sono scritte completamente in stile funzionale [5], nonostante illinguaggio non sia di per sé funzionale puro.

Page 56: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Big data e Intelligenza artificialeTutto sta nella convergenza delle tecnologie ma senza dimenticare

l’etica

Alessandro Bonfanti Rabuzzi

AbstractÈ il 2008 quando Chris Anderson, il direttore di Wired, scrive un articolo in cui dice che i BigData avrebbero rivoluzionato il metodo scientifico cancellando ogni base logica dietro allefuture scoperte: egli sosteneva che i dati che avremmo raccolto e analizzato grazie ai BigData sarebbero stati così tanti da caratterizzare l’intera realtà. Ma, prima di tutto, cosa sono iBig Data? Essi nascono dall’esigenza di immagazzinare enormi quantità di dati derivantiprincipalmente dal web. L’obiettivo in questa sede è capire nel dettaglio di come i Big Datarendono possibile la gestione di tale mole di dati, come vengono analizzati e come stannocambiando (e cambieranno) la nostra vita. Per quanto sorprendente questa rivoluzionepromessa dai Big Data possa essere, il quesito su quali dati siano archiviati, su come sianomemorizzati e su chi li gestisca, rimane spesso irrisolto.. I nostri dati sono a rischio? Cosa ciaspetta per il futuro? Riusciremo a mettere delle barriere per salvaguardare la nostra privacyo verremo privati dei nostri diritti senza riuscire a reagire?

1 IntroduzioneNegli ultimi anni, lo sviluppo delle tecnologie, legato ai settori delle reti informatiche e deisensori, soprattutto grazie all’Internet of Things, ha cambiato radicalmente la nostra vita. Adoggi il web non è solo un luogo in cui ci muoviamo come visitatori, ma come veri e propriutenti attivi. I social network sono l’esempio perfetto. Essi infatti offrono solo una struttura,ma sono gli utenti che, creando un account e iniziando a postare, lo popolano di contenuti. Ilweb non sta diventando un posto più grande solo perché si creano sempre più piattaformeche offrono contenuti (siti di e-commerce, aziendali, informativi, streaming video, ecc... ), maperché sono gli stessi utenti di tali piattaforme a fornire una quantità dati tale da essereincredibilmente più grande rispetto agli stessi contenuti che sono visitati. I motori di ricercaprofilano costantemente le ricerche effettuate da parte degli utenti. Se si pensa che suGoogle ogni giorno sono effettuate 3,5 miliardi di ricerche [15] e che i dati che ogni utentelascia devono essere memorizzati in tempo reale, è naturale intuire che le soluzioni offerteda DataBase SQL, con server scalabili verticalmente, largamente usati fino all’inizio del2000, non possono più soddisfare tali richieste, ed è qui che nascono i Big Data.

2 Big DataIl termine Big Data indica un insieme di dati talmente vasto che necessita di strumentihardware e software non convenzionali. Un significato più concreto fu dato da Doug Laneyscomponendo i Big Data con “Le 3 V” [3] [4] : volume, velocità e varietà. Con la prima V,volume, si intende la quantità di dati che il sistema tratta: in genere questi non scendonosotto la soglia del petabyte o di varie centinaia di terabyte. La seconda V, velocità, indica

Page 57: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

con quale ordine di tempo i dati sono gestiti, soprattutto in determinati settori abbiamo unvero e proprio flusso di dati continuo che necessita di essere elaborato in tempo reale, peresempio tutti gli ambiti in cui si fa un largo utilizzo di sensori. Infine, l’ultima V, varietà: conquesto parametro si indica la varietà delle informazioni memorizzate dal sistema, adesempio in un social sono memorizzati foto, video, messaggi vocali e testuali, credenzialid’accesso, metadati sui singoli post. Nel corso del tempo sono state aggiunte altre 3 V oltrea quelle convenzionali. La prima delle V acquisite è Veridicità: è molto importante indeterminati ambiti che i dati archiviati nel sistema siano affidabili e veritieri; come si vedrà inseguito, ottenere la veridicità dei dati con l’utilizzo dei Big Data è più difficile rispetto allesoluzioni convenzionali. La quarta V è Variabilità: i dati non solo sono di diversi formati, maprovengono da contesti diversi e sono raccolti con metodi dissimili fra loro; la capacità digestire flussi di dati così eterogenei è importante per l’analisi dei dati stessi. La sesta V èValore: quest’ultima caratteristica non è legata direttamente al sistema, bensìesclusivamente all’ambito. I Big Data sono spesso definiti “il nuovo petrolio” o “il nuovo oro”data la loro caratteristica di riuscire a immagazzinare, gestire e analizzare quantità enormi didati. Più precisamente, con Valore si intende quanto l’utilizzo dei Big Data in un determinatoambito possa aumentare le possibilità finanziarie ingrandendo il settore stesso.

2.1 Intelligenza ArtificialeCome detto in precedenza, i Big Data hanno lo scopo di gestire enormi moli di dati, lecompagnie più grandi sono obbligate a utilizzarli per poter immagazzinare l'enorme quantitàdi informazioni che si generano nei loro ambienti o a quelli loro correlati. Ma questa capacitàdi accedere alle informazioni, così come sono, senza poter effettuare alcuna analisi, èinutile. L’obiettivo dell’utilizzo dei Big Data è quello di avere un mezzo che permette l’analisidi dati su vasta scala, l’unico modo per raggiungere tale obiettivo è attraverso l’utilizzodell'intelligenza artificiale. Date le ’enormi dimensioni dei sistemi, e le complessità che essipossono avere, l’utilizzo delle AI è anche l’unico modo per riuscire a trovare correlazione frai dati archiviati. Questa necessità è data dal fatto che nessun operatore umano è in grado distare dietro ai flussi continui di dati che caratterizzano i Big Data. Possiamo dire inoltre che iBig Data e le AI sono tecnologie complementari: i primi non avrebbero alcun valore se nonfosse possibile eseguire nessuna analisi su di loro, mentre le AI riescono a lavorare meglio ead affinarsi quanti più dati si danno loro a disposizione. In particolar modo, in relazione ai BigData, è spesso abbinato un sottoinsieme dell’AI, il Machine Learning. Esso vieneselezionato fra le varie possibili opzioni data la sua capacità di identificare modelli in manierasemi-autonoma (Machine Learning supervisionato) e totalmente autonoma (MachineLearning non supervisionato). Ci soffermeremo però in maniera dettagliata su come i datiriescono ad arrivare alle AI, dato che il funzionamento degli algoritmi e delle tecniche diimplementazione di intelligenza artificiale è ampiamente discusso in altre sedi semprefacente parti di questa rivista [Niccolò Maestripieri]. L’obiettivo di questo elaborato èspiegare nel dettaglio e in modo tecnico i metodi di gestione e recupero dei dati all’internodei Big Data.

3 DataBase No-SQL I DB su base relazionale, tutt’oggi utilizzati per la gestione di dati di dimensioni contenute,nascono nel 1970 grazie a Edgar Codd e alla sua definizione di RDBMS attraverso le “13

Page 58: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

regole” che i DB relazionali devono rispettare. Tale modello si basa sulle tabelle e suiconcetti di Primary-Key e Foreign-key e sfrutta l’algebra relazionale per le interrogazioni suesso. Tale modello diventa di fatto uno standard negli anni ‘80, è utilizzato largamentetutt’ora attraverso i DB basati su SQL.

3.1 Cosa sono e come funzionano [4] Il termine “DB No-SQL” risale a poco prima del 2000, e con esso si intendevano tutti i DBche non seguivano lo standard sintattico di SQL. Nel corso del tempo questa etichetta hacambiato di significato e sta a indicare tutti DB non basati su algebra relazionale, distribuiti escalabili orizzontalmente. La necessità di questi tipi di DB nasce agli inizi del 2000 con ladiffusione sempre più veloce del World Wide Web così come lo conosciamo, grazieall’utilizzo delle pagine dinamiche. La distribuzione dei DB no-SQL è una caratteristica che èdiventata necessaria nell’ambito web, la necessità di spazio di memorizzazione e di capacitàdi calcolo cresce più velocemente dello sviluppo hardware stesso. Questo sbilanciamentorende di fatto impossibile con un singolo server stare al passo con l’aumentare dei dati,infatti i RDBMS sono limitati dal punto di vista di potenza perché posso scalare soloverticalmente, quindi sostituendo l’hardware attuale con uno più performante. Questasoluzione però presenta un invalicabile limite: quando si possiedono già le miglioritecnologie, com’è possibile aumentare la capacità di calcolo? In questo caso l’unicapossibilità è l’utilizzo di sistemi che possono essere scalabili orizzontalmente, ovvero sistemiin cui possono essere aggiunti nodi che lavorano parallelamente con il sistema stesso. Cosìfacendo, si riesce a oltrepassare i limiti della scalabilità verticale e ottenere un fortissimolivello di parallelismo. Le differenze fra i RDBMS e i No-SQL non si limitano a livellohardware. Durante la creazione di un DB si parte da una fase di analisi il cui obiettivo èquello di riuscire ad ottenere informazioni per rappresentare al meglio la realtà, in seguitoavviene la normalizzazione del DB e infine si ottiene lo schema finale. Questo procedimentogenera uno schema fortemente strutturato e rigido, infatti con uno schema di questo tipo nonè possibile memorizzare informazioni ulteriori rispetto a quelle ipotizzate in principio nellafase di analisi; e, per archiviare tali informazioni, sarebbe necessario riprogettare Il DB.Inoltre, la forte normalizzazione nei RDBMS crea un divario fra come i dati sono memorizzatie come essi vengono utilizzati e ciò comporta all’utilizzo dell’operazione “join”, cherestituisce risultati unendo informazioni di tabelle diverse: questa operazione risulta moltopesante dal punto di vista computazionale ed è utilizzata continuamente per estrapolare idati dal DB. Nei sistemi No-SQL si ha un approccio completamente diverso: in essi simemorizzano le informazioni senza rispettare la normalizzazione per avere i dati organizzatinel modo più prossimo al loro utilizzo, al fine di ottenere prestazioni migliori; dato che glischemi dei DB non sono particolarmente rigidi, è possibile memorizzare delle informazioninon previste dallo schema originale. Quest’ultima caratteristica permette ai sistemi No-SQLdi essere incredibilmente versatili e mutevoli nel tempo, la dinamicità di un sistema e lapossibilità di cambiare frequentemente sono caratteristiche molto importanti proprionell’ambito web.

3.2 CAP Theorem Come detto in precedenza, i sistemi No-SQL sono distribuiti su più macchine (nodi)collegate in una rete. Se con la distribuzione risolviamo il problema legato alla potenza, necreiamo un altro legato anch'esso in modo intrinseco alla struttura fisica del sistema.

Page 59: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Essendo i dati distribuiti su più nodi in maniera ridondante e i nodi collocati in maniera fisicaanche molto distanti fra loro, si creano delle problematiche date dalla latenza interna delsistema. Essendo la velocità della luce un limite fisico insormontabile, oltre la quale i segnalinon potranno mai andare, ci ritroviamo ancora una volta davanti a problemi strutturali. Percapire meglio la situazione, si utilizzerà il seguente esempio: si hanno 2 nodi, N1 e N2. Ogninodo ha la possibilità di eseguire un algoritmo e memorizzare un dato nella propria unità dimemorizzazione V, nel nodo N1 abbiamo l’algoritmo A, il quale aggiorna il valore contenutoda V in tutti i nodi; nel nodo N2 invece abbiamo l’algoritmo B, il quale legge il contenuto delsuo nodo. In un mondo ideale senza latenza, una volta che A aggiorna i valori, lo fa per tutti inodi contemporaneamente e B quando leggerà il valore V sarà quello corretto. Purtroppo,nel mondo reale questa situazione raramente accade, data la latenza che inevitabilmente sigenera fra i nodi. Gli errori più frequenti sono dati dalla corruzione o alterazione delmessaggio durante il passaggio fra i nodi, oppure dalla lettura anticipata da parte di Brispetto all’arrivo del valore V. Per ovviare a ciò inizialmente erano state implementate dellefasi di commit globali: il nodo coordinatore inviava a tutti i nodi tutti i dettagli dellatransazione, così che i nodi stessi si auto-verificassero. Questa fase si chiama pre-commit e,se tutti i vari commit interni andranno a buon fine, si eseguirà la transazione. Questasoluzione aumenta la consistenza del sistema, creando, però, un’ incredibile latenza(all’interno di esso), la quale cresce in proporzione al numero di nodi della rete. Il nostroobiettivo iniziale era ottenere una bassa latenza fra i nodi, avere una rete quanto più estesae resistente agli errori di comunicazione tra nodi. Se vogliamo rispettare tali criteri, dobbiamorinunciare alla consistenza totale dei dati, cioè deve essere tollerato che in un momento T,N1 crede che V abbia un valore V0 e N2 crede che V abbia un valore V1. È in questa situazione che Eric Brewer, nel 1999, pubblica i suoi studi in cui presenta il “CAPtheorem” [5]: secondo tale principio, un sistema distribuito si caratterizza per tre proprietà:consistency, availability, partition tolerance. La prima proprietà, consistency, garantisce chein ogni nodo siano presenti i dati più aggiornati e siano coerenti fra loro. La secondaproprietà, availability, garantisce che ogni richiesta posta al sistema abbia una risposta.L’ultima caratteristica, il partition tolerance, garantisce il funzionamento del sistema, anchese la comunicazione tra nodi è compromessa, questo perché i dati sono fortementeridondanti e i nodi possono sostituirsi l’un l’altro. Queste tre proprietà, però, non possonocoesistere insieme all’interno dello stesso sistema distribuito, ma possono essere presentisolamente a coppia: Consistency e Availability (CA), Consistency e Partition Tolerance(CP),Availability e Partition Tolerance(AP). Questa condizione di scelta forzata è dettatadall'impossibilità di eliminare la latenza fra i vari nodi. La combinazione delle caratteristichedeterminerà le specifiche e le possibili applicazioni del sistema. Nel primo caso, il CA,rinunciamo al partition tolerance e di conseguenza, per ottenere transazioni sicure, tutti i daticoinvolti in una singola transazione vengono spostati e gestiti da una singola macchina. Cosìfacendo, si ritorna ad uno stato prossimo a quello di un RDBMS in cui i dati e le elaborazionirisiedono sulla stessa macchina, infatti, ancora oggi, l’unico modo efficiente per garantiretransazioni sicure è tramite l’utilizzo di DB non distribuiti, basati su algebra relazionale. Laseconda combinazione è il CP, anche in questa tipologia di sistema avremo garantita laconsistenza dei dati e a conseguenza di ciò si ha una latenza non trascurabile, ma abbiamocomunque i vantaggi computazionali di un sistema distribuito e un partizionamento robusto.Infine, l’ultima combinazione, l’AP: nei sistemi di questo tipo si rinuncia alla consistenza perprestazioni elevate e robustezza del sistema date dall’ availability e dal partition tolerance. Aquesto punto, è quindi chiaro che nei sistemi distribuiti è impossibile garantire le proprietàtransazionali tipiche delle proprietà ACID. Per ovviare a tale mancanza, i sistemi distribuiti

Page 60: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

hanno altre proprietà indicate da un altro acronimo,il BASE (Basically Available). Secondo taleprotocollo, i dati devono essere ridondanti pergarantirne la disponibilità. L’equivalente delletransazioni è data dai Soft State, molto simili alletransazioni, ma non istantanee per via della latenza.All’interno del protocollo BASE non si ha unaconsistenza effettiva e immediata, ma una EventualConsistency, ovvero, la consistenza si raggiungesolamente con il passare del tempo.

3.3 Tipologia I sistemi No-SQL sono di vari tipi e si differenzianoper il modo in cui gestiscono i dati.

3.3.1 Key-Value Store 3.3.1Il key-value store consiste nell’associare al blob (unità di dato) una key (codicealfanumerico) che lo identifica univocamente. Il blob è un dato che può essere di qualsiasitipo, ciò permette un'alta varietà all’interno del sistema. L’utilizzo dei dati sotto forma di blobpermette inoltre un’ incredibile dinamicità all’interno del sistema, dato che esso non è aconoscenza di come il blob sia organizzato. Essendo tutti i blob uguali dal punto di vista delDB, archiviare nuovi elementi è pressoché indifferente da quelli precedenti. Lo svantaggiodell’utilizzo di questo metodo è la scarsa efficienza delle query, infatti, se l’ignoranza del DBriguardante il blob è un vantaggio per la flessibilità dello schema, è anche uno svantaggio,dato che il DB non può far altro che recuperare interamente il blob. Infine, l’utilizzo della keypermette l’accesso diretto ai singoli blob.

3.3.2 Document Store Il document store è molto simile al key value: oltre all’utilizzo di una chiave per identificare ilblob si utilizzano una serie di metadati contenuti all’interno di un file di testo, il document.Questo documento è di tipo descrittivo e contiene dell informazioni generali sul blob. Per talidocumenti vengono utilizzati formati come: JSON, XML, YAML e BSON. Con l’implementodei document, è possibile eseguire una ricerca potenziata tramite le query : esse infatti nonvengono eseguite sul blob, ma sui document. I vantaggi che si hanno utilizzando i blob liabbiamo ovviamente anche nel document store.

3.3.3 Column Family Store Nei sistemi RDBMS abbiamo un approccio row-store in cui le informazioni sono raggruppateall’interno di righe, questo approccio permette facili modifiche e inserimenti all’interno delsistema, ma spesso sfocia anche in letture superflue. Questo avviene perché tutte le volte incui viene effettuata una query, la riga viene letta interamente, indipendentemente dai campiche ci interessano. Nel column family store, invece, le informazioni sono memorizzatetramite l’utilizzo di colonne: questo approccio rende più efficienti le letture, mirandole alsingolo attributo interessato, e non all’intera riga. Con il termine column family si intende uninsieme di colonne le quali vengono raggruppate insieme, attraverso family, per aumentare

Page 61: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

ancora di più l’efficienza delle letture. Il criterio di raggruppamento è dato dal fatto chespesso molte colonne vengono lette insieme ad altre, e quindi raggruppandole si ottengonoprestazioni migliori, data la lettura dell’intero gruppo family. Inoltre, è possibile la creazionedi super column family, ovvero famiglie di famiglie. Questo approccio è scarsamente usatodato l’impatto negativo sulle prestazioni del sistema, ma è comunque proposto per ambiti incui si richiede un’astrazione maggiore dello schema. Nel column family store, a differenzadei sistemi visti precedentemente, il sistema è a conoscenza di quali tipi di dati sianomemorizzati e della loro struttura. Questo limita parzialmente la libertà dello schema, anchese si ha la possibilità di aggiungere colonne in modo estremamente semplice, ma permettealte performance nelle query di aggregazione.

3.3.4 Graph Come suggerisce il nome, i dati gestiti da un sistema graph sono memorizzati logicamenteall’interno di un grafo. Questo metodo di memorizzazione si distingue degli altri sistemi No-SQL perché mette al centro le relazioni fra i vari elementi, trattandole come informazionivere e proprie. Per questa sua caratteristica si può dire che i sistemi graph siano piùrelazionali rispetto ai RDBMS stessi, da non confondere le relazioni con l'algebrarelazionale. Nei sistemi graph sono 2 gli elementi principali: i nodi key-value e i rami delgrafo che collegano i vari nodi. Questi ultimi possono sia essere orientati che associareugualmente coppie di nodi. Il vantaggio di usare un sistema graph sta nell'ottenere ottimeprestazioni nelle query, che implicano l’utilizzo di relazioni.

3.4 Vantaggi Applicativi Come si è già ampiamente discusso precedentemente, fra i sistemi SQL e non, vi sonosostanziali differenze che portano ad avere caratteristiche particolari e quasi opposte fraloro. In particolar modo, nei sistemi No-SQL ci sono ulteriori suddivisioni che obbligano nonsolo a scegliere se è necessario usare un sistema SQL o no, ma anche quale sistema No-SQL adottare. La scelta deve essere estremamente oculata, in modo da ottenere piùvantaggi possibili dal sistema stesso. Per scegliere in modo corretto ci sono vari elementi datenere in considerazione. Per prima cosa, è importante considerare quale tipo di schemaavremo; se sarà necessario prevedere quante entità avrà lo schema, quante relazioni equanto spesso cambierà lo schema nel tempo. Un altro fattore da tenere in considerazione èin quale modo devono essere trattati i dati: quanto i dati dovranno essere consistenti, i tipi diaccesso da effettuare su di essi, il numero di utenti che ne disporranno e il tipo dielaborazioni che il sistema effettuerà sui dati stessi. Per rendere la scelta più facile, spessoquesti due fattori vengono racchiusi in uno solo, ovvero nella categoria delle applicazioni.Generalmente, possiamo suddividere i software che usufruiscono di base di dati in 3categorie: transazionali, computazionali e web-oriented.

3.4.1 Applicazioni Transazionali Le applicazioni transazionali, per esempio un gestore di vendite, necessitano di avere unabase di dati fortemente consistente e in genere sono caratterizzati da una scarsaconcorrenza. Per quanto riguarda lo schema, abbiamo dei dati fortemente strutturati, tanterelazioni utilizzate frequentemente e una forte rigidità dello schema, che porta a non esserequasi mai cambiato. In questo tipo di applicazioni, i vantaggi, nell’utilizzo di sistemi No-SQL,non sono molti. Utilizzando un sistema column family si ha il vantaggio di poter modificare

Page 62: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

facilmente lo schema, anche se questo non è considerabile completamente un vantaggio,dato che, come detto prima, gli schemi sono rigidi e di conseguenza tendono a cambiareraramente. Nei document store invece si ha una facilitazione nella gestione delle viste, talecaratteristica è data non tanto per il sistema in sé, ma per i software che implementano lafilosofia dei document store. Utilizzando i sistemi No-SQL però, incorriamo in numerosisvantaggi. Considerando come lo schema è strutturato nei transazionali, si ha unoscarsissimo supporto alle relazioni, non è possibile l’utilizzo dell’operatore join e non sonopossibili le transazioni istantanee.

3.4.2 Applicazioni Computazionali Le applicazioni computazionali sono quelle in cui la parte di calcolo è la prevalente, peresempio software per report di vendite. In queste applicazioni si hanno operazioni e accessisu specifici campi delle tabelle, relazioni fra entità molto limitate e pochissime operazioni chele coinvolgono, schemi non particolarmente strutturati e, spesso, accade che si integrino piùbasi di dati per eseguire calcoli su sistemi più ampi e, di conseguenza, occorre che ilsistema sia in grado di cambiare di frequente. Per quanto riguarda la gestione dei dati, sipuò dire che: gli accessi ai dati sono prevalentemente specifici a singole colonne, raramentesi accede a molte colonne colonne contemporaneamente e non è necessaria unaconsistenza stringente, dato l’enorme volume di dati. Per questo tipo di applicazioni èintuitivo, e giusto, utilizzare un sistema column store. I vantaggi nell'utilizzare tale sistemasono: le alte prestazioni in lettura, alta efficienza nelle query di aggregazione e la possibilitàdi cambiare dinamicamente lo schema. Gli svantaggi di utilizzare un sistema No-SQL invecesono trascurabili: non si ha il supporto alle relazioni e si verificano temporaneeinconsistenze, quindi questi due svantaggi sono tollerabili.

3.4.3 Applicazioni Web-Oriented Le applicazioni web-oriented sono caratterizzate da un elevato numero di utenti, tantissiminodi, tantissimi dati da elaborare, breve tempo di attesa per accedere alle informazioni,altissima dinamicità dello schema dato dalla necessità di variazioni in tempo reale dellerelazioni (per esempio relazioni fra utenti di un social). Analizzando la struttura delloschema, si può dedurre che esso è strutturato e complesso, ma al tempo stesso moltovariabile e, in più, si tende a realizzare le relazioni a livello applicativo e non di schema, inmodo da renderlo più leggero e semplice. Per quanto riguarda l’accesso ai dati, si eseguonomolti accessi a gruppi di dati contemporaneamente e si tollera una breve inconsistenza tra diessi. Nel caso si scegliesse un sistema con column store, sarà possibile realizzaresemplicemente uno schema ben strutturato, ma al tempo stesso dinamico, e ottimizzare leletture di dati multipli grazie all’utilizzo delle family. Nel caso si scelga un document store, siha la possibilità, grazie alla gestione efficiente delle viste, di poter far creare agli utenti stessile relazioni. Indipendentemente dal tipo di memorizzazione, i vantaggi del No-SQL sono lavelocità di accesso ai dati e la facile scalabilità del sistema. In questo tipo di applicazioni nonesiste un motivo concreto per scegliere un sistema SQL.

3.4.4 Polyglot Persistence Ogni sistema ha i propri vantaggi e svantaggi a seconda della situazione in cui vieneutilizzato, per ottenere il massimo delle prestazioni non si adotta un singolo tipo dimemorizzazione per l’intera architettura, ma si cerca di spezzare in vari sotto-sistemi l'intero

Page 63: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

sistema. Così facendo, si riescono ad ottenere i migliori risultati possibili nei vari ambiti:questo approccio è chiamato Polyglot Persistence e consiste essenzialmente nellacreazione di sistemi ibridi che comprendono varie soluzioni contemporaneamente.

4 Hadoop [6] [7] Hadoop è un software open source che permette la gestione dei Big Data; attualmenteviene utilizzato da compagnie come Ebay, Facebook, Linkedin, Spotify e Twitter. Hadoopnacque in risposta ai sistemi di Google per la gestione dei Big Data, tali software sono sulicenza (a pagamento). Per creare una controparte gratuita, un insieme di aziende finanziò ilprogetto dando vita ad Hadoop (da qui in avanti HD). Le principali caratteristiche di HD sono:l’accessibilità, dato che esso è ottimizzato per funzionare anche su dispositivi di basso costooppure su soluzioni cloud (per esempio aws); la robustezza, perché il sistema continua afunzionare anche in caso di compromissione dell’hardware; la scalabilità orizzontale; lasemplicità, in quanto HD solleva completamente il programmatore dal dovere di occuparsidella gestione e della disposizione fisica dei dati. L'environnement di HD è composto da 3elementi: l’HDFS, il Map-Reduce e i Commons. Con HDFS si intende HaDoop File System,ed è il file system distribuito che si occupa della gestione e archiviazione dei dati. Il Map-Reduce è il framework utilizzato per eseguire la programmazione distribuita. I Commonssono invece delle istruzioni di base utilizzate prevalentemente dall’HDFS.

4.1 HDFS Il file system di HD è studiato per essere leggero, la sua interfaccia minimale permettesolamente l’esecuzione di semplici comandi e manda in esecuzione gli algoritmi di map-reduce. L’HDFS riesce a gestire file che singolarmente possono arrivare anche ad unpetabyte di dimensione, a differenza dei comuni file system che generalmente non arrivanoa superare qualche centinaio di terabyte. Attraverso l’HDFS si riescono ad ottenereprestazioni in lettura e scrittura nettamente migliori rispetto a quelle di un file systemordinario. Questo è dato da due fattori. Il primo è che la dimensione dei blocchi (unitàminime di memorizzazione) che compongono i file sono più grandi rispetto ad un file systemnormale. Se in quelli ordinari i blocchi oscillano in una dimensione compresa fra i 512 Byte ei 4 KiloByte, in HDFS abbiamo dimensioni che vanno dai 64 MegaByte a 256 MegaByte.Utilizzando blocchi più grandi è stato dimostrato che si diminuiscono i tempi di lettura datoche si annullano i tempi di seek, così facendo abbiamo una situazione quanto più vicina aquella di una lettura sequenziale, che permette di ottenere prestazioni prossime a quellemassime ottenibili. Il secondo fattore è che in HDFS i blocchi sono molto più “leggeri” perchéprivi di metadati che rallentano la lettura. In HDFS vi è una gestione integrata dei guasti chepermette una notevole tolleranza all’indisposizione di un certo numero di nodi in rapportoalla rete. Questa resistenza del sistema è data indirettamente anche alla ridondanza dei dati,tipica di tutti i sistemi distribuiti e in particolar modo di HD. Per quanto riguarda la strutturadei nodi nell'architettura di HD, abbiamo un sistema master-slave. Il nodo master, oNameNode, ha come compito di gestire e conservare l’intera struttura del file system: lagestione delle cartelle, la posizione logica dei vari elementi e le regole di accesso ai file. Neinodi slave, chiamati DataNode, abbiamo solamente i dati, questi nodi infatti hanno il solocompito di memorizzare i dati all’interno di essi.

Page 64: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

4.2 Map-Reduce Il framework di map-reduce di HD prende forte ispirazione dalla controparte di Google.Tramite esso si eseguono le interrogazioni sulla base di dati. Il map-reduce utilizza deilinguaggi funzionali [Gian Marco Cialdi] prendendo come riferimento il Lisp, e da essoderivano le 2 funzioni fondanti del map-reduce: il mapcar e il reduce. Il primo applica unafunzione su tutti gli elementi di un insieme, mentre il secondo è un operatore diaggregazione che prende gli elementi di un insieme e li unisce per elaborare un altrorisultato, ma queste definizioni saranno più chiare in seguito. Le libreire di map-reduce sonoscritte in vari linguaggi [Francesco Maltese]: C++, C#, Erlang, Java, OClam, Perl, Python,Ruby e F#. Tutte le operazioni che si vanno a eseguire tramite il map-reduce sono composteda job, l’unità minima di calcolo, i quali sono formati sempre da un'operazione di map e unadi reduce. Per l’esecuzione dei job nel map-reduce si ha anche in questo caso unasuddivisione di lavoro nei nodi attraverso un sistema master-slave. Il master, o Job Tracker,gestisce l’intero ciclo di vita dei vari job: lo scheduling, l’indirizzamento nei nodi corretti, leinterazioni con i NameNode e la gestione dei feedback di esecuzione. Mentre nei nodi slave,o Task Tracker, viene solamente eseguito il codice inviatogli dal master. Tramite questosistema otteniamo un parallelismo Single Instruction Multiple Data, ovvero una singolaistruzione viene applicata a molti dati contemporaneamente. Nell’immagine n°1 si ha unaschematizzazione grafica dei vari passaggi e dell’esecuzione di un singolo job. L’esecuzionedi un job avviene su più nodi, gli ovali verdi, come già detto in precedenza, in modo daottenere il parallelismo delle istruzioni. Dai vari nodi vengono analizzati i blocchi e da essiestrapolate le informazioni, sotto forma di coppie key-value, e poi trasformate in altre coppiedall’operazione di map. Le nuove coppie sono restituite al framework che esegue delleoperazioni di Shuffle e Sort, raggruppando i vari valori secondo le chiavi ottenutedall’operazione di map, i risultati di questa operazione vengono inviati ai nodi incaricati dieseguire l’operazione di reduce. Quest'ultima operazione elabora ogni lista dati associata aduna chiave e ne ottiene un solo valore, così facendo il risultato dell’operazione di reducesarà una lista di coppie key-value. Quindi riassumendo i passaggi abbiamo l'analisi delleinformazioni contenute nei blocchi e tramite l’operazione di map riusciamo a trasformare lacoppia (K1,V1) in altre coppie (K2,V2) di formato diverso. Tramite l’operazione di shuffle esort si ordinano le informazioni per ottenere elementi (K2, list{V2}) dai quali l’operazione direduce elabora le liste di valori associati alle chiavi e ottiene un singolo valore e diconseguenza coppie (K3,V3).

Page 65: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Immagine n°1

Dato che, come detto inizialmente, tutti i dati in HDFS sono salvati in formato raw senzaalcun metadato, è indispensabile che il framework riesca ugualmente a leggere e poiriscrivere i dati. Per fare ciò sono stati resi necessari degli standard, implementati a livelloapplicativo, di lettura, scrittura e confronto. Prendendo ad esempio il Java, questi standard sitraducono nell’implementazione delle interfacce Writable e Comparable: la prima si occupadi come avvengono le letture e scritture sull’HDFS, mentre la seconda offre un metodo dicomparazione degli elementi letti. Per eseguire le letture però è necessario un ulterioreelemento dell’HDFS, ovvero l’Input Format. Esso svolge due funzioni importanti: la prima èquella di split, ovvero la suddivisione dei blocchi in varie parti, ognuna delle quali è ungruppo di record; la seconda funzione è il Record Reader, esso converte i gruppi di record,generati dallo split, nelle coppie key-value necessarie al map-reduce. Questa che segue(immagine n°2) è la schematizzazione del trattamento completo di un dato, compresa laparte di map-reduce:

Immagine n°2

Page 66: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Per capire meglio il funzionamento di un job questo che segue invece è un esempio di unalgoritmo di map-reduce molto basilare, il Word Count: partendo da un testo iniziale (input),esso conta le parole all’interno, restituendo la lista delle parole contenute nel testo e quanteripetizioni presentano.

Immagine n°3

Gli algoritmi di map-reduce tuttavia non sono composti da un singolo job, infatti esso effettuaoperazioni e trasformazioni troppo elementari per eseguire algoritmi più complicati. Ingenere, gli algoritmi più complessi vengono rappresentati tramite l’utilizzo di un grafoorientato privo di cicli, nel quale i nodi rappresentano ogni singolo job. Per la gestione delleesecuzioni dei singoli job è utilizzata una classe chiamata Driver, che ha il compito di fareseguire i job nell’ordine corretto. In questa fase abbiamo un parallelismo di tipo MultipleInstructions Multiple Data, ovvero si applicano più operazioni diverse su più daticontemporaneamente.

5 Applicazioni Oggi stiamo vivendo una vera e propria rivoluzione a livello tecnologico, l’utilizzo dei BigData ha reso possibile una crescita esponenziale in moltissimi settori. La capacità dirompere le barriere prestazionali grazie alla scalabilità orizzontale - e, quindi, di permettereuna gestione efficiente e veloce di enormi quantità di dati - ha attirato molti “curiosi” da varisettori. Ad oggi i Big Data sono utilizzati prevalentemente da aziende, del settore informaticoe non, per aumentare la propria competitività. Lo sfruttamente dei Big Data per la solafunzione di un ritorno economico è una visione ampiamente condivisa, tanto che fra le V checaratterizzano un sistema vi è anche quella di Valore. Tutte le strutture informaticheprovenienti da realtà più grandi utilizzano i Big Data ormai da anni e senza di essi le attualistrategie di marketing non sarebbero possibili. Ma i Big Data sono solo uno strumentoeconomico? Nel 2008 Chris Anderson pubblicò, sulla rivista Wired (di cui all’epoca eradirettore), un articolo in cui proclamava la morte del metodo scientifico data dalla rivoluzioneche i Big Data avrebbero scatenato nei metodi di ricerca [8]. Con il passare degli anni, la

Page 67: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

visione di Anderson si è avverata, ma solo in modo parziale. Ad oggi l’utilizzo di talitecnologie è prevalentemente ristretto a campi informatici o aziendali, ma non è semprecosì. Ci sono ambiti, come la ricerca scientifica, e in particolare la medicina, che stannousando i Big Data e che sono come finestre sul futuro, perché mostrano come talitecnologie, se usate negli ambiti giusti, possano portare al progresso.

5.1 Medicina L’ambito medico è quello che senz’ombra di dubbio riesce a rendere concreto e percepibilelo sviluppo, dal punto di vista tecnologico, che stiamo avendo negli ultimi anni. Quello dellasanità è infatti un dei campi dove l’implementazione dei Big Data ha potenzialitàstupefacenti. Una delle applicazioni prossime alla realizzazione è la gestione delle cartellecliniche attraverso il progetto Google Deepmind Health, tale strumento aiuterebbe ad avereun efficientissimo sistema di catalogazione delle cartelle cliniche, non solo perl’archiviazione, ma anche per avere uno strumento che le metta a confronto in modo dapoter ricostruire dei possibili pattern nella vita medica delle persone. Oltre alla capacità dimemorizzare tantissimi dati i Big Data hanno la caratteristica di analizzare una grande moledi dati avendo risultati eccezionali. Questo ha reso possibile soluzioni specifiche in ambitomedico che aiutano la diagnosi dei pazienti, una di queste è una applicazione basata su IBMWatson la quale riesce a identificare il percorso di cura migliore per i vari tipi di tumore,questa analisi è basata sui risultati delle varie analisi e lo storico degli eventi che potrebberoaver influenzato la salute del paziente. Sempre IBM ha lanciato un altro algoritmo, il MedicalSieve. Esso viene utilizzato in radiologia e cardiologia per eseguire delle vere e proprieanalisi mediche, questo strumento verrà affiancato al medico per velocizzare le diagnosi piùsemplici.

5.2 Astronomia L’astronomia è uno dei tanti casi che dimostra come i Big Data offrano un modo pereffettuare nuove scoperte scientifiche. Ci sono aree come l’astrofisica in cui gli strumenti dimisurazione sono giunti al loro limite fisico, sia per quanto riguarda la precisione che perl’ampiezza delle possibili misurazioni. Un esempio sono i rilevatori di lunghezza d’onda, essiriescono a effettuare misurazioni con una precisione prossima al 100% su tutte le lunghezzed’onda. In questa situazione è difficile arrivare a nuove scoperte: la limitazione non sta piùnelle tecnologie a nostra disposizione, ma nei metodi di ricerca stessi. In scenari comequesti, è facilmente dimostrabile quanto forte sia l’ impatto dato dall’utilizzo dei Big Data.Infatti essi, oltre a dare la possibilità di gestire tantissimi dati, permettono di avere “unulteriore punto di vista”. È stato dimostrato che, obbligare le macchine a emulare iragionamenti umani, anziché lasciare che esse trovino il loro modo di ottenere i risultati, incerti ambiti, sia il modo migliore per giungere a nuove conclusioni. In genere, l’essere umanodifficilmente riesce a immaginare modelli che comprendono l’utilizzo di più di tre parametri:questo ovviamente porta a una limitazione nell’individuazione di correlazioni fra i dati.Tramite l’implementazione di intelligenze artificiali è possibile superare tale limite. Inastronomia, per calcolare la distanza che ci separa con altre galassie, si utilizzano datifotometrici multibanda: questi dati si ottengono attraverso l’utilizzo di filtri che coprono certelunghezza d'onda. L’ operazione genera oltre 330 possibili parametri, i quali possono essereutilizzati per il calcolo, invece che una scelta arbitraria praticata da un operatore umano:un’intelligenza artificiale è riuscita a determinare che i risultati più attendibili si ottengono

Page 68: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

solamente con l’utilizzo di almeno dieci parametri.

6 Aspetti Etici Senza ombra di dubbio i Big Data e le AI sono due invenzioni che rivoluzionerannoradicalmente la nostra vita. Oggi abbiamo solamente un assaggio di ciò che, insieme e infuturo, potranno fare: lo sviluppo di queste di queste tecnologie procede inarrestabile e, vistele loro enormi potenzialità, il loro sviluppo è sostenuto e finanziato da chiunque. Ecco perchéci troviamo davanti a strumenti che cambieranno per sempre il nostro modo di vivere. Inquesta sede sono stati proposti degli esempi di come l’unione di queste due tecnologierappresenti una rivoluzione assoluta, non solo in ambito prettamente informatico, ma in tuttele discipline. Purtroppo, però, i Big Data e le AI rimangono comunque uno strumento, ecome tale, possono essere utilizzati a fin di bene o meno: come ci insegna la storia, “le cosepeggiori sono sempre state fatte con le migliori intenzioni”6.

6.1 Edward Snowden Se uno Stato avesse intenzione di attuare un piano di sorveglianza su tutta la popolazione, iBig Data sarebbero lo strumento perfetto per immagazzinare e tenere sotto controllo il flussocostante di dati derivante dalle intercettazioni di vario genere. Azioni di questo tiposarebbero facilmente accostate a Paesi come la Cina o altri di stampo dittatoriale, nessunoprobabilmente penserebbe agli Stati Uniti. Edward Snowden nacque il 21 giugno del 1983,crebbe in un contesto socio-familiare conservatore che lo spinse ad arruolarsi nel 2004 nelleforze speciali americane. Il suo obiettivo era quello di andare a combattere in Iraq, ma uninfortunio in addestramento gli provocò la rottura di entrambe le gambe, ponendo fine allasua carriera militare sul nascere. La “morte” da militare segnò la nascita di Snowden sottospoglie di informatico. Dopo il suo congedo, iniziò ad occuparsi di sicurezza per conto dellaNational Security Agency (NSA) per l’università del Maryland, in questo periodo però si fecenotare per le sue doti da informatico e venne assunto dalla CIA. Snowden si era sempredimostrato un genio, a dimostrazione di ciò al test del quoziente intellettivo totalizzò per bendue volte un punteggio di 145. La peculiarità del suo genio stava anche nel fatto che eglinon terminò mai gli studi e gran parte delle sue conoscenze derivavano da un percorso daautodidatta. Nel 2007 ottenne un incarico a Ginevra, nonostante fosse sempre statoconvinto del buon operato del proprio Paese: Snowden iniziò ad assistere e a prendere attoa pratiche scorrette e in lui nacquero i primi dubbi riguardanti le azioni della sua Nazione.Lasciò la CIA nel 2009 e iniziò a lavorare per la Dell, la quale lo assegnò ad una struttura delNSA in Giappone. Dopo questo impiego tornò negli Stati Uniti per il suo ultimo impiego allasocietà di consulenza alla difesa Booz Allen Hamilton: vi lavorò per soli 3 mesi. Il 20 maggio2013 Snowden volò ad Hong Kong per incontrarsi con tre giornalisti: Glenn Greenwald,Laura Poitras, e Ewen MacAskill. Snowden consegnò loro migliaia di documenti top secretche provavano il fatto che gli Stati Uniti intercettassero pesantemente i propri cittadini, anchese non direttamente coinvolti in alcun crimine. Il documento più importante condiviso daSnowden è una sentenza della United States Foreign Intelligence Surveillance Court(chiamata anche corte FISA). La FISA è una corte interna che aveva la possibilità diemettere mandati di intercettazione all’insaputa dell’indagato, dato che le sue sentenzerimanevano segrete. Queste sentenze permettevano di aggirare la Costituzione ed emettere

6“le cose peggiori sono sempre state fatte con le migliori intenzioni” (Oscar Wilde)

Page 69: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

mandati anche senza motivi apparenti. Snowden venne accusato dagli Stati Uniti di averrubato proprietà del governo, violando l’Espionage Act, e, per questo, gli fu revocato ilpassaporto. Ciò accadde mentre si trovava in Russia, dove vive tutt'oggi come rifugiatopolitico. Questa storia ci mostra di come quello che sembra impensabile si dimostri nellapratica l’opposto: la Nazione che appare al mondo come portabandiera della democrazia,attua politiche di intercettazione e controllo sulla propria popolazione e non solo. Questopiano di sorveglianza nacque con l’intento di evitare minacce terroristiche simili a quelledell’11 settembre, ma, come è evidente che sia, il piano è degenerato in un controlloindiscriminato.

6.2 Definire confini marcati Quello di Snowden è senz’altro il caso più celebre di come la tecnologia possa essereutilizzata in maniera sbagliata, giustificandola con motivi futili. Il nostro è un periodo storicoparticolare, in cui abbiamo un enorme sviluppo nel campo tecnologico, il quale ha unfortissimo impatto sulla società, e una legislazione che non si adatta a tali cambiamenti.Questa discrepanza - fra ciò che è consentito e ciò che dovrebbe essere consentito - generadelle opportunità là dove non dovrebbero esserci. I principi etici e morali non sono condivisida tutti nel solito modo: lasciare alla soggettività delle persone questioni così sensibili puòportare alla creazione di situazioni fortemente negative e sbagliate. Questa situazione nonpuò altro che creare numerose problematiche, le quali, con il tempo, potrebbero esserepercepite come normali e non essere mai trattate. Colossi come Google attuano politiche diprofilazione dei propri utenti per creare sistemi inserzionistici più efficienti e, di conseguenza,più redditizi: spesso queste aziende sfruttano una legislazione non precisa per poter carpireogni possibile informazione dai propri utenti, al fine di aumentare la precisione dellaprofilazione. Data la lentezza da parte delle istituzioni nel fronteggiare situazioni simili, leaziende cercano di spostare sempre più lontano il limite di ciò che è accettabile: un esempioè il lancio, in questi ultimi anni, di svariati assistenti vocali che sono entrati nella vita di tutti igiorni e ormai risultano del tutto comuni. Questa loro accettazione, senza particolareresistenza, ha permesso che i microfoni di smartphone o qualsiasi dispositivo con unassistente incorporato rimanessero sempre accesi, diventando così orecchie sempre inascolto. Per quanto l’utilizzo scorretto dei Big Data e AI possa essere pericoloso,l’implementazione e lo sviluppo di queste due tecnologie non deve essere fermato: ivantaggi che si possono ottenere dal loro utilizzo sono enormi, possono avere un impattoincredibilmente positivo nella vita di tutti. In questa sede, sono stati presentati alcuni esempiche danno un’idea di quello che potrebbe essere il futuro. Allo stesso tempo, però, non ètollerabile l’indifferenza verso l’utilizzo eticamente sbagliato: il momento di agire è ora, non èpossibile aspettare ulteriormente. La priorità è quella di definire dei limiti netti di ciò che èlecito o meno attraverso leggi chiare, definite e quanto più condivise fra le nazioni.

Sitografia1. Big Data e Intelligenza artificiale: che futuro ci aspetta? 2. The End of Theory: The Data Deluge Makes the Scientific Method Obsolete 3. Big Data: che cosa sono e perché sono importanti 4. cosa sono, come utilizzarli - Big Data 4Innovation

Page 70: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

5. How Are Big Data and Artificial Intelligence Related? 6. Post precedente Big Data e intelligenza artificiale rivoluzioneranno la sanità 7. 1-NoSQL Databases 8. Hadoop: il sistema più utilizzato per gestire i Big Data 9. 3 Hadoop (Italiano) 10. I big data snobbano i modelli scientifici. Dalla tesi Chris Anderson 11. Datagate, cos'è e com'è cominciato 12. NSA collecting phone records of millions of Verizon customers daily 13. Verizon forced to hand over telephone data – full court ruling 14. Edward Snowden - Wikipedia 15. Google: un anno di ricerche 16. CAP Theorem

17. What is the CAP Theorem? 18. Teorema CAP - Wikipedia

Approfondimenti● Niccolò Maestripieri - Artificial Intelligence: state of art and beyonds● Gian Marco Cialdi - I linguaggi per l'intelligenza artificiale: la programmazione funzionale● Francesco Maltese - l linguaggi di programmazione delle moderne AI

Page 71: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Reti Neurali Artificiali

Gioele Zerini

AbstractNell’ambito delle intelligenze artificiali ricoprono un ruolo fondamentale le reti neuraliartificiali, poiché consentono di risolvere problemi complessi per la mente umana.L’obiettivo di questo studio è analizzare le artificial neural networks, dall’origine dei primineuroni artificiali, con i loro riferimenti biologici, alle più moderne reti neurali ricorrenti; neverrà esaminata la struttura e i fondamenti matematici, mostrando anche i principali algoritmidi apprendimento che rendono questo strumento veramente efficace e utile.Approfondiremo le principali caratteristiche e tipologie, osservando i vantaggi che le retineurali comportano, ma anche i loro difetti e limiti.Fra le applicazioni pratiche che utilizzano le reti neurali artificiali vi sono: il riconoscimentofacciale, di immagini e vocale, i veicoli a guida autonoma e gli assistenti vocali.Un esempio pratico di artificial neural network realizzata tramite il linguaggio diprogrammazione Python permetterà di individuare il valore corretto in base alla sequenza didati fornita in input.

1. IntroduzioneLe reti neurali sono una colonna portante del machine learning, ovvero quella brancadell’intelligenza artificiale che si occupa di creare sistemi che apprendono e migliorano leloro performance in base ai dati utilizzati.In particolare una rete neurale è un modello matematico, composto da neuroni artificiali, cheemula il funzionamento del cervello umano e viene utilizzata per risolvere essenzialmentetre tipi di problemi di artificial intelligence, ovvero:

● Classificazione, il cui obiettivo è quello di individuare la classe di appartenenza deidati in input, per esempio si possiede un insieme di immagini di cani e si utilizzanoper riconoscere cani in altre foto;

● Regressione, in cui si cerca di trovare una relazione tra le variabili disponibili perprevedere un risultato finale, per esempio si ha lo storico del valore di un’importanteazienda in borsa e si utilizza per prevedere il suo valore futuro;

● Clustering, è simile al problema della classificazione ma consente di raggruppare idati di cui non conosciamo la classe di appartenenza all’interno di gruppi, detticluster7. All’interno dei cluster troveremo quindi quei dati che hanno caratteristichesimili.[1]

Solitamente una rete neurale artificiale è un sistema adattivo, ovvero è capace di modificarela sua struttura in base alle informazioni esterne o interne che attraversano la rete durante lafase di apprendimento e di backpropagation, in modo da fornire risultati man mano semprepiù corretti.

7 J. Kahl, “Machine Learning”, I tre principali tipi di Machine Learning: Apprendimento Supervisionato, Non Supervisionato e per Rinforzo

Page 72: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

2. Il modello biologico delle reti neuraliLe reti neurali artificiali hanno come modello di riferimento quelle biologiche, le quali cipermettono di comprendere l’ambiente e di ottenere risposte calibrate alle esigenze che sipresentano, per esempio facendo calcoli o riconoscendo suoni, volti o immagini.

Le reti neurali biologiche sono composte da un insieme di cellule nervose interconnesse traloro, dette neuroni, formati da:

● i somi neurali, ossia i corpidei neuroni che ricevono eprocessano le informazioni;

● gli assoni, cherappresentano la via dicomunicazione in uscita daun neurone;

● i dendriti, che rappresentanola via di comunicazione iningresso;

● le sinapsi, che rappresentano i punti terminali delle cellule nervose, sia in ingressoche in uscita e, a seconda dell’azione esercitata dai neuroni, hanno una funzioneeccitatoria (facilitando la trasmissione dell’impulso) o inibitoria.[2]

Ogni volta che il cervello riceve uno stimolo sensoriale, un gruppo di neuroni riceve unsegnale, chiamato potenziale di azione, che, se abbastanza forte, viene propagato aineuroni vicini tramite dei canali detti sinapsi, seguendo un processo che si ripete a cascatafino a quando il segnale non si esaurisce.Successivamente i neuroni che si attivano tra di loro stabiliscono una connessionecomponendo le reti neurali, cioè la sede della nostra conoscenza.Inoltre la configurazione sinaptica presente in ogni rete neurale biologica è dinamica poichéil numero di sinapsi può aumentare o diminuire a seconda degli stimoli ricevuti dalla rete,rendendo queste reti più efficienti.

3. StoriaIl primo modello teorico di un neurone artificiale fu presentato nel 1943, in piena secondaguerra mondiale, ad opera del neurofisiologo McCulloch e del matematico Pitts.Esso rappresenta un apparato in grado di operare solo con funzioni booleane elementari edi ricevere n dati in input per fornire un solo dato in output.Nel 1949, lo psicologo Hebb ipotizzò la possibilità di istruire le macchine con unapprendimento che emuli quello alla base dell’intelligenza umana.Nel 1958 venne invece proposta, dallo psicologo Frank Rosenblatt, la prima vera reteneurale: Perceptron8, ovvero il percettrone. Essa rappresenta il modello più semplice di reteneurale, in quanto possiede uno strato di nodi di input e un nodo di output.Questa prima rete neurale era capace di apprendere e adottava il modello feedforward per

8 “Reti Neurali”, Reti neurali, cosa sono? - Applicazioni, limiti ed evoluzione

Page 73: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

la propagazione dei segnali. Nonostante ciò il suo campo di applicazioni rimase limitato, inquanto era capace solo di riconoscere alcune forme classificandole in due gruppi separati enon poteva eseguire operazioni come lo XOR.L'opera di Rosenblatt stimolò studi e ricerche che durarono per un decennio e portarono alPerceptron multistrato (MLP), in cui venne aggiunto uno strato intermedio, detto hidden, nelquale avviene l’elaborazione delle informazioni provenienti dallo stato di input e da qui sonoinviate al layer di output.Questo lavoro venne ripreso nel 1986 da Rumelhart, Hinton e Williams, che elaboraronol’Error Back-Propagation, tutt’ora utilizzato, che permette di perfezionare l’apprendimento diuna rete neurale tramite vari step.Negli anni ‘90, con il Perceptron multistrato e l’Error Back-Propagation, il machine learningha trovato sempre più spazio nelle applicazioni pratiche dell’intelligenza artificiale, fino adarrivare allacostruzione di reti neurali ricorrenti, che ne sono un’evoluzione.[2]

4. Funzionamento e apprendimento Una rete neurale artificiale è composta da diversi nodi, che rappresentano i neuroni delcervello umano, disposti in una serie di layer (strati), dove ogni risultato in uscita da unostrato fa da input allo strato successivo.

Le tre tipologie di strati che compongono una rete neurale sono:● il layer di input, comprende i nodi

incaricati di tradurre il segnale in inputin un dato che la rete sia in grado dicomprendere;

● uno o più hidden layer, in essi avvienel’elaborazione vera e propria dei dati diinput, al fine di produrre un outputspecifico;

● il layer di output, in cui ogni neuronecorrisponde a una delle possibilirisposte che la rete può fornire.

La maggior parte delle reti neurali è completamente connessa, ovvero ogni unitàappartenente agli strati nascosti è collegata a ogni nodo del layer precedente e di quellosuccessivo.Questi collegamenti possiedono un valore numerico chiamato peso, che è una misura diquanto è importante la relazione che intercorre fra due particolari neuroni.Questo valore può essere positivo, se un nodo attiva quello successivo, o negativo se loinibisce; maggiore è il peso di un collegamento, maggiore è l’influenza che un’unità ha suun’altra.

Le informazioni vengono immesse nella rete tramite le unità di input, che attivano gli strati di

Page 74: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

unità nascoste e attraverso questi arrivano alle unità di output come risposta della rete allostimolo ricevuto.In questo processo chiamato feedforwarding, ogni unità riceve degli input dai nodi alla suasinistra e li moltiplica per i pesi delle connessioni lungo cui viaggiano; a questo valoresomma poi il bias9, ovvero un valoresoglia che determina se il nodo deveattivarsi o meno. Il risultato viene poipassato alla funzione di attivazioneche restituisce in uscita una valorecompreso tra 0 e 1. È d’uso adottarediverse funzioni di attivazione, aseconda del ruolo che il neurone ela rete neurale sono destinati asvolgere. Sono esempi di funzionedi attivazione frequentementeutilizzate: la sigmoide, il gradino, latangente iperbolica o la rampa.

Affinché una rete neurale apprenda, deve essere coinvolto un elemento di feedback chefaccia capire alla rete se i risultati forniti in output siano corretti o meno. Ciò viene realizzatomediante un processo chiamato backpropagation10, che comporta il confronto dell'outputprodotto da una rete con l'output che avrebbe dovuto produrre. Per minimizzare questadifferenza l’algoritmo di backpropagation modifica i pesi delle connessioni tra le unità nellarete e i bias associati ad ogni neurone a ritroso (dallo strato di output a quello di input). La backpropagation fa sì che la rete apprenda col tempo; riduce la differenza tra l'outputeffettivo e quello previsto fino al punto in cui i due dati coincidono esattamente, quindi la retecapisce le cose esattamente come dovrebbe. Dal punto di vista matematico questoprocedimento si traduce nel trovare il minimo di una funzione, la funzione di costo,modificando i valori dei pesi e dei bias. La ricerca del minimo avviene tramite lo studio delgradiente della funzione.[7][8]

L’algoritmo più utilizzato per minimizzare la funzione di costo è il gradient descent (discesadel gradiente), in cui il termine gradiente indica un calcolo numerico che regola i parametri diuna rete in modo tale da minimizzare l’errore in uscita. L’algoritmo ha diverse versioni aseconda del numero di campioni che viene utilizzato ad ogni iterazione:

● batch, i dati disponibili vengono inseriti tutti contemporaneamente. Questa tipologia èsoggetta ad un alto rischio di rimanere bloccata, poiché il gradiente viene calcolatoutilizzando tutti i campioni e le variazioni tendono a diventare minime;

● stocastico, ad ogni iterazione viene introdotto un singolo dato casuale che riduce lapossibilità per la rete di rimanere bloccata. Il problema principale è la sua lentezza,perché necessita di molte iterazioni per raggiungere il risultato desiderato;

● mini-batch, ad ogni iterazione vengono introdotti N campioni casuali mantenendo ivantaggi della seconda tipologia, ma ottenendo un training più veloce.[3]

9 A. Provino, “Cos’è il bias di una rete neurale artificiale”, Cos’è il bias in una rete neurale artificiale | Towards Machine Learning. 10 C. WoodFord, “Neural networks”, How neural networks work - A simple introduction

Page 75: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

5. Algoritmi di apprendimentoAffinché le reti neurali artificiali riescano a lavorare correttamente per risolvere il problemache viene loro presentato, devono essere prima addestrate.Per quanto riguarda le reti neurali biologiche si suppone che, durante il processo diapprendimento, la struttura di collegamento tra i neuroni venga modificata in modo che certestimolazioni siano accettate solo da determinati neuroni. Lo stesso concetto vale per le retineurali artificiali dove l’apprendimento comporta la modifica dei pesi delle connessioni.Ad oggi gli algoritmi di Machine Learning utilizzati per addestrare le reti neurali si dividono inquattro categorie principali:

● Apprendimento supervisionato;● Apprendimento non supervisionato;● Apprendimento per rinforzo;● Apprendimento semi-supervisionato.

5.1. Apprendimento supervisionatoIn questa tipologia di apprendimento viene fornito alla rete un insieme di input ai qualicorrispondono determinati output noti, detto “training set”.Analizzandoli, la rete apprende il nesso che li unisce e, in tal modo, impara a generalizzare,ossia a calcolare nuove associazioni input-output corrette processando nuovi dati esterni altraining set. Man mano che la macchina elabora output, si procede a correggerla variando ipesi dei vari collegamenti per migliorarne le risposte, quindi aumentano i pesi chedeterminano gli output corretti e diminuiscono quelli che generano valori non conformiall’obiettivo.Il meccanismo di apprendimento supervisionato impiega l’Error Back-Propagation perautocorreggersi, ma l’esperienza dell’operatore che istruisce la rete risulta fondamentale, inquanto ha il compito di trovare un rapporto adeguato fra le dimensioni del training set,perché un numero eccessivo di dati potrebbe rendere difficile alla rete neurale imparare ageneralizzare e potrebbe aumentare i tempi di apprendimento. Un numero troppo basso d’altro canto non fornisce allarete i dati necessari per imparare a generalizzare e per fornire risultati corretti.[4]

5.2. Apprendimento non supervisionatoUna rete neurale ad apprendimento non supervisionato, riceve solo un insieme di variabili diinput e, successivamente, può procedere secondo due metodologie differenti.Una tecnica è il clustering, la rete neurale analizza i dati in input e crea dei cluster conl’obiettivo di raggruppare le informazioni ricevute in base a caratteristiche comuni. Al contrario dell’apprendimento supervisionato il risultato non è prestabilito e la rete deveprendere decisioni in modo autonomo in base alle somiglianze e alle differenze tra i vari dati.

Un’altra tecnica è l’associazione, in cui la rete collega tra loro gli input in base ad attributicomuni. Supponendo di avere delle foto di cani queste, al contrario della tecnica delclustering in cui verrebbero raggruppati in base alla loro categoria, verrebbero associate, peresempio, ad un guinzaglio.

Page 76: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Un esempio tipico di applicazione dell’apprendimento non supervisionato è nei chatbot11,ovvero quelle intelligenze artificiali che regolano le conversazioni virtuali, riconoscendo erimuovendo insulti, diffamazioni e commenti discriminatori.[5]

5.3. Apprendimento per rinforzoAl contrario dei due precedenti, nelle reti neurali che apprendono mediante l’algoritmo dirinforzo, non esiste un training set né parziale, né completo. Esse imparano esclusivamentedall’interazione con l’ambiente, generando dati con una strategia trial-and-error, cioèeseguendo una serie di prove all’interno di un ambiente di simulazione fino ad ottenere unrisultato corretto. La rete impara in modo autonomo delle strategie che le consentono diottenere il maggior numero di ricompense, ovvero feedback che le permettono di capire sela strategia adottata è corretta o meno.L’algoritmo utilizzato è il Q-learning, il quale deriva dalla funzione Q che calcola il beneficiodi un’azione realizzando delle tabelle in cui le righe contengono tutte le situazioni che sipossono verificare e le colonne riportano tutte le azioni possibili. Durante l’apprendimento lecelle vengono riempite da alcuni valori che rappresentano la ricompensa attesa.L’apprendimento per rinforzo viene prettamente utilizzato per addestrare la rete neurale allabase degli assistenti di parcheggio, in quanto deve autonomamente rilevare gli oggetti vicinialla vettura e individuare il modo ottimale di parcheggiare.[6]

5.4. Apprendimento semi-supervisionatoQuesta tipologia di apprendimento è un modello “ibrido” dove alla rete viene fornito un set didati incompleto, in quanto alcuni di questi input possiedono i rispettivi valori di output (comenell’apprendimento supervisionato), altri invece ne sono privi (come nell’apprendimento nonsupervisionato).Di solito questo approccio viene utilizzato per migliorare le previsioni fatte dalla rete sui datidi cui non conosce il rispettivo output e, normalmente, richiede l’intervento diretto di unesperto.Questo apprendimento è solitamente utilizzato nei problemi di classificazione e di clustering.

6. Applicazioni e proprietà

6.1. VantaggiRisolvere problemi con le reti neurali può essere vantaggioso quando sia richiesto:

● elevato parallelismo, si possono processare in tempi relativamente brevi grandi moli di dati e ottenere una buona tolleranza ai guasti;

● capacità di generalizzare, che, dopo la fase di apprendimento, consente di dedurre informazioni anche su nuovi dati;

● buona immunità al rumore, ossia possiedono la capacità di operare in modo corretto nonostante input imprecisi o incompleti, seppur con una riduzione delle prestazioni;

● evoluzione adattiva, una rete neurale, ben implementata, è in grado di auto

11 G. Torchiani, “Chatbot”, Chatbot: cosa sono e quali vantaggi portano alle aziende

Page 77: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

aggiornarsi in caso venga modificato l’ambiente da processare;● non possiedono restrizioni sulle variabili di input, in quanto le reti neurali risultano

molto più efficienti quando ricevono in ingresso dati di genere diverso.

6.2. LimitiLe reti neurali artificiali sono difficili da comprendere e analizzare a fondo; i limiti piùimportanti sono:

● funzionamento a black-box, la loro computazione non è analizzabile in modocompleto, ovvero, nonostante riescano a fornire output corretti, esse non permettonodi esaminare i singoli stadi di elaborazione che li determinano, di conseguenza non èpossibile spiegare come e perché tale risultato sia stato generato;

● necessitano di una fase di addestramento che, se il numero di dati da analizzare èelevato, richiede molto tempo. In realtà, in tale ambito sono stati fatti importantiprogressi, ed è possibile ipotizzare che in futuro il periodo di learning potrà ridursi;

● non esistono teoremi in grado di definire se una rete neurale è ottima o meno, la suariuscita dipende prettamente dall’esperienza del creatore.

6.3. Utilizzi e applicazioniLe reti neurali vengono solitamente utilizzate in ambiti dove non esistono modelli in grado di affrontare il problema.I casi di applicazione classici sono il riconoscimento dei caratteri, ovvero l’OCR12, di immagini, di voce e di riconoscimento facciale, ma vengono ampiamente utilizzate anche nelle analisi di Data mining13, ovvero il processo di estrazione di alcune informazioni da grandi quantità di dati.Le reti neurali, soprattutto negli ultimi anni, hanno acquistato molta importanza in campo medico, sia per quanto riguarda le diagnosi, inclusi i referti TAC e risonanze magnetiche, che nel campo della bioinformatica per la ricerca di pattern strutturali in proteine o acidi nucleici.Vengono utilizzate per effettuare previsioni o simulazioni, come le previsioni del meteo, consentono di effettuare delle analisi predittive, permettendo di individuare la probabilità di eventi futuri basandosi su dati storici (ad esempio la crescita futura del valore di un’azienda in borsa).L’applicazione più importante degli ultimi anni risiede negli assistenti vocali, come Alexa, Sirie l’assistente Google, presenti all’interno degli smartphone che ci consentono di svolgere molte operazioni semplicemente utilizzando dei comandi vocali.Sono presenti applicazioni di reti neurali nel campo della sicurezza informatica. L’esempio più importante risiede nella gestione di una banca con migliaia di transazioni con carte di credito che passano attraverso il computer ogni minuto. Ciò richiede un modo rapido e automatizzato per identificare le transazioni fraudolente. Abbastanza valori di input (come la validità del PIN, il numero di transazioni nell’ultimo periodo o la provenienza della carta) permettono ad una rete neurale di segnalare tutte le transazioni sospette, consentendo ad un operatore umano di indagare più a fondo.Negli ultimi anni Google ha fatto un uso crescente delle reti neurali per tradurre pagine in

12 F. Pacioni, “Riconoscimento ottico dei caratteri”, Riconoscimento ottico dei caratteri13 “Intelligenza artificiale: Data mining”, Data mining, cos’è?

Page 78: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

una determinata lingua, gli input della rete, in pagine in un’altra lingua, l’output; ha fornito il Google Brain, nome dato a un gruppo di ricerca che applica le tecniche neurali ad alcuni prodotti Google, compreso il suo motore di ricerca, che utilizza le artificial neural networks per adattare all’utente iconsigli visualizzati su YouTube, tramite modelli che apprendono grazie all’acquisizione di informazioni derivanti dalle interazioni di questo con l’applicazione.Tra gli utilizzi più recenti delle reti neurali spicca la guida autonoma sia sugli aeroplani sia sugli autoveicoli, in cui le reti acquisiscono informazioni dalla realtà del mezzo e dell’ambiente circostante tramite strumentazioni di rilevamento e determinano le risposte appropriate.[9]

7. Tipologie di reti neuraliNell’ambito delle intelligenze artificiali vengono utilizzare diverse reti neurali, le qualipossiedono caratteristiche e principi differenti.Ognuna di queste comporta dei vantaggi e degli svantaggi che le rendono più adatte adeterminate applicazioni piuttosto che altre.

7.1. Reti neurali feedforwardQuesto è il primo tipo di reti neurali artificiali ad essere stato creato e possono essere considerate le più comunemente utilizzate oggi. Sono così chiamate perché il flusso di informazioni attraverso la rete è unidirezionale (non ci sono loop) e vengono addestrare mediante il meccanismo di backpropagation descritto in precedenza. In generale l’uscita attuale dipende esclusivamente dall’ingresso attuale, quindi la rete non ha memoria di ingressi precedenti. Le reti neurali feedforward possono essere classificate in reti a singolo strato o reti a più strati, in base alla presenza di stati intermedi. Il Perceptron è formato solo da due strati di neuroni, senza alcun hidden layer, mentre il Perceptron multistrato presenta più strati nascosti che elaborano le informazioni. Trovano applicazione in aree che richiedono un apprendimento supervisionato e sono utilizzate in tecnologie come il riconoscimento facciale e la visione artificiale, oppure possono essere combinate per creare nuove tipologie di rete.

7.2. Reti neurali convoluzionaliUna rete neurale convoluzionale è un tipo di rete neurale artificiale feedforward ispirata allacorteccia visiva animale.

Page 79: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

La differenza principale tra questo tipo di rete e le reti feedforward è la presenza di unostrato convoluzionale, che costituisce la parte iniziale della rete e in cui si estraggono lecaratteristiche dell’immagine da elaborare. L’immagine viene suddivisa in quadrati emoltiplicata ad una matrice (detta filtro o kernel), ottenendo così la Feature map. Nello stratoconvoluzionale entrano in gioco i seguenti parametri:

● kernel size, rappresenta le dimensioni del filtro di convoluzione;● padding, aggiunge attorno all’immagine un contorno di 0 per evitare il restringimento

dell’immagine e la perdita di informazioni;● stride, rappresenta la velocità di traslazione del kernel sull’immagine;● numero di filtri, rappresentano la quantità di kernel che lo strato applica alla stessa

immagine in input.

Allo strato convoluzionale viene applicata una funzione di attivazione non lineare. Alla fine sipassa al Pooling, che riduce la dimensione della Feature map conservando le informazionipiù importanti. Grazie a questa fase otteniamo numerosi benefici:

● rappresentazioni di input più piccole e gestibili;● numero di parametri e calcoli nella rete ridotti;● rete immune alle distorsioni dell’immagine in input.

Una rete neurale convoluzionale è utilizzata principalmente per classificare le immagini edeseguire il riconoscimento di oggetti all’interno di scene, sia in campo medico (come ilrilevamento di tumori) sia nelle auto a guida autonoma.

7.3. Reti neurali ricorrenti

Page 80: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Una rete neurale ricorrente è una rete neurale artificiale in cui esistono cicli: i valori di uscitadi un layer di livello superiore (più vicino all’output) possonoessere utilizzati come input per un layer di livello inferiore(più vicino all’input); ogni nodo può anche ricevereinformazioni della simulazione precedente da se stesso o danodi dello stesso strato. Ciò le rende applicabili ad attivitàcome il riconoscimento della grafia o il riconoscimentovocale, tra cui: traduzioni, composizione di musica etrascrizioni da audio a testo.In base al numero di input e di output che gestiscono, le retineurali ricorrenti sono classificate come: uno a uno, uno amolti, molti ad uno o molti a molti.Il limite principale di questa tipologia di rete è il vanishing gradient in cui, a seconda dellafunzione di attivazione utilizzata, le informazioni si perdono rapidamente La tipologia di rete neurale ricorrente più diffusa è il neurone LSTM14 (Long-Short TermMemory), che cerca di combattere il problema del vanishing gradient introducendo una celladi memoria. Ogni neurone ha una cella di memoria e tre porte per salvaguardare leinformazioni consentendone o meno il flusso:

● input, determina la quantità di informazioni memorizzate nella cella;● output, determina quanti nodi dello strato successivo vengono a conoscenza dello

stato di questo nodo;● forget, contiene le informazioni non necessarie e che quindi devono essere

dimenticate.

7.4. AutoencoderUn autoencoder è una rete neurale il cui obiettivo è quello di codificarele informazioni automaticamente ignorando il rumore. La reteassomiglia ad una clessidra, con strati nascosti più piccoli rispetto ai layer di input e output ed è simmetrica rispetto agli strati intermediperché nella parte centro-sinistra della rete avviene la codifica dei dati,mentre nella parte centro-destra avviene la decodifica (i pesi di codificasono quindi gli stessi di decodifica).Gli autoencoder vengono applicati per risolvere molti problemi, dalriconoscimento facciale all’acquisizione del significato semantico delleparole.

7.5. Rete di Hopfield e macchina di Boltzmann Una rete di Hopfield è una rete neurale inventata da John Hopfieldnel 1982, in cui è presente un singolo strato che contiene uno o piùneuroni completamente connessi. Fornisce un modello che simulala memoria associativa umana ed ha una vasta gamma diapplicazioni nell’intelligenza artificiale: calcolo ottimizzato,riconoscimento di modelli e realizzazione di dispositivi ottici.Essa è un rete ciclica con connessioni di feedback dall’output

14 A. Mittal, “Understanding RNN and LSTM”, Understanding RNN and LSTM. What is Neural Network? | by Aditi Mittal | Medium

Page 81: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

all’input che riesce a trasformare un input contenente rumore in un output corretto.La macchina di Boltzmann è molto simile alla rete di Hopfield ma alcuni neuroni rimangono nascosti e si occupano dell’elaborazione dei dati. Alla fine dell’apprendimento alcuni nodi di input diventano nodi di output.

8. Implementazione con PythonLa rete neurale feedforward implementata tramite il linguaggio di programmazione Pythonconsente di individuare l’output corretto quando è fornita una nuova sequenza di dati. I pesidei collegamenti tra i nodi della rete sono inizialmente impostati casualmente e la reteapprende tramite 6 serie di dati (presenti nella tabella sottostante) di cui l’output è noto ecorrisponde al primo valore nella sezione di input. Successivamente, le forniremo due nuoveserie di dati che la rete non conosce (testing set) con lo scopo di verificare che essa abbiaimparato a generalizzare e a fornire il valore che ci aspettiamo.

TRAINING SET

INPUT OUTPUT

Allenamento 1 0 0 1 0

Allenamento 2 1 1 1 1

Allenamento 3 1 0 1 1

Allenamento 4 0 1 1 0

Allenamento 5 0 0 0 0

Allenamento 6 1 1 0 1

TESTING SET

INPUT OUTPUT

Test 1 0 1 0 ?

Test 2 1 0 0 ?

Per implementare la rete neurale è necessario creare la classe “NeuralNetwork” e utilizzarela libreria NumPy, che è una delle librerie più utilizzate in Python e consente di facilitare icalcoli tra matrici. All’interno della classe “NeuralNetwork” sono utilizzate le seguentifunzioni:

Page 82: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

● sigmoide, restituisce un valore compreso tra 0 e 1;● derivataSigmoide, corrisponde alla derivata della funzione sigmoide e consente di

regolare i pesi dei collegamenti in modo corretto;● addestramento, consente alla rete neurale di apprendere e regolare i propri pesi;● esecuzione, consente di fornire l’output corretto a partire dagli input del testing set.

Nella fase di addestramento, si procede seguendo 4 passi fondamentali:1. Determinare i pesi dei collegamenti in modo casuale;2. Calcolare il tasso di errore tramite la differenza tra l’output fornito dalla rete e l’output

previsto dal training set;3. Modificare i pesi dei collegamenti in base all’errore calcolato;4. Ripetere il processo per un numero arbitrario di volte (nel nostro caso 15000),

affinché la rete apprenda correttamente.

Trasformiamo poi il training set nella matrice a fianco tramite la funzione “T”(che traspone la matrice dalla posizione orizzontale a quella verticale) e loforniamo alla rete neurale per iniziare la fase di apprendimento.Dopodiché fornendo all’artificial neural network la prima sequenza di valori deltesting set come input, otteniamo un risultato pari a 0.44856823. Il valoreottenuto non è del tutto corretto perché si auspica di ottenere un output pari a0. Ciò non è possibile poiché la rete viene addestrata tramite un training setlimitato che non le consente di generalizzare in modo corretto.Al contrario, inserendo la seconda serie di valori del testing set come input della reteotteniamo come output il valore 0.99995842, un risultato molto vicino all’output chevolevamo ottenere (ovvero 1). In conclusione si può notare come la rete necessiti di un training set più ampio per impostarei pesi adeguati e imparare a generalizzare correttamente.

Programma Python per l’implementazione della rete neurale

9. ConclusioniLe reti neurali artificiali si sono affermate come uno strumento fondamentale all’internodell’intelligenza artificiale, perché ci consentono di far fronte a numerosi problemi.Nonostante questo, il loro sviluppo non è completo e, con l'aumento delle dimensioni dellereti neurali a un ritmo considerevole (raddoppiano ogni 2,4 anni), la loro potenza ciconsentirà di risolvere problemi sempre più complessi. Le reti neurali potrebbero, in futuro, consentire:

● robot in grado di vedere, sentire e prevedere il mondo che li circonda;● uso comune delle auto a guida autonoma;● composizione di musica;● comprensione dei dati compilati dal Progetto Genoma Umano15;● autodiagnosi di problemi medici.

Sitografia[1] I tre principali tipi di Machine Learning: Apprendimento Supervisionato, Non

15D. Sadava, “Le biotecnologie”, Il Progetto Genoma Umano

Page 83: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Supervisionato e per Rinforzo, ultima consultazione: 18/05/2021.Artificial neural network, ultima consultazione: 19/05/2021.Cos'è il Machine Learning (Reti Neurali e A.I.), ultima consultazione: 20/05/2021.Types of artificial neural networks, ultima consultazione: 20/05/2021Come funziona l’addestramento delle reti neurali, ultima consultazione: 22/05/2021. Machine learning | Reti neurali demistificate, ultima consultazione: 22/05/2021.Rete neurale artificiale, ultima consultazione: 23/05/2021. [2] Reti neurali, cosa sono?, ultima consultazione: 23/05/2021Reti neurali artificiali - Concetti base, ultima consultazione: 23/05/2021.Machine Learning e principio di funzionamento, ultima consultazione: 24/05/2021.Reti neurali, cosa sono e perché si usano nell’analisi dei dati, ultima consultazione: 24/05/2021.Artificial Neural Network (ANN), ultima consultazione: 24/05/2021.Artificial Intelligence - Neural Networks, ultima consultazione: 24/05/2021.Deep Learning: Come funzionano le reti neurali artificiali, ultima consultazione: 25/05/2021. Deep Learning svelato, ultima consultazione: 25/05/2021.[3] How neural networks work, ultima consultazione: 26/05/2021.Introduction to Neural Networks, Advantages and Applications, ultima consultazione: 27/05/2021.[4] Supervised learning: un piano formativo per le macchine, ultima consultazione: 27/05/2021.[5] Che cos’è l’unsupervised learning?, ultima consultazione: 27/05/2021.[6] Reinforcement learning: quando le macchine imparano a pensare, ultima consultazione: 27/05/2021.How does an Artificial Neural Network Work?, ultima consultazione: 28/05/2021.Introduzione Alle Reti Neurali 01: Cos'è una Rete Neurale?, ultima consultazione: 29/05/2021.[7] Introduzione Alle Reti Neurali 02: La Funzione di Costo, ultima consultazione: 29/05/2021.[8] Introduzione Alle Reti Neurali 03: Addestriamo la Rete, ultima consultazione: 29/05/2021.

6 Types of Artificial Neural Networks Currently Being Used in Machine Learning, ultima consultazione: 29/05/2021.Exploring the 3 types of artificial neural networks, ultima consultazione: 29/05/2021. 3 types of neural networks that AI uses, ultima consultazione 29/05/2021.The Neural Network Zoo, ultima consultazione: 30/05/2021.Neural Network Architectures & Deep Learning, ultima consultazione: 30/05/2021.A Comprehensive Guide to Types of Neural Networks, ultima consultazione: 30/05/2021.The 7 Types of Artificial Neural Networks ML Engineers Need to Know, ultima consultazione:30/05/2021.CNN vs. RNN vs. ANN – Analyzing 3 Types of Neural Networks in Deep Learning, ultima consultazione: 30/01/2021.[9] Neural networks: cosa consentono le reti neurali artificiali?, ultima consultazione: 31/05/2021.

Page 84: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

AI: una rete neurale con i LEGO e Raspberry PiJacopo Rinchi

AbstractMediante questa ricerca si esaminerà come riconoscere e classificare varie tipologie dimattoncini LEGO attraverso l’utilizzo di un RaspBerry PI con annesse componenti ed unaintelligenza artificiale.Questo sistema è stato implementato tramite la costruzione della macchina vera e propriacon 10.000 pezzi lego, un Raspberry Pi per controllare il tutto ed una intelligenza artificialesu un computer esterno per il riconoscimento dei pezzi data la limitatezza del Raspberry.Tutte queste parti formano la Universal LEGO Sorting Machine.

1 Introduzione al progetto della rete neurale con LEGO e Raspberry PiChi avrebbe mai immaginato che, con un apparente giocattolo usato soprattutto dai bambini,si potessero creare oggetti che vanno oltre delle semplici costruzioni.Un ragazzo in particolare si è distinto in questo campo. Il suo nome è Daniel West, uningegnere software e appassionato di intelligenze artificiali che, in due anni, è riuscito acreare un gigantesco smistatore di LEGO capace di identificare qualsiasi mattoncino che sipone al suo interno, per poi porlo in uno tra i 18 contenitori presenti.Ovviamente questa macchina non si limita a soli pezzi LEGO ma sfrutta anche l’aiuto di unRaspberry Pi ovvero un micro computer atto, insieme ad una fotocamera, a estrapolarel’immagine del pezzo sul nastro, rielaborarla ed inviarla ad un dispositivo di supporto esternodata la scarsità hardware del Raspberry.Ultima ma non per importanza è l'intelligenza artificiale atta a collegare le varie foto delsingolo pezzo in esame con uno tra i migliaia mattoncini LEGO presenti nel database.

2 Spiegazione Universal LEGO Sorting MachineAttraverso l’unione di tre principali componenti si da vita a quella che è conosciuta come laUniversal LEGO Sorting Machine

Page 85: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

2.1 Com’è costruita la macchinaLa macchina è stata realizzata con un totale di 10.000 pezzi LEGO e, per l’operazione dismistamento, è stato utilizzato un Raspberry Pi 3 B+.In questo sistema sono ovviamente presenti altri pezzi oltre ad i mattoncini ed il Raspberryovvero sei motori LEGO e nove servomotori per la corretta suddivisione nell’ appositocontenitore.Per lo scansionamento dei mattoncini viene utilizzata una fotocamera Pi Camera V2.

2.2 Funzionamento parti LEGOPer il corretto funzionamento della macchina Daniel aveva bisogno che, sul nastro doveveniva portato il pezzo alla fotocamera,ci fosse posizionato un singolo pezzoLEGO alla volta.Questo problema viene risoltoattraverso due cinghie atte a spingerelentamente i pezzi in una placcavibrante, questa utilizza un motoreLEGO estremamente veloce che,scuotendo i mattoncini, riduce lapossibilità di avere pezzi sovrapposti alraggiungimento dello scanner.

2.3 Funzionamento parti Raspberry/IAParlando della parte Raspberry per la scansione delle immagini viene utilizzata unafotocamera Pi Camera V2. Una volta che vengono scattate varie immagini al pezzo sieffettua un processo di rielaborazione, successivamente si invia il pacchetto di immagini adun PC dove è presente una intelligenza artificiale che riconosce il pezzo ed invia un segnaleal Raspberry indicandogli in quale contenitore dovrà essere spostato il pezzo.La nostra IA riuscirà a distinguere ogni mattoncino basandosi sulle foto mandategli in inputper produrre in output il numero identificativo del mattoncino riconosciuto.Ovviamente perché riesca a fare ciò servano dei dati dove ad ogni pezzo viene assegnato ilproprio numero identificativo.Dato che la macchina doveva riconoscere tutti i pezzi LEGO non si poteva etichettare ognipezzo manualmente e quindi, al fine di fornire alla rete neurale abbastanza connessioni perriconoscere accuratamente ogni pezzo, si va ad incappare in varie problematiche cheverranno analizzate più avanti.

2.4 Spiegazione della rete neurale utilizzataLa rete neurale utilizzata è una CNN ovvero di tipo convoluzionale. Queste reti sono unodegli algoritmi più comuni per il deep learning, si ispirano al modello della corteccia visivaanimale dove i singoli neuroni in questa parte del cervello rispondo solamente a stimolirelativi ad una zona ristretta del campo di osservazione detto campo recettivo.Una CNN apprende direttamente dai dati fornitogli ed utilizza i pattern per classificare le

Page 86: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

immagini.In una rete neurale convoluzionale esistono diversi tipi di layer ed ognuno di questi ha unapropria funzione. Alcuni di questi hanno dei parametri allenabili mentre altri layerimplementano semplicemente una funzione fissata. Esistono svariate tipologie di layer, ma ipiù utilizzati ed indispensabili sono quelli che verranno trattati in questo articolo.

2.4.1 Livello di inputIl primo layer è quello che riceve l’immagine e la ridimensiona prima di passarla ai layersuccessivi. Essa è rappresentata come un insieme di pixel.

2.4.2 Livello convoluzionaleQuesto è il livello principale della rete, il suo obiettivo è individuare le caratteristichecontraddistintive dell’immagine in esame come ad esempio curve, angoli, circonferenze oquadrati. Ne sono presenti diversi ed ognuno di questi è responsabile della ricerca dellecaratteristiche elencate sopra. Più livelli convolutivi sono presenti più si alza la complessitàdelle caratteristiche che possano essere ricercate.

2.4.3 Livello ReLUL’acronimo sta per Rectified Linear Unit Layer. E’ uno strato posto subito dopo laConvoluzione. In questo strato si andrà a sostituire ogni valore negativo ottenuto negli stratiprecedenti con uno zero, così facendo si andrà a mantenere una stabilità matematica dellaCNN.

2.4.4 Livello PoolIn questo strato si va a prendere immagini di grandi dimensioni e si contraggonopreservandone le informazioni fondamentali. Il pooling spaziale più famoso è il max-poolinge permette di identificare se la caratteristica di studio è presente nel livello precedente.Inoltre in questo livello, attraverso l’operazione precedente, si va a ridurre il numero diparametri sulla rete e,di conseguenza, si va a ottimizzare la computazione.La rete, in aggiunta, sarà invariante alle piccole trasformazioni quali distorsioni o traslazionirispetto all’immagine iniziale.

2.4.5 Livello FCL’acronimo sta per Fully Connected. In questo strato, posto alla fine della rete, si va aconnettere tutti i neuroni del livello precedente e, attraverso la traduzione in categorie delleinformazioni analizzate nei livelli precedenti, andrà a dare una risposta finale che potràvariare tra le varie categorie analizzate.

Page 87: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

3 Spiegazione processo di riconoscimento

3.1 Eliminazione delle variabili non necessariePrima di iniziare il processo di riconoscimento devono essere effettuati dei passaggi permigliorarne l’efficacia. Si deve anzitutto accertarsi che il sistema di riconoscimento, ovvero lafotocamera, non subisca vibrazioni che possano andare a modificare o a sfocare le fotoeffettuate ai singoli pezzi. Altra variabile da eliminare erano le ombre che potevano essereerroneamente riconosciute come oggetti dall’ Object Recognizer, per fare ciò si è dovutoconcentrare una grande quantità di luce nel vano dove passa il mattoncino così da risolvereil problema precedente. Attraverso questa azione si va anche a sviluppare un fenomeno chepuò essere usato a proprio favore, la grande luminosità nella fotocamera fa sì che siapossibile utilizzare una velocità dell'otturatore molto elevata catturando così immaginiperfettamente nitide dei dettagli anche quando il pezzo si muove rapidamente lungo il nastrotrasportatore.

3.2 Riconoscimento del pezzoPer riconoscere un oggetto esistono già delle CNN che potevano effettuare questo lavorocome YOLO o Faster R-CNN, il problema è che, essendo il Raspberry uno strumento moltolimitato, esso non riuscirebbe a far girare queste reti neurali ad una frequenza tale dacatturare i fotogrammi in tempo e nella quantità necessaria. Si ricade nel problema dellafrequenza anche quando si pensa se sia possibile effettuare uno streaming video dellafotocamera, ovvero si hanno limitazioni di latenza e larghezza banda non indifferenti data lavelocità di trasferimento di dati necessaria.Per ovviare a queste problematiche si vanno ad utilizzare delle tecniche di visione artificialeche migliorano il riconoscimento e l’estrazione del pezzo da tutto il resto dell’immagine.

1. Innanzitutto si effettua un procedimento preliminareper agevolare le successive attività: in questaoperazione il colore del nastro è fondamentale datoche, anche se si muove, risulterà immobile dato ilcolore uniforme e non andrà ad intaccare i colori dialtri pezzi lego data la sua particolare colorazione rosapallido. In aggiunta si andrà ad aumentare lasaturazione dell’immagine per permettere all’algoritmodi sottrazione dello sfondo di distinguere il colore delpezzo dal colore chiaro dello sfondo.

Page 88: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

2. Ora si andrà ad utilizzare un algoritmo per sottrarre losfondo chiamato MOG2 che verrà trattato piùapprofonditamente più avanti. Successivamente sicercherà di eliminare anche più rumore possibiledall’immagine.

3. Infine si andrà a cercare i contorni del pezzoattraverso la funzione findContours() della libreriaOpenCV così da delimitare il fotogramma ad unaprecisa immagine del pezzo.

3.3 Algoritmo di sottrazione dello sfondo MOG2L’algoritmo MOG2 proviene dalla pratica di sottrazione dello sfondo.La prassi consiste nell’avere un immagine di riferimento (modello di sfondo), in cui non c'èmovimento e, successivamente, in ogni fotogramma seguente viene sottratta l'immagine diriferimento per estrarre oggetti in movimento dalla scena. Questa particolare operazioneviene utilizzata in svariate campi quali sorveglianza, applicazioni entomologiche, cattura delmovimento, interazioni uomo-macchina e video editing.Per effettuare questa operazione si andrà ad utilizzare la classeBackgroundSubtractorMOG2 ovvero un algoritmo per dividere lo sfondi in segmenti che sibasa su una mixture gaussiana. Questo algoritmo prende i pixel di sfondo e assegna aciascuno una distribution gaussiana. Il peso di questa distribution è la quantità di tempo incui i colori rimangono nella scena. L'idea è che più a lungo il colore rimane, maggiore è laprobabilità che faccia parte dello sfondo. La distribution gaussiana aiuta questo metodo ad adattarsi alla variazione dell'illuminazione.

Page 89: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

createBackgroundSubtractorMOG2 crea un oggetto Background della classeBackgroundSubtractorMOG2. Quando viene applicato alla prima immagine fornita a questooggetto, inizia a creare un modello di sfondo. Man mano che i frame vengono inviati aquesto oggetto, continua ad aggiornare lo sfondo. Il parametro varThreshold consente diimpostare la soglia alla quale si determina che un pixel si trova in background.Questa classe funziona molto bene per l'acquisizione video di scene come in questaapplicazione.Per capire questo algoritmo si procede ad un breve esempio.

Queste sono le tre immagini che andiamo a dare in input alla classeBackgroundSubtractorMOG2.

Questi sono gli output che si andranno a ricevere.Come si può notare nella prima immagine, dato che prima di questa non ne era presentealcuna, verrà indicata completamente come sfondo. Nella seconda immagine si noti come,con l’inserimento di un cambiamento nella prima immagine, l’algoritmo riconosce il nuovooggetto introdotto. Nella terza e ultima immagine l’oggetto precedentemente inserito vieneormai trattato come sfondo mentre il nuovo cubo rosso viene correttamente riconosciuto.Nel caso preso in esame da questo articolo solo una delle tre variabili è veramenteimportante da analizzare, ovvero la varThreshold.

Page 90: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Definendo un alto valore a varThreshold si andrà a determinare quanto bene un pixel èdefinito dal modello di sfondo. Impostando un valore elevato l'algoritmo rileverà solo i nuovipixel che sono estremamente diversi dal modello di sfondo. Questo aiuta a riconoscere glioggetti appena introdotti al costo di perdere qualsiasi oggetto simile allo sfondo, problema incui non si andrà ad incappare data la particolare scelta del colore del nastro.

Questo è il risultato finale che possiamo evidenziare anche nella gif precedentementeanalizzata.

3.4 Problema di prestazioniCome specificato precedentemente un'intelligenza artificiale ha bisogno di più immaginipossibili e della qualità migliore del pezzo in analisi per procedere al migliore riconoscimentoattuabile. Detto ciò si deve andare a sfruttare il massimo delle capacità della fotocamera delRaspberry Pi.La fotocamera rispetta queste richieste dato che può andare a produrre immagini di1280x720 pixel a una frequenza massima di 90 FPS. Qualità che però il Raspberry nonriesce a gestire data la immensa velocità di trasferimento richiesta. Per ovviare a questaproblematica hardware la fotocamera può comunque produrre un’immagine YUV che,sebbene sia più difficile lavorarci al posto di un'immagine RGB, memorizza solo 12 bit perpixel (RGB ha 24 bit).YUV è un sistema di codifica a colori tipicamente utilizzato come parte di una pipeline diimmagini a colori. Codifica un’immagine o un video a colori prendendo in considerazione lapercezione umana permettendo una larghezza di banda ridotta per i componenti dicrominanza, consentendo in genere agli errori di trasmissione di essere mascherati in modopiù efficiente dalla percezione umana rispetto all’utilizzo di una rappresentazione RGB“diretta”.Molti degli attuali modelli di telecamere a colori come la qui presente Pi Camera V2supportano la trasmissione di immagini in questo formato.Come sottolineato precedentemente questo schema assegna valori di luminosità e colore a

Page 91: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

ciascun pixel. In YUV, "Y" rappresenta la luminosità o il valore "luma" e "UV" rappresenta ilcolore o i valori di "crominanza". Al contrario, i valori dello schema di codifica RGBrappresentano le intensità dei canali rosso, verde e blu in ogni pixel.

Ciascun valore univoco di Y, U e V comprende 8 bit, o un byte, di dati. Ove supportati, gliattuali modelli di telecamere a colori consentono la trasmissione YUV in formato 24, 16 e 12bit per pixel. Nei formati a 16 e 12 bpp, i valori di colore U e V sono condivisi tra i pixel, il chelibera larghezza di banda e può aumentare la frequenza dei fotogrammi. Nota come"sottocampionamento della crominanza", questa tecnica tiene conto della maggioresensibilità dell'occhio umano alle variazioni di luminosità rispetto al colore.Questa peculiarità è il motivo per cui si va ad utilizzare un formato YUV al posto di uno RGB,tramite la possibilità di ridurre la crominanza mantenendo il valore luma, ovvero laluminosità, al massimo avremmo un incremento della velocità di elaborazione del 100%senza una grossa perdita in accuratezza.Si può quindi dedurre che, con un immagine YUV, si possano elaborare il doppio dei framerispetto ad un'immagine RGB e si risparmia anche tempo che la GPU sprecherebbe perconvertire l’immagine RGB.Tuttavia rimane il fatto che convertire un intero frame immagine consumerebbe una quantitàdi memoria e CPU esagerata e, dati i limiti di tempo della velocità con cui si vuolericonoscere un pezzo, non possiamo nemmeno decodificare un frame YUV intero. Per risolvere questo intoppo si va rielaborare il fotogramma ed ad effettuare un downscalingdell’immagine al fine di ridurre la cornice. Fatto ciò si va a ridurre la cornice una secondavolta al fine di ritagliare l’oggetto dal frame e porlo a grandezza naturale.

4 Risoluzione problematiche di riconoscimento

4.1 Apprendimento supervisionatoL’apprendimento supervisionato è una tecnica di apprendimento automatico che mira aistruire un sistema informatico in modo da consentirgli di elaborare automaticamenteprevisioni sui valori di uscita rispetto ad un input sulla base di una serie di esempi ideali,costituiti da coppie di input e di output, che gli vengono inizialmente forniti.In questo tipo di apprendimento entra in gioco un supervisore, tipicamente l’essere umano,che fornisce al programma le coppie input-output per permettergli di riconoscerne il legame,apprenderlo ed utilizzarlo per calcolare l’output dato un input.In questo tipo di tecnica si va ad utilizzare la classificazione per, attraverso le analisi dei deidati precedentemente etichettati dal supervisore, prevedere l’etichettatura delle future classi

Page 92: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

di dati.

4.2 Mancanza di datiAl fine di creare delle connessioni nella nostra rete neurale per avere un accuratoriconoscimento del pezzo necessitiamo di dati “labelled”, ovvero per ogni immagine in inputsi deve andare ad associare il rispettivo codice del pezzo. Per fare ciò si può andare adinserire questi dati manualmente ma, dato che questa macchina riconoscerà la stragrandemaggioranza dei pezzi LEGO, ci sono così tante combinazioni di pezzo-colore che perandare a creare delle connessioni solide si dovrà impiegare una quantità di tempo assurda.Per risolvere questa problematica si poteva, in principio, andare ad utilizzare dei datisintetici, ovvero creare artificialmente immagini di pezzi lego dai pezzi 3D e collegarle al lororispettivo codice per creare delle connessioni in modo più rapido. Il problema con questasoluzione è che, andando a proporre un'immagine realistica alla nostra rete neurale, essamolto probabilmente sbaglierà il riconoscimento incappando nel problema che verrà trattatosuccessivamente.

4.3 Sim-To-RealL’intoppo in cui si va ad incappare con la soluzione precedente viene chiamato “Sim-To-Real”. Il problema con le immagini sintetiche create è che, a differenza delle immagini reali,sono presenti differenze nella illuminazione, nei colori delle ombre e nelle loro texture che adocchio umano non sono percepibili ma la CNN invece percepirà questi due tipi di immaginicome totalmente differenti anche se a noi possono sembrare identiche. Questo problema èancora ricorrente tra i ricercatori ma, nel 2017, è stato pubblicato un documento chespiegava una tecnica molto utile per ovviare questo problema chiamata “domainrandomization”. Tramite questa soluzione si andava a espandere il tipo di immagini che sipotevano andare a generare variando in materiale, colore e luminosità. Tramite ciò siandava a creare delle connessioni molto più solide nella rete permettendogli di effettuarecorretti riconoscimenti.

4.4 Ulteriori migliorie al sistema di riconoscimentoNonostante siamo arrivati ad un buon risultato si è scoperto che, tramite una tecnicachiamata “fine tuning”, si poteva andare a ricevere una predizione del pezzo molto piùaccurata attraverso l’inserimento di un ristretto numero di immagini reali per creare ulterioriconnessioni.

5 Eventuali applicazioni in altri campi di reti neurali di riconoscimentoOvviamente di progetti con una rete neurale di riconoscimento unita ad un Raspberry e aiLEGO ce ne sono in abbondanza. Quello preso in esame era l’esempio più eclatante ecompleto dove poteva essere osservata una CNN adeguatamente addestrata alriconoscimento di una larga scala di mattoncini. Unire i LEGO a questi altri 2 componentipuò sembrare una limitazione nel campo delle reti neurali ma, dato il numero esorbitante dipezzi lego esistenti, si può dimostrare come si riesce a spaziare in macchine di tutti i tipi.

Page 93: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Il primo esempio preso in esame è quello di quest’uomo che, costruendo una macchinainteramente in LEGO attraverso un Raspberry riesce a decidere in quale contenitoresmistare una pallina basandosi sul suo colore. Per il riconoscimento sono stati utilizzatetecniche già descritte in precedenza, come la sottrazione dello sfondo.

Page 94: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

L’ultimo esempio che andrò a trattare prima della fine di questo articolo è un “carroarmatoLEGO” che, una volta riconosciuta una immagine per cui è stato allenato, in questo casouna pecora rosa, procederà a seguirla tramite il tracking con la stessa fotocamera utilizzatanella Universal LEGO Sorting Machine e, una volta calibrata la sua “arma”, cercherà di“abbatterla”. Tutte le tecnologie e algoritmi utilizzati in questa applicazione sono stati spiegatiin precedenza.

6 SitografiaFunzionamento della macchina

Semplificazione del lavoro

Sottrazione dello sfondo

Architettura CNN 1

Architettura CNN 2

Architettura CNN 3

MOG2

Apprendimento supervisionato

Funzionamento IA

Ball sorterAutomatic Lego Gun

Page 95: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Machine Learning and self drivingcars: deep neural networks versus

human perception

Boncan V. Alexandru

Abstract Il seguente elaborato esamina gli aspetti e le innovazioni tecnologiche più rilevanti relativealla guida autonoma.Sono analizzate le principali problematiche legate all’utilizzo dell’intelligenza artificiale (IA)applicata alla mobilità veicolare e alla risoluzione di eventuali problemi che possonoinsorgere. In particolare, sarà approfondito lo studio di determinati algoritmi informatici el’influenza dei medesimi nello sviluppo delle auto a guida autonoma.

Page 96: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

IntroduzioneNel 2021 persistono ancora grandi problematiche relative alla mobilità veicolare: da cosa èstato indotto questo bisogno di innovazione? Quali sono i fattori che stanno spingendol’umanità verso la ricerca e lo sviluppo di mezzi di trasporto autonomi?Soprattutto, quali sono le conseguenze di questi cambiamenti?In due secoli il modo in cui l’uomo si sposta è cambiato radicalmente: siamo passati dallecarrozze trainate da cavalli fino ad arrivare alle macchine a guida autonoma. Con il passaredel tempo, la società necessita sempre più di trasporti quanto più efficienti e sicuri possibilicon il minor impatto ambientale. Oggigiorno si stanno sviluppando auto a guida autonoma,progettate per garantire sempre più una maggiore sicurezza e comfort per l’uomo. Le auto di ultima generazione vedono integrati nei loro sistemi l’IA, senza la quale la guidaautonoma non sarebbe possibile. L’IA comunica in maniera sempre più stretta con la miriadedi sensori high-tech, utili a collezionare dati da far processare al computer di bordo.L’obiettivo principale è facilitare e rivoluzionare il modo di guidare oltre, allo stesso tempo,favorire il passaggio da auto con motore a combustione interna ad automobili full-electric,riducendo i problemi di inquinamento ambientale.L’utilizzo di queste macchine necessita la produzione di batterie a litio, difficilmente smaltibilie riciclabili. In alternativa è possibile alimentare il motore elettrico con le celle ad idrogeno.Le auto a guida autonoma sono regolamentate dagli Stati in maniera differente in tutto ilmondo, infatti non vi è una comune regolamentazione con adeguamenti normativi sfasati.

Page 97: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

I livelli della guida autonoma

Per capire il livello di autonomia delle auto a guida autonoma, viene utilizzata una scala divalutazione che permette di stabilire quanto la macchina sia avanzata tecnologicamente.Questa classificazione è stata redatta da Society of Automotive Engineers (SAE) e prevede cinque livelli:

Livello 0: sono quei veicoli che non hanno nessun tipo di assistenza alla guida e ilconducente ha il pieno controllo del veicolo;

Livello 1: il veicolo è dotato di sistemi di supporto alla guida (ad esempio cruise controladattivo o supporto sterzata) ma il controllo rimane sempre al conducente;

Livello 2: il veicolo può in autonomia mantenere la corsia grazie al “line assist” e, alcontempo, avere pieno controllo anche sull’accelerazione e sulla frenata. Il conducente devesempre e comunque avere il controllo del veicolo e deve monitorarlo;

Livello 3: il veicolo, in alcune circostanze, è in grado di proseguire la guida in modoautonomo. Non è una guida completamente autonoma poiché la macchina può richiedere, inqualsiasi momento, al conducente, di riprendere il controllo. Di conseguenza la presenzaumana è sempre richiesta.

Livello 4: le macchine di livello quattro possono in quasi tutte le circostanze proseguire laguida in modo autonomo e l’intervento umano non è richiesto. Il guidatore deve poter averela possibilità di controllare il veicolo. Questa è la fase che precede il livello piùautomatizzato.

Livello 5: è il livello con maggior automazione possibile. Il controllo del veicolo da parteumana non è richiesto poiché la macchina è capace di guidare in modo autonomo in tutte le

Page 98: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

circostanze; [1] [2]

I sensori

Le macchine a guida autonoma sfruttano tutti i sensori di cui sono dotate per raccogliere datidell’ambiente circostante al veicolo.Questi dati sono successivamente analizzati dagli algoritmi di IA ed il risultatodell’elaborazione renderà come output le decisioni che verranno attuate, rendendo possibilela guida autonoma.Tra i principali sensori possiamo ritrovare: le videocamere, i radar e i lidar.

Le videocamere

Le videocamere sono già presenti da tempo nei veicoli, oggigiorno sono utilizzate sempre dipiù.A partire dall’assistenza al parcheggio fino alla frenata automatica d’emergenza, hannomoltissimi impieghi tutti finalizzati a rendere il veicolo sempre più tecnologico.Possono essere di due tipi:

● mono (hanno un solo obiettivo e offrono una visuale in 2D) ● stereo (grazie alla presenza di più obiettivi offrono una visuale in 3D).

Offrono moltissime funzioni come immagini a colori ed in 3D riuscendo a raccogliereinformazioni anche da lunghe distanze e, in alcuni casi, se dotate di infrarossi possonovedere anche al buio. Nonostante tutti questi vantaggi, presentano anche dellecontroindicazioni, specie in caso di eventi meteorologici avversi come nebbia e neve poichétali fattori ostacolano la visuale della videocamera. Per la guida autonoma è un elementofondamentale poter avere una visione completa di ciò che circonda l’auto, per questo sonostati inseriti altri sensori che permettono di raccogliere dati anche in condizioni avverse.

Radar

I sensori radar sono utilizzati principalmente per fare misurazioni e calcolare la distanza tra ilveicolo e l’ambiente circostante. Come funzionano?I sensori radar emettono onde elettromagnetiche corte che si propagano alla velocità dellaluce; non appena le onde colpiscono un oggetto, vengono riflesse e ritornano indietro. Cosìfacendo, i radar riescono a calcolare la distanza. Grazie all’unione di più calcoli, i radarpossono anche determinare la velocità con la quale un oggetto si sta muovendo intorno allamacchina (es. altre macchine). I dati raccolti sono principalmente utilizzati per ilfunzionamento di sistemi come “Adaptive Cruise Control” e “Collision Avoidance”.

Page 99: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Un punto di forza dei radar è quello di poter riuscire a lavorare e fornire dati anche sottocondizioni meteo poco favorevoli.La poca risoluzione invece rende difficile per i radar poter classificare gli oggetti identificati.

Sensori Lidar

I sensori Lidar (Light Detection and Ranging) sono sensori simili ai radar, solamente che alposto delle onde elettromagnetiche utilizzano un laser. Oltre a calcolare distanza e velocità,il loro punto di forza è quello di poter ricreare immagini in 3D dell’oggetto/oggetti che stannomonitorando o addirittura creare una mappa in 3D dell’ambiente che circonda il veicolo intempo reale.A differenza dei radar, i sensori lidar soffrono del problema del cattivo tempo.

Tutti i dati raccolti da questi sensori, e non solo, vengono trasmessi al computer principale,che tramite algoritmi di IA dedicati, verranno elaborati e genereranno decisioni che il veicoloa guida autonoma metterà in pratica.

[3] [4]

Algoritmi di intelligenza artificiale

Per quanto riguarda le applicazioni dell’IA al campo veicolare dobbiamo essere certi chevengano rispettati anche dei requisiti di velocità oltre che di affidabilità, perché il mezzo deveessere in grado di reagire a circostanze esterne nel modo più immediato possibile. Diconseguenza, questo influenza sia l’hardware che il software limitando a parità di prestazionila complessità massima del programma.

Architettura

Per poter venire incontro a problematiche come sicurezza, velocità e affidabilità ed ancheper riuscire a garantire una funzionalità della rete che compone la parte hardware di unveicolo a guida autonoma, i veicoli a guida autonoma utilizzano una particolare struttura direte.Non esiste una topologia di rete fissa poiché non è ancora stato brevettato nulla, ma bensìcombinazioni limitate di caratteristiche peculiari.

Tra le principali tipologie di architettura proposte, degne di nota sono:

● la Domain-Based (D), caratterizzata dalla presenza di componenti hardware esoftware appartenenti ad una specifica funzionalità. Ogni singola zona ha un'unità di

Page 100: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

controllo che gestisce tutto il dominio. L'unità di controllo è collegata alla backbonedel veicolo sulla quale trasferirà i dati fisicamente o tramite rete;

● la Zone-Based (Z), la cui caratteristica peculiare è quella di suddividere l’auto perzone in cui tutti i sensori o attuatori sono collegati all’unità di controllo più vicina, laquale a sua volta sarà collegata (analogamente come nella Domain Based) allabackbone o in maniera fisica o tramite la rete.

In entrambe le categorie, le unità di controllo sono successivamente collegate ad ulterioriunità di controllo. Queste ultime hanno un diverso approccio di elaborazione dati.

● Vehicle-Centralized (VC), grazie alla quale tutte le informazioni raccolte dai sensorivengono direttamente spedite al computer di bordo principale il quale le elaborareindirizzando poi tali informazioni elaborate nuovamente verso gli attuatori;

● Controller-Based (CB), la quale è dotata di una componente computazionale chericeve i dati da tutti i sensori e li elabora; i dati elaborati vengono poisuccessivamente spediti al computer principale già elaborati.

Attualmente le combinazioni di queste 4 possibilità rappresentano possibili architetture etopologie di rete di un veicolo a guida autonoma. Ogni casa costruttrice sceglie l’architetturache più desidera applicare sulla propria vettura in base a peculiari esigenze.

Page 101: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

High Performance Embedded Computing

In generale, sui sistemi di self driving oggigiorno si utilizza principalmente l’architetturaHPEC (High Performance Embedded Computing). Questi sistemi sono dedicati e permettono di processare una enorme quantità di dati e sonoanche in grado di trasmettere questi dati ai sensori permettendo così il training deglialgoritmi di Intelligenza Artificiale (IA) e deep learning in tempo reale direttamente a bordodel veicolo.Lo scopo principale dei sistemi HPEC è quello di riuscire a far arrivare le macchine al livellocinque SAE (guida completamente autonoma senza l’ausilio del conducente).

Ci sono diverse architetture dei Sistemi HPEC. Quella mostrata nella figura precedente ne èun esempio ed è composta da diversi moduli:

● DynaCOR 50-35: è un robusto server HPEC con capacità di calcolo senzaprecedenti che supporta algoritmi di intelligenza artificiale e deep learning nel campodella guida autonoma;

● DynaNET 100G-01: è uno switch Ethernet ad alte prestazioni con porte 100GbE(Gigabit Ethernet) port per consentire il trasferimento bidirezionale di ingenti quantitàdi dati ad altissima velocità;

● DynaNET 10G-01: è uno switch che grazie alle sue 52 porte permette tanticollegamenti. Nello sviluppo delle auto a guida autonoma è un elemento importantepoiché gestisce la parte di collegamento di tutti i sensori presenti nel veicolo con leunità di elaborazione;

● DynaCOR 40-34: è un sistema di memorizzazione compatto, dotato di processore,ram ed ssd propri oltre che a possedere una NIC (network interface card). E’certificato per l’implementazione delle auto a guida autonoma.

Page 102: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

I dati vengono raccolti da tutti i sensori grazie al modulo DynaNET 10G-01,successivamente verranno passati al modulo DynaNET 100G-01 che reindirizza i dati almodulo di calcolo DynaCOR 50-35 ed al modulo di memorizzazione DynaCOR 40-34.

L’IA si appoggia sul machine learning, principalmente usato per il riconoscimento e laclassificazione dell’ambiente che circonda il veicolo. Il machine learning presentageneralmente due metodi di apprendimento:

● supervisionato, nel quale vengono forniti sia i dati di input che la metodologiadell’elaborazione da utilizzare (esempio: classificare gli oggetti). E’ il migliorapproccio in ambito dello sviluppo delle auto a guida autonoma.

● non supervisionato. Con il metodo non supervisionato, l’apprendimento si realizzafornendo una quantità di dati (sia input che output) non classificati e senza istruzioni.Sarà la macchina a dover classificare gli oggetti identificati secondo specifichecaratteristiche e capire il procedimento necessario che deve essere svolto (esempio:previsioni meteo). Questo metodo è usato per poter fare delle previsioni future basatisu diversi tipi di dati.

Alcuni algoritmi utilizzati in campo automobilistico sono:

● AdaBoost

E’ un algoritmo di learning supervisionato che serve a classificare gli oggetti a partire da unabase iniziale. Gli si offre come input delle immagini, successivamente tramite il deeplearning, sarà in grado di riconoscere immagini similari. Per l’apprendimento si usa la tecnicadi boosting che prevede di usare pesi diversi per le varie istanze del riconoscimento così davelocizzare il miglioramento dell’AI negli aspetti su cui è maggiormente deficitaria. Nellaprima fase di learning, il peso di ogni singola istanza è identico e dato da 1/n, dove n è ilnumero di istanze, mentre il ciclo successivo avrà pesi di istanza diversi e l’algoritmo quindisi concentrerà laddove l’errore dell’algoritmo è maggiore attribuendo alle dovute istanze ilgiusto peso. Più un algoritmo riesce ad identificare l’aspetto dove esso deficita, migliore saràla fase di training poiché si può lavorare maggiormente sugli aspetti deficitari.

● TextonBoost

E’ similare ad AdaBoost, solo che le informazioni necessarie (input) vengono fornite daimmagini o sequenze di immagini nel caso sia un video. Nel caso di una foto, questoalgoritmo riesce a identificare gli oggetti presenti e riesce ad etichettarli in base alla loroconformazione e alle caratteristiche peculiari. Per poter avere una classificazione quanto piùpriva di errori, è necessario non solo analizzare l’oggetto in sé ma abbiamo bisogno didefinire con precisione la sua forma, il contesto dove si trova e come appare.Per fare un esempio pratico, una finestra potrebbe appartenere ad una casa, un’auto,unaereo o un palazzo; l’immagine della finestra in se è poco utile, dobbiamo contestualizzarel’area che circonda la finestra, tenere conto della sua forma e di come appare. Solamentecosì possiamo avere una classificazione dettagliata e precisa da poter utilizzare.

Page 103: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Histogram of oriented gradients (HOG)

Questo algoritmo serve a identificare un volto, un essere umano o un pattern specifico e aclassificarli in modo adeguato. E’ possibile analizzare la loro posizione, capire come questicambieranno nel tempo o addirittura stabilire la traiettoria. L’immagine nella quale si vuolerilevare uno specifico pattern viene innanzitutto pre elaborata, la sua larghezza e la sualunghezza viene portata a rapporto 1:2; successivamente tramite apposita formula, si calcolail gradient (l'ampiezza del gradient aumenta ovunque vi sia un brusco cambiamento diintensità luminosa, così facendo si elimina parte di immagine che non ci serve e delimita ibordi della figura che vogliamo rilevare).

Avviene poi la segmentazione dell’immagine in più porzioni chiamate celle, ovverol’immagine viene divisa in 8x8 celle ed infine verrà calcolato l’istogramma di ogni singolacella con relativo salvataggio del risultato. Il risultato finale sarà quindi un istogramma contutti i dati dell'immagine analizzata.

[5] [6]

Page 104: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Gradient

Il gradiente è un'operazione matematica che corrisponde a fare la derivata bidimensionalesulla funzione intensità dei pixel. Volendo fare un esempio monodimensionale, immaginiamouna linea di pixel come rappresentata in figura dove sui bordi l’intensità è molto bassa,mentre al centro è elevata.

Questa intensità può essere rappresentata in grafico con la posizione del pixel in asse X, el'intensità sull’asse Y.A questo punto per trovare i “bordi” è sufficiente calcolare il modulo della derivata dellafunzione intensità rispetto a X, o per meglio dire il modulo del rapporto incrementale(differenza tra i valori di intensità di pixel adiacenti) visto che il dominio della funzioneintensità è discreto, essendo limitato al numero dei pixel dell’immagine (vedi immaginesotto).

Page 105: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

YOLO (You Only Look Once)

Questo algoritmo basato sul machine learning, permette l’identificazione di un oggetto o ungruppo di oggetti (alberi, pedoni sulla strada, biciclette, ecc.) e di stabilire la posizione e lospazio occupato effettuando una sola “lettura” dell’immagine di input.

L’immagine viene letta una singola volta tramite due modalità:

● modalità “Sliding Window”, ovvero l’immagine viene analizzata pezzo per pezzo finoa quando non verranno riconosciuti gli oggetti;

● tramite suddivisione dell’immagine in una griglia ( più celle). Una volta analizzatal’immagine, all’oggetto riconosciuto viene assegnata una bounding box (un riquadroche delimita il perimetro dell’oggetto riconosciuto) ed il punto centrale della boundingbox rappresenta la cella di appartenenza dell’oggetto riconosciuto.

Questo algoritmo permette quindi di riconoscere in modo molto rapido gli oggetti e lacaratteristica peculiare che lo rende così veloce è dovuta anche alle cosiddette “Anchor Box”che altro non sono che dei riquadri “di prova” per poter riconoscere le bounding box corrette.Di fatto prima dell’entrata in uso delle “Anchor box”, non era possibile riconoscere più di unabounding box per cella.

Page 106: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

[7]

Normative e Legislazioni

Facendo riferimento alla classificazione operata dal SAE, al momento la legge prevede chesulle strade Europee possano circolare auto che presentano strumenti ausiliari e cherientrano nei livelli 1-2 ma non vi sono regole chiare e definitive in Europa riguardo alle autoa guida autonoma oltre un certo livello SAE.La Commissione Europea ha pubblicato il 21 aprile 2021 la COM(2021) 206, contenente unaproposta di Regolamento sull’utilizzo dell’intelligenza artificiale.Lo scopo di questa pubblicazione è stato quello di creare vincoli molto stringenti vietandol’impiego dell’IA in certi ambiti e di istituire, nei vari Stati, dei comitati di valutazionefunzionale per validare i sistemi più rischiosi di intelligenza artificiale; tutti i vari comitatidovrebbero poi essere coordinati dalla “European Artificial Intelligence Board”, unacommissione costituita da membri dei Paesi europei. Le leggi sono molto ferree, ancora dipiù lo sono le sanzioni, sia per i conducenti ma soprattutto per le case costruttrici delle autostesse. Ad esempio la Francia ha proposto una legge, varata il 2 dicembre 2020, sullenorme di “responsabilità penale applicabili all’uso di un veicolo con delega di guida e le suecondizioni di utilizzo”. In questa normativa si delinea che il problema principale, per quantoriguarda la legislazione, è la definizione di “auto a guida autonoma”, in quanto ci sono diversilivelli. Bisogna anche ben definire il concetto di “autista” del veicolo. Altri aspetti di questapubblicazione riguardano la responsabilità penale che deve essere assunta in caso diincidente, poiché sono necessarie metodiche certe per stabilire se la responsabilità sia daimputare a un malfunzionamento del veicolo oppure all’errore umano. L’idea proposta daquesta legge è che il conducente di un veicolo debba essere esente da responsabilitàpenali, a meno che non stia effettivamente controllando il veicolo oppure non rispetti irichiami delle forze dell’ordine.In Europa persistono molti dubbi e sono stati fatti dei piani di sviluppo che sfortunatamentesono in ritardo, mentre in America lo sviluppo delle auto a guida autonoma è già partito daun decennio. Infatti, ogni Stato americano ha la facoltà di normare in maniera indipendentegli aspetti inerenti la guida autonoma. Anche in America al momento non è possibile guidareun veicolo superiore al livello SAE 2 ma in alcuni stati e contee circoscritte, è possibile

Page 107: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

testare su strade pubbliche macchine a guida autonoma di livello SAE 3; addirittura aPhoenix, Arizona, alcuni veicoli appartenenti alla ditta Waymo stanno già circolando senza lapresenza di un pilota umano.La famosa casa produttrice Audi ha sviluppato sul nuovo modello A8 il “Traffic Jam PilotAssistant” che pare essere in grado di controllare il veicolo in condizioni di traffico lento esenza cambi di corsia. In America gli è stato riconosciuto il livello SAE 3, poiché, secondo la loro legislazione, illivello 3 ha bisogno che comunque il conducente monitori la vettura durante la marcia,mentre in Europa la legislazione prevede che l’auto di questo livello sia indipendente dalfattore umano. In entrambi i casi, la scarsità di chiarezza sulla responsabilità da attribuire incaso di incidente di queste normative attuali non permette l’utilizzo di veicoli di livello SAE 3o superiore.

Strade

Le macchine a guida autonoma, attualmente, per poter circolare, hanno bisogno di stradeche soddisfano particolari richieste.L’IA del veicolo a guida autonoma non è in grado di riconoscere alcuni tipi di strade, diconseguenza l’intervento umano è richiesto. Questo è uno dei fattori principali per i quali nonsi possono guidare auto di livello SAE 3 o superiori al momento. L’auto sfrutta i suoiprincipali sensori, che rilevano i dati dell’ambiente circostante e li elabora. Per tutta la duratadel tempo in cui la macchina riconosce la strada, essa può guidare in modo autonomo senzache l’intervento umano sia richiesto. Laddove non sia possibile riconoscere il tipo di strada(per esempio quando manca la segnaletica orizzontale, quando la strada non è asfaltata,ecc...), la macchina richiede che il guidatore prenda il comando.Gli elementi principali necessari alle autovetture a guida autonoma che rendono le stradericonoscibili sono:

● Il fondo stradale deve essere asfaltato in modo uniforme;● Deve essere presente la segnaletica orizzontale e verticale adeguatamente visibile,

e, ove possibile, occorre installare la versione digitalizzata di tali segnaletiche;● Sarebbe necessaria la presenza di sensori integrati nell’asfalto in grado di

comunicare con le auto, permettendo un maggiore livello di sicurezza.

Principali case costruttrici

Attualmente la Tesla è la società che produce auto a guida elettrica più famosa al mondo. Lasede legale si trova negli Stati Uniti d’America ed Il fondatore e amministratore delegato èElon Musk, il quale ha deciso di far assumere questo nome alla società in onore di NikolaTesla. Lo scopo principale dell’azienda in un primo tempo era quello di promuovere l’utilizzodi fonti di energie rinnovabili, tant’è che tuttora si occupa anche di pannelli solari;successivamente, il core business dell’azienda si è spostato verso la produzione di auto

Page 108: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

elettriche; già dal 2012, infatti, ha immesso sul mercato le prime auto elettriche. Oltre a ciò,l’azienda ha deciso anche di implementare lo sviluppo della guida autonoma, tanto che almomento risulta essere l’azienda leader sul mercato mondiale.I suoi principali competitori sono Waymo (Google Alphabet), Volkswagen, Baido (compagniacinese), Zoox (Amazon).

Guida umana confrontata con la guida autonoma

Questo grafico rappresenta la statistica degli incidenti nell’arco tra il 2015 ed 2017 inCalifornia evidenziando la differenza tra incidenti in cui è coinvolto almeno un veicolo aguida autonoma AV (autonomous vehicle) da quelli in cui sono coinvolti solo veicoli a guidaclassica CV (conventional vehicle) in base al tipo di incidente (la somma delle percentualidelle barre di ogni colore è uguale al 100%, le percentuali sono le incidenze di quel tipo diincidente rispetto al totale). Si puo notare che nessun pedone è stato investito dalle AV.Nella categoria “altro” (“other”) sono inclusi incidenti frontali e sovrasterzate. Gli incidenti cheincludono l’urto frontale di fiancate (broadside) e i pedoni sono per le auto AV piuttosto raririspetto al caso dei CV. Questo è stato giustificato col fatto che questo tipo di incidentisolitamente avvengono in prossimità di intersezioni e di conseguenza risulterebbe che le IAprestano maggior attenzione dei guidatori umani in questi casi. In questa statistica risultache la maggior parte degli incidenti in cui è coinvolta la guida autonoma siano quelli cheriguardano la parte posteriore di un'auto. Ciò può essere giustificato come responsabilità deiCV che causano tamponamenti in cui le IA non possono avere alcun controllo per evitarli.Probabilmente proprio il tamponamento è il caso in cui il conducente tamponato ha minoriresponsabilità.

Page 109: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Questo secondo grafico rappresenta le incidenze degli incidenti causati dal comportamentodi un CV riportato sul grafico. Anche in questo caso possiamo notare che la maggior partedegli incidenti in cui sono coinvolte AV sono della tipologia in cui la AV stessa può fare benpoco per evitarli nonostante non sia in torto (eccessiva velocità o distanza di sicurezza nonrispettata dal CV). Come detto prima le AV prestano maggior attenzione in prossimità delleintersezioni, per cui le violazioni di diritto di precedenza di CV e quelle di comportamento deipedoni di solito non causano comunque incidenti che coinvolgano AV.

[8]

Pro e Contro

In seguito a tutte le considerazioni precedenti tra i vantaggi derivanti dallo sviluppo di questeauto a guida autonoma possiamo inserire:

● una maggiore sicurezza alla guida;

● emissioni inquinanti ridotte;

● una mobilità facilitata per le persone sensibili (anziani, disabili, ecc.);

● riduzione del traffico.

Tra gli svantaggi e i problemi da affrontare, invece, si evidenziano:

● problemi di privacy, di hacking e difetti di software;

● la perdita di posti di lavoro;

● problematiche legate alla legislazione, perché si ha difficoltà ad inquadrare e

Page 110: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

normare tutti gli aspetti del mondo delle auto a guida autonoma;

● i prezzi delle auto a guida autonoma non sono economici;

● le condizioni metereologiche, poichè condizioni avverse come forti piogge o bufere dineve renderebbero l’auto cieca dato che i sensori non leggerebbero bene l’ambienteesterno.

● nel caso di un incremento sostenuto della presenza in circolazione dei veicoli a guidaautonoma, il ritardo nell’adeguarsi a questa tecnologia da parte delle case produttricirischia di tagliarle fuori dal mercato per mano delle neo aziende che producono giàauto a guida autonoma.

Conclusioni

In base ai dati riportati nel paragrafo di confronto tra la guida autonoma e quellaconvenzionale appare evidente che la guida autonoma dal punto di vista della sicurezzastradale sia migliore e la maggior parte degli incidenti che coinvolgono AV è imputabile aviolazioni del codice stradale dei CV o al loro stile di guida. Ciò fa pensare che in un futuro incui non saranno presenti guidatori umani gli incidenti saranno probabilmente molto menofrequenti. Inoltre le auto a guida autonoma rappresentano l’avanguardia della tecnologia siaper l’aspetto della IA che nel motore (che tipicamente è elettrico) che dei sensori presenti abordo. Il motore elettrico potrebbe essere un ulteriore punto a favore per questo tipo diveicoli, poiché possono risultare meno inquinanti rispetto ai motori a combustione, inparticolare a livello locale. Ciò inoltre fornirebbe un incentivo più diretto ad un cambiamentodella produzione energetica globale verso le fonti rinnovabili. Le possibili migliorie sono ancora molte, infatti l’accessibilità ai mezzi di trasporto da parte dipersone con problemi nei movimenti deve essere migliorata.Infine a mio parere, lo sviluppo di auto a guida autonoma porterà grandi cambiamenti ebenefici per l’essere umano, però al contempo porterà con sé gravi svantaggi. Per esempio,la guida autonoma potrebbe rendere l’essere umano meno abituato alla guida manualepotendo portare eventualmente ad una riduzione della capacità di guida dei conducenti.

Sitografia

1. Auto a guida autonoma: come funzionano e la normativa in Italia 2. Guida autonoma: quali sono i livelli Sae e cosa significano 3. 3 types of autonomous vehicle sensors 4. https://www.blickfeld.com/blog/sensor-fusion-for-autonomous-driving 5. Una delicata introduzione all'istogramma dei gradienti orientati 6. Object Detection for Dummies Part 1: Gradient Vector, HOG, and SS 7. YOLO - You Only Look Once 8. https://www.sciencedirect.com/science/article/pii/S235214652030165

Page 111: IL MONDO DELL’INTELLIGENZA ARTIFICIALE
Page 112: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

THE EXPLOITATION OFMACHINE LEARNING FOR

CYBERSECURITYWei Jie Marco Zhang

Abstract

Le minacce informatiche necessitano sempre più attenzione all'ambiente [informatico]moderno: dai sondaggi delle grandi organizzazioni, sappiamo che ogni anno vengonoinvestiti sempre più soldi per sostenere le ricerche sulla sicurezza informatica dei servizidella propria impresa. Man mano che le ricerche si approfondiscono, si scopre che nonbasta solo espandere ed automatizzare i loro piani di risposta alle minacce, ma si devonoanche sviluppare misure proattive.Negli articoli pubblicati dalle grandi organizzazioni, si sostiene che dopol’idealizzazione dell’utilizzo dell’intelligenza artificiale per la sicurezza informatica nellaClearnet (L’opposto della Darknet), abbiamo avuto una grande diminuzione dei pericoliinformatici.Al momento siamo ancora in fase preliminare, ma già possiamo vedere i risultati chepossono produrre, le cosiddette AI (Artificial Intelligence) riescono ad analizzare i big datasenza fatica personale, e liberare i tecnici da compiti faticosi, per sfruttare al di più leskills e competenze di creatività’ dell’essere umano.

Page 113: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

La sicurezza informatica (Cyber Security)è la protezione dai danni o perdite deidati dovute a motivi accidentali o dolosiper l'hardware/software nel sistema direte. Ciò permette al sistema lacontinuità dell’esecuzione senzainterruzioni.Oggettivamente non c'è minaccia esoggettivamente non c'è terrore. Cioè,l'oggetto non si preoccupa che il suostato normale venga influenzato. Lasicurezza della rete può essere definitacome: un sistema di rete è esente daminacce e violazioni e può normalmente

svolgere la funzione di condivisione delle risorse. Per consentire alla rete di implementare normalmente le funzioni di condivisione dellerisorse, è prima necessario assicurarsi che l'hardware e il software della rete possanofunzionare normalmente, quindi garantire la sicurezza dello scambio di informazioni sui dati.A causa dell'abuso della condivisione delle risorse, sono causati problemi di sicurezza dellarete. Pertanto, l'approccio tecnico alla sicurezza della rete consiste nell'implementare unacondivisione limitata.

Dal punto di vista degli utenti (individui o imprese), sperano che: (1) Le informazioni personali trasmesse sulla rete (come numeri di conto bancario epassword di accesso a Internet, ecc.) Non vengono scoperte da altri Requisiti diriservatezza. (2) Le informazioni trasmesse sulla rete non sono state manomesse da altri, che è ilrequisito dell'utente per l'integrità delle informazioni trasmesse sulla rete.(3) La fonte delle informazioni inviate in rete è reale, non falsa, questo è il requisito diautenticazione dell'identità delle parti della comunicazione.(4) Il mittente delle informazioni riconosce le informazioni inviate o una determinataoperazione completata, che è il requisito innegabile dell'utente nei confronti del mittente delleinformazioni.

Il problema principale è la gestione della vasta tipologia dei rischi informatici che possonoinfluenzano i principi della sicurezza informatica (riservatezza, completezza, disponibilità,controllabilità ed il non ripudio), e con l’introduzione degli AI, si può rafforzare il controllo.

Security Operation Center (SOC) ed analista della sicurezza

Oggi ormai, sempre più prodotti AI (Artificial Intelligence, coniato per la prima volta nel 1956)stanno fiorendo, gli analisti della sicurezza moriranno a causa dell'automazione? Un recentestudio condotto dal Ponemon Institute (istituto situato in Michigan, studia principalmente lasicurezza informatica) su 1.027 addetti all'IT e alla sicurezza negli Stati Uniti e nel RegnoUnito ha mostrato il risultato opposto.

Un Security Operations Center (SOC) è un centro da cui vengono forniti servizi finalizzati alla

Page 114: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

sicurezza dei sistemi informativi dell'azienda stessa (SOC interno) o di clienti esterni.Mentre un analista della sicurezza è colui che gestisce tutto ciò.

Esso fornisce tre tipi di servizi:1. Gestione: Gestione delle attività e funzionalità di sicurezza legate all’infrastruttura IT2. Monitoraggio: Monitoraggio in tempo reale dell’infrastruttura IT per individuaretempestivamente tentativi di intrusione, attacco o di abuso dei sistemi.3. Proattivi: Azioni iniziativi attivi destinati a migliorare il livello di protezionedell’organizzazione.

Una scoperta importante è che il personale della sicurezzadi rete deve collaborare con quella dell’automazione perottenere i migliori risultati. L'automazione non potrà maisostituire il "fattore umano", specialmente queiprofessionisti che gestiscono queste tecnologie.In quest'ottica, invece di considerare l'automazione comeuna grave minaccia per i professionisti della sicurezza, glianalisti possono utilizzare l'automazione come una nuova opportunità:

1. Competenza nella tecnologia di automazione: La tecnologia di automazione non èancora perfetta. Pertanto, è necessario che il personale migliori continuamente la propriacapacità di rilevare schemi falsi positivi e, allo stesso tempo, migliori le proprie capacità perridurre i rischi. Le persone devono iniziare a pensare dallo scenario peggiore per prevenirenuovi rischi derivanti dall'automazione.Anche la programmazione è un'abilità essenziale. Il personale di sicurezza deveapprofondire continuamente le proprie capacità tecniche per far fronte all'enorme impatto deifalsi allarmi nell'intero ambiente operativo e di manutenzione. Ora gli analisti di livello T1devono concentrarsi sulla scienza dei dati, sulla programmazione, sulle capacità dicomunicazione e sulla comprensione degli aggressori.Infine, in termini di capacità di comunicazione, è anche estremamente importante il softpower essere in grado di consentire in modo sintetico e chiaro al personale aziendale dicomprendere le questioni e le conoscenze sulla sicurezza.

Page 115: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

2. Trovare un tutor esperto: Le organizzazioni devono cercare internamente edesternamente personale IT con competenze pertinenti come mentori per aiutare il resto delpersonale a crescere rapidamente.Un mentore qualificato può aiutare a prendere decisioni preziose sull'automazione. Che sitratti di intelligenza artificiale o apprendimento automatico, corrisponde comunque allasituazione cognitiva degli analisti della sicurezza umana. Con la guida di alcuni analistisenior, possiamo non solo imparare dagli incidenti di sicurezza passati dall'organizzazione,ma anche apprendere nuove tecnologie con esperti.

3. Prestare attenzione alla comprensione della tecnologia di automazione: Moltiritengono che il loro team di sicurezza fosse a corto di personale. A questo punto, ènecessario stabilire un piano e stabilire un meccanismo operativo automatizzato internosviluppando i ruoli e le competenze del personale pertinente: combinare intelligenzaartificiale e apprendimento automatico per stabilire un manuale tattico per il processo dagestire; utilizzare il lavoro manuale in Campi strategici e creativi Abilità e utilizzodell'intelligenza artificiale e dell'apprendimento automatico in attività quotidiane e ripetitiveper dimostrare una comprensione dell'automazione. Questi piani devono includere alcuneopportunità di apprendimento, mentre il team deve rimanere sensibile alle nuove scoperte etecnologie.

4. Stabilire una linea di base per un uso efficiente dell'automazione: Misural'efficacia dell'automazione e l'efficienza del SOC e sviluppare l’automazione. Alcuni metodidi misurazione di base includono risultati di operazioni automatizzate, segnali ad altaprecisione, riduzione del rumore, ecc., Che possono fornire una grande quantità diinformazioni automatizzate, in modo da scoprire dove sono necessari ulteriori investimenti equali sistemi l'organizzazione deve adottare.Inoltre, è possibile misurare il risparmio in termini di tempo, l'accuratezza e l'efficaciadell'automazione. In alcuni casi, l'automazione potrebbe richiedere più risorse. Quando siesegue un'analisi del ROI (Return on investment), è necessario includere i costi dimanutenzione e supporto. Sebbene i dati statistici debbano mostrare una maggioresicurezza, devono anche dare fiducia al top management nella sicurezza dell'automazionestessa. Ci sono molte organizzazioni che non adottano l'automazione a causa dellamancanza di supporto esecutivo. Dimostrare il valore aziendale dell'automazione attraversoun'analisi del ROI semplice e di facile comprensione può cambiare le loro percezioni.

5. Partecipare a varie organizzazioni per condividere le migliori pratiche:Partecipando ad alcune associazioni di sicurezza del settore, si può ampliare ulteriormentele tue capacità professionali condividendo le conoscenze su minacce e incidenti e migliorarela tua maturità in materia di sicurezza sulla base dell'esperienza e delle idee di altri

L’AI non è altro che un sistema informatico che imita e monitora le reti neurali del cervellotramite l’utilizzo dei modelli matematici (Modellazione Bayesiana) e che è in grado diimparare importando esempi e casi forniti in input, e produrre un risultato (Questo risultatopuò essere dedicato per identificare attacchi NET, imitare scritturazione poeti moderni, ecc).

Page 116: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Per sviluppare un prodotto AI per la sicurezza informatica si usa spesso:C e C ++: sono relativamente importanti nel campo dellasicurezza di rete e sono i linguaggi di programmazionepiù basilari. Questi linguaggi forniscono l'accessoall'infrastruttura IT sottostante (come RAM e processi disistema). Se la protezione non è buona, gli hackerpossono usare facilmente queste infrastrutture.PHP: PHP è un linguaggio di programmazione lato

server utilizzato per sviluppare siti web assieme agli script di verifica (script è simile ad un AI,ma funzionano diversamente) . Poiché la maggior parte dei siti Web vengono creatiutilizzando PHP, l'apprendimento della lingua può darti un'idea di come difenderti dagliintrusi. Ad esempio, gli attacchi DDoS (Denial of Service) spesso tentano di rendereun'applicazione Web non disponibile per l'utente previsto.SQL(MySQL): SQL (Structured Query Language) viene utilizzato principalmente per gestire idati memorizzati nel database. A causa della crescita esplosiva degli attuali sistemi diarchiviazione dati, SQL è ampiamente utilizzato per mantenere e recuperare i dati.

Analizzando una grande quantità di dati, tipi di eventi, fonti e risultati, la tecnologia diintelligenza artificiale può identificare nuove forme e tipi di attacchi (ciò sfrutta moltissimo lamodellazione bayesiana, esempio la verifica della verosimiglianza tra due o più eventi). Ed èmolto critico, perché le tecniche di attacco continueranno ad evolversi con il progresso dialtre tecnologie.

Analisi del comportamento e valutazione di rischio

La tecnologia di analisi del comportamento haassunto un ruolo guida in alcune aree menocritiche (come la pubblicità) e si sta oraspostando verso casi d'uso della chiave perl'autenticazione dell'identità e la lotta antifrode.Qui, gli algoritmi di intelligenza artificialeestraggono un gran numero di modelli dicomportamento di utenti e dispositivi, posizioni

geografiche, parametri di accesso, dati dei sensori e un gran numero di set di dati perottenere la vera identità degli utenti. Aree principali:1. Dati comportamentali: tipo di browser, variazioni di traffico, velocità di navigazione etempo di permanenza della pagina.

Page 117: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

2. Tecnologia biometrica passiva: velocità di battitura dell'utente, angolazione deldispositivo, battiture e pressione.3. Intelligenza del dispositivo: connessioni note e nuove connessioni, posizione einterazioni di rete di dispositivi specifici.4. Behavioral Trust Alliance: autenticazione di utenti connessi (comportamento, ecc).

Rilevamento delle minacce

Rilevamento minacce utenteDalle minacce interne all'abuso di privilegi egestione fino agli hacker, è emersa la tecnologiadi intelligenza artificiale per rilevare icambiamenti nel modo in cui gli utentiinteragiscono nell'ambiente IT e descrivere leloro caratteristiche comportamentalinell'ambiente di attacco.Alcuni software utilizzano il proprio AI per ilrilevamento delle minacce basato sull'utente.

Nello specifico, l'azienda mappa diversi account utente (VPN, e-mail di lavoro, archiviazionecloud personale) e identificativi correlati (come nomi utente e indirizzi e-mail) sulle identitàdegli utenti effettivi per stabilire benchmark comportamentali completi e file di configurazionedegli utenti. Inoltre, AI mira ad evolversi nel tempo per il rilevamento delle minacce attuali efuture. Gli analisti addestrano il sistema durante il normale processo di indagine e raccolgonoi dati dalla base di clienti estesa dell'intera piattaforma per la formazione sulle minacce. Sipuò anche configurare il modello per l'auto-riparazione attraverso continue regolazioni senzaintervento manuale.Rilevamento sul dispositivo della terminazione della catena tra gli endpointL'ascesa dei dispositivi mobili nelle aziende ha inaugurato una nuova era di minacce allasicurezza informatica e ha cambiato la natura della sicurezza degli endpoint. Le aziende disolito gestiscono gli endpoint tradizionali, come i laptop, e ora gli "amministratori di sistema"mobili sono gli utenti finali. Qualunque tipo di utente, che si tratti di dipendenti, consumatori ohacker, useranno servizi come download, applicazioni, canali di comunicazione e interazionidi rete. Inoltre, le applicazioni si trovano solitamente nei propri contenitori, il che limita latradizionale gestione delle patch. Questa configurazione ha come obiettivo di persisterefornendo vulnerabilità di accesso root, compromettendo così l'intero dispositivo ed evitandoefficacemente la rete aziendale. Pertanto, la protezione degli endpoint mobili deveproteggere l'intera kill chain, dai tentativi di phishing di contraffare applicazioni o Internet avari tipi di attacchi dannosi. In questo caso, l'amministratore applica l'apprendimentoautomatico a ciascun vettore di attacco, invece di distribuire un sistema di rilevamentodiverso per ciascun vettore di attacco, al fine di prevedere la probabilità che un dato puntodel sistema di minacce interattive subentri.

Sicurezza attiva in un ambiente disconnesso

Man mano che dati e dispositivi penetrano nel mondo fisico, la capacità di proteggere e

Page 118: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

ridurre il tempo medio di rilevamento e risposta diventaun problema di connettività e potenza di calcolo.Un'infrastruttura tecnica sempre più complessa significamaggiori richieste per la sicurezza e l'efficienza delleloro operazioni. Queste infrastrutture possonorealizzare il valore dei dati in ambienti mission-criticalcome aviazione, energia, difesa e affari marittimi. Inquesti ambienti, le applicazioni di intelligenza artificialea più alta intensità di calcolo sono ancora agli inizi, ma continuano a emergere nuovetecnologie in grado di promuovere la sicurezza di script, file, documenti e analisi del malwarebasati sull'apprendimento automatico attraverso il supporto locale.

DarkTRACE

L’azienda Darktrace fornisce un "sistemaimmunitario aziendale" che può essereimplementato nella rete aziendale per monitorarele anomalie di rete. Una volta che si verifica uncomportamento sospetto all'interno della rete,Darktrace avviserà il responsabile IT e, senecessario, Darktrace attiverà automaticamenteun comportamento protettivo per rallentare

l'attacco. Da un livello base, Darktrace non deve solo monitorare tutto il traffico che passaattraverso la rete aziendale, ma anche distinguere quali sono attività normali e quali sonodannose.

Questi tipi di software applicativi sono i tipici usati per rassicurare i Trading delle criptovaluteo azioni online.

Passare all'infrastruttura di cloud computingPoiché i sistemi di intelligenza artificiale e apprendimento automatico sono ora basati susoftware, è facile migrare all'infrastruttura di cloud computing. Ad esempio, il softwareantivirus richiede una buona connessione Internet per confrontare le minacce in tempo realee mantenere aggiornato il database.

Utilizzando un software di apprendimento automatico intelligente per il monitoraggio, leorganizzazioni possono ottenere servizi di sicurezza di rete sicuri nel proprio ambiente dicloud computing e prevenire l'infiltrazione di software dannoso.

La necessità dell’AI è sempre in fase di aumento

Ci sono altri casi d'uso più piccoli che possono essere utilizzati per applicare l'apprendimentoautomatico e l'apprendimento profondo alle esigenze di sicurezza informatica, tra cui:• Generazione e analisi di query di big data• Risposta autonoma

Page 119: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

• L’utilizzo da Trading bot (Automazione della compravendita delle azioni o valutevirtuali)• Classificazione del malware• Classificazione degli attacchi (sconosciuta, interna, continua)• Autoriparazione del prodotto• Comprensione dei dati della macchina (oltre 800 diversi tipi di apparecchiature)• Analisi del traffico crittografata• Analisi della conformità alle policy• Assicurazione contro i rischi informatici• Maggiore due diligence sui rischi informatici (prima di fusioni e acquisizioni)

Sebbene l'apprendimento automatico abbia un grande potenziale, non è una panacea, èsolo uno strumento. L'intelligenza artificiale dipende dalla qualità dei dati e, in termini disicurezza, ciò significa non solo big data, ma anche dati in tempo reale in più lingue e,soprattutto, buoni dati. Il suo successo richiede la collaborazione tra esperti di sicurezza edata scientist.Nonostante gli elevati requisiti di marketing, la realtà è che l'ambiente di sicurezza aziendaleè una rete enorme e dinamica e i manager devono monitorare, verificare e aggiornarecostantemente in base a vettori di minacce interne ed esterne continue e imprevedibili.L'intelligenza artificiale ha introdotto vari miglioramenti nella capacità di rilevare, indagare erispondere alle minacce, ma è una combinazione di personale e tecnologia che può davverogestire una gamma completa di minacce in un ambiente di sicurezza in continua evoluzione.

Sitografia

SITI UFFICIALIhttps://academic.hep.com.cn/skld/CN/book/browseBookList.do https://www.csdn.net/?spm=1001.2101.3001.4476

Testi CybersecurityIl Futuro della Cybersecurity in Italia: Ambiti Progettuali Strategici Istituto Italiano di Cybersecurity, una buona notizia per la sicurezza: sfide e obiettivi

Analisi AziendeL'Intelligenza Artificiale nell'Industria 4.0

Storia AIhttp://www.qstheory.cn/dukan/qs/2019-02/16/c_1124114625.htm

Matematicahttps://www.zhihu.com/question/356140477

Page 120: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Machine-learning AlgorithmsDetect Malicious Threats that

Evade Traditional IDSRobert Catalin Paun

AbstractLe reti informatiche sono ormai parte integrante della vita moderna e, con la crescentequantità di pericoli in rete, ciò ha reso la sicurezza informatica un’area di ricerca di vitaleimportanza. Qui entrano in gioco gli IDS (Intrusion Detection System), che monitorano lostato di software e hardware facenti parte di una rete. Nonostante gli anni di sviluppo, gli IDSattuali si trovano ancora in difficoltà a stare al passo e ad arrivare ad uno stato in cui i falsiallarmi siano pochi e riescano a rilevare attacchi sconosciuti. Per risolvere i suddettiproblemi, molti ricercatori si sono concentrati sullo sviluppo di IDS che si basino sul MachineLearning, in particolare Deep Learning. Gli algoritmi basati sul Machine Learning sono ingrado di trovare autonomamente le differenze fra i dati normali e anormali con una grandeprecisione e in aggiunta sono molto generalizzabili, il che li rende perfetti per rilevareminacce sconosciute.

1 IntroduzioneL’influenza delle reti informatiche è innegabile sulla vita moderna, rendendo la sicurezzainformatica una necessità ed un importantissimo campo di ricerca. Gli strumenti principali acui si appoggia la sicurezza informatica sono gli antivirus, i firewall e gli Intrusion DetectionSystem (IDS). L’argomento principale trattato da questo studio sono gli IDS, in particolareapplicati all’Insider Threat Detection (ITD).

Gli IDS sono applicazioni o dispositivi hardware che monitorano un sistema o unarete, al fine di rilevare attività indesiderata. Le possibili violazioni sono segnalate ad unamministratore o raccolte utilizzando un sistema Security Information and EventManagement (SIEM), che combina output da più sorgenti e usa tecniche di filtraggio perdistinguere i falsi allarmi dalle minacce. La classificazione più comune degli IDS è fra host-based (HIDS) e network-based (NIDS). La differenza sta nelle informazioni monitorate: unHIDS monitora ad esempio file di sistema all’interno di un computer, mentre un NIDSmonitora il traffico in ingresso nella rete e sono piazzati in punti strategici, in modo daanalizzare tutto il traffico di tutti i dispositivi collegati alla rete, essendo spesso combinatecon altre tecnologie, come le reti neurali, per permettere una maggiore capacità edefficienza. È inoltre possibile classificare gli IDS in base al tipo di approccio usato per lerilevamenti. Le varianti più conosciute sono: quella basata sulla firma (signature-based),quella basata sulle deviazioni dal modello di traffico standard (anomaly-based), che sfrutta il

Page 121: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

machine learning, e quella basata sulla reputazione (reputation-based), ovvero un punteggioche indica quanto un’azione sia sospetta. Gli IDS si limitano a riconoscere le minacce, peròesistono sistemi analoghi in grado di rispondere ad esse, chiamati Intrusion PreventionSystem (IPS).

Il primo IDS venne proposto nel 1980[1]. Da allora sono nati numerosi IDS, chetuttavia soffrono ancora di un’alta percentuale di falsi positivi, i quali possono causareproblemi per l’amministratore e far passare inosservati attacchi. Un’altra problematica degliIDS classici è che non sono in grado di rilevare attacchi fino ad allora sconosciuti. Il velocecambiamento dell’ambiente digitale fa sì che nuovi tipi di attacchi emergano continuamente.Ciò ha portato molti ricercatori a concentrare i loro sforzi sullo sviluppo di IDS con un rateo difalsi positivi più basso e in grado di riconoscere attività sospetta sconosciuta. Con questoscopo entrano in gioco gli IDS che basano il loro funzionamento sul Machine Learning. IlMachine Learning è un ramo dell’intelligenza artificiale che permette di estrapolareautomaticamente informazioni rilevanti da enormi dataset. Con una quantità sufficiente diallenamento, gli IDS basati sul Machine Learning sono in grado di raggiungere risultatisoddisfacenti e la loro grande generalizzabilità fa sì che riescano anche a rilevare minaccesconosciute fino a quel momento. Inoltre, basandosi su conoscenze non ancora consolidate,come i signature-based IDS, sono facili da progettare e sviluppare.

A causa della loro natura, gli attacchi da parte di un insider sono estremamentedifficili da rilevare, dato che provengono da utenti interni alla rete che hanno accessoautorizzato ad essa. Gli insider possono essere divisi in 3 categorie: utenti che utilizzano iloro privilegi amministrativi a scopo doloso, utenti “infiltrati” che commettono azioni illegaliper conto di terzi, e utenti che commettono errori involontari, i quali possono esserericondotti ad un attacco da parte di insider.[4] In base al tipo di attività condotta, si possonodividere questo tipo di attacchi in altre 3 categorie: IT sabotage, vale a dire ildanneggiamento volontario delle proprietà di una istituzione, furto di proprietà intellettuale,ovvero il furto di informazioni sensibili o non divulgate al pubblico, e frode, ossia aggiunta,modifica o eliminazione non autorizzata di dati.[5]

Gli ITD hanno attratto molta attenzione nel corso dell’ultimo decennio, a causa dellaporzione dei crimini digitali che compone e dell’impatto che un attacco da parte di insider hasulle istituzioni. Gli approcci già esistenti(6) hanno dimostrato prestazioni accettabili, tuttavia imodelli di shallow learning non sono in grado di catturare tutte le sfaccettature delcomportamento degli utenti. Qua entra in gioco il Deep Learning, capace di riconoscere eapprendere i modelli di comportamento degli utenti grazie alla sua struttura a livelli nascosti.Nonostante l’adattabilità degli algoritmi Deep Learning, sono ancora presenti diverseproblematiche a riguardo, legate alle caratteristiche del particolare tipo di attacco. L’impiegodel Deep Learning è ancora poco esplorato nel campo, perciò questo studio si occupa ditrattare gli sviluppi attuali e le possibili direzione future.

2 Deep learning e applicazioni

2.1 Deep Learning

Grazie ai notevoli risultati ottenuti in campi come il riconoscimento vocale, la visioneartificiale e l’elaborazione del linguaggio naturale[7][8][9], il Deep Learning ha dominato l’ambito

Page 122: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

del Machine Learning negli ultimi anni. A differenza dei modelli tradizionali di MachineLearning, quelli Deep Learning sono in grado di apprendere caratteristiche di dataset conuna quantità minima di intervento umano.

I modelli Deep Learning adottano una struttura multistrato dove gli strati più viciniall’input catturano caratteristiche generali, mentre quelli più vicini all’output catturanocaratteristiche più astratte. La struttura si basa su quella delle reti neurali artificiali.

Questi modelli possono essere classificati in 4 gruppi, in base all’architetturautilizzata: (1) Deep Feedforward Neural Network (DFNN), che comprende modelli compostida più strati, (2) Convolutional Neural Network (CNN), dove ai neuroni individualicorrispondono regioni di sovrapposizione con altri neuroni, (3) Recursive Neural Network(RvNN), che sfruttano un approccio ricorsivo della struttura, (4) Recurrent Neural Network(RNN), il quale mantiene uno stato interno nascosto che permette la cattura di informazionisequenziali.

Data la crescita estremamente veloce del campo del Deep Learning, nuove strutturevengono continuamente proposte.

2.2 Deep Learning nel rilevamento di anomalie

La rilevamento delle anomalie è l’identificazione di eventi dissimili da altri, ed ha numeroseapplicazioni, a partire dal rilevamento di intrusioni alla videosorveglianza.[10] Gli attacchi daparte di insider possono essere visti come un tipo di anomalia. Tuttavia, nonostante lavarietà di approcci di rilevamento delle anomalie, i sistemi basati sul Deep Learning nonsono necessariamente in grado di rilevare attacchi da parte di insider, a causa di alcunecaratteristiche che verranno esplorate nella sezione successiva.

I sistemi di rilevamento delle anomalie possono essere divisi in 3 gruppi, in base aquanto i dati di allenamento siano preventivamente classificati: supervisionati, semi-supervisionati e non supervisionati. Nei casi in cui siano presenti sia dati normali cheanomali, si preferisce un approccio supervisionato all’addestramento del sistema. Tuttavia èuno scenario molto più verosimile la presenza di una grande quantità di dati normali e unacarenza di dati anomali, perciò l’approccio semi-supervisionato è preferibile. Nel caso i datinon siano catalogati, è necessario un approccio non supervisionato per estrapolarecaratteristiche che possano descrivere le anomalie.

Nonostante il numero considerevole di approcci Deep Learning proposti, l’incrementodi prestazioni è meno marcato nel campo del rilevamento delle anomalie di quanto non sia incampi come la visione artificiale. Il principale motivo è che per modelli che mirano a risolvereproblemi molto complessi è necessaria una grande mole di dati, quasi impossibile daraccogliere nell’ambito del rilevamento delle anomalie.

3 Stato attualeLe minacce interne rappresentano uno degli attacchi più complessi da gestire e diconseguenza hanno attirato una grande attenzione. Inoltre, l’impiego dei modelli DeepLearning applicato a ITD non è esplorato a sufficienza, e gli studi a riguardo sono pochi esuperficiali. Questa sezione punta a spiegare il perché dell’utilizzo dei modelli Deep Learninge ad introdurre dataset di minacce interne comunemente usati, descrivendo le loro

Page 123: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

caratteristiche.

Page 124: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Tabella 1. Attività sui file di log

File Tipo di operazione (con esempio)

logon.csv

Accesso nei giorni feriali (utente accede ad un dispositivo nelle ore lavorative di ungiorno feriale)

Accesso fuori orario lavorativo nei giorni feriali (utente accede ad un dispositivo fuoridalle ore lavorative)

Accesso nei giorni festivi (utente accede ad un dispositivo durante un giorno festivo)

Disconnessione (utente si disconnette da un dispositivo)

email.csv

Invio email interna (utente invia email ad un altro utente all’interno della rete)

Invio email esterna (utente invia email ad un altro utente all’esterno della rete)

Visualizzazione email interna (utente visualizza una email proveniente dall’interno dellarete)

Visualizzazione email esterna (utente visualizza una email proveniente da fuori la rete)

http.csv

Visita WWW (utente visita un sito web)

Download WWW (utente scarica un file da un sito web)

Upload WWW (utente carica un file su un sito web)

device.csv

Collegamento di un dispositivo nei giorni feriali (utente collega un dispositivo alla retedurante un giorno feriale, nel corso delle ore lavorative)

Collegamento di un dispositivo fuori orario lavorativo nei giorni feriali (utente collega undispositivo alla rete durante un giorno feriale, ad di fuori delle ore lavorative)

Collegamento di un dispositivo nei giorni festivi (utente collega un dispositivo alla retedurante un giorno festivo)

Disconnessione di un dispositivo (utente disconnette un dispositivo dalla rete)

file.csv

Apertura di file doc/jpg/txt/zip (utente apre un file)

Copia di file doc/jpg/txt/zip (utente copia un file)

Modifica di file doc/jpg/txt/zip (utente modifica un file)

Cancellazione di un file doc/jpg/txt/zip (utente elimina un file)

Tabella 2. Statistiche dataset CERT r4.2 e r6.2[11][12]

numero utenti numero insider numero attivitànumero attivitàmalevole

r4.2 1000 70 32.770.227 7323

r6.2 2500 5 135.117.169 470

Page 125: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

3.1 Dataset CERT

Gli autori presentano dei dataset costruiti a partire da esperimenti circoscritti e casi reali.Gran parte degli studi più recenti adottano i dataset CMU CERT [13] per valutare gli approcciutilizzati. Questo scritto introduce i dataset CERT al fine di esplorare le sfide da affrontarenell’Insider Threat Detection.

La divisione CERT del Software Engineering Institute dell’università Carnegie Mellongestisce un database contenente oltre 1000 studi di casi concreti di Insider Threat e si èoccupata di generare una collezione di dataset usando casi in cui l’attacco era di tipomasquerade o traitor. Questidataset consistono in 5 file di logche nel corso del tempo traccianole attività degli impiegati diun’organizzazione simulata. Questifile sono logon.csv, contenente leinformazioni relative alle operazionidi accesso e disconnessione,email.csv, dove vengono registratele operazioni legate all’invio e laricezione di email, http.csv, cheregistra le attività effettuare sulweb, device.csv, nel quale sonoregistrati gli utilizzi di dispositivirimovibili, come le chiavette USB,file.csv, composto dalle attivitàsvolte su file (come lettura escrittura). La tabella 1 schematizzai contenuti di ciascun file, dandoesempi di attività.

Esistono diverse versionidei dataset, in base a quando sono stati creati. Le 2 versione più utilizzate sono r4.2 e r6.2,le quali informazioni sono reperibili nella tabella 2. La versione r4.2 è una più densa, a causadel grande numero di insider e di attività malevola, mentre la versione r6.2 è piùrappresentativa di quella che potrebbe essere una situazione realistica. In media, il numerodi attività di ogni utente si aggira intorno alle 40.000, sparse su un periodo di 18 mesi. Inparticolare, il dataset r6.2 simula 5 scenari di attacco da parte di insider.

❖ L’utente ACM2278, che non usa dispositivi rimovibili, né accede fuori orariolavorativo, accede fuori orario, utilizza un dispositivo rimovibile e effettua l’upload difile su wikileaks.org.

❖ L’utente CMP2946 effettua ricerche su offerte di lavoro. Prima di lasciare lacompagnia impiega un dispositivo rimovibile e copia dei file.

❖ L’amministratore PLJ1771 scarica un file riconosciuto come keylogger e tramite undispositivo rimovibile lo trasmette al computer del supervisore. Il giorno successivo siregistra un accesso anomalo da parte del supervisore, e viene spedita una grandequantità di mail allarmanti.

❖ L’utente CDE1846 effettua l’accesso al computer di un altro utente e cerca espedisce file tramite mail a se stesso.

❖ L’utente MBG3183 effettua l’upload di documenti su Dropbox.

Page 126: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Tabella 3. Dettagli dataset r6.2

ACM2278 CDE1846 CMP2946 MBG3183 PLJ1771

Numero di attività 31370 37754 61989 42438 20964

Numero di attivitàmalevole

22 134 242 4 18

Numero di sessioni 316 374 627 679 770

Numero di sessionicon attività malevola

2 9 53 1 3

La tabella presentata sopra riassume il numero di attività e accessi, sia normali che malevoli,da parte dei 5 insider. Si può osservare come le attività malevole siano un numero di unordine di grandezza molto inferiore rispetto al totale. Potrebbe essere paragonato al cercareun ago in un pagliaio, il che rende pressoché impossibile definire manualmente dellecaratteristiche o utilizzare modelli di shallow learning per questo tipo di problemi, data anchela natura diversa dei possibili attacchi.

3.2 Impiego del Deep Learning per Insider Threat Detection

Oltre alle molte proprietà molto utili dei modelli Deep Learning, il suo impiego per l’ITDderiva da alcuni potenziali vantaggi, riassunti in seguito.

❖ Representation Learning: il vantaggio più significativo si basa sulla capacità diestrapolare automaticamente caratteristiche necessarie per il rilevamento. Ilcomportamento in un ambiente digitale è complesso e non lineare, perciòevidenziare manualmente caratteristiche è difficile e poco efficiente al fine diestrapolare informazioni a riguardo. I modelli shallow sono molto limitati quando sitratta di lavorare su dati riguardanti comportamenti, a causa del singolo stratointermedio che avrebbe il compito di ricavare caratteristiche astratte. Al confronto, imodelli Deep sono in grado di sfruttare la loro struttura multi-strato per apprenderecaratteristiche, utilizzando procedure generalizzate. È quindi naturale impiegaremodelli Deep Learning per studiare comportamenti e catturare precisamente leintenzioni degli utenti, in particolare quelle malevoli.

❖ Sequence Modeling: i modelli Deep learning hanno dimostrato prestazionipromettenti nella modellazione di dati sequenziali, come video e linguaggio. [14] Datala naturalezza nel registrare le attività degli utenti in modo sequenziale, l’impiego dimodelli Deep ha molto potenziale nel miglioramento delle prestazioni nell’ITD.

❖ Heterogeneous Data Composition: i modelli Deep hanno già ottenuto risultatinotevoli nelle operazioni che richiedono la gestione di dati eterogenei, comel’assegnazione di sottotitoli a immagini.[15] Nell’Insider Threat Detection è importantegestire altre informazioni aggiuntive all’attività degli utenti, come i loro profili e lastruttura delle informazioni all’interno dell’organizzazione. Si suppone che un’efficacecombinazione di tutti questi dati faccia ottenere prestazioni migliori rispetto all’utilizzodi uno solo di essi. I modelli Deep Learning sono più adatti a combinare datieterogenei rispetto ai modelli Machine Learning tradizionali.

Page 127: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

3.3 Modelli impiegati per Insider Threat Detection

3.3.1 Deep Feedforward Neural Network (DFNN)

Uno dei modelli classici di Deep Learning. Questo tipo di reti neurali sono in grado diapprendere rappresentazioni di vario grado di astrazione grazie alla loro struttura multi-strato. Vari studi hanno proposto l’uso di DFNN per Insider Threat Detection. Un approccioall’utilizzo di questa tecnologia sono i Deep Autoencoder. Un Deep Autoencoder consiste inun encoder, che codifica i dati di ingresso, e un decoder, il cui compito è ricostruire i dati diinput a partire dai dati codificati. L’obiettivo è quello di riuscire a ricostruire il più fedelmentepossibile i dati di ingresso. Nel caso dell’ITD, un’attività malevola dovrebbe avere un erroredi ricostruzione relativamente alto, considerando che la maggior parte dell’attività è benigna.Questo errore può quindi essere utilizzato come punteggio in un IDS reputation-based al finedi identificare questi attacchi.

3.3.2 Recurrent Neural Network (RNN)

Le reti neurali ricorrenti sono usate principalmente per la modellazione di dati sequenziali. LeRNN standard sono difficili da allenare su sequenze lunghe, a causa di problemi diesplosione o scomparsa di gradienti.[17][18] Attualmente le varianti del modello RNN piùutilizzate per la modellazione di sequenze lunghe sono 2: Long Short-Term Memory (LSTM)e Gated Recurrent Unit (GRU). Data la natura sequenziale dell’attività registrata su uncomputer, molti approcci RNN sono stati proposti per modellare il comportamento degliutenti.[19][20] L’idea di base è addestrare il modello RNN affinchè possa predire la prossimaattività o serie di attività di un utente. Se le attività effettive svolte non devianosignificativamente dalla predizione, si considera l’azione come normale.

3.3.3 Convolutional Neural Network (CNN)

Il modello CNN ha ottenuto ottimi risultati nel campo della visione artificiale nel corso degliultimi anni. Un CNN classico consiste in 3 strati: uno strato convoluzionale, seguito da uno diraggruppamento, e infine uno dedicato alle predizioni. I primi 2 strati assicurano che lecaratteristiche estratte siano invariate anche a seguito di rotazioni e traslazioni, il che sipresenta estremamente utile per la classificazione di immagini. I CNN moderni hanno unastruttura molto più profonda, grazie all’aumento dei livelli di ciascun tipo. Uno studio recentepropone un metodo di autenticazione basato su CNN, che analizza le caratteristiche deicomportamenti legati all’utilizzo del cursore[21]. L’approccio proposto rappresenta ilcomportamento tipico del cursore da parte dell’utente come un’immagine. Nel caso di furtodi identità, l’inconsistenza dei pattern di movimento del mouse possono essere un buonindicatore dell’evento.

Page 128: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

3.3.4 Graph Neural Network (GNN)

Questo modello, in grado di modellare le relazioni fra nodi, sta acquisendo sempre piùpopolarità nel campo di analisi dei grafi. Un GNN ampiamente utilizzato è il GraphConvolutional Network (GCN), che impiega strati convoluzionali applicati ai grafi. In genere, inodi nei grafi sono collegati localmente, affinché il layer convoluzionali sia in grado diaggregare le informazioni riguardanti le caratteristiche di un nodo con quelli vicini.

Uno studio recente adotta un approccio GCN al rilevamento di insider[22]. Proponel’utilizzo di un metodo basato sul graph embedding, chiamato log2vec. Log2vec costruisceprima di tutto un grafo eterogeneo, contenente le entries presenti nei file di log.Successivamente, il grafo viene semplificato, attraverso il graph embedding, in vettori abassa dimensionalità. Viene infine applicato un algoritmo di clustering per separare le attivitànormali e quelle malevoli in cluster diversi.

4 ProblematicheNonostante i progressi ottenuti nel campo dell’ITD, esistono ancora varie problematichelegate all’impiego del Deep Learning. Questo paragrafo si occupa di descrivere le 10problematiche maggiori.

❖ Dati sbilanciati: nel mondo reale il numero di attività malevoli sono estremamenterare, perciò i dataset utilizzati per addestrare sistemi di Insider Threat Detectionhanno un numero estremamente sbilanciato di attività anomale e attività normali. Ciòrende l’allenamento molto lento e difficile, dato che i modelli Deep Learningrichiedono grandi quantità di dati catalogati per funzionare efficientemente. Datal’impossibilità di raccogliere un grande numero di esempi di attività malevola, ènecessario trovare un modo per far leva sul numero limitato di dati esistenti peraddestrare opportunamente questi modelli.

❖ Informazioni temporali riguardanti gli attacchi: la maggioranza degli approcciesistenti si concentrano sul rilevamento di tipi di attività sospette, come la copia difile. Tuttavia non è sufficiente riconoscere il tipo di attività per definire se si tratta diun attacco o meno: un’azione vista come normale durante le ore lavorative, come lacopia di file, può essere un buon indicatore di attacco se effettuata in orari anomali.Le informazioni temporali hanno perciò un ruolo importante nell’analisi deicomportamenti al fine di rilevare Insider Threat. Tuttavia la loro implementazionerisulta ancora problematica.

❖ Combinazione di dati eterogenei: oltre alle informazioni temporali, l’impiego divarie sorgenti di informazioni è critico al fine di migliorare l’efficacia del rilevamento diInsider Threat. Ad esempio, un utente che copia file abitualmente, prevedendo unpossibile licenziamento, inizia a copiare file contenenti credenziali su un dispositivorimovibile potrebbe essere identificato preventivamente, attraverso le informazioni diprofilo, come il punteggio psicometrico, o le interazioni.

❖ Attacchi velati: al momento la maggioranza degli approcci all’ITD identificano questiattacchi tramite le anomalie che presentano rispetto alle attività normali. Questimodelli vengono addestrati su dataset di attività normale e identificano attività con uncerto grado di diversità da quelle studiate. Tuttavia non è sicuro si possa registrareuna sostanziale differenza nel comportamento degli insider: al fine di evitare diessere rilevati, questi attacchi sono spesso sottili, velati, il che li rende molto simili

Page 129: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

all’utilizzo normale.❖ Adattabilità degli attacchi: come tutti gli attacchi informatici, quelli provenienti da

insider si evolvono continuamente. La scarsità di dati di addestramento nell’ambitorende molto inefficiente l’addestramento con dati catalogati e il riaddestramento nonrende sempre risultati accettabili in tempi utili. Uno degli obiettividell’implementazione di modelli Deep Learning è proprio il miglioramento adattivo eautomatico delle prestazioni delle minacce di questo tipo.

❖ Rilevamento a grana fine: comunemente vengono rilevate sessioni che contengonoattività malevoli. Tuttavia, gli utenti possono eseguire un numero enorme di attivitàdurante una sessione, e fra esse è difficile identificare quali sono quelle dannose.Identificare quali sono queste attività quando sono estremamente poche in sessionicomposte da molte altre attività è critico per un efficiente rilevamento dei pericoli, maparticolarmente difficile. Ciò deriva dal numero limitato di informazioni riguardanti leattività svolte che vengono registrati, vale a dire il tipo e il momento dell’attività.Senza un numero maggiore di informazioni, risulta molto difficile ottenere un rateo dirilevamento accettabile.

❖ Rilevamento preventivo: gli approcci attuali si concentrano sul rilevamento al fine dirisalire all’insider. Ciò significa che il danno è già stato fatto e l’organizzazione ha giàsubito perdite. Uno degli obiettivi è perciò quello di riuscire a rilevare in anticipoquesto tipo di attività, per poter provare a prevenire i danni. Esistono vari approcciche suggeriscono la difesa da attacchi provenienti da insider utilizzando meccanismitipici di sicurezza informatica[23]. Tuttavia non esistono, al momento, approcci basatisul Machine Learning in grado di rilevare preventivamente questo tipo di attacco.Identificare in anticipo gli utenti con un’alta propensione allo svolgimento di attivitàdannose è estremamente importante per ridurre le perdite subite dalle organizzazionisoggette ad attacchi da parte di insider.

❖ Comprensibilità: nonostante i modelli Deep Learning abbiano dimostratoprestazioni promettenti in vari campi, il motivo del loro funzionamento non è ancoradel tutto chiaro. È necessario comprendere perché, quando un utente vieneidentificato come insider, il sistema abbia fatto questa rilevamento. Dato che questimodelli non hanno il 100% di precisione nelle rilevamenti, i falsi positivi possonocondizionare gravemente la fiducia degli impiegati verso l’organizzazione. Diconseguenza, risulta essenziale comprendere a pieno il motivo dei risultati, in mododa prendere provvedimenti con la sicurezza di non star agendo su falsi positivi.

❖ Mancanza di banchi di prova: attualmente non esistono dataset composti da casireali disponibili pubblicamente. I dataset CERT provano ad offrire dei set contenentiinformazioni simili a quelle che potrebbero essere prodotte realmente, tuttavia esisteancora un divario tra i dati sintetici e quelli relativi a scenari reali.

- Complessità dei dati: data la natura sintetica dei dati presenti dei datasetCERT, la maggioranza delle attività registrate sono generate casualmente ehanno un livello di complessità limitato. Ad esempio i siti web a cui vieneeffettuato l’accesso sono pochi, per cui la visita a piattaforme come wikileakspuò essere facilmente identificata, e le informazioni temporali sono generatecasualmente. Inoltre non esistono pattern abituali. Ciò porta questi dataset adessere poco adatti allo studio dello sfruttamento delle informazioni temporalial fine della rilevamento di attacchi.

- Complessità degli attacchi: gli scenari di attacco presentati nei dataset sonoestremamente limitati quando comparati con i casi reali. Ciò porta gli approcci

Page 130: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

che dimostrano un’efficacia accettabile sui dataset CERT a essere pocoapplicabili nella realtà. Si presentano problemi anche sugli scenari presentati in questi set, dato cheil livello di difficoltà nell’identificazione delle minacce è diverso per ciascuncaso. Tutto questo porta a problemi nel bilanciare il rateo di rilevamento deiveri positivi a quello dei falsi positivi. Infatti, all’aumentare della percentuale dirilevamento dei veri positivi, il numero di falsi positivi registrati aumenta moltorapidamente su percentuali alte. Tuttavia una parte importante dei veri positivirimane molto difficile da rilevare senza portare il numero di falsi positivi aquantità enormi.

❖ Mancanza di metri di valutazione dell’efficacia: le metriche più comunementeutilizzate per valutare l’efficacia dei modelli Deep Learning sono il rateo di veri positivi(TPR), il rateo di falsi positivi (FPR), precisione e proporzione di veri positiviidentificata correttamente. Con l’ausilio di TPR e FPR è possibile costruire un graficoper definire graficamente il compromesso fra veri positivi e falsi positivi. Idealmente, ilvalore del TPR dovrebbe essere 1, mentre quello del FPR 0. Attualmente la curvadel grafico, chiamata receiver operating characteristics (ROC), viene utilizzata percomparare algoritmi di rilevamento. L’altra metrica in uso è la curva precision-recall(PR). Questa curva viene usata per valutare le classificazione sbilanciate. Nel casodell’ITD, la curva PR è più adatta alla valutazione di un algoritmo, in quanto siconcentra più sulla performance dei catalogatori in casi di dati sbilanciati. Tuttavia idati sono così tanto sbilanciati che non è chiaro se una di queste 2 curve siaeffettivamente adatta alla valutazione nel caso di Insider Threat Detection.

5 Direzioni futureLe problematiche esplorate nel paragrafo precedente portano a molte opportunità dimiglioramento future. Di seguito alcuni dei temi più promettenti.

❖ Few-shot learning: il few-shot learning punta a classificare dati a partire da pochiesempi pre-catalogati.[24] Può essere esteso a casi più estremi, come il one-shotlearning[25] o il zero-shot learning[26]. Considerato il numero esiguo di insider, il few-shot learning risulta una scelta naturale nel campo dell’ITD. In base al modo diutilizzare i dati già in possesso, gli algoritmi few-shot possono essere sviluppati inmodo da poterli applicare all’ITD.

❖ Apprendimento auto-supervisionato: l’apprendimento auto-supervisionato mira adaddestrare un modello utilizzano etichette facilmente derivabili dai dati di input, senzala necessità di inserimento manuale di etichette. Nell’ambito dell’ITD, uno deipossibili sviluppi è l’ideazione di un’operazione di addestramento auto-supervisionatoin grado di mettere in evidenza le differenze fra i comportamenti normali e quelliostili.

❖ Deep Marked Temporal Point Process: il Deep Marked Temporal Point Process èun strumento matematico, impiegato per modellare pattern casuali di un eventodurante un lungo periodo di tempo. Data l’importanza delle dinamiche temporalinell’analisi del comportamento degli utenti, questo strumento si rivela adatto ancheall’impiego nel campo dell’ITD.

❖ Multi-model Learning: l’impiego di più modelli potrebbe essere benefico, grazie alla

Page 131: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

possibilità di combinare vari tipi di dati dell’utente, come quelli d’utilizzo e quellipsicologici. Ciò deriva dalla natura di un’azione che può essere normale o ostile inbase all’utente e alle sue relazioni con gli altri utenti.

❖ Identificazione preventiva di insider grazie a Deep Survival Analysis: SurvivalAnalysis è la modellazione dei dati dove il risultato è il tempo mancante al verificarsidi un evento interessato[27]. Se consideriamo il momento nel quale un insider effettuaun’azione ostile come evento interessato, si potrebbero applicare algoritmi di SurvivalAnalysis per predire quando ciò avverrà. In questo modo sarebbe possibile avere unavvertimento anticipato riguardo un potenziale attacco. Di recente sono statiimpiegati modelli di Deep Learning nell’ambito. Ciò ha il potenziale di prevenireattacchi da parte di insider grazie a delle previsioni basate sulle informazionitemporali.

❖ Deep Reinforcement Learning: il Deep Reinforcement Learning utilizza unapproccio a premi. Con una funzione di premio adatta, potrebbe essere possibileaddestrare un sistema a identificare accuratamente attacchi, anche adattivi. Ilproblema nell’applicazione è la complessità degli attacchi, il che rende difficileprogettare una funzione di premio adatta. In questo caso può essere impiegato unframework di Reinforcement Learning inverso, che si occupa di identificare unafunzione di premio in modo automatico, sulla base dei comportamenti degli insider.[28]

[29] Un’altra problematica è che tipicamente questo tipo di approccio richiede unagrande quantità di dati di addestramento, non disponibili nel caso di Insider ThreatDetection. Nonostante le varie sfide da affrontare, il Deep Reinforcement Learningpossiede una struttura molto solida che ha il potenziale di sbloccare ulteriori sviluppinel campo degli ITD.

❖ Maggiore comprensione dei modi di funzionamento: a differenza di alcuni sistemionline che non hanno un reale impatto sugli utenti, come il rilevamento di bot suisocial media, il campo di ITD mira ad individuare utenti pericolosi. Di conseguenza èestremamente importante comprendere il funzionamento del modello utilizzato. Ilmodo in cui vengono effettuate previsioni, che risulta estremamente difficile dacomprendere, se non con conoscenze molto specifiche, è un punto fondamentalenella costruzione di un modello di ITD affidabile e degno di fiducia.

❖ Sviluppo di banchi di prova: al fine di ottenere una buona capacità di rilevamentodi insider, dovrebbero essere impiegate informazioni provenienti da esseri umanicome base per l’addestramento. Tuttavia ciò presenta problemi di privacy econfidenzialità, il che porta i dataset pubblici ad essere molto limitati. Dall’altra parte,i dataset CERT, che sono i più impiegati, non sono abbastanza complessi dasimulare comportamenti umani. Di conseguenza, lo sviluppo di un banco di provaautentico è essenziale al miglioramento dei metodi di valutazione dei sistemi di ITD.

❖ Metri di valutazione: dato il numero molto limitato di insider, e di conseguenza diattività malevola, i metri di valutazione, come le curve ROC e PR descritte nelparagrafo 4, risultano non sufficienti alla valutazione delle performance. È ancora indibattito quali siano le metriche più applicabili, e se sia necessario lo sviluppo dinuovi metri.

Page 132: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

6 ConclusioneIn questo studio sono stati esplorati vari approcci all’ITD basati sul Deep Learning, ecategorizzati gli approcci esistenti in base al modello di apprendimento che adottano.Nonostante i progressi ottenuti negli ultimi anni, l’impiego del Deep Learning ai casi di ITDrisulta ancora poco esplorato, a causa di varie problematiche discusse nel paragrafo 4. Sonostate esplorate anche varie possibili direzioni future per lo sviluppo.

In conclusione, il tema dell’impiego del Deep Learning al problema degli ITD èancora giovane, ma con un ottimo potenziale di crescita in futuro.

Page 133: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Bibliografia / sitografia1. Anderson, J.P. Computer Security Threat Monitoring and Surveillance; Technical

Report; James P. Anderson Company: Philadelphia, PA, USA, 19802. Unsupervised Learning and Data Clustering | by Sanatan Mishra 3. CSO, CERT Division of SRI-CMU, and ForcePoint. 2018. 2018 U.S. State of

Cybercrime. Technical Report.4. L. Liu, O. De Vel, Q. Han, J. Zhang, and Y. Xiang. Second Quarter 2018. Detecting

and Preventing Cyber Insider Threats: A Survey. IEEE Communications SurveysTutorials 20, 2 (Second Quarter 2018), 1397–1417.

5. Ivan Homoliak, Flavio Toffalini, Juan Guarnizo, Yuval Elovici, and Martín Ochoa.2019. Insight Into Insiders and IT: A Survey of Insider Threat Taxonomies, Analysis,Modeling, and Countermeasures. 52, 2 (April 2019), 40.

6. Ameya Sanzgiri and Dipankar Dasgupta. 2016. Classification of Insider ThreatDetection Techniques. In Proceedings of the 11th Annual Cyber and InformationSecurity Research Conference (CISRC ’16). ACM, New York, NY, USA, 25:1–25:4.Classification of Insider Threat Detection Techniques | Proceedings of the 11thAnnual Cyber and Information Security Research Conference

7. Li Deng, Geoffrey Hinton, and Brian Kingsbury. 2013. New Types of Deep NeuralNetwork Learning for Speech Recognition and Related Applications: An Overview. InIEEE International Conference on Acoustics, Speech, and Signal Processing.

8. Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. 2016. Deep ResidualLearning for Image Recognition. In CVPR. 770–778. [1512.03385] Deep ResidualLearning for Image Recognition

9. Qi Liu, Matt J. Kusner, and Phil Blunsom. 2020. A Survey on ContextualEmbeddings. arXiv:2003.07278 [cs] (April 2020). [2003.07278] A Survey onContextual Embeddings

10. Varun Chandola, Arindam Banerjee, and Vipin Kumar. 2009. Anomaly Detection: ASurvey. Association for Computing Machinery 41, 3 (July 2009).

11. Insider Threat Test Dataset 12. [2005.12433] Deep Learning for Insider Threat Detection: Review, Challenges and

Opportunities13. J. Glasser and B. Lindauer. 2013. Bridging the Gap: A Pragmatic Approach to

Generating Insider Threat Data. In 2013 IEEE Security and Privacy Workshops. 98–104. Bridging the Gap: A Pragmatic Approach to Generating Insider Threat Data

14. Alex Graves. 2013. Generating Sequences With Recurrent Neural Networks.[1308.0850] Generating Sequences With Recurrent Neural Networks

15. Yong Cheng, Fei Huang, Lian Zhou, Cheng Jin, Yuejie Zhang, and Tao Zhang. 2017.A Hierarchical Multimodal Attention-Based Neural Network for Image Captioning. InProceedings of the 40th International ACM SIGIR Conference on Research andDevelopment in Information Retrieval (SIGIR ’17). ACM, New York, NY, USA, 889–892. A Hierarchical Multimodal Attention-based Neural Network for Image Captioning| Proceedings of the 40th International ACM SIGIR Conference on Research andDevelopment in Information Retrieval

16. Liu Liu, Olivier De Vel, Chao Chen, Jun Zhang, and Yang Xiang. 2018. Anomaly-Based Insider Threat Detection Using Deep Autoencoders. In 2018 IEEE

Page 134: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

International Conference on Data Mining Workshops (ICDMW). 3948. Anomaly-Based Insider Threat Detection Using Deep Autoencoders

17. Y. Bengio, P. Simard, and P. Frasconi. 1994. Learning Long-Term Dependencieswith Gradient Descent Is Difficult. Neural Networks, IEEE Transactions on 5, 2(1994), 157–166.The Vanishing/Exploding Gradient Problem in Deep NeuralNetworks

18. 7 Responses to What Is a Gradient in Machine Learning? 19. Jiuming Lu and Raymond K. Wong. 2019. Insider Threat Detection with Long Short-

Term Memory. In Proceedings of the Australasian Computer Science WeekMulticonference (ACSW 2019). Association for Computing Machinery, Sydney, NSW,Australia, 1–10. Insider Threat Detection with Long Short-Term Memory |Proceedings of the Australasian Computer Science Week Multiconference

20. Aaron Tuor, Samuel Kaplan, Brian Hutchinson, Nicole Nichols, and Sean Robinson.2017. Deep Learning for Unsupervised Insider Threat Detection in StructuredCybersecurity Data Streams. In AI for Cyber Security Workshop at AAAI 2017.[1710.00811] Deep Learning for Unsupervised Insider Threat Detection in StructuredCybersecurity Data Streams

21. Teng Hu, Weina Niu, Xiaosong Zhang, Xiaolei Liu, Jiazhong Lu, and Yuan Liu. 2019.An Insider Threat Detection Approach Based on Mouse Dynamics and DeepLearning. Security and Communication Networks 2019 (Feb. 2019), 3898951. AnInsider Threat Detection Approach Based on Mouse Dynamics and Deep Learning

22. Fucheng Liu, Yu Wen, Dongxue Zhang, Xihe Jiang, Xinyu Xing, and Dan Meng.2019. Log2vec: A Heterogeneous Graph Embedding Based Approach for DetectingCyber Threats within Enterprise. In Proceedings of the 2019 ACM SIGSACConference on Computer and Communications Security (London, United Kingdom).Association for Computing Machinery, New York, NY, USA. Log2vec | Proceedingsof the 2019 ACM SIGSAC Conference on Computer and Communications Security

23. Asaf Shabtai, Yuval Elovici, and Lior Rokach. 2012. A Survey of Data LeakageDetection and Prevention Solutions. Springer Science & Business Media.

24. Yaqing Wang, Quanming Yao, James Kwok, and Lionel M. Ni. 2020. Generalizingfrom a Few Examples: A Survey on Few-Shot Learning. [1904.05046] Generalizingfrom a Few Examples: A Survey on Few-Shot Learning

25. Li Fei-Fei, R. Fergus, and P. Perona. 2006. One-Shot Learning of Object Categories.IEEE Transactions on Pattern Analysis and Machine Intelligence 28, 4 (April 2006),594–611. One-shot learning of object categories | IEEE Journals & Magazine

26. Wei Wang, Vincent W. Zheng, Han Yu, and Chunyan Miao. 2019. A Survey of Zero-Shot Learning: Settings, Methods, and Applications. ACM Trans. Intell. Syst.Technol. 10, 2 (Jan. 2019), 13:1–13:37. A Survey of Zero-Shot Learning: Settings,Methods, and Applications: ACM Transactions on Intelligent Systems andTechnology: Vol 10, No 2

27. Ping Wang, Yan Li, and Chandan K. Reddy. 2017. Machine Learning for SurvivalAnalysis: A Survey. (Aug. 2017).

28. Andrew Y. Ng and Stuart J. Russell. 2000. Algorithms for Inverse ReinforcementLearning. In Proceedings of the Seventeenth International Conference on MachineLearning (ICML ’00). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA,663–670.

29. Min-hwan Oh and Garud Iyengar. 2019. Sequential Anomaly Detection Using InverseReinforcement Learning. In Proceedings of the 25th ACM SIGKDD International

Page 135: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Conference on Knowledge Discovery & Data Mining (KDD ’19). Association forComputing Machinery, Anchorage, AK, USA, 1480–1490.

Page 136: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

L' AI nell'era deicomputer quantistici

Mattia Bija

AbstractNell’ultimo decennio sono stati fatti incredibili progressi nello sviluppo dei computerquantistici. Tali computer, utilizzando i principi della meccanica quantistica, permettono dieffettuare calcoli anche in parallelo, in modo da raggiungere, in futuro, una velocità di calcoloche supererà quella dei più potenti supercomputer. Sono utilizzati soprattutto per quelleoperazioni in cui la complessità cresce esponenzialmente, come nella crittografia (adesempio, per la scomposizione in fattori primi), nelle simulazioni chimiche e fisiche onell’ottimizzazione degli algoritmi di ricerca. Attualmente, moltissimi ricercatori stannolavorando al loro utilizzo per migliorare le prestazioni dell'intelligenza artificiale. Verràintrodotto il funzionamento dei computer quantistici e saranno esposte le soluzioni piùinteressanti che li combinano con l'intelligenza artificiale.

1. IntroduzioneSebbene siamo ancora lontani da una implementazione su larga scala, sempre più aziende,governi e università stanno investendo nella ricerca sui computer quantistici. Questo avvieneperché i computer quantistici, grazie alle proprietà fisiche che sfruttano, promettono divelocizzare alcune tipologie di operazioni e di risolvere problemi computazionalmenteimpossibili per i computer classici. Nell’ambito degli algoritmi di ricerca, l’algoritmo diGrover[9] permette di aumentare quadraticamente la velocità di ricerca in un database.Oltretutto, rivoluzioneranno la cybersecurity, poiché faciliteranno la scomposizione in fattoriprimi[10] sulla quale si basano i moderni algoritmi di crittografia. Inoltre, si sta sviluppando unmetodo di crittografia teoricamente inviolabile[11]. Il campo più interessante è il loro utilizzonella fisica e nella chimica, in modo da velocizzare la creazione di nuovi farmaci o materiali.Perlopiù, potranno essere utilizzati insieme all’intelligenza artificiale, sia per velocizzare letecnologie già esistenti, sia per crearne di nuove.

2. Computer quantistici

Page 137: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Un computer quantistico è un computer che sfrutta le leggi della fisica e della meccanicaquantistica per l’elaborazione dei dati sfruttando come unità di informazione il qubit al postodel bit. A differenza dei bit utilizzatinei computer classici, checodificano soltanto gli stati 0 e 1, unqubit, che codifica lo statoquantistico in cui si trova unaparticella o un atomo, ha anche unterzo stato intermedio dove puòessere contemporaneamente sia 0che 1. Questa particolare proprietà,definita principio di sovrapposizionedegli stati, permette ad un qubit diessere in parte 1 e in parte 0 inbase ad alcune probabilità. Nella teoria, un qubit è la somma vettoriale dei vettori complessi |0> e |1> [12], che puòessere descritto utilizzando la rappresentazione della sfera di Bloch [13]. Quest'ultima, ècomposta dagli assi x, y e z, che permettono di rappresentare la posizione di un qubit al suointerno. Il vettore |0> punta verso l’asse z, mentre |1> è opposto all’asse z. Un genericostato quantistico ¿ψ>¿ è dato dalla formula ¿ψ>¿α∨0>+ β∨1>¿, dove α e β sono deicoefficienti, chiamati ampiezze, che permettono di calcolare gli angoli, che determinano la

posizione del qubit nella sfera di Bloch. Inoltre, |α|2e |β|2 rappresentano rispettivamente la

probabilità che il qubit si trovi nello stato |0> o |1>. Pertanto, si dovrà sempre rispettare la

formula |α|2+|β|2=1, poiché la somma delle probabilità deve essere sempre 1.

Uno dei maggiori vantaggi dei computer quantistici è proprio la necessità di dover utilizzaredue coefficienti per rappresentare un qubit, poiché il numero di coefficienti cresceesponenzialmente all’aumentare dei qubit. Perciò, per rappresentare n qubit avremo

bisogno di 2n ampiezze. Pertanto, la formula di uno stato generico a due qubit è

¿ψ>¿α 00∨00>+α01∨01>+α10∨10>+α11∨11>¿ dove ogni stato corrisponde al prodotto

tensoriale tra uno degli stati del primo qubit e uno del secondo.Poiché le ampiezze sono dei numeri complessi, in base alla precisione, si può rappresentareun numero potenzialmente infinito di informazioni. Attualmente, per ricavare lo stato di unqubit non c’è altro modo che misurarlo. Tuttavia, così facendo, esso collassa nello stato |0>oppure nello stato |1> a seconda della probabilità, e a causa di ciò non è possibile ricavarealtri numeri diversi da 0 e 1. Dato che il qubit collassa, lo stato cambierà in |0> o |1> in baseal valore misurato, e perciò, lo stato precedente alla misurazione andrà perso. In più, acausa del teorema di no-cloning quantistico[14], non è possibile duplicare uno stato di unqubit, al massimo lo si può trasferire ad un altro.Un’altra proprietà fondamentale dei qubit è l’entanglement o correlazione quantistica, chepermette di legare due qubit, in modo che ciò che succede ad uno influenzi l’altro. Pertanto,lo stato complessivo sarà una sovrapposizione dove i qubit sono interdipendenti. Secondoquesto principio, misurando uno dei qubit, l’altro decadrà di conseguenza. L'entanglementpuò essere sfruttato per velocizzare le operazioni che richiedono più di un qubit, e puòessere utilizzato per innumerevoli applicazioni, poiché l’influenza avviene in modoistantaneo, anche se i qubit si trovano a milioni di chilometri di distanza, come sel’informazione si stesse teletrasportando.Per effettuare delle operazioni sui qubit si utilizzano le porte quantistiche [15], analoghe alle

Page 138: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

porte logiche dei computer classici. Esse sono delle matrici quadrate che permettono dicambiare i valori delle ampiezze di un qubit. In più, hanno il vantaggio di essere reversibili,poiché, essendo delle matrici, si può ritornare ai valori precedenti applicando al qubit lamatrice inversa. Nella teoria, per utilizzarle, le ampiezze di un qubit vengono espressecome un vettore colonna al quale verrà moltiplicata la matrice della porta quantistica. Si puòcreare qualunque tipo di porta, purché rispetti la relazione tra le probabilità. Volendo creare

una porta quantistica che interagisca con n qubit, si dovrà utilizzare una matrice 2nx 2n.

Nonostante ciò, le porte più utilizzate sono quelle che agiscono su un singolo qubit, o su unacoppia di essi. Tra quelle che operano su un qubit, le più importanti sono le porte di Pauli,che si dividono in porta X, Y e Z, le quali permettono di attuare delle rotazioni di 180 gradilungo uno degli assi, su un qubit rappresentato nella sfera di Bloch. Oltretutto, la porta Xcorrisponde alla porta NOT classica in quanto inverte i valori di α e β. Molto utile è anche laporta di Hadamard, o porta H, che permette di creare una sovrapposizione quantistica doveil qubit è al 50% nello stato |0> e al 50% nello stato |1>. Tra le porte quantistiche a due qubit, quella più utilizzata è la porta CNOT, anche chiamataNOT controllata. Corrisponde alla porta XOR classica in quanto inverte le ampiezze del qubitdi target, cioè applica una porta X, se il qubit di controllo è nello stato |1>. Se, prima di essa,si utilizza sui qubit della coppia una porta H, metteremo in entanglement i due qubit. Infatti,dato che misurando uno dei qubit, esso decadrà, anche l’altro, per rispettare la correlazionedovrà decadere in base al risultato ottenuto dalla misurazione.

Gli algoritmi quantistici pertanto, sonouna serie di porte quantistiche chevengono applicate ai qubit. Poiché nellapratica un qubit è una particella o unatomo, si può applicare una portaquantistica ad ognuno di essicontemporaneamente. Ciò permette diottenere un ottimo livello di parallelismo.Le sequenze di porte quantistichepossono essere rappresentategraficamente come dei “circuiti quantistici”, ovvero dei diagrammi dove le porte quantistichesono applicate ai qubit, in ordine cronologico. Quasi sempre terminano con una o piùmisurazioni, in quanto è l’unico modo per ricavare un output dai qubit. Poiché il processo dimisura è intrinsecamente probabilistico, l’esecuzione di un algoritmo quantistico può nonrestituire il risultato corretto. Pertanto, anche a causa del teorema di no-cloning quantistico,sarà necessario ripetere il circuito svariate volte. Così facendo, otterremo come risultato ladistribuzione delle probabilità degli stati di base. Attualmente, ci troviamo nell’era NISQ (Noisy Intermediate-Scale quantum), ovvero nellafase dove i computer quantistici possiedono tra le decine e le poche centinaia di qubit, chequindi non permettono ancora di utilizzare il parallelismo per operazioni che possonorealmente essere una valida alternativa ai computer classici. Inoltre, i qubit sono soggettialla decoerenza. Quest’ultima, è la modifica non voluta dello stato di un qubit causata dalrumore, ovvero dai disturbi prodotti dall’ambiente circostante. A causa di ciò, attualmente èpossibile memorizzare gli stati dei qubit solamente per pochi millisecondi. Oltretutto, nellesoluzioni attuali, per operare con le particelle, esse devono essere immobili. Per fare ciò, siutilizzano dei sistemi di raffreddamento che permettono al processore quantistico dimantenere una temperatura il più vicino possibile allo zero assoluto. Di conseguenza, i

Page 139: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

computer quantistici sono ingombranti e molto costosi a causa dei gas raffreddanti utilizzati. Pertanto, i ricercatori stanno sviluppando sia algoritmi per computer quantistici NISQ, siaalgoritmi teorici per i computer successivi.

3. Quantum machine learningIl quantum machine learning è il principale ramodell’intelligenza artificiale applicata ai computer quantistici,nel quale, soprattutto negli ultimi anni, la ricerca stafacendo enormi progressi.Esistono quattro categorie di machine learning,classificate in base al dispositivo di elaborazione dei dati eal sistema di generazione dei dati utilizzati:

● CC: è il machine learning classico dove si utilizzaun insieme di dati classici e i computer classici pereseguire i calcoli;

● QC: si utilizzano dei dati quantistici processatiutilizzando i computer classici;

● CQ: è la categoria più promettente, nella quale si utilizzano dei dati classiciprocessati da un computer quantistico;

● QQ: i dati quantistici sono processati da un computer quantistico. Questa categorianon è molto comune a causa delle limitazioni dei computer quantistici attuali;

3.1. Categoria QCNella categoria QC si utilizza il machine learning classico nei processi che restituiscono deidati fisici. Ad esempio, si può impiegare per progettare esperimenti fisici o per correggere glierrori dei computer quantistici. Nel primo caso possono essere creati dei modelli nei quali sicerca di ottimizzare i parametri utilizzati in un esperimento fisico, come le lunghezze d’onda,l’ampiezza degli angoli, oppure la quantità di energia da utilizzare.La correzione dell’errore quantistico risulta molto importante per creare computer quantisticiche resistono al rumore e alle interferenze. Tuttavia non possono essere eseguiti deglialgoritmi di correzione dell’errore analoghi a quelli classici, poiché quest'ultimi si basanosulla duplicazione dei bit. Pertanto utilizzando il machine learning è possibile, almeno inparte, correggere gli errori quantistici.

3.2. Categoria CQIn questa categoria si sfrutta il potenziale dei computer quantistici per ottimizzare glialgoritmi di machine learning, in modo da ottenere un'efficienza che non potrebbe essereraggiunta utilizzando solamente le architetture classiche. Inoltre, ciò può portare allacreazione di nuovi modelli, algoritmi e metodi. Questa categoria si basa sull’utilizzo di uno speciale circuito quantistico chiamato variationalcircuit, anche chiamato parametrized quantum circuit. Un generico variational circuit ècomposto da tre parti principali:

● Un circuito quantistico che permette dicodificare i dati classici in qubit;

● Un circuito quantistico parametrizzato,

Page 140: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

chiamato ansatz, che rappresenta il modello utilizzato;● La misurazione del circuito;

Partendo da ciò, si può implementare un variational quantum algorithm (VQA), che permettedi eseguire applicazioni di machine learning. I VQA sono un'ottima soluzione, sia per icomputer quantistici futuri, sia per i computer NISQ, in quanto non subiscono molto gli effettidelle interferenze e del rumore. In esso si utilizza un computer quantistico per eseguire un variational circuit, e un computerclassico che elaborerà l’output in modo da ottimizzare i parametri del circuito. Eseguendomolteplici volte il variational circuit, esso produrrà una distribuzione delle probabilità, in baseall’insieme di input e di parametri utilizzati. In base alle probabilità, il computer classicocercherà di minimizzare la funzione di costo, utilizzando la tecnica di ottimizzazione delgradient descent, molto utilizzata nel deep learning classico. Pertanto, sarà necessariocalcolare il gradiente. Per realizzare ciò in un computer quantistico, si utilizza la regola delparameter-shift. Essa stabilisce che eseguendo il variational circuit con i parametri traslati diuna certa quantità s, sia a destra (θ+s) che a sinistra (θ−s) , e calcolando la differenza tra idue risultati, otterremo il gradiente.

3.2.1. Codifica dei dati classiciAll’inizio di un qualsiasi circuito quantistico che utilizza dei dati classici, sarà necessariocodificarli in qubit, in modo da poterli sfruttare nei computer quantistici. Esistono vari metodidi codifica, ed inoltre, ne possono essere creati appositamente di nuovi, in base al problemache si desidera risolvere. Oltretutto, la codifica può essere addestrabile. Ciò permette dicodificare uno stato in base alle esigenze e al modello utilizzato. Tra i metodi standard, il più semplice è il basis encoding, nel quale i dati, necessariamentebinari, sono rappresentati da una serie di qubit in sovrapposizione. Utilizzando n qubit

potremo codificare, nello stesso momento, al massimo 2n dati binari di lunghezza n. Le

ampiezze degli stati codificati saranno equiprobabili, mentre gli stati dei qubit non utilizzati,avranno le ampiezze di valore 0. Tuttavia, questo metodo risulta inefficiente all’aumentaredella dimensione dei dati, poiché aumentando la loro lunghezza di un bit si deve aggiungereun nuovo qubit. Per di più, dovendo codificare pochi dati, ma molto grandi, non verràsfruttata a pieno la potenza del qubit, in quanto molti stati non verranno utilizzati per lacodifica.Un altro metodo è l’amplitude encoding, dove un dato classico corrisponde ad una delleampiezze di un qubit. Questo metodo risulta molto efficiente per codificare numeri decimaliin base 10. Altresì, permette di sfruttare ogni ampiezza dei qubit utilizzati. Oltretutto, ilnumero di informazioni codificabili aumenta esponenzialmente all’aumentare dei qubit.Nonostante ciò, risulta molto difficile da implementare nei computer quantistici NISQ, inquanto è soggetto a molte interferenze. Il metodo più promettente è l’angle encoding, che permette di codificare un dato applicandouna rotazione ad un qubit. Prima di effettuare la rotazione si utilizzerà una porta H per creareuna sovrapposizione degli stati. Dopodiché, si utilizza una porta che permette di ruotare ilqubit in base al valore dell’informazione da codificare. Questa sequenza di porte può essereripetuta in modo da codificare altri dati. Dunque, questo metodo risulta potente e sempliceda implementare. Inoltre, il metodo può variare in base all’asse sul quale effettuiamo lerotazioni. Utilizzando un evoluzione dell’angle encoding, potremo utilizzare le feature map in un

Page 141: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

computer quantistico. Esse sono delle funzioni molto utilizzate nel machine learningclassico, in particolar modo nelle support vector machine, per classificare più facilmente idati. Avendo un insieme di dati di classi diverse, in uno spazio multidimensionale, le featuremap permettono di evidenziare le classi di dati aggiungendo una nuova dimensione allospazio, che verrà chiamato feature space. Per ricavare la nuova coordinata di un dato,basterà moltiplicare tra loro le sue coordinate iniziali. Per implementare una quantum featuremap, basterà utilizzare l’angle encoding su n qubit, tanti quanto il numero delle dimensionidello spazio iniziale, chiamato input space. Le rotazioni sui qubit dipenderanno dallecoordinate del dato. Dopo ciò, per codificare la nuova dimensione si dovrà creare unentanglement tra i qubit attraverso l’utilizzo di una o più porte CNOT. Successivamente nelqubit di target si utilizzerà una porta che ruota il qubit in base alla moltiplicazione dellecoordinate del dato. Infine si applicano nuovamente le porte CNOT per far terminarel’entanglement tra i qubit.

3.2.2. Quantum Support Vector MachineLe support vector machine (SVM) sono dei modelli di apprendimento supervisionatoassociati ad algoritmi di apprendimento per la regressione e la classificazione. Una SVM èuno o più iperpiani, che, nella classificazione, sono utilizzati per separare le classi di dati inuno spazio. L’obiettivo è ricavare l’iperpiano che ha la distanza maggiore dal punto più vicinodi ogni classe. Poiché spesso risulta difficile ricavare l’iperpiano, si possono utilizzare lefeature map per distinguere meglio le classi di dati. Nella classificazione si adoperano lefunzioni kernel, che misurano quanto due dati nello spazio sono simili. Ciò permette dicreare dei variational circuit che restituiscono il risultato di una funzione kernel, in modo davelocizzare l’apprendimento delle support vector machine.

3.2.3. Variational Quantum ClassifierIl variational quantum classifier è un VQA per l’apprendimento supervisionato, dove unvariational circuit viene addestrato per eseguire delle classificazioni. Perciò l'ansatz delvariational circuit è parametrizzato in modo che ottimizzando i suoi parametri si riesca aclassificare i dati in modo sempre più affidabile. Ci sono vari modi per strutturare l’ansatz diun variational quantum classifier[16]. Il metodo più utilizzato applica delle porteparametrizzate, che effettuano una rotazione sull’asse y, su ogni qubit precedentementecodificato. Dopo ciò, si crea un entanglement tra i qubit, impiegando una serie di porteCNOT, e successivamente si applicano nuovamente delle rotazioni parametrizzate sull’assey. Questi ultimi due passaggi possono essere ripetuti in modo da incrementare il numero diparametri. La parte del circuito che viene ripetuta è chiamata “strato” o “blocco”.Anche per la misurazione e l’elaborazione dei risultati esistono tecniche diverse, che varianoin base alla struttura del variational circuit. Facendo riferimento al caso precedente,solitamente, si misurano tutti i qubit, cosicché si possa ricavare una stringa di bit classici.Ripetendo il circuito varie volte otterremo la distribuzione delle probabilità degli stati di base.Fatto ciò, si elaboreranno i dati utilizzando i computer classici. Prendendo d'esempio uno studio condotto da un team del MIT [17], nel supervised learningconvertendo la distribuzione delle probabilità degli stati, si può ottenere la distribuzione delleprobabilità delle possibili etichette. Nell’articolo, è stato proposto un metodo, utilizzabilesoltanto con due etichette, che sembra dare dei buoni risultati. Esso attua una funzione diparità su ogni stato di base, ovvero restituisce 0 se il numero di bit il cui valore è 1 dellastringa, è pari, mentre restituisce 1 se il numero di bit il cui valore è 1 è dispari. La

Page 142: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

distribuzione delle probabilità della prima classe, sarà la somma delle distribuzioni delleprobabilità degli stati di base dove la funzione di parità ha restituito 0, mentre, ladistribuzione delle probabilità della seconda classe, sarà la somma di quelle dove lafunzione di parità ha restituito 1.Eseguito ciò si ottimizzeranno i parametri utilizzando una tra le varie tecniche.

3.2.4. Quantum Neural NetworkLe reti neurali quantistiche permettono di rappresentare una rete neurale artificialeservendosi un circuito quantistico. Spesso, le QNN si interscambiano con i variational circuit,poiché, la fase di codifica di quest’ultimi corrisponde allo strato di input della rete neurale, ilcircuito parametrizzato corrisponde agli strati nascosti, e la misurazione corrisponde allostrato di output.

3.2.4.1. Quantum convolutional neural network

Una rete neurale convoluzionale (convolutional neural network) è una rete neurale feed-forward principalmente adoperata per processare immagini e video. Si basa sul concetto distrato convolutivo, che, al posto elaborare l’intero dato ricevuto in input, utilizzando unafunzione globale, utilizza una convoluzione locale. Facendo riferimento all’articolo del 2019di un team dell'università di Berkley[18], si può rappresentare in un circuito quantistico uno

strato convoluzionale, utilizzando una serie di porte logiche U i. Quest’ultima è composta da

più porte logiche parametrizzate, che operano su una coppia di qubit. Ogni qubit, in questocaso, corrisponde ad un pixel dell’immagine. Successivamente, uno strato di pooling riducela dimensione dell’immagine, misurando metà dei qubit utilizzati. La misurazione viene poielaborata per poter eseguire lo strato convoluzionale successivo. Infine, si ha uno stratocompletamente connesso che attua delle operazioni su tutti i qubit rimasti, che sarannomisurati e classificati.

3.2.4.2. Quantum Generative Adversarial Network

Una rete generativa avversaria classica è composta da due reti neurali. La prima è ungeneratore, che cerca di generare dei nuovi dati, che riproducono dei dati reali usati in fasedi addestramento, mentre la seconda è il discriminatore, che cerca di capire se un dato èreale oppure se è stato generato. L’obiettivo di una rete neurale è cercare di battere l’altra.In una rete generativa avversaria quantistica, si sostituisce il generatore, il discriminatore o

Page 143: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

entrambi, con un VQA.

3.2.5. Hybrid Quantum-Classical Machine LearningI computer quantistici sono in grado di effettuare operazioni che risultanocomputazionalmente intrattabili ai classici computer, poiché i computer quantisticiinterferiscono con ampiezze complesse in spazi vettoriali di dimensioni molto elevate.Tuttavia, non è conveniente utilizzarli per eseguire tutte le operazioni. Perciò si stannosviluppando dei modelli ibridi, che spartiscono le operazioni da eseguire tra il computerquantistico e quello classico. Si potrebbe pensare che i variational circuit, da un certo puntodi vista, siano dei modelli ibridi. Infatti, il computer quantistico esegue un modello, mentre ilcomputer classico è responsabile dell’elaborazione dell’output. Questa è certamente unacomputazione ibrida ma non un modello ibrido, poiché il computer classico è passivo inquesto processo, dal momento in cui non esegue un modello parametrizzato.Per creare un modello ibrido, si adotta un grafo computazionale composto da nodi classici enodi quantistici. Poiché i variational circuit utilizzati sono soltanto degli specifici nodi, si puòtranquillamente utilizzare l’algoritmo di backpropagation per calcolare il gradiente del grafo.

3.3. Categoria QQQuesta categoria non è molto comune a causa delle limitazioni dei computer quantisticiattuali. La categoria QQ è utilizzata per simulare i sistemi a loro volta basati su proprietàquantistiche, ad esempio nelle simulazioni chimiche e fisiche delle molecole. Ciò è possibileperché i qubit sono delle particelle e pertanto possiedono le stesse proprietà fisiche dellamateria.L'algoritmo più famoso è il VQE (Variational Quantum Eigensolver) che permette di ricavarelo stato fondamentale di una molecola, cioè il livello più basso di energia. Ciò, è analogo acalcolare il minimo della funzione di costo. Anche in questo caso, ci avvaliamo dell’utilizzo diun computer classico per ottimizzare i parametri. Questa operazione risulta molto ardua daattuare nei computer classici, poiché all’aumentare della complessità della molecolastudiata, la complessità di calcolo aumenta esponenzialmente.Il VQE è considerato l’antenato del VQA, in quanto il computer quantistico esegue uncircuito parametrizzato e un computer classico esegue l’ottimizzazione. Inizialmente, datoche i ricercatori erano perlopiù fisici, i computer quantistici erano principalmente utilizzati perattuare degli esperimenti. Solo negli ultimi anni la ricerca si è iniziata ad interessareseriamente sull’utilizzo dei computer quantistici nel machine learning.

Page 144: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

4. Reti Bayesiane QuantistichePoiché gli algoritmi quantistici sono probabilistici, grazie alla natura dei qubit, i computerquantistici risultano molto efficienti nell’esecuzione dei sistemi basati sulla rappresentazionedella conoscenza. Le reti Bayesiane sono un grafo aciclico orientato, dove possiamo creare delle distribuzionidelle probabilità. Le reti sono formate da nodi, ovvero le variabili, e da archi, cioè ledipendenze condizionali tra i nodi. Inoltre, una rete Bayesiana associa a ogni nodo unatabella che contiene la probabilità semplice e la probabilità condizionale di quel nodo. Il nodocollegato alla coda dell’arco è definito nodo padre, mentre il nodo collegato alla puntarappresenta il nodo figlio. In una rete Bayesiana quantistica, ogni nodo sarà rappresentato da uno più qubit, in base alnumero di eventi possibili per quel nodo. Facendo riferimento all’articolo su come creare unarete Bayesiana quantistica[19], per calcolare la probabilità di un nodo figlio, cioè applicare laformula di disintegrazione, inizialmente si devono codificare i nodi senza padri. Dato che,nelle tabelle sono descritte le distribuzioni delle probabilità, si dovrà applicare una radicequadrata, in modo da ricavare le rispettive ampiezze del qubit. Per codificare le ampiezze siattua una rotazione sull’asse y, per ogni qubit, in quanto codificando un’ampiezza di esso,codificheremo allo stesso tempo anche l’altra. Pertanto, l’angolo della rotazione sarà datodalla probabilità che si vuole codificare nello stato |1> del qubit. Successivamente si codificano le tabelle che presentano delle probabilità condizionali. Perfare ciò, si dovranno creare tante correlazioni quantistiche tra i padri e un nuovo qubit, cherappresenta le probabilità del nodo figlio, quante il numero di eventi di quest’ultimo. Pertantoil valore del qubit che rappresenta il nodo figlio, sarà determinato dai valori restituiti dai qubitche rappresentano i nodi padre. Pertanto, si utilizza una porta logica particolare, chiamataporta CnRY, dove, in modo simile alla porta CNOT, attuerà una rotazione sull’asse y sulqubit di target, se tutti gli n qubit di controllo restituiscono 1 nella misurazione. L'angolo dirotazione della porta CnRY cambierà in base al valore della probabilità condizionata che sivuole codificare. Ad esempio, avendo un nodo formato da due parenti, entrambi composti dadue eventi, avremo bisogno di quattro porte CnRY (CCRY), una per ogni possibile stato deinodi padre. Poiché, si codifica sullo stato |1> solo una probabilità, prima della specifica porta CnRYdovremo applicare ai qubit una porta X, in modo da invertire il valore dello stato |1>, sedobbiamo effettuare l’operazione con il valore dello stato |0>. Sempre prendendo comeesempio due qubit, dovendo attuare la rotazione in base allo stato |01>, dovremo applicareuna porta X al primo qubit, mentre il secondo resterà invariato. Questo perché la porta CnRYsi basa sullo stato |1>, che ha come probabilità il contrario della probabilità di |0>. Perritornare alle ampiezze precedenti basterà applicare nuovamente la porta X ai qubit chesono stati ruotati. Ogni porta CnRY rappresenterà una delle intersezioni utilizzate nella formula didisintegrazione. Infatti, in base alla probabilità che i qubit “padre” restituiscano 1 nellamisurazione, verrà attuata una rotazione sul qubit “figlio”, ovvero la probabilità condizionatadi restituire 1. Combinando le porte, potremo ricavare le probabilità del nodo figlio.

Page 145: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

5. ConclusioneI computer quantistici sono sicuramente un campo di ricerca molto promettente chepotrebbe rivoluzionare il modo di sviluppare gli algoritmi di intelligenza artificiale. Tuttavia, acausa della ridotta potenza dei computer quantistici attuali, non è ancora possibile utilizzarequesta tecnologia per operazioni complesse. Perlopiù, i ricercatori non hanno ancora benchiaro quale sia il miglior approccio da utilizzare. Inoltre, si pensa che i computer quantistici non sostituiranno mai del tutto i computer classici,a causa dell’approccio probabilistico utilizzato. Più verosimilmente, saranno integrati neicomputer sotto forma di chip dedicati, in modo da ottenere dei sistemi ibridi.

Page 146: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Sitografia / Bibliografia[1] A practical introduction to quantum computing - Elias Fernandez-Combarro Alvarez -

(1/7) (ultima consultazione: 31/05/2021)

[2] A practical introduction to quantum computing - Elias Fernandez-Combarro Alvarez -

(2/7) (ultima consultazione: 31/05/2021)

[3] A practical introduction to quantum computing - Elias Fernandez-Combarro Alvarez -

(3/7) (ultima consultazione: 31/05/2021)

[4] A practical introduction to quantum computing - Elias Fernandez-Combarro Alvarez -

(4/7) (ultima consultazione: 31/05/2021)

[5] A practical introduction to quantum computing - Elias Fernandez-Combarro Alvarez -

(5/7) (ultima consultazione: 31/05/2021)

[6] A practical introduction to quantum computing - Elias Fernandez-Combarro Alvarez -

(6/7) (ultima consultazione: 31/05/2021)

[7] A practical introduction to quantum computing - Elias Fernandez-Combarro Alvarez -

(7/7) (ultima consultazione: 31/05/2021)

[8] A practical introduction to quantum computing: from qubits to quantum machine learning

and beyond (ultima consultazione: 31/05/2021)

[9] Grover's Algorithm (ultima consultazione: 31/05/2021)

[10] 3.7 Shor's Algorithm (ultima consultazione: 31/05/2021)

[11] Quantum cryptography (ultima consultazione: 31/05/2021)

[12] Notazione bra-ket (ultima consultazione: 31/05/2021)

[13] Introduction to quantum computing: Bloch sphere. — Anastasios Kyrillidis (ultima

consultazione: 31/05/2021)

[14] Teorema di no-cloning quantistico (ultima consultazione: 31/05/2021)

[15] Quantum logic gate (ultima consultazione: 31/05/2021)

[16] [1905.10876] Expressibility and entangling capability of parameterized quantum circuits

for hybrid quantum-classical algorithms (ultima consultazione: 31/05/2021)

[17] [1804.11326] Supervised learning with quantum enhanced feature spaces (ultima

consultazione: 31/05/2021)

[18] [1810.03787] Quantum Convolutional Neural Networks (ultima consultazione:

31/05/2021)

[19] Create A Quantum Bayesian Network | by Frank Zickert (ultima consultazione:

31/05/2021)

[20] Quantum Machine Learning with PennyLane (ultima consultazione: 31/05/2021)

[21] Knocking on Turing's door: Quantum Computing and Machine Learning (ultima

Page 147: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

consultazione: 31/05/2021)

[22] Using quantum machine learning to analyze data in infinite-dimensional spaces (ultima

consultazione: 31/05/2021)

[23] Circuit Ansatz — PennyLane (ultima consultazione: 31/05/2021)

[24] Hybrid computation — PennyLane (ultima consultazione: 31/05/2021)

[25] Parameter-shift rules — PennyLane (ultima consultazione: 31/05/2021)

[26] Quantum Convolutional Neural Networks — PennyLane (ultima consultazione:

31/05/2021)

[27] Quantum embedding — PennyLane (ultima consultazione: 31/05/2021)

[28] Quantum Generative Adversarial Networks with Cirq + TensorFlow — PennyLane

(ultima consultazione: 31/05/2021)

[29] Quantum gradients — PennyLane (ultima consultazione: 31/05/2021)

[30] What is Quantum Machine Learning? — PennyLane (ultima consultazione: 31/05/2021)

[31] Quantum Neural Network — PennyLane (ultima consultazione: 31/05/2021)

[32] Variational circuits — PennyLane (ultima consultazione: 31/05/2021)

[33] Variational classifier — PennyLane (ultima consultazione: 31/05/2021)

[34] A brief overview of VQE — PennyLane (ultima consultazione: 31/05/2021)

[35] Hybrid Quantum-Classical Machine Learning (ultima consultazione: 31/05/2021)

[36] Automatic Differentiation of Quantum Circuits (ultima consultazione: 31/05/2021)

[37] Are quantum neural networks actually relevant? by Amira Abbas (ultima consultazione:

31/05/2021)

[38] An Introduction to Quantum Machine Learning (ultima consultazione: 31/05/2021)

[39] 2020 09 08 NITheP Mini-School A. Abbas, Basic programming for QML with Qiskit and

PennyLane Lec. 1 (ultima consultazione: 31/05/2021)

[40] 2020 09 15 NITheP Mini-School A. Abbas, Basic programming for QML with Qiskit and

PennyLane Lec. 2 (ultima consultazione: 31/05/2021)

[41] 2020 09 22 NITheP Mini School Basic programming for QML Lecture 3 (ultima

consultazione: 31/05/2021)

[42] 2020 09 29 NITheP Mini School Basic programming for QML Lecture 4 (ultima

consultazione: 31/05/2021)

[43] An introduction to Quantum Machine Learning - Webinar (27-04-2020) (ultima

consultazione: 31/05/2021)

Page 148: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

L’intelligenza artificiale oltre le emailL’AI applicata alle manovre di anti collisione

Ariel Fedele

AbstractIl 2 settembre 2019 Aeolus, satellite dell'Agenzia spaziale europea, ha cambiato orbita perevitare un satellite Starlink, costellazione ideata dall’azienda aerospaziale americanaSpaceX. Gli americani non avevano letto i messaggi di allarme per un problema alla postaelettronica. Non ci sono protocolli condivisi per gestire queste situazioni, infatti, l'Europa stastudiando un programma con l'intelligenza artificiale (AI). “Le macchine possono fare illavoro dell'uomo meglio e più velocemente” afferma Holger Krag, responsabile dell'UfficioDetriti Spaziali dell'ESA. L’intenzione è quella di creare un sistema di allerta e manovraautomatico in sostituzione del macchinoso sistema delle e-mail, in modo tale da noncommettere certi errori, potenzialmente catastrofici, come questo. In questo articoloandremo ad approfondire il problema dell’occupazione dello spazio, andando a studiare leapplicazioni dell’AI alle manovre di anti collisione come soluzione

1.IntroduzioneLa posta elettronica ai giorni nostri è un servizio più che moderno, per questo motivo risultadifficile immaginare che la sua nascita risale al 1971. Nonostante sia una tecnologia alpasso coi tempi, esistono settori dove viene utilizzata nella quale è diventata obsoleta,questo è il caso dell’industria aerospaziale. Le agenzie spaziali infatti, per comunicare tra diloro utilizzano i servizi di posta elettronica. Il problema non risiede nella comunicazione insé, ma nei fini della loro comunicazione. Quest’ultime utilizzano la posta elettronica percomunicare anche avvisi di allerta su possibili collisioni, e di conseguenza, per comunicarele manovre che verranno eseguite. Fino a poco tempo fa questo sistema soddisfava lenecessità di tali agenzie , ma la “popolazione” in orbita è in continua crescita, i lanci deisatelliti sono sempre più frequenti e di conseguenza il numero di manovre di anticollisioneda compiere. Con i futuri lanci arriveremo ad un punto dove sarà impossibile comunicareogni singola manovra tramite email, quindi è assolutamente necessario introdurre algoritmidi machine learning. Un esempio lampante di questo problema di comunicazione è il caso Starlink-ESA.

1.1 La vicendaIl 2 settembre 2019 il satellite Aeolus dell’ESA (European Space Agency), ha cambiatomanovra per evitare il satellite Starlink44 della costellazione Starlink. Questo è stato frutto diun problema nella posta elettronica di SpaceX, azienda ideatrice della costellazione Starlink.Circa una settimana prima, i dati statunitensi avevano suggerito una potenziale

Page 149: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

“congiunzione'', prevista per il 2 Settembre alle 11:02, tra Aeolus e Starlink44, uno dei primi60 satelliti lanciati nella mega costellazione di SpaceX, prevista per essere una flotta da12.000 satelliti. L’ufficio detriti spaziali dell’ESA ha continuato a monitorare la situazione emercoledì 28 agosto, dopo l’aumento della probabilità di collisione, l’ESA ha deciso dicontattare SpaceX per discutere sul da farsi. Il giorno seguente è arrivata la risposta daparte di SpaceX, comunicando di non aver intenzione di agire in quel momento. L’ESA nonconduce una manovra di evitamento prima che la probabilità di collisione superi la sogliaminima, ovvero una probabilità di collisione superiore a 1 su 10.000, per l’appunto raggiuntagiovedì 29 agosto. Una volta raggiunta questa soglia, l’ESA aveva studiato la manovra daeseguire, informando SpaceX, senza però avere risposta. Domenica 1 Settembre laprobabilità si alza a 1 su 1000, diventando 10 volte maggiore alla soglia d’emergenza.Arrivati a questo punto, il giorno seguente L’ESA decide di eseguire la manovra, alzandoAeolus di 350m. Circa mezz'ora dopo la previsione della congiunzione, Aeolus ha contattatocasa come previsto. Questa è stata la prima rassicurazione che la manovra fosse stataeseguita correttamente e che il satellite fosse a posto.

1.2 La popolazione spazialeIl primo lancio di un satellite risale al 4 ottobre 1957, Una mega costellazione satellitarementre il primo satellite andato in orbita è il satelliterusso “Sputnik-2”, lanciato il 3 novembre 1957, più disessant’anni fa. Da quel giorno sono stati effettuati piùdi 6000 lanci, portando in orbita più di 11000 satelliti.Di questi, solo circa 4300 sono attualmente infunzione, il che spiega perché il 90% delle manovre dievitamento dell'ESA sono il risultato di "detriti spaziali"abbandonati e incontrollabili. Con il passare degli anni,il numero di lanci è sempre più frequente, cambiandol’ambiente spaziale ed aumentando notevolmente ilnumero di veicoli spaziali attivi in orbita, portando siadegli svantaggi che dei vantaggi. Un alto numero disatelliti in orbita può portare a nuove tecnologie, unesempio è la costellazione Starlink, che offre l’accessoad una connessione satellitare ad alta velocità, ma d’altra parte si può incorrere in problemitra i quali la sindrome di Kessler e l’inquinamento luminoso.

1.2.1 StarlinkStarlink è un progetto lanciato dall’azienda aerospaziale statunitense SpaceX. Esso consistein una costellazione di migliaia di satelliti miniaturizzati lanciati in orbita terrestre bassa,necessari per costruire e distribuire l’ecosistema internet a banda larga più avanzato delmondo. Starlink, ha un numero di satelliti lanciati pari a 1075, di cui 54 decaduti, ottenendouna quantità di 1021 satelliti attivi. Secondo starlink si può cambiare la realtà di ogni giornoconnettendo tutti i dispositivi (come macchine) tramite rete satellitare, questa è lamotivazione dietro al progetto.

1.2.2 ProblematicheLa moltiplicazione dei satelliti lanciati per costruire la costellazione fa temere che il numero

Page 150: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

potenziale di detriti spaziali che potrebbero essere generati da questa quantità di lanci,aumenti e possa portare alla sindrome di Kessler. La sindrome di Kessler è uno scenario, incui il volume di detriti spaziali che si trovano in orbita bassa attorno alla Terra, diventa cosìelevato che gli oggetti in orbita vengono spesso in collisione, creando così una reazione acatena con incremento esponenziale del volume dei detriti stessi e quindi del rischio diulteriori impatti. La conseguenza diretta del realizzarsi di tale scenario consiste nel fatto cheil crescente numero di rifiuti in orbita renderebbe impossibile per molte generazionil'esplorazione spaziale e anche l'uso dei satelliti artificiali. Il progetto Starlink di SpaceX, nonè l’unico ad usufruire di satelliti per offrire dei servizi, infatti nonostante esso conti in orbita12000 satelliti, bisogna considerare tutti i progetti in corso di realizzazione, tra cui Kuiper diAmazon (3 250 satelliti) e OneWeb (650 satelliti). Questa moltitudine di satelliti solleva ilproblema dell'inquinamento luminoso. L’inquinamento luminoso spaziale del cielo notturno,aggiunto all'inquinamento luminoso terrestre anche a causa della loro superficie altamenteriflettente, potrebbe causare problemi alle osservazioni notturne, in particolare modo alleindagini osservative ad ampio campo visivo.

1.2.3 Ingresso nello spazioIl principale ostacolo attualmente, per il lancio dei satelliti, è la grande quantità di corpipresenti in orbita. Sono almeno 20.000 gli oggetti che vagano attorno alla Terra, ma di questisoltanto il 5% sono satelliti attivi: ''per il resto sono oggetti non utilizzati o frammenti'',afferma Claudio Portelli dell’Agenzia spaziale italiana (Asi). Dalla Terra è possibileindividuare oggetti di dimensioni superiori a 5 centimetri, per questo si crede che ce ne sianomolti di più. l’OCSE (Organizzazione per la cooperazione e lo sviluppo economico) stimache ci siano attualmente più di 160 milioni di oggetti in orbita. La “spazzatura” in orbita èpresente in diverse forme e dimensioni, dai corpi di razzi esauriti a una macchina fotograficao una spatola lasciata cadere da un astronauta. Nel caso anche un solo frammento di questimilioni di oggetti entrasse in collisione con un satellite, potrebbe interferire con serviziquotidiani vitali su cui tutti facciamo affidamento come la banda larga o il GPS. Una possibilesoluzione per eliminare questi detriti sarebbe una sorta di satellite raccogli spazzatura.

1.2.4 Clearspace-1Progettato per il 2025, Clearspace-1 è la Rappresentazione del Clearspace-1prima missione spaziale in assoluto dedicataalla rimozione di un oggetto esistente in orbitaed è un primo passo significativo verso unambiente spaziale più pulito. Il satelliteClearspace-1 (soprannominato "The Claw")utilizzerà un movimento a tenaglia perraccogliere i detriti, prima di dargli un rientrocontrollato nell'atmosfera terrestre,consentendogli di decomporsi in modo sicuro elontano dalla vita. Elecnor deimos è l'aziendache nel Regno Unito svolgerà un ruolo di primopiano in Clearspace-1, progettando l'Attitude and Orbit Control System (AOCS) cheorienterà e posizionerà il satellite per aiutare a catturare la spazzatura spaziale, utilizzandogeneratori di corrente, propulsori e antenne. Il Regno Unito aprirà la strada al monitoraggio ealla rimozione di questi detriti pericolosi. Nel 2018, a 300 km dalla Terra, un satellite

Page 151: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

britannico ha dispiegato con successo una rete in orbita per dimostrare come catturare idetriti spaziali. La dimostrazione, utilizzando un piccolo oggetto inviato dal satellite, facevaparte di una missione per testare le tecniche per ripulire la spazzatura spaziale. La missionebritannica era dotata di una tecnologia denominata “Vision-based navigation” (VBN), cheessenzialmente dice a un veicolo spaziale che insegue un bersaglio, come si stacomportando quest’ultimo, come si muove e persino ruota.

2.Sistemi di anti-collisioneL'ESA si sta preparando a utilizzare il machine learning per proteggere i satelliti dal pericoloreale e crescente dei detriti spaziali. L'agenzia europea sta sviluppando un sistema diprevenzione delle collisioni che valuterà autonomamente il rischio e la probabilità di collisioninello spazio con l’utilizzo dell’AI, e che migliorerà il processo decisionale sulla necessità omeno di eseguire una manovra, potendo in aggiunta inviare gli ordini ai satelliti per farlispostare. Tali decisioni automatizzate potrebbero anche avvenire a bordo dei satelliti, cheavviserebbero direttamente gli altri operatori a terra e i satelliti in orbita delle loro intenzioni.Ciò sarà essenziale per garantire che le decisioni automatizzate non interferiscono con ipiani di manovra di altri satelliti. Man mano che questi sistemi intelligenti raccolgono più datied esperienza, miglioreranno sempre di più nel prevedere come evolvono le situazionirischiose, il che significa che gli errori nel processo decisionale diminuirebbero così come ilcosto delle operazioni. AI momento i dati necessari per le manovre provengonoprincipalmente dai Messaggi di Dati di Congiunzione (Conjunction Data Messages, CDM),che avvertono di un possibile incontro ravvicinato tra il loro veicolo spaziale e un altrosatellite o spazio oggetto. Le informazioni sulle congiunzioni includono tipi di dati come ladistanza rimanente, la probabilità di collisione, il TCA (Time of Closest Approach) e lamiglior posizione e velocità relative all’avvicinamento. Gli attributi di un CDM lo rendonoadatto per l'uso in interfacce machine-to-machine a causa della grande quantità di datitipicamente presente. L’AI può analizzare questo tipo di dati per eseguire alcune operazionicon un alto grado di autonomia e raggiungimento di determinati obiettivi, infatti, l’AI, più inparticolare il machine learning, può imparare da questa enorme quantità di dati come faredelle predizioni e avere delle intuizioni molto utili. Per addestrare gli algoritmi di machinelearning, è estremamente utile la significativa esperienza dell’uomo sulle decisioni dimanovre di anti-collisione, utilizzate come dati generici per l’addestramento in modo tale chegeneri degli output simili a quelli di un operatore.

Page 152: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Albero decisionale semplificato

2.1 Sistema di evitamento COLAIl metodo COLA (Collision avoidance) è statoprogettato dall’ESA per prevedere le collisioni deiveicoli spaziali su qualsiasi orbita (comprendendoanche i cambiamenti di orbita) con altri oggettiprovenienti dallo spazio. Viene calcolato anchequando avverrà la collisione e la sua probabilità.Per garantire un'efficace elaborazione del file ilmetodo COLA utilizza un design modulare ed ècomposto da diversi componenti sviluppatiall’interno di questo progetto o dedotti da algoritmigià esistenti: un modulo di filtraggio, il TCA, ilrilevamento delle collisioni e il calcolo dellaprobabilità di collisione. È stato ideato e verificatouno strumento software che implementa il metodoCOLA utilizzando vari banchi di prova pensatisulla base di campioni delle missioni precedenti.Questo software è stato implementato nellinguaggio di programmazione C++ e funziona dastrumento universale per il rilevamento dellecollisioni presso l’LSE Space Engineering & Operations AG.

2.1.1 Struttura generale del metodo COLAPrima di tutto vengono introdotti i dati di input necessari e ne viene verificata la validità. Se ilformato dei dati è valido, l'enorme quantità di oggetti di collisione viene ridotta applicandouna serie di tre filtri che identificano oggetti di collisione irrilevanti ed eliminano i daticorrispondenti dai possibili oggetti di collisione. Successivamente le orbite degli oggettivengono propagate per il periodo di esame delle collisioni. Segue una trasformazione dellecoordinate, per garantire la comparabilità delle orbite trasformando i vettori di stato deglioggetti di collisione nel sistema di coordinate di riferimento (Coordinate system, COS).Avendo determinato i vettori di stato di tutti gli oggetti si effettua il calcolo della collisione. Ilcalcolo della collisione consiste in tre fasi: determinazione del TCA, il rilevamento dellecollisioni e il calcolo della probabilità di collisione. I risultati vengono stampati e l'utente puòdecidere se perfezionare o meno i dati di input per gli oggetti di collisione rilevati utilizzandoil modulo di raffinamento, se nuovi dati vengono forniti in input, i risultati vengono ricalcolati.Infine, i risultati verranno scritti in un file di output. Di seguito alcune ipotesi effettuate durante lo sviluppo del metodo COLA:•Gli oggetti sono approssimati come sfere per il rilevamento delle collisioni nel punto diavvicinamento• Esiste un movimento lineare per la breve durata dell’incontro• Non verranno eseguite manovre di attracco durante il periodo di calcolo• La propagazione della covarianza è approssimata a una crescita lineare• Gli errori di posizione sono distribuiti in una distribuzione gaussiana a media zero• I dati dell'orbita principale (effemeridi) sono dati come valori separati da virgola in un file di

Page 153: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

testo (CSV) o tramite un'interfaccia di programmazione dell'applicazione (API) C++

2.1.2 Fasi principali del metodo COLA

Struttura generale del metodo COLA

Input: Il metodo COLA necessita di informazioni di input sia per dell’oggetto principale e siadegli oggetti di collisione in modo tale da calcolare possibili collisioni. I dati dell'oggettoprincipale sono solitamente forniti dall'operatore satellitare che vuole proteggere il suosatellite, questi dati vengono poi forniti al software COLA tramite un file di testo CSV oun'API C++. Questo può essere fatto tramite il Mission Design Tool (MDT) di LSE o qualsiasialtro software in grado di generare tali dati. I dati del vettore di stato di qualsiasi oggetto dicollisione, incluse le informazioni sugli errori degli oggetti di collisione, possono esseregestite dal metodo COLA. Attualmente gli unici dati sulle collisioni disponibili sono dati presidal Comando di Difesa Aerospaziale Nordamericano (NORAD). I vettori di stato degli oggettidi collisione vengono propagati all'interno del software COLA. I dati dell'oggetto principale edegli oggetti di collisione vengono letti nel software rispettivamente da due file. I file di inpute output possono essere sostituiti da una corrispondente interfaccia dati durantel'integrazione del software COLA in un altro programma (es. MDT), ma per la versionestand-alone del software COLA i dati devono essere forniti tramite file. Oltre ai vettori di statodegli oggetti, sono necessari gli errori sulla loro posizione sotto forma di matrice dellecovarianze e le dimensioni degli oggetti. Nel caso in cui questi dati non siano disponibili ilsoftware COLA utilizza i valori predefiniti. I valori predefiniti sono scelti in modo conservativo,in modo tale che non si verifichino collisioni mancate, inoltre possono essere modificatitramite il modulo di rifinitura del software COLA, dopodiché vengono ricalcolate le probabilitàdi collisione.

Modulo di filtraggio: Il modulo di filtraggio COLA serve a ridurre l'enorme quantità dipossibili oggetti di collisione ottenendo quindi solo quelli rilevanti.Il software COLA ècostituito da una serie di tre filtri, due geometrici e uno dipendente dal tempo. Ridurre ilnumero di oggetti per il calcolo effettivo della collisione è il fattore principale per mantenere iltempo di calcolo entro un ragionevole limite. I tre filtri sono ordinati dal meno al più accuratoper massimizzare l'efficienza di filtraggio. L’aumento della precisione all'interno delmeccanismo di filtraggio porta ad un rallentamento nel tempo di calcolo. La massimaefficienza dei filtri si raggiunge applicando tutti e tre i filtri di serie.

Page 154: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Primo filtro geometrico per a) oggetti di collisione esterni e b) interni

Primo filtro: Il primo filtro utilizzato per ridurre il numero di possibili oggetti di collisione è unfiltro geometrico. Questo filtro utilizza il perigeo e l'apogeo delle orbite per calcolare ladistanza minima tra due orbite senza considerare il loro orientamento nello spazio o laposizione degli oggetti sulle orbite. Il filtro può essere quindi applicato prima dellapropagazione dell’orbita degli oggetti di collisione.

Secondo filtro: Il secondo filtro per ridurre il numero di possibili oggetti di collisione è un filtrogeometrico, come il primo. A differenza del primo filtro, questo filtro considera l'orientamentodelle orbite nello spazio. Il filtraggio viene ripetuto per tutte le orbite principali delle possibilimanovre. Vengono eliminati solamente gli oggetti di collisione che non si avvicinano anessuna delle orbite principali di una distanza minima D.

Terzo filtro: Il terzo filtro considera non solo le Terzo filtro, finestre temporalicaratteristiche geometriche delle orbite maanche le posizioni degli oggetti sulle loroorbite. Anche se due orbite possonocondividere una zona di possibili incontriravvicinati che rientra nella distanza minimadi avvicinamento consentita, questo nonsignifica che i satelliti passanosimultaneamente questa parte dell'orbita.Considerando le posizioni degli oggetti,possono essere calcolati i tempi diattraversamento della sezione dell'orbitapresa in considerazione, gli oggetti chepassano questa sezione con un certo ritardo dal principale oggetto possono essere eliminatidall'elenco dei possibili oggetti di collisione. Come per il secondo filtro, il filtraggio si ripeteper tutte le orbite principali delle possibili manovre. Solo gli oggetti di collisione che non siavvicinano a nessuna delle orbite principali con una distanza inferiore rispetto alla distanzadi avvicinamento accettabile D sono eliminati.

Page 155: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Efficienza dei filtri: A seconda dell'ingresso dati e naturalmente variando caso per caso perla traiettoria dell'oggetto principale, il numero di oggetti di collisione può essere ridotto al ≈10-15% del numero originale degli oggetti di collisione.

Efficienza del modulo di filtraggio

Calcolo delle collisioni:

Determinazione COLA del TCA. a) Vettori di posizione e distanza b) Funzione di distanza con rilevamento di avvicinamento

ravvicinato

Determinazione del TCA: L'algoritmo per il calcolo dell’avvicinamento di un oggetto dicollisione è basato sull’algoritmo di calcola del TCA di S. Alfano[1] non richiede solo l'inputdei vettori di posizione e velocità, ma anche quello del vettore di accelerazione. L'algoritmo èstato modificato per il COLA software, in modo che non richieda alcuna accelerazione di più. Calcolo della probabilità di collisione: La probabilità di collisione viene calcolata sono nelcaso in cui venga rilevata una collisione, anche questo calcolo è basato su un algoritmosempre di S. Alfano[2].

Output: I dati di collisione ottenuti vengono scritti su un file di output, tra cui: il numero diidentificazione dell'oggetto di collisione, l'ora della collisione fornita in due varianti (tempo di

Page 156: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

volo dell'oggetto principale e UTC), la distanza di avvicinamento e la probabilità di collisione.I dati di output sono forniti tramite un'interfaccia file, ma per l'implementazione del softwareCOLA in altri software, questa interfaccia può essere facilmente modificata ottenendoun'interfaccia dati pura.

2.1.3 ImplementazioneIl metodo COLA è stato implementato nel linguaggio di programmazione C++ così creando ilsoftware COLA. Il software COLA è stato integrato come modulo nel MDT di LSE, ma puòessere utilizzato anche da solo da/con un altro software tramite un'interfaccia file o un'APIC++. Il software è disponibile per UNIX / Linux, Mac OS e Windows.

2.1.4 Verifica e risultatoIl software COLA è stato verificato utilizzando vari banchi di prova. Per questi test sono stategenerate missioni di esempio per l'oggetto principale, utilizzando il MDT di LSE. Al fine direndere uno strumento di prevenzione delle collisioni in grado di fare analisi e simulazioni intempo reale, il tempo di calcolo necessario per determinare la possibile collisione non devesuperare un tempo ragionevole. Il software COLA è stato sviluppato con tutti i mezzi peressere il più veloce possibile. Questo obiettivo è stato raggiunto, poiché il tempo di calcolo diogni test eseguito è inferiore a 5 min su un PC standard con un processore ad un core conf = 2 GHz. Il software COLA risultante è in grado di determinare le collisioni tra oggetti in orbita attornoalla Terra. I calcoli necessari, sono stati sviluppati e sono poi stati uniti per costruire ilsoftware COLA. La combinazione di diversi algoritmi doveva creare un software universaledi rilevamento delle collisioni per tutti i tipi di oggetti in orbita terrestre. Questo strumento puòessere utilizzato per scopi di simulazione così come le operazioni in tempo reale. Tuttavia,ci sono alcuni possibili miglioramenti futuri. Il software COLA è limitato agli oggetti in orbitaattorno alla Terra. Un possibile miglioramento potrebbe essere quello di gestire missioninello spazio profondo. Un altro possibile miglioramento dell software COLA potrebbe esserequello di includere manovre di attracco. Questi due miglioramenti danno origine a nuoveapplicazioni del software. Tuttavia, potrebbero esserci ancora dei miglioramenti da apportareanche alle attuali funzionalità del software COLA. Innanzitutto, il database degli oggetti dicollisione verrà aggiornato e ingrandito ogni volta che sono disponibili più dati, in particolare idati degli oggetti di collisione con informazioni sugli errori di tracciamento e un modello dipropagatore di covarianza preciso potrebbero essere molto utili, potrebbe inoltre essereincluso un filtro Kalman per ridurre la sovrastima dell'errore di posizione quando si propagaun set di dati TLE [3]

2.2 AUTOCAAUTOCA è un progetto dell’ESA in via di sviluppo che punta a creare un sistema dianticollisione totalmente autonomo e a consentire sviluppi tecnologici chiave per operazioniCOLA autonome non ancora disponibili, grazie all’AI. Inoltre l'obiettivo include la riduzionedel carico operativo e l'aumento della sicurezza delle operazioni al fine di preservarel'ambiente spaziale.

Page 157: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

2.2.1 SfideLa sfida più grande che deve affrontare l’ESA è rappresentata dalla mancanza di dati storiciin relazione a COLA. Il numero di incontri ravvicinati è in aumento. Tuttavia, i dati disponibili,sotto forma di CDM, sono costituiti da molte congiunzioni senza incidenti. Solo una piccolaparte degli incontri ravvicinati porta all'esecuzione di una manovra. Inoltre, la decisionepresa per ogni congiunzione può variare a seconda dell'operatore. Pertanto, deve esserepresa in considerazione un'incoerenza nelle decisioni storiche. Nel caso della propulsioneimpulsiva, i dati sono più prevalenti rispetto allo scenario della propulsione elettrica. Questaulteriore mancanza di dati per la propulsione elettrica è la seconda sfida più alta.

2.2.2 Benefici

AUTOCA potrebbe riuscire a risolvere il problema dei troppi avvisi che provengono dallospazio a causa dell’incredibile aumento della popolazione in orbita. Utilizzando un sistemaautomatizzato, AUTOCA offre una soluzione affidabile per l'analisi degli approcci ravvicinati.Utilizzando decisioni storiche, insieme a un algoritmo di apprendimento automaticoall'avanguardia, AUTOCA fornisce avvisi tempestivi coerenti per gli operatori. Inoltre, ilsistema può addestrarsi con i dati di un operatore, in modo tale che l'output proiettiaccuratamente l'attività dell'operatore.

2.2.3 Architettura

Architettura sistema AUTOCA

Di seguito i vari componenti del software:

● Componente che include i CDM, incaricato di integrare nel software i CDM daanalizzare.

● Componente dei vincoli di operazione, componente che deve far rispettare i vincolioperazionali

Page 158: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

● Componente decisionale autonomo, incaricato di valutare se è necessaria o menouna manovra

● Componente di apprendimento automatico (machine learning), responsabiledell'acquisizione delle informazioni dai CDM precedenti e delle decisioni di manovraal fine di addestrare il software di base per il processo decisionale autonomo.

● Componente di calcolo di evitamento delle collisioni, incaricato di calcolare lamanovra di prevenzione delle collisioni più adeguata alla missione e ai suoi vincolioperativi

● Componente di interfaccia SSA, responsabile dell'interazione con l'entità SSA per lafornitura di dati orbitali (cioè in formato OEM) per la sua analisi, comprese anche lemanovre pianificate per il mantenimento della stazione o anche le manovre diprevenzione delle collisioni per la valutazione

● Componente di valutazione del rischio di collisione● Componente di output, incaricata di comunicare il risultato del processo

2.2.4 Pianificazione

AUTOCA è stato pianificato per essere realizzato in 24 mesi a partire dal settembre 2019.La pianificazione del progetto è stata divisa in 3 fasi:● Fase 1: Revisione della letteratura, analisi degli approcci esistenti e di quelli nuovi

per il processo COLA autonomo e selezione dell'approccio più promettente, basatosull'analisi, il confronto e la prototipazione dei diversi approcci.

● Fase 2: Implementazione dell'approccio selezionato in un software di prevenzionedelle collisioni autonomo e validazione del software in un banco di prova che simulatutti gli attori coinvolti nel campo della prevenzione delle collisioni (entità SSA, GCS,stazioni, veicoli spaziali).

● Fase 3: Estensione dell'approccio autonomo di prevenzione delle collisioni e delsoftware al caso di sollevamento o abbassamento elettrico dell'orbita, dato chequeste attività comportano un lungo periodo di funzionamento del sistema dipropulsione del satellite.

2.2.5 Stato attuale

L’ultimo comunicato risale al 2 Dicembre 2020, quando il progetto era al termine della primafase di studio e progettazione. È stata consegnata una prima valutazione dei diversialgoritmi di apprendimento automatico (machine learning) adatti ad essere applicati per ilprocesso COLA autonomo per la prima fase significativa del progetto. Le attività seguenti daavviare prevedono un'analisi più approfondita sugli algoritmi di machine learning e unaselezione degli approcci più promettenti e in seguito la loro prototipazione.

3.ConclusioniL’IA in questo momento è diventata di vitale importanza per il mondo spaziale, l’enormemole di dati proveniente dai satelliti è diventata sempre più ingestibile per gli operatori.Grazie ad algoritmi intelligenti ed autonomi (machine learning) i satelliti avrebbero unsistema decisionale tutto loro (AUTOCA), basato su un metodo di prevenzione dellecollisioni già esistente (COLA) e su dati e decisioni raccolti ed effettuate negli scorsi anni daparte degli operatori, in modo tale da ottenere una decisione più verosimile possibile. È

Page 159: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

importante che tutto questo venga realizzato il prima possibile, questo perché anche unasola collisione potrebbe avere gravi ripercussioni sul futuro, infatti non sono a rischio solo isatelliti ma anche le future spedizioni spaziale, un numero eccessivo di detriti in orbita lerenderebbe impraticabili. L’ESA ha svolto un ruolo fondamentale, proponendo e sviluppandoper prima un sistema ad evitamento di collisioni automatico utilizzando l’AI. Attualmentequesto progetto di automazione è ancora in via di sviluppo, ma è previsto per essereterminato entro il 2022. È da considerare che potrebbe non bastare sviluppare solamentequesto sistema utilizzando l’AI, dato che fino alla sua realizzazione potrebbero compariremigliaia e migliaia di nuovi detriti, per questo motivo è già in corso di realizzazione il primosatelliti “aspirapolvere” (Clearspace-1) incaricato di pulire l’orbita terrestre da detritipericolosi.

4.Bibliografia[1]Salvatore Alfano (1994). Determining Satellite Close Approaches, Part II, Journal of theAstronautical Sciences, 42, 143. [2] Salvatore Alfano (2007). Review of Conjunction Probability[3] T. S. Kelso (2007). Validation of SGP4 and IS-GPS200D Against GPS PrecisionEphemerides, AAS 07- 127.

5.Sitografia[1] Satelliti in collisione, l'allerta arriva via mail. L'Esa: "Serve nuovo sistema"

[2] ESA - ESA spacecraft dodges large constellation

[3] SpaceX’s new satellites will dodge collisions autonomously (and they’d better)

[4] How to better manage space traffic: Aeolus/Starlink encounter shows emails and late-

night phone calls no longer cut it

[5] SpaceX Deploys First 60 Starlink Internet Satellites in 'Weird' Way

[6] Space junk-grabbing satellite’s control system to be built in UK

[7] UK to play critical role in building 'the Claw' - first ever satellite to remove space junk

[8] https://www.biopills.net/la-struttura-di-un-articolo-scientifico/

[9] Cognitive biases explain religious belief, paranormal belief, and belief in life’s

purpose

[10] ESA - Control Systems

[11] Vision-based navigation experiment onboard the removedebris mission

[12] ESA, sistemi basati su algoritmi di Intelligenza Artificiale per le manovre anti-collisione

dei satelliti in orbita LEO

[13] ESA - Automating collision avoidance

[14] ESA - Space debris by the numbers

[15] AUTOCA Autonomous Collision Avoidance System for NGSO

[16] AI challenged to stave off collisions in space

Page 160: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

[17] SP-672 Fifth European Conference on Space Debris

[18] Collision avoidance (spacecraft)

[19] Artificial intelligence is learning how to dodge space junk in orbit

The Evolution of Artificial Intelligence in VideoGames

Davide Ieri

AbstractL’Intelligenza Artificiale nei videogiochi fin dagli albori, ovvero con i giochi come “Pong” e“Computer Space”, ha avuto un ruolo ed un’evoluzione negli anni sempre più importanti eincisivi sulla qualità del videogioco stesso. Tutt’oggi l’obiettivo consiste nel creare una AI chepossibilmente si comporti nel modo più ad un umano nel modo in cui gioca, comepercepisce e come reagisce al videogioco.

Oggi le Intelligenze Artificiali ricoprono un ruolo chiave nello sviluppo di un videogioco:tramite algoritmi avanzati e Reti Neurali una AI di un personaggio all’interno del gioco imparae si adatta al gameplay del giocatore rendendo l’esperienza di gioco più piacevole. Ma nonsolo: infatti può anche sfidare il giocatore, come nel caso di Starcraft 2.

Trovare il giusto equilibrio tra AI e qualità di gameplay nello sviluppo di un videogioco non èsemplice ed andremo ad analizzare perché negli ultimi tempi non sta migliorando.

1. IntroduzioneAd oggi l’intelligenza artificiale assume molteplici significati, ma tra tutte spicca quello datodalla Stanford University, che definisce l’intelligenza artificiale come “una scienza e uninsieme di tecniche computazionali che vengono ispirate - pur operando tipicamente inmaniera diversa - dal modo in cui gli esseri umani utilizzano il proprio sistema nervoso e il

proprio corpo per sentire, imparare, ragionare e agire” [Maestripieri Niccolò] . [1]

Nonostante in molti vedano l’intelligenza artificiale come maligna o comunque lontana dallaquotidianità, essa ormai ne è diventata parte integrante da diverso tempo: basti pensare agliassistenti digitali del proprio smartphone, i robot usati in fabbrica, i chatbot, i sistemi di

traduzione automatica, i sistemi di guida assistita e così via. [2]

Infatti grazie ai miglioramenti e sviluppi di nuove tecniche l’intelligenza artificiale nel tempo

Page 161: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

ha fatto passi da gigante, diventando sempre più potente e accessibile. Essa viene infattiutilizzata in tantissimi ambiti, come prima mostrati in qualche esempio.

In particolare sarà analizzato come essa lavora ed il suo ruolo nei videogiochi.

2. Breve storiaUna prima applicazione di Intelligenza Artificiale nei videogiochi risale al 1951 con il giocomatematico-strategico Nim, poi pubblicato nel 1952. Esso consiste in 2 giocatori che a turnodevono rimuovere degli oggetti da una pila e l’ultimo giocatore che evita di prendere l’ultimooggetto o invece lo prende, vince. All’epoca era considerato molto avanzato

tecnologicamente in quanto il computer era capace di battere il giocatore regolarmente. [3] [4]

Nimrod esposto alla Fiera di Berlino, ottobre 1951. [5]

Lo stesso anno il computer Ferranti Mark 1 [6], il primo computer elettronico general-purposevenduto al pubblico costruito dalla University of Manchester, fu capace di giocare a dama eda scacchi con una sorta di AI. Questi programmi si sono poi evoluti durante gli anni ‘50 e ‘60

per arrivare a Deep Blue [7], computer della IBM creato appositamente per giocare ascacchi, che nel 1997 sconfisse il campione di scacchi Garry Kasparov.

Dagli anni ‘70 l’intelligenza artificiale ha cominciato ad essere sempre più presente comeparte integrante del gioco stesso: ad esempio Space Invaders (1978) creava livelli semprepiù difficili e pattern sempre più complessi a seconda dell’input dato dal giocatore, mentre inPac-Man (1980) i labirinti venivano creati da una intelligenza artificiale. Anche il genere deipicchiaduro e RPG cominciarono ad integrare una intelligenza artificiale come Karate

Champ (1984), First Queen (1988) [8], il primo videogioco a creare il sistema a piùpersonaggi, e Dragon Quest IV, che integrò un sistema per manovrare NPC (not playingcharacter) durante le battaglie. Quest’ultimo concetto in particolare verrà poi ripreso neigiochi a seguire.

Tra gli anni ‘80 e ‘90 infine, anche il genere dei videogiochi sportivi, fino a quel periodo incostante declino, con l’integrazione di una AI ha potuto “risuscitare” con giochi come

Madden Football, Tony La Russa Baseball ed in particolare Earl Weaver Baseball [9] (che

Page 162: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

introdusse innovazioni tutt’ora molto utilizzate). L’intelligenza artificiale veniva utilizzata persimulare la maniera in cui manager e coach gestiscono ed allenano una squadra. In seguito

si è evoluta in modo tale che il computer “coach” si adattasse allo stile del giocatore. [10]

Negli anni ‘90 e i primi anni 2000 l’intelligenza artificiale con l’adozione dei “Finite StateMachines” permise di creare nuovi generi di videogiochi, come ad esempio gli strategici intempo reale (RTS). Permise inoltre di creare i primi algoritmi di pathfinding: tali algoritmi cheinizialmente presentavano parecchi problemi ed erano estremamente basilari, ma che, conl’evolversi delle AI, migliorarono considerevolmente.

Durante gli anni ‘2000 i videogiochi cominciarono ad usare metodologia bottom-up [11] per leintelligenze artificiali: a partire dai segnali più semplici una AI arrivava progressivamente astrati superiori di conoscenza. Uno dei primi approcci fu nel videogioco Façade, chepermette di creare conversazioni multiple interattive.

La teoria bottom-up è ciò che è alla base delle reti neurali che, come vedremo, sono alla

base delle AI più moderne. [12]

3. AI nei videogiochiCome detto in precedenza, una intelligenza artificiale è fondamentale per la creazione di untitolo apprezzato e godibile. In un videogioco essa può ricoprire una moltitudine di ruoli,come ad esempio i personaggi neutrali ma anche gli avversari, e per tale motivo può sorgerespontanea una domanda: come posso affrontare e battere una macchina, superiore

all’essere umano sotto quasi ogni aspetto? [13]

Nella creazione di una AI uno degli obiettivi da perseguire è infatti quello che la macchina sicomporti in modo tale che il giocatore non venga sopraffatto, ma che si diverta: per questogli sviluppatori limitano appositamente le intelligenze artificiali, per esempio riducendo lavelocità di reazione, o addirittura di indurla a commettere degli errori.

Inoltre creare una AI che non sia prevedibile nei lunghi periodi di tempo è un altro fattoremolto importante: un giocatore che si troverà davanti una sfida sempre nuova e diversa, lofarà interessare maggiormente al videogioco. Infatti per questo motivo il titolo Dune II, unodei patriarchi del genere RTS per evitare che i combattimenti divenissero monotoni e

prevedibili, adottava contro il giocatore dei veri e propri cheat, ovvero trucchi. [14]

4. Sviluppo di videogiochi con le AITuttavia le intelligenze artificiali non sono soltanto usate all’interno del videogioco, bensìpossono essere utilizzate per creare il gioco stesso. Nel 2019 uno sviluppatore indipendenteinfatti ha creato un videogioco puramente testuale chiamato AI Dungeon, dove il giocatoreinteragisce con una AI capace di generare un numero infinito di storie: in uno spaziodedicato il giocatore può inserire una porzione di testo che vuole e l’intelligenza artificiale gli

risponde facendolo proseguire per la storia. [15]

Inoltre l’intelligenza artificiale è stata utilizzata per creare l’ambiente di gioco dei giochi tripla-a, ovvero di quei videogiochi con budget e tempo paragonabili ai film di Hollywood: questo èil caso ad esempio per il titolo Assassin’s Creed: Odyssey, uscito nel 2018 ed ambientatonella Grecia del V secolo A.C., creato sfruttando algoritmi di intelligenza artificiali ed aiutato

Page 163: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

da mappature LIDAR delle superfici ed edifici. Questa tecnica è utilizzata per la creazionedelle mappe dei titoli tripla-a detti “open world”, giochi a mondo aperto imponenti che secreati a mano richiederebbero molto più tempo.

Questo approccio non venne usato soltanto per gli ambienti. Anche i personaggi deivideogiochi stanno diventando sempre più realistici grazie all’uso delle AI: casi recenti moltointeressanti sono quello di The Last of Us 2 (2020), dove le espressioni facciali deipersonaggi non sono stabilite dagli sviluppatori ma bensì da una intelligenza artificiale che,in base al contesto, sceglie l’emozione più adatta e di conseguenza muove i muscoli dellafaccia per esprimerla; un altro invece è quello della creazione di animazioni super-realistichegrazie ad una tecnologia chiamata “reinforcement learning”, creata dall’azienda ElectronicsArt in collaborazione con la University of British Columbia situata a Vancouver.

I campi dove può essere adoperata nei videogiochi è davvero vasto, tendenzialmenteinfinito, e va a ricoprire anche sistemi di anticheating, matchmaking, fair-play (Project

Artemis, Microsoft) e di tracciamento del gameplay per offrire sfide maggiori. [16]

5. Algoritmi utilizzatiGli sviluppatori nel tempo hanno adottato soluzioni diverse per rendere le AI più intelligenti,adattandole al contesto nel quale si trovano, ovvero al videogioco: per farlo utilizzano deglialgoritmi come MCTS adottato nello strategico Rome: Total War 2, oppure “fuzzy logic”usato in The Sims. Ad oggi però tra tutti quelli esistenti ne spiccano quattro in particolareinsieme ad una branca delle intelligenze artificiali: FSM, behaviour tree, A* e reti neurali -deep learning.

Nello sviluppo di una AI di un videogioco nella maggior parte dei casi essa è il risultato di piùalgoritmi che interagiscono tra di loro: basti pensare al precedentemente citato Dune II, che

implementa sia l’algoritmo FSM sia uno di pathfinding (A*). [14]

5.1. FSM algorithm

Un algoritmo FSM (Finite State Machine) consiste in un modello matematico computazionaleche prevede una macchina con un numero finito di stati, dove per passare da uno statoall’altro, processo chiamato transizione, deve ricevere un input.

Questo algoritmo nei videogiochi è parecchio utilizzato dove più stati ci sono, più il giocatoreha l’impressione che l’intelligenza artificiale del gioco sia “reale”.

Questo algoritmo è particolarmente utilizzato negli shooting games come Battlefield, Call ofDuty, Tomb Raider, o comunque nei giochi di combattimento tipo Batman: Arkham Asylum.

Gli input ricevuti per cambiare stato rappresentano cosa dovrebbe accadere affinché la

transizione avvenga. [17] [18]

Page 164: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

L’input “player is near” innescano il cambio di stato e l’azione seguente (ovvero l’attacco dei bot).

Esistono due tipologie di algoritmo FSM: deterministico, ovvero che ricevendo lo stessoinput da uno stato ne passa ad uno e un altro soltanto, e non-deterministico, dove con lostesso input si può passare (con probabilità differente) ad una molteplicità di altri stati.Quello rappresentato nell’immagine soprastante è non-deterministico.

Uno dei pregi di un algoritmo FSM è che riesce ad ottenere buoni risultati. Assieme alla suaversatilità questo gli ha permesso di essere utilizzato fino a fine anni 2000: le AI nonreagiscono infatti soltanto secondo lo schema predefinito in base agli input che ricevono, maanche agli eventi che accadono nel mondo di gioco.

Tuttavia lo svantaggio più evidente è che per rendere questo algoritmo efficace è necessarioche il passaggio tra uno stato e l’altro sia molto preciso, altrimenti risulta che l’intelligenzaartificiale compie azioni completamente fuori luogo e divertenti per certi versi, come adesempio quando inizia uno scontro armato e gli npc non fanno nulla oppure si mettono aparlare. Oltre a ciò un algoritmo FSM può risultare davvero pesante e complicato daimplementare, ed anche poco scalabile: più stati deve simulare l’intelligenza artificiale, piùsono gli stati da implementare e di conseguenza le transizioni specifiche da aggiungere.

Una versione migliorata dell’algoritmo FSM si chiama HFSM (Hierarchical Finite StateMachine), utilizzata in titolo recenti come Doom (2016) e Wolfenstein: The New Order(2014). La differenza principale tra i due algoritmi consiste nella possibilità in HFSM divalutare una transizione prima di effettuarla nei dettagli: ciò consiste quindi nel creare deisotto-stati che dipendono soltanto dagli stati padre. Questo approccio migliora l’algoritmonella gestione delle transizioni, riducendo riuso di codice e gestendo meglio sistemi piùcomplessi. Tuttavia i sotto-nodi sono strettamente legati ai nodi-padre a causa della sua

natura gerarchica, causando eventuali ripetizioni di alcuni di essi in altri gruppi di nodi. [19]

[20]

Page 165: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

5.2. Behaviour tree

Un behaviour tree è una struttura dati in cui vengono stabilite delle regole su come ed inquale ordine devono accadere determinati eventi, nel caso di videogiochi comportamenti.Questo modello matematico riprende quello, come dice il nome, degli alberi, perciò avrà unnodo radice da cui si dirameranno le “foglie”, ovvero i nodi figlio. Nello specifico unbehaviour tree è un albero aciclico, ciò vuol dire che non si può effettuare un percorso aritroso né tantomeno ripetersi. Esistono quattro tipi di nodi, due base e due composti, cheservono per stabilire il flusso di esecuzione dell’albero:

● radice, il nodo dal quale parte l’esecuzione. Non ha nessun nodo padre ma soltanto figli;

● foglie, nodo dove è presente il comportamento vero e proprio da attuare. Non può

avere figli ma soltanto nodi padre;

● selettore, nodo composto che decide quale nodo figlio eseguire in base ad un evento che accade nel mondo digitale;

● sequenza, nodo composto con la capacità di poter eseguire multipli nodi figli uno

dopo l’altro.

Esiste anche un nodo chiamato decoratore: esso prende la logica dietro un nodo figlio e lopuò manipolare, in tal modo può, ad esempio, far prendere ad un nodo selettore unadecisione inversa.

L’albero inizia l’esecuzione e mantiene un riferimento al nodo attualmente attivo, aggiornatoad ogni frame riprendendo l’esecuzione dal nodo radice, eventualmente cambiando nodo seil nodo attivo finisce l’azione che stava eseguendo.

Per salvare dei dati importanti che magari servono a più comportamenti nodi, come adesempio prendere riparo, attaccare, localizzare il giocatore ecc., è utilizzato uno strumentochiamato blackboard: in questo modo è possibile evitare troppe ripetizioni e utilizzare lastessa blackboard per più comportamenti.

Lo strumento di creazione Unreal Engine 4 permette di realizzare un behaviour treegratuitamente e con relativa rapidità.

Page 166: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Questo approccio offre una serie di vantaggi: innanzitutto è altamente scalabile, perché più icomportamenti da simulare sono complessi più elementi ci saranno; è designer-friendly, nelsenso che è molto più facile da correggere (operazione di debug) di altri sistemi simili comead esempio l’algoritmo FSM, perché per sua natura è molto leggibile; infine è riusabile, inquanto i nodi non sono legati al contesto ma bensì agli eventi.

Alcuni esempi di giochi famosi dove viene adoperato il behaviour tree sono Halo 2 e 3,

Spore e Bioshock. [21] [22] [23]

5.3. A* algorithm

Per comprendere l’algoritmo A* è necessario specificare prima cosa sono gli algoritmi dipathfinding.

Gli algoritmi di pathfinding sono la pianificazione del percorso più breve per arrivare in un

mondo virtuale da un punto A ad un punto B [24]. Esistono due tipologie di algoritmi dipathfinding: indiretto e diretto. Il primo, in breve, consiste nel trovare una via alla cieca,mentre il secondo, di cui fa parte l’algoritmo A*, crea dei nodi adiacenti lungo il percorso chevaluta prima di percorrere.Gli algoritmi di pathfinding diretti solitamente si basano su due strategie:

● Uniform cost search, che modifica il percorso per scegliere sempre quello a minorcosto;

● Heuristic search, che stima il costo dal nodo successivo al traguardo da raggiungere.

Entrambe le strategie però da sole non bastano per creare un algoritmo di pathfindingefficiente e completo, ed è per questo che solitamente si usano più strategie come quellesopracitate. Inoltre i pathfinding diretti usano spesso una caratteristica tipica di quelli indiretti,conosciuta come Quick Path: questa permette all’agente (personaggio all’interno delvideogioco comandato da una AI) di muoversi mentre allo stesso tempo algoritmi dipathfinding diretti cercano il percorso più ottimale. In questo modo l’agente comporrà ilproprio percorso trovando più sotto-percorsi per arrivare ad uno completo, dandol’impressione che lo sappia fin dall’inizio.

L’algoritmo A* è un algoritmo di pathfinding diretto che stabilisce il percorso più adatto daintraprendere, considerando eventualmente anche delle alternative. Per poterlo utilizzare lamappa di gioco viene suddivisa in nodi, usati per salvare il progresso di ricerca del migliorepath: i nodi possono essere punti di salvataggio, località specifiche o altro. In aggiunta sononecessarie 3 variabili f, g, h che servono all’algoritmo per quantificare se il percorso che stasviluppando è promettente. La variabile g indica il costo dal nodo di partenza fino a quelloattuale, calcolato facendo una somma dei valori dei nodi; la variabile h è il costoapprossimato tra il nodo corrente e il traguardo; infine la variabile f è la somma tra g ed hche permette di stimare il costo del percorso che si sta intraprendendo: più il valore è basso,più esso è efficiente. Inoltre l’algoritmo tiene conto di due liste, chiamate Open e Closed: laprima serve per tenere traccia di quei nodi ancora non del tutto esplorati, mentre la secondache invece lo sono. Per stabilire se un nodo è stato esplorato del tutto l’algoritmo deve aver

osservato ogni nodo collegato.[I]

Page 167: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

I pregi di questo algoritmo risiedono nella sua completezza, ottimalità ed efficienza; d’altro

lato però richiede non poca memoria per memorizzare tutti i nodi [25]. L’algoritmo A* derivada quello di Dijkstra, espandendolo con un approccio euristico, che permette di valutare soloi percorsi più promettenti velocizzando quindi notevolmente la ricerca, ma se non usato

attentamente potrebbe richiedere risorse extra. [II]

5.4. Reti neurali e Deep Learning

L’utilizzo di algoritmi di pathfinding tradizionali include una problematica che riguardal’utilizzo di mappe statiche o comunque, generalmente parlando, pre-processate. A talescopo le branche dell’intelligenza artificiale delle reti neurali e deep learning si sono fattesempre più strada nei videogiochi, in modo che gli NPC si muovano in un mondo più

dinamico e realistico, ma non solo. [I]

Un’applicazione delle reti neurali ad esempio la si trova in A.N.N.A (Artificial Neural NetworkAgent), creata da uno sviluppatore milanese specializzato nella creazione di giochi di corsesu moto in collaborazione con la società Orobix: inserendo questa AI in MotoGP 19 è stataaddestrata [Zerini Gioele] eseguendo circa 200mila giri di pista giornalmente per rendere ilsuo comportamento il più reale e vicino possibile a quello di un pilota in carne ed ossa.

Tramite deep learning [II] invece sono stati create intelligenze artificiali capace di apprenderea giocare titoli che vanno da Pong o Breakout fino a titolo più recenti come Starcraft 2. Nel2015 la rivista Nature pubblicò un articolo chiamato “Human-level control through deepreinforcement learning” in cui parlava di un algoritmo capace di ottenere risultati elevatissimiin vecchi giochi della console Atari 2600. L’algoritmo in questione si chiama Agent57, creato

da DeepMind, nel 2012 (azienda poi acquistata da Google nel 2014) [26]: l’algoritmoelaborando i pixel e gli input del gioco, ha imparato a giocare in maniera eccellente

Page 168: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

nonostante gli sviluppatori stessi non conoscessero le tattiche migliori. [16] [27]

Deepmind è l’azienda che ha creato anche altri algoritmi come AlphaGo, capace di battere ilcampione del gioco da tavolo Go (molto popolare in Asia) Lee Sedol, ed AlphaStar,algoritmo creato in collaborazione con Activision Blizzard per il videogioco Starcraft 2, che

sfruttando una rete neurale, è in grado di battere il 99,8% dei giocatori umani [16](compreso

il giocatore professionista MaNa, considerato uno dei migliori al mondo [28]).

6. Il caso di Alien: Isolation Tra quei videogiochi che hanno lasciato un impatto per l’intelligenza dei personaggi presenti,quindi titoli come F.E.A.R. e Halo 2, uno in particolare è Alien: Isolation, un horror uscito nel2014 nel quale il giocatore sarà nei panni di Amanda Ripley, astronauta che dovrà cercare difuggire dalla stazione spaziale Sevastopol mentre viene inseguita e cacciata da un mostroalieno chiamato Xenomorfo.

Page 169: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

L’elemento che ha destato stupore di questo titolo è proprio l’intelligenza artificiale che stadietro al mostro. Esso infatti sembra davvero intelligente: giocando si ha l’impressione che siadatti al proprio stile di gioco, rendendo quindi il titolo interessante e alquanto complicato,soprattutto a difficoltà più alta.Ciò che dà l’idea di questa apparente intelligenza è un sistema a doppia AI: un behaviourtree ed una detta Direttore.La prima comprende i comportamenti che lo Xenomorfo stesso attua con lo scopo di trovareed eliminare il giocatore basandosi sulle informazioni date dai propri sensi: il mostro infattipuò ascoltare i rumori vicini, come i passi della protagonista, può percepire se qualcosa oqualcuno lo sta toccando o se sta venendo attaccato, ed infine possiede una vista suddivisain 4 zone di azione:

● normal (blu), che permette di “vedere” davanti a sé abbastanza lontano;● focussed (rosso), utilizzato per localizzare oggetti o luoghi specifici a distanza più

ravvicinata;● peripheral (verde), molto corto in lunghezza ma molto più largo;● close (viola), estremamente piccolo ma che pensato per localizzare qualsiasi cosa si

trovi all’interno di esso.

Page 170: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Quando qualcosa, compreso il giocatore, entra nel raggio di azione dei coni di vista e vi cirimane per un periodo di tempo, esso viene registrato e localizzato. In figura ad esempiol’oggetto in questione è rappresentato dal pallino rosso. Di per sé l’abilità di vedere non èuna novità ed è ampiamente utilizzata nello sviluppo di videogiochi data la sua facilità didebug.La particolarità di questo behaviour tree è che per cercare il giocatore ha dei comportamentiall’inizio del gioco bloccati che poi vengono aperti al verificarsi di determinate condizioni: adesempio se il giocatore per scappare si nasconde sempre nel solito luogo, come armadietti osotto un tavolo, l’alieno potrebbe controllare proprio in quei nascondigli.Per evitare che il mostro accerchi il giocatore o invece non lo trovi affatto interviene la AIchiamata Direttore, sempre a conoscenza della locazione sia dello Xenomorfo che delgiocatore: esso comunica all’alieno periodicamente dove dovrebbe andare a cercare ilgiocatore (senza dargli però il punto esatto), stabilendo perciò il punto di partenza delbehaviour tree. In questo modo il Direttore dà un ritmo al gioco tenendo sempre sottotensione il protagonista, mentre sarà compito dello Xenomorfo trovare il giocatore edeliminarlo. L’alieno funziona in varie modalità che si possono riassumere in 3 principali:

● frontstage, ovvero quando l’alieno è in cerca del giocatore sia perché indicato dalDirettore o perché ha “visto” o” “sentito” il giocatore;

● menace gauge, stato che mantiene fintanto che si trova in vicinanza al giocatore edindica quando è il momento di ritirarsi, basandosi su fattori come la distanza in metritra il mostro e la protagonista, se il mostro ha visto o sentito la protagonista e lapossibilità di raggiungere il giocatore;

● stalk, modalità che richiama immediatamente l’alieno dai condotti quando esso senteun suono, disattivando ogni probabilità di tornare in backstage, cercando il giocatorein un’area circolare che si restringe sempre di più. A volte però quest’area puòessere a forma di ciambella, dove il buco al centro indica una zona dove l’alieno nonporrà interesse, e che solitamente è un’area di interesse per lo sviluppo della trama;

● backstage, raggiunta una certa soglia l’alieno si ritirerà nei condotti di ventilazione

Page 171: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

per lasciare proseguire il giocatore. Tuttavia secondo certe condizioni potrebbetendere delle trappole proprio nei condotti.

Le modalità ed i sensi cambiano con la difficoltà: ad esempio a difficoltà più elevate la duratadel backstage oppure il tempo che serve allo Xenomorfo per individuare il giocatore siriducono drammaticamente.Questo complesso sistema a doppia intelligenza artificiale ha permesso di realizzare unacreatura simil-intelligente, dal comportamento realistico evitando di ricorrere acomportamenti predefiniti, ha fatto sì che Alien: Isolation sia uno dei titoli più importanti degli

ultimi anni. [18] [29]

ConclusioniNegli anni le intelligenze artificiali hanno fatto passi da gigante: tra tutti i titoli alcuni si sonodimostrati più incisivi per la spiccata intelligenza dei personaggi che lo caratterizzano.Partendo da Nim fino ad arrivare ad Alien: Isolation gli algoritmi utilizzati sono cambiati emigliorati.

Sembra tuttavia ultimamente essi sembrano aver subito un blocco.

Questo è causato da vari fattori, primo tra tutti, il costo e le risorse richieste per sviluppare AIcredibili e reali: richiede infatti parecchio tempo realizzare un sistema che sia intelligente eallo stesso tempo sposi bene il videogioco stesso (questo per evitare che un IA troppo forteostacoli il divertimento del giocatore).

Altro importante fattore da considerare è che le tecniche e gli algoritmi tradizionali non sonocambiate molto, spesso stentando a tenere il passo con altri aspetti di gioco in forteevoluzione (come ad esempio il comparto grafico). Per porvi rimedio, si stanno sviluppando algoritmi più avanzati che ricorrono ad esempioalle reti neurali per creare sistemi altamenti dinamici e realistici.

Tuttavia questi approcci introducono un’altra problematica, quella relativa all’hardware: infattile AI richiedono non poche risorse fisiche e dipendono dall’evoluzione delle tecnologie

hardware. [18] [30] [14]

Sitografia1. Capitolo 2 - Intelligenza artificiale oggi — Libro Bianco IA draft documentazione

2. Intelligenza artificiale: a che punto siamo oggi

3. History of AI Use in Video Game Design

4. game of Nim

5. Nimrod computer game

Page 172: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

6. Ferranti Mark 1 – Complete History of the Ferranti Mark 1 Computer

7. IBM Deep Blue

8. First Queen (Game)

9. Amiga Game - Earl Weaver Baseball - Review and ADF

10. Sports video game

11. AI: Top Down vs. Bottom Up – The Ria Blog

12. http://www.alanturing.net/turing_archive/pages/Reference Articles/what_is_AI/What is AI09.html, Jack Copeland What is Artificial Intelligence?

13. Understanding the Role of AI in Gaming

14. Videogiochi e AI: viaggio nel mondo dell'intelligenza artificiale

15. L'intelligenza artificiale e l'evoluzione dei videogiochi

16. Come l’IA rivoluziona i videogiochi, e viceversa - Osservatorio IA

17. https://gamedevelopment.tutsplus.com/tutorials/finite-state-machines-theory-and-implementation—gamedev-11867, Finite-State Machines: Theory and Implementation

18. articolo precedente:IA nei videogiochi: perché non migliorano?

19. Behavior Trees and Finite State Machine Discussion

20. The AI of Half-Life: Finite State Machines | AI 101

21. Behaviour Trees: The Cornerstone of Modern Game AI | AI 101

22. Behavior tree (artificial intelligence, robotics and control)

23. Behavior Trees: Three Ways of Cultivating Game AI

24. Pathfinding

25. A* search algorithm

26. DeepMind Blog: “Agent57: Outperforming the human Atari benchmark”

27. L'intelligenza artificiale e il suo impiego nello sviluppo dei videogiochi

28. AlphaStar: Mastering the Real-Time Strategy Game StarCraft II

29. Revisiting the AI of Alien: Isolation | AI and Games

30. How artificial intelligence will revolutionize the way video games are developed and played

Page 173: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

ApprofondimentiMaestripieri Niccolò - “Artificial Intelligence: state of art and beyond”Zerini Gioele - “Reti Neurali Artificiali”

BibliografiaI. Pathfinding in Computer Games , “Pathfinding in Computer Games”, Ross Graham -

Hugh McCabe - Stephen SheridanII. (PDF) A*-based Pathfinding in Modern Computer Games , “A*-based Pathfinding in

Modern Computer Games”, Xiao Cui - Hao Shi

Page 174: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

VR content creation and explorationwith deep learning

Matteo Scortichini

AbstractIn questo articolo si andrà a trattare l’argomento del deep learning e delle sue applicazionialla realtà virtuale. La realtà virtuale offre una simulazione artificiale generata dal computerdi un ambiente di vita reale, ha avuto origine negli anni '60 ed è in continua evoluzione. Lacreazione e l'esplorazione di contenuti VR, attraverso l'analisi di immagini e video, sintesi edediting progettati specificamente per gestire immagini panoramiche, video e scene virtuali in3D con l’utilizzo del deep learning (che è in grado di rappresentare e comporre informazionia vari livelli in modo gerarchico) , possono costruire modelli molto potenti che sfruttanograndi quantità di dati visivi. Infine, si affronterà il mondo del deep learning, sia quello del VRche l’applicazione di questa tecnologia a diversi ambiti, come ad esempio la medicina,ivideogiochi e come questa applicazione sia in grado di creare ed esplorare i contenuti.

1. Deep learningIl Deep learning fa parte di una più ampia famigliadi metodi di Machine learning basati su reti neuraliartificiali con Feature learning[1]. L'apprendimentopuò essere supervisionato, che consiste in unatecnica di apprendimento automatico che mira aistruire un sistema informatico in modo daconsentirgli di elaborare automaticamenteprevisioni sui valori di uscita di un sistema, rispettoad un input, sulla base di una serie di esempiideali. Viene definito “supervisionato” perché glisono forniti in input dati conosciuti e gli output chedovremmo ottenere sono già conosciuti, quindi inquesto modo possiamo controllare se le operazionisono avvenute correttamente (es. Esercizio dimatematica con le soluzioni finali). Al contrario, l'approccio non supervisionato è unatecnica di apprendimento automatico che consiste nel fornire al sistema informatico unaserie di input, i quali daranno output non conosciuti, per studiare il funzionamento e percercare di effettuare ragionamenti e previsioni sugli input successivi. Al contrariodell'apprendimento supervisionato, vengono forniti all'apprendista solo esempi non annotati,in quanto le classi non sono note a priori, ma devono essere apprese automaticamente.Infine può essere semi-supervisionato, che è una combinazione delle due tecnicheprecedenti .

Page 175: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

L'aggettivo "deep" nel Deep learning si riferisce all'uso di più livelli nella rete. Nel Deeplearning gli strati possono anche essere eterogenei e deviare ampiamente dai modelliconnessionisti[2] biologicamente informati , per motivi di efficienza, addestrabilità ecomprensibilità, da cui la parte "strutturata".Il Deep learning è una classe di algoritmi dimachine learning che utilizza più livelli per estrarreprogressivamente funzionalità di livello superioredall'input grezzo. Ad esempio, nell’elaborazionedelle immagini , i livelli inferiori possono identificarei bordi, mentre i livelli superiori possono identificarei concetti rilevanti per un essere umano come cifre,lettere o volti. Nel deep learning, ogni livello imparaa trasformare i propri dati di input in unarappresentazione leggermente più astratta ecomposita. In un'applicazione di riconoscimento diimmagini, l'input grezzo può essere una matrice dipixel; il primo livello di rappresentazione puòastrarre i pixel e codificare i bordi; il secondo stratopuò comporre e codificare disposizioni di bordi; ilterzo strato può codificare naso e occhi; e il quarto strato può riconoscere che l'immaginecontiene un volto. È importante sottolineare che un processo di Deep learning puòapprendere da solo quali funzionalità collocare in modo ottimale in quale livello.

2. Virtual RealityUn campo di applicazione del Deep learning può essere la Virtual reality (VR).La Realtà Virtuale è un ambiente esclusivamente digitale creato da uno o più computer chesimula la realtà effettiva e la ricrea in modo non tangibilee che viene veicolato ai nostri sensi mediante delleconsole che consentono un'interazione in tempo realecon tutto ciò che è prodotto all’interno di tale mondo.Questo scambio di dati è permesso da dispositiviinformatici, per la maggior parte visori per la vista, guantiper il tatto e auricolari per l’udito, e consentonoun'immersione completa nella simulazione creata inmodo tridimensionale e dinamico, accedendo a tutta unaserie preordinata di contenuti che vengono esplorati, inmodo da costruire un vero e proprio mondo paralleloverosimile.La VR si divide in due sottocategorie: la realtà virtualeimmersiva e la realtà virtuale non immersiva.Nel primo caso, l’utente viene completamente isolatodall’ambiente esterno ed è trasportato nella realtàparallela riprodotta e in essa viene assorbito completamente. Nel secondo caso, invece,l’ambiente ricreato digitalmente ha un minore impatto emotivo sul soggetto, che si troveràsemplicemente davanti a un monitor, il quale fungerà da finestra sul mondo tridimensionalecon cui l’utente potrà interagire attraverso joystick appositi.Grazie alla sua grandissima adattabilità, la realtà virtuale sta trovando riscontri positivi in

Page 176: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

diversi ambiti e settori. Nel campo medico la Realtà Virtuale sta diventando uno strumentonon soltanto formativo, ma anche terapeutico ed operativo, con l’epilogo più famoso al RoyalLondon Hospital dove si è svolta in collegamento con l’India la prima operazione chirurgicadella storia in VR trasmessa in tempo reale. Nel campo della moda la realtà virtualeconsente di poter indossare gli abiti prima di acquistarli, unitamente all’utilizzo della RealtàAumentata, che consente, tramite occhialini muniti di telecamera, di vedere un determinatomodello di vestito in molteplici forme e colori, semplicemente guardando la modella che èposizionata di fronte. Un altro campo in cui la Realtà Virtuale ha preso piede in modopreponderante è la progettazione edile, sia di costruzione, sia di ristrutturazione, che diinterni, con una netta distinzione ed integrazione tra la progettazione in 2 dimensioni, in CADed in VR.

3. VR content creation and exploration with deep learningLa creazione di contenuti VR in modo quanto più realistico possibile costituisce ilfondamento dell'esperienza VR immersiva. In generale, sono impiegate due tipi di fonti perla creazione computazionale di contenuti VR: immagini e video della vita reale, oggetti escene creati automaticamente o interattivamente usando i computer.Gli aspetti chiave per fornire un'esperienza immersiva VR per gli utenti è la fedeltà delcontenuto VR e il realismo dell'interazione; abbiamo bisogno di utilizzare approcci diintelligenza artificiale per ottenere una costruzione dell'ambiente VR di alta qualità,analizzare le ricche informazioni nei contenuti VR e comprendere correttamente le azionidell'utente. Recentemente, le tecnologie di intelligenza artificiale hanno fatto un salto inavanti con lo sviluppo e l'applicazione delle reti neurali profonde. La continua evoluzione deisistemi di deep learning ha catalizzato la loro adozione nella ricerca VR, specialmente nellacreazione di contenuti VR e nell'esplorazione dei compiti. Poiché i sistemi di deep learningsono in grado di rappresentare e comporre le informazioni in modo profondo e gerarchico,riescono ad analizzare le grandi quantità di dati media visivi disponibil. È probabile che imetodi di deep learning diventeranno di uso comune nei prossimi anni in diversi sottocampidella ricerca sulla VR. La creazione di contenuti VR e l'esplorazione sono diventati fonte diinteresse della ricerca negli ultimi anni. I contenuti VR possono essere generaticomputazionalmente sia dal normale campo visivo di foto e video utilizzando lo stitching[3] etecniche di ricostruzione della scena, o metodi di modellazione 3D e composizione dellascena con un processo di rendering. Dopo di che, le scene virtuali devono essere analizzatee comprese tramite algoritmi di computer vision[4], come il rilevamento degli oggetti el'analisi della scena per fornire informazioni semantiche per ulteriori manipolazioni erendering. Una scena virtuale può essere presentata all'utente usando normali display 2D odisplay montati sulla testa (HMD) per l'esplorazione interattiva.Nel frattempo, il voltodell'utente, la posa, gesto e/o sguardo possono essere registrati, riconosciuti e tracciati daisensori circostanti per un'accurata e intelligente interazione con l'ambiente virtuale. I metodidi deep learning possono essere integrati in ogni fase dell'intera pipeline[5] per migliorare lacapacità, l'effettività e l'efficienza dei sistemi VR, riducendo al contempo la quantità di lavoro,le spese e la ridondanza. I metodi basati sul deep learning sono stati studiati e applicati consuccesso a molti compiti di computer vision per i media visivi, analizzando immagini, video,modelli geometrici e scene. Per esempio, il rilevamento di oggetti in tempo reale può essereattuato con l'algoritmo YOLO e le reti Mask-RCNN per rilevare e riconoscere gli oggetti inun'immagine; le reti per la creazione di grafici di scene comprendono ulteriormente lepossibili relazioni tra gli oggetti. Per manipolare il contenuto delle immagini, il trasferimento

Page 177: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

di stile e traduzione immagine-immagine, sono state sviluppate reti. Tuttavia, il contenuto VRè molto più complesso da analizzare e manipolare rispetto alle foto e ai video normali perdue motivi in primo luogo, la risoluzione e il campo visivo a 360° di immagini e videopresentati in VR sono molto più grandi e quindi includono più contenuto della scena(si tengapresente che la presenza a 360° di immagini e video, utilizzando la proiezione latitudine-longitudine può anche produrre gravi distorsioni). In secondo luogo, il contenuto virtuale è disolito sperimentato in modo immersivo con display montati sulla testa, dove gli artefatti diediting attirano molto di più attenzione visiva o portano a una visione scomoda. È richiestauna qualità più alta del contenuto generato per la VR rispetto ai normali media e per questoscopo, i metodi di deep learning per la creazione e l'esplorazione di contenuti VR sonospecificamente progettati con campi recettivi più ampi per la consapevolezza spaziale el'alta efficienza per la gestione a 360° di dati video. Nell’articolo “VR content creation andexploration with deep learning: A survey”[1] di Miao Wang, Xu-Quan Lyu, Yi-Jun Li, andFang-Lue Zhang si affrontano i seguenti approfondimenti che possono essere degni di nota:la sezione 2 considera i modelli profondi per la creazione di contenuti VR , la sezione 4descrive il recente lavoro di deep learning sull'esplorazione dei contenuti VR e l'interazione ela Sezione 6 trae conclusioni e discute possibili direzioni e tendenze future in questo attivocampo di ricerca.

4. Applicazioni possibili

4.1 Medicina

Un'applicazione di questa tecnologia la possiamo trovare nella medicina, dove i progressidall'integrazione di intelligenza artificiale, apprendimento automatico alla realtà aumentatasono diffusi e hanno aiutatoinnumerevoli pazienti.In quasi tutti gli aspetti dell'assistenzasanitaria, la realtà virtuale (VR), larealtà aumentata (AR), l'intelligenzaartificiale (AI) e il machine learning(ML) stanno diventando sempre piùcomuni. Anche se questa tecnologiaha un impatto su tutte le disciplinesanitarie, la sua importanza èfondamentale per le disciplinechirurgiche.La VR consiste nel creare unasimulazione di un dato scenario, inopposizione all'alterazione di unarealtà effettiva e potrebbe includere uncadavere per aiutare a imparare lestrutture anatomiche e qualsiasi imaging preoperatorio[6] per aiutare a pianificare unaprocedura. I curricula di formazione VR sono stati creati per permettere sia ai chirurghi informazione che a quelli che praticano un'esperienza di sala operatoria (OR) più sicura per iloro pazienti. La VR può anche essere incorporata nella pianificazione preoperatoria di unchirurgo, utilizzata all'unisono con algoritmi AI, per aiutare a mappare virtualmente unaprocedura. La VR non è limitata alla sala operatoria; la VR viene incorporata nella terapia

Page 178: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

occupazionale per aiutare i pazienti con ictus a recuperare, inoltre viene utilizzata per lariabilitazione con uno strumento collaudato che crea scenari specifici per i pazienti,permettendo loro di avere trattamenti mirati per il loro particolare livello di recupero e deficit.In più dal crescente aumento della complessità medica, è nata l'esigenza di una tecnologiache andasse oltre la semplice realtà simulata. La realtà aumentata (AR) è stata la risposta aquesto problema. L'AR può lavorare in parallelo con un sistema di telemanipolazione perottimizzare il campo visivo del chirurgo che opera. L'AR viene attualmente utilizzata persovrapporre punti di riferimento anatomici chiave durante la chirurgia dal vivo per ottimizzarela sicurezza del paziente. Per esempio, gli studi di imaging preoperatorio di un pazientepossono essere sovrapposti al campo chirurgico ed evidenziare le strutture utilizzando deimarcatori. La figura mostra come la AR sia stata utilizzata per sovrapporre un'immagine CTpreoperatoria in modo estremamente accurato sulla parte inferiore della gamba di unpaziente. In particolare, è stato utilizzato l'HoloLens.Questa tecnologia permette al chirurgo di avere una maggiore precisione durantel'operazione. La chirurgia guidata mirata (TGS) comporta un approccio pianificato per unadeterminata procedura basata su immagini preoperatorie. Una volta che l'intervento èiniziato, TGS implementa immagini di guida in tempo reale, utilizzando AR, che vienemostrato sull'endoscopio attraverso il piano predeterminato. Nella chirurgia robotica,l'operatore ha una mancanza di feedback tattile migliorando il campo visivo del chirurgo. Peresempio, l'uso della AR in tempo reale può aiutare il chirurgo a visualizzare quanto tessutocanceroso rimane nell'area di interesse. L'applicazione dell'AR nella chirurgia robotica vaoltre il rilevamento del tessuto canceroso, comevisto sopra, e continuerà a progredire per fornireall'operatore un campo visivo ottimale.

4.2 Videogiochi

Un’altra applicazione la possiamo trovarenei videogiochi, dove l’IA vienesviluppata per generare un’esperienza digioco migliore e sempre piùpersonalizzata.L’IA impara dalleesperienze avvenute, cambia e si adattain modo che il gameplay ci restituiscamondi sempre diversi ma tutti verosimili.È così possibile garantire durante il giocoun’esperienza di vita realistica,soprattutto se usata insieme ai visori VR.Grazie all’IA è impossibile per ilgiocatore rovinarsi l’esperienza acausa di uno spoiler, poiché ognigiocatore effettua le proprie scelte e ilgioco è influenzato e cambia in basead esse. Questo garantisceun’esperienza di gioco unica.Tuttavia questa imprevedibilità risultaessere il maggior problemadell’utilizzo dell’IA per la creazione divideogame poiché, così facendo, il

Page 179: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

programmatore non è in grado di gestire il gioco e prevedere il tipo di esperienza che avràl’utente.

4.3 Cinema

Infine anche il futuro del cinemava in questa direzione: il creativoPietro Gagliano ha presentato alFestival Internazionale di Venezia2020 “Agence”, film interattivo edinamico che ha unito VR eIntelligenza Artificiale. In“Agence”, i personaggi sonopiccoli alieni che crescono eapprendono direttamente daglispettatori: non ci sono obiettiviveri e propri, l’utente puòinterferire nelle attività di questiesseri, punendoli, consolandoli,diventando elemento di caos o di equilibrio nella loro comunità.La VR sta sempre più prendendo piede anche nel mondo del cinema,dove viene utilizzata sia per progettare le inquadrature che per filmare lescene, mettendo un visore VR alla camera da presa. Un esempio diquesta applicazione è il film di animazione del 2019 “Il Re Leone” giratograzie all’utilizzo di tecnologie tipiche del mondo del gaming, prima fratutte la VR.

Glossario[1] Feature learning:è un insieme di tecniche che permette ad un sistema di rilevareautomaticamente le rappresentazioni necessarie per rilevare o classificare dati grezzi.

[2]Connessionisti: è un approccio nei campi della scienza cognitiva che spera di spiegare ifenomeni mentali utilizzando reti neurali artificiali.

[3]Stitching:è un metodo col quale si combinano molteplici immagini fotografiche per produrreun panorama o un'immagine ad alta risoluzione.

[4]Computer vision:è un campo scientifico interdisciplinare che si occupa di come i computer

Page 180: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

possono acquisire una comprensione di alto livello da immagini o video digitali.

[5]Pipeline:viene utilizzato per indicare un insieme di componenti software collegati tra loro acascata, in modo che l’output di uno sia l’input di quello successivo.

[6]Imaging preoperatorio:immagini che vengono visualizzate in preparazione ad unaoperazione

Bibliografia● Documento pdf sulla realtà virtuale di Luca Rinaudo del 2019 (ultima visualizzazione

11/05/2021)● Pagina wikipedia sul deep learning (ultima visualizzazione 11/05/2021)● Aricolo relativo allo sviluppo e creazione dei contenuti di realtà virtuale con il deep

learning di Miao Wang delmarzo del 2020 (ultima visualizzazione 11/05/2021)● Articolo sull’utilizzo dell’intelligenza artificiale nella medicina del novembre del 2020

Page 181: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Il futuro dell’agricoltura? É nell’intelligenza artificiale

Denis Daka

Abstract

Il settore agricolo sta attraversando un passaggio culturale che risulta piuttosto caotico, acausa di un mercato che propone soluzioni tecnologiche, spesso non ancora appropriate peressere introdotte proficuamente. Inoltre, la crescita demografica, la progressiva riduzione deisuoli adibiti a coltivazione e i cambiamenti climatici, richiedono che la produzione agricola siasempre più efficiente ed efficace, passando da un tipo di agricoltura tradizionale aun’agricoltura digitale. Si va sempre di più verso l’agricoltura di precisione, di strategia. Innostro soccorso arriva l’AI, che ci aiuta a ridurre gli sprechi e rende più efficaci ed efficientimolti processi in campo agricolo.

Introduzione

Entro il 2050 la Terra supererà i 10 miliardi di persone e la quantità di cibo necessaria persfamare tutti sarà superiore del 70 % rispetto a oggi. È impensabile pensare di riuscire asfamare tutta la popolazione con le stesse tecniche applicate al giorno d'oggi. I cambiamenticlimatici e la limitata disponibilità di risorse idriche, metterà a dura prova il settore agricolo,ma l’agricoltura sta subendo una rivoluzione guidata dalla tecnologia allo scopo diperseguire la sicurezza alimentare. L’applicazione etica della AI può aiutarci a produrre ciboin modo efficiente, senza l’uso di sostanze chimiche (a tutela dell'ambiente).L’AI quindi è uno strumento essenziale per rendere il mondo più sano e più prospero, purchéessa sia sviluppata secondo interessi e valori umani.

1.Etica della AI per uso agricoloPer evitare un utilizzo sbagliato di questa tecnologia è stato scritto un documento intitolatoRome Call For AI Ethics, volto a promuovere un approccio etico e sostenibile a questo tipo dipratiche. Il documento ha ricevuto forte approvazione da Papa Francesco ed è stato firmatoda Pontificia Accademia per la Vita, FAO, IBM e Microsoft.Esso si basa su tre principi cardine:

● trasparenza (i sistemi devono essere spiegabili)

Page 182: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

● inclusione (tenere conto dei bisogni di tutti gli esseri umani)

● imparzialità (le tecnologie non devono agire a vantaggio di pochi)

2.Machine Learning

Sempre più start-up stanno cercando soluzioni per l'agricoltura basandosi su AI.Si tratta di agricoltura e intelligenza artificiale, due realtà apparentemente lontane, quasi agliantipodi. Ma i recenti sviluppi della tecnologia ci stanno facendo intravedere un percorsointrecciato tra queste due discipline che tutti pensavano presenti su due rette parallele,quando invece si trovano su un punto d'incontro (agricoltura ad alta tecnologia). Ciòconferma che quando c’è bisogno, le applicazioni basate su AI, possono migliorare le attivitàumane in ogni campo. Una delle tecnologie usate dalla AI è il machine learning che haapplicazioni in tutti i campi della tecnologia. Ovviamente anche il settore agricolo hacominciato a trarne vantaggio: in questi anni é in corso una rivoluzione per l'uso dei pesticidi.Si sta tentando di addestrare il software dei robot attraverso il machine learning,puntando amandare i robot a esaminare le singole piante e una volta rilevati gli insetti e riconosciutiattraverso un software di riconoscimento verranno raccolti dalla pianta e inseriti in unospazio interno alla macchina per poi essere liberati (in uno spazio dove non possonoarrecare danno) o molto semplicemente essere eliminati. Attraverso il machine learning, irobot potranno inoltre riconoscere la presenza di determinati microrganismi semplicementedal tipo di danno presente sulle foglie (come farebbe un essere umano). Questo sistema puòapplicare il fitofarmaco anche sulle singole piante e questo riduce l'uso di tali prodottidrasticamente. Tuttavia per il momento siamo nella fase di testing di questa tecnologia mase le sperimentazione porterà buoni risultati, vedremo tantissime applicazioni del machinelearning e dei robot in agricoltura.

2.1 Syngenta

È vero che con l’andare avanti del tempo bisogna trovare sempre modi più efficaci perproteggere le colture dalle piante infestanti, malattie e parassiti; tuttavia bisognasalvaguardare gli ecosistemi. Per questo obiettivo, Syngenta Crop Protection ha avviato unacollaborazione con Insilico Medicine (ditta specializzata in AI e Deep Learning). Da questacollaborazione, sono nate nuove soluzioni rapide, efficienti e sempre più innovative, in modotale da aiutare la produzione e la qualità delle colture. Questa collaborazione ha moltepotenzialità, in quanto potranno essere sfruttate soluzioni più sostenibili per la protezionedelle colture e delle derrate alimentari in quanto l’AI ha immense potenzialità (solo l’annoscorso sono stati investiti 2 miliardi di dollari nel campo dell'innovazione e della sostenibilità).I.M., attraverso l’ausilio di AI e Deep Learning, sta sintetizzando nuove sostanze attive(Fitofarmaci), I.M. utilizzerà la sua tecnologia di chimica generativa basata su AI, non soloper creare e ricercare nuove molecole per principi attivi, ma anche per la progettazione dimolecole che siano più sostenibili e rispettose per l'ambiente.Insilico Medicine afferma che la loro AI è stata progettata completamente da zero al fine diuno sviluppo di una chimica di precisione, per la protezione della salute umana e ambientale,

Page 183: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

per garantire sicurezza nel breve e lungo termine. Questa collaborazione garantirà che inuovi metodi di protezione delle colture vengano messi a disposizione ancora piùvelocemente.

3.Agricoltura di Precisione

il metodo più semplice per controllare le infestanti è quello spruzzare erbicidi su interiraccolti. Questo causa: sprechi, problemi di salute e inquinamento e ha anche un grandecosto. Oggi, le tecnologie avanzate vengono sempre più applicate a una serie di settori tracui l’agricoltura. Una di queste è quella dell’agricoltura di precisione, che consente di ridurrel’uso di input chimici, macchinari e acqua semplicemente utilizzando informazioni su suolo,temperatura, umidità, semi, attrezzature agricole, bestiame, fertilizzanti, terreno, coltureseminate e utilizzo dell’acqua. Il mercato, collegato ad essa, cresce a ritmi elevatissimi eraggiungerà i 22 miliardi di dollari nel 2025 dai 13,8 di oggi. E il principale attore èsicuramente il drone agricolo, che ha un giro d’affari di ben 12 miliardi di dollari, visto che èmunito di tecnologie sempre più sofisticate, come sensori termici, software di analisi dei bigdata.Questa rivoluzione agricola porta con sé molti vantaggi, partendo dalla riduzionedell'impiego dei pesticidi dell’85%, in quanto sarà possibile prevedere in anticipo le varieproblematiche relative a parassiti e malattie semplicemente dall'analisi dei dati forniti daisensori: ciò aumenterà considerevolmente la resa dei raccolti.Ci sono piattaforme che,attraverso i dati raccolti, danno istruzioni su quali siano le piante più adatte a un determinatotipo di terreno, (ad esempio MyJohnDeere).Un aspetto che va analizzato è quello dellaspesa idrica, in quanto il consumo di acqua in ambito agricolo è equivalente al 70% delconsumo mondiale e il 60% di questa viene sprecata a causa di utilizzi poco efficienti.

Page 184: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Blue tentacles (una startup italiana), grazie a vari sensori e all'utilizzo dell' Intelligenzaartificiale, vuole aiutare gli agricoltori a migliorare la loro irrigazione prendendo nota dei daticome temperatura, clima, umidità, dati satellitari e previsioni meteo.Siccome la popolazionemondiale è in aumento, anche gli agricoltori dovranno produrre di più. Tuttavia, si staavvicinando una minaccia per la sicurezza alimentare, in quanto la superficie arabile non puòtenere il passo. Per aumentare i raccolti, ridurre i rischi e gli sprechi, le aziende iniziano asfruttare l'agricoltura di precisione. Per noi è fondamentale usare la tecnologia al fine dievolverci dall'agricoltura intensiva, che ha sfruttato risorse naturali per gli ultimi 50 anni,provocando un deterioramento ambientale, ove i costi non sono più sostenibili (semprerimanendo in termini ambientali, sociali, inquinamento, perdita di biodiversità e riduzionedella fertilità del suolo). Questo problema è diventato importante anche nel nostro Paese:secondo una stima risulta che si sia perso il 33% dei terreni fertili negli ultimi 40 anni.L’usodella robotica è essenziale, se vogliamo risolvere questa problematica. Ad esempio, Iron Ox,una startup statunitense, sfrutta bracci robotici per la raccolta di lattuga. Usando l’AI, i braccipossono riscontrare varie malattie o attacchi parassitari e il risultato è fenomenale: in solomezzo ettaro di terreno, Iron Ox è in grado di coltivare la lattuga, che di solito richiede 12ettari. Si passa dai robot ai trattori a guida autonoma per finire con i droni (utilizzabili ancheper l'impollinazione delle piante). Ad esempio, CNH, Industrial si è data allo sviluppo ditrattori intelligenti in grado di svolgere tutti i compiti che normalmente hanno bisognodell'essere umano in autonomia (ad esempio guidarsi, raccogliere informazioni per prenderedecisioni) garantendo così la miglior produttività possibile.

3.1 Droni agricoli

I droni agricoli sono agli albori, ma è già cambiato molto da quando sono stati utilizzati laprima volta per il monitoraggio delle colture. Negli ultimi anni infatti non è più necessarioavere buone conoscenze di volo e di fotogrammetria in quanto oggi far volare un drone èfacile quanto andare in bicicletta, in pochi secondi infatti si può far alzare il veicolo in cielo emonitorare le colture. Questi droni negli ultimi anni sono molto forniti per quanto riguarda isensori e ciò permette di raccogliere informazioni su singola area o diversa tipologia dicoltura: tutti i dati raccolti vengono mandati a computer, che analizzano le condizioni dellecoltivazioni per ottimizzare il consumo di risorse (In questo modo, il raccolto dovrebbeaumentare del 20% a parità di terreno consumato; teniamo conto che il 30% del suoloterrestre è utilizzato per l'agricoltura). Grazie ai droni puoi interrogare il terreno e le suepiante, con lo scopo di ricavare informazioni preziose volte a migliorare il raccolto e renderepiù efficienti le risorse idriche e agrotecniche.

Page 185: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

4.Visione Artificiale

La visione artificiale è la branca dell’informatica, che mira ad emulare la visione umana,usando sistemi informatici. Vengono usate macchine per interpretare il mondo reale,analizzando con precisione oggetti e sequenze di immagini.La visione artificiale promette una migliore produttività e una riduzione dei costi in campoagricolo, attraverso le sue capacità di rilevamento e analisi.

4.1 Visione Artificiale con John Deere

Telecamere, sensori e intelligenza artificiale (AI): tutto ciò sta aiutando gli agricoltori allamiglior gestione dei campi e all'utilizzo dei pesticidi in modo preciso. See & Spray di BlueRiver Technology, attraverso l'ausilio di computer vision e AI, riesce a rilevare, identificare eprendere decisioni sulla gestione di ogni singolo impianto in campo. Nel 2017 questacompagnia è stata acquistata dal colosso americano John Deere (Deere & Company, unadelle principali aziende al mondo produttrice di macchine agricole). See & Spray è largo circa

Page 186: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

12 metri, copre circa 12 file di colture, è alimentata de processori Nvidia (nota aziendamondiale produttrice di computer grafici, schede madri e prodotti multimediali per pc, exschede video) e trainata da trattori rigorosamente marchiati Deere. La macchina See &Spray utilizza 30 telecamere per scattare foto ogni 50 millisecondi che successivamenteverranno elaborate dai 25 moduli Jetson AGX Xavier integrati. Questi moduli sono in gradodi prendere decisioni molto rapide in base alle immagini di input ricevute (ciò grazie aglialgoritmi di riconoscimento che la macchina esegue). See & Spray è stata in grado diottenere un raccolto soddisfacente utilizzando il 10% dell’erbicida che si utilizza con il tipicocontrollo delle infestanti.

ConclusioniIl contributo dell'intelligenza artificiale attraverso le discipline è in continua espansione. Poiché i modelli di deep learning continuano a diventare più intelligenti, possono gestire attività complesse con la massima facilità. L'agricoltura è un settore che può guadagnare molto dalla tecnologia. Con diversi paesi che non soddisfano i requisiti della domanda e dell'offerta, è imperativo adottare tecnologie che possano aiutare a una migliore produzione e portare efficienza complessiva. La visione artificiale sta facendo i passi giusti verso l'agricoltura. Sebbene ci siano delle sfide, come con ogni tecnologia sul mercato, le offerte divisione artificiale basate sull'intelligenza artificiale dovranno affrontare i problemi correlati prima di ottenere l'adozione completa della tecnologia. Ci sono diversi fattori da considerare prima di implementare tali tecnologie avanzate. Tuttavia, con i progressi tecnologici e le trasformazioni, stiamo entrando in un mondo di digitalizzazione. È giusto abbracciare gli aspetti positivi per ottenere la migliore produttività agricola con le tecnologie del futuro.

SitografiaIntelligenza artificiale e agricoltura, insieme inseguendo valori umani

Page 187: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Come sarà il futuro dell'agricoltura - WiredApplicare l'Intelligenza Artificiale in agricoltura per ottenere ottimi risultatiDroni per agricoltura di precisionehttps://www.feger.it/blog/agricoltura-40-robot-ed-intelligenza-artificiale-per-le-aziende-agricole-del-futuro

APPROFONDIMENTII. Niccolò Maestripieri - Artificial Intelligence: state of art and beyond

II. Alessandro Rabuzzi - Bonfanti Big Data e Intelligenza Artificiale

Neurocrittografia / Speedgate: ilprimo sport al mondo generato da

un’Intelligenza ArtificialeFrancesca Aurora Esposito

1 Abstract

Lo speedgate è stato creato grazie all’intelligenza artificiale.Tutto ciò è stato reso possibile per merito delle nuove tecnologie attuali.Il principale scopo dei ricercatori, che hanno contribuito, era dimostrare che una I.A. fosse in grado di creare un gioco.Inoltre i ricercatori volevano sviluppare un gioco definitivo basato su oltre 700 sport.

Per lo sviluppo di questo gioco sono state utilizzate le reti neurali, nello specifico, le reti neurali ricorrenti.Per la creazione del logo ufficiale, è stata addestrata un’intelligenza che ha analizzato oltre 10.000 loghi delle varie squadre degli sport.

Per poter supervisionare l’apprendimento delle intelligenze artificiali è stata usata la

Page 188: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

neurocrittografia chiamata anche crittografia neurale.

In merito alla neurocrittografia è stato analizzato anche Neuralink, un’azienda creata da ElonMusk che ha come scopo la creazione di un’interfaccia cervello-computer (BCI).

2 Introduzione SpeedGateLo speedgate è il primo sport al mondo generato dall’intelligenza artificiale.Il principale scopo di questo progetto è stato dimostrare che un’intelligenza artificiale fosse ingrado di creare uno sport.Questo è stato possibile grazie alla seguente formula: dati + algoritmo + persone umane.

3 Reti Neurali ArtificialiPer comprendere meglio come è stato possibile creare il gioco, è necessario inizialmente capire cosa sono le reti neurali artificiali:Nell’ambito dell’apprendimento automatico, una rete neurale artificiale (Artificial Neural Network - ANN / NN) è un modello computazionale composto da “neuroni” artificiali ispirati alla rete neurale biologica.La rete neurale artificiale può essere realizzata sia da programmi software che da hardware dedicato.

Sintetizzando possiamo dire che le reti neurali artificiali sono strutture non lineari tramite le quali è possibile far apprendere al sistema ciò che si desidera basandosi su regole e teoremimatematici.

4 Rete Neurale RicorrenteLa rete neurale ricorrente (Recurrent Neural Network, RNN) è una tipologia di rete neurale artificiale che include neuroni collegati tra loro in un loop.

Tipicamente, i valori di output di uno strato di un livello superiore, sono utilizzati in ingresso di uno strato di livello inferiore.

Questa interconnessione tra strati permette di poter utilizzare uno degli strati come memoria di stato. Inoltre consente, fornendo in ingresso una sequenza temporale di valori, di poter modellarne un comportamento dinamico temporale dipendente dalle informazioni ricevute negli istanti di tempo precedenti.

In altri casi lo strato è costituito da un insieme di neuroni dotato di loop di connessioni molto sparse che innesca una dinamica caotica, impiegata per l'addestramento di una parte successiva della rete, come avviene per le echo state network.

Ciò rende possibile applicarle in compiti di analisi predittiva su sequenze di dati.Un esempio potrebbe essere il riconoscimento della grafia o il riconoscimento vocale.

5 Tipologie di apprendimento

5.1 Apprendimento non supervisionato / liberoL’apprendimento non supervisionato è una tecnica di apprendimento automatico che consente al sistema di fornire una serie di input che verranno riclassificati sulla base di caratteristiche comuni per cercare di effettuare ragionamenti e previsioni sugli input successivi.

Page 189: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

Un esempio tipico di questi algoritmi lo troviamo nei motori di ricerca, infatti questi programmi, data una o più parole chiave, sono in grado di creare una lista di link che puntano ai vari siti che risultano essere idonei secondo l'algoritmo di ricerca.

Gli algoritmi di apprendimento non supervisionato lavorano confrontando i dati e ricercando similarità o differenze.Sono veramente molto efficienti solo con elementi di tipo numerico mentre lo sono molto meno con dati non numerici.

Per quanto riguarda la parte numerica vengono utilizzate delle tecniche derivate dalla statistica, mentre, se si parla di dati non numerici, possono comunque essere estratti dei risultati che tuttavia possono non essere affidabili tanto quanto i dati numerici.

Questi algoritmi per lavorare correttamente necessitano di dati contenenti un ordinamento o un raggruppamento netto e chiaramente identificabile.

5.2 Apprendimento supervisionatoL'apprendimento supervisionato è una tecnica di apprendimento automatico che mira a istruire un sistema informatico in modo da consentirgli di elaborare automaticamente previsioni sui valori di uscita di un sistema rispetto ad un input sulla base di una serie di esempi ideali, costituiti da coppie di input e di output, che gli vengono inizialmente forniti.

5.3 Apprendimento di rinforzoOltre questi apprendimenti esiste l’apprendimento di rinforzo, nel quale vi è un algoritmo cheha lo scopo di individuare un certo modus operandi : a partire da un processo di osservazione dell'ambiente esterno; ogni azione ha un impatto sull'ambiente, e l'ambiente produce una retroazione che guida l'algoritmo stesso nel processo di apprendimento.

6 SpeedGatePer la creazione di questo sport, i sistemi di intelligenza artificiale, hanno elaborato 400 tra gli sport più popolari in tutto il mondo, 7300 regole dei vari sport, ed oltre 10.000 immagini dei loghi dei vari team degli sport inseriti.Inoltre, per lo sviluppo dello speedgate, è stato usato un algoritmo basato sulla RNN (Rete Neurale Ricorrente).

I parametri utilizzati durante la creazione del gioco sono stati i seguenti:

● uno sport divertente da giocare● adatto a tutti gli atleti● coinvolgimento fisico anche a livello di team

Tutti questi dati sono stati analizzati dagli algoritmi basati sulla seguente formula:Rete neurale ricorrente (RNN) + Deep Convolutional Generative Networks (Apprendimento non supervisionato) + DCGAN (architettura di rete generativa avversa).

Per la creazione di questo gioco è stato necessario istruire l’algoritmo sul concetto di gioco di squadra. La combinazione di tutti questi dati ha generato una serie di dati in output.

Per migliorare il gioco, è stato necessario l’intervento umano, soprattutto per testare la possibilità di realizzazione. Tutto ciò è stato valutato a piccoli passi, proprio in concomitanza dell’apprendimento dell’I.A.

Sia per l’addestramento delle reti neurali, sia per l’inferenza, (NVIDIA TensorRT è un SDK per inferenza di deep learning ad alte prestazioni. Include un runtime e un ottimizzatore di

Page 190: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

inferenza di deep learning che offre bassa latenza e throughput elevato per le applicazioni) Nvidia ha svolto un ruolo chiave grazie alle sue GPU (schede video).Nello specifico sono state utilizzate le Nvidia TESLA per l’elaborazione dei dati.I modelli hanno generato oltre 1000 diversi output di concetti sportivi, regole ed output di gioco.

Oltre all’addestramento della rete neurale per la creazione del gioco, è stata istruita anche una rete neurale per la creazione del logo ufficiale. Infatti, per questo logo, sono stati inseriti circa 10.400 loghi.

7 Regole del giocoIl campo è composto da tre cerchi.All'interno del campo vi sono i cancelli che costituiscono l’elemento più importante del gioco.Il cancello centrale è quello attraverso il quale deve essere calciata la palla prima di poter procedere verso i due pali (gate) avversari presenti alle due estremità del campo.Mettere un piede all’interno del cancello centrale costituisce un fallo.

Il campo si divide in 3 cerchi e la palla utilizzata è la stessa del rugby.Le squadre sono due formate entrambe da 6 giocatori; 3 attaccanti e 3 difensori.Per stabilire chi avrà inizialmente il possesso della palla, viene lanciata una moneta.La durata del gioco è di 7 minuti per ciascuno dei 3 tempi.

Per il passaggio della palla vi sono due opzioni:- passaggio con le mani; prevede di eseguire il passaggio della palla stando sempre al di sotto della vita, permettendo di lanciarla in avanti o indietro.- calciandola con i piedi; In entrambi i casi, il giocatore in possesso della palla non potrà muoversi e non potrà tenere la palla per un tempo maggiore di 3 secondi.

8 NeurocrittografiaPer supervisionare l’apprendimento dell’ I.A. entra in gioco la neurocrittografia chiamata anche crittografia neurale.Essa è la branca della crittografia che si occupa di analizzare l'applicazione di algoritmi stocastici (algoritmo di ricerca e di ottimizzazione che utilizza scelte casuali ed il calcolo delle probabilità per raggiungere il suo obiettivo) e soprattutto le reti neurali, sia per la cifratura sia per la crittoanalisi.

Le reti neurali artificiali sono note per la loro capacità di trovare soluzioni ad un problema in modo selettivo, infatti una loro possibile applicazione è nel campo della crittoanalisi.Inoltre, offrono un nuovo approccio per attaccare / craccare gli algoritmi di cifratura.Questo perché con la rete neurale è possibile ricreare delle funzioni anche non lineari.

L’idea è quella di usare questo strumento molto potente per poter trovare funzioni inverse di qualche algoritmo crittografico.

Le idee dell’auto apprendimento, mutuo apprendimento ed il comportamento stocastico dellereti neurali e di simili algoritmi possono essere usati per aspetti molto diversi della crittografia, come la crittografia asimmetrica, per risolvere il problema della distribuzione delle chiavi usando la mutua sincronizzazione delle reti neurali, per la generazione di numeripseudocasuali e per funzioni crittografiche di hashing.

Ad oggi non ci sono applicazioni pratiche della neurocrittografia a noi note poiché questo campo è ancora in fase di sviluppo.

Possiamo dire che attualmente la neurocrittografia viene utilizzata per l’analisi piuttosto che

Page 191: IL MONDO DELL’INTELLIGENZA ARTIFICIALE

per gli attacchi.

Sicuramente, in un futuro non troppo lontano, grazie ai sistemi di I.A., sarà possibile creare nuvi algoritmi crittografici più sicuri poiché come abbiamo visto una I.A. è stata in grado di poter creare un vero e proprio sport.

9 NeuralinkNeuralink è un’azienda statunitense di neurotecnologie che si occupa di sviluppare interfacce neurali impiantabili.E’ stata fondata da Elon Musk nel 2016 e la sua principale missione è quella di mettere in comunicazione il cervello umano con l’intelligenza artificiale. Il progetto punta a costruire un’interfaccia cervello-computer (BCI).

La neurocrittografia, in questo settore, potrebbe essere fondamentale, poiché essa potrebbeessere utilizzata per l’analisi dei dati presi in input dal chip impiantato all’interno del cervello.Questi dati potranno essere analizzati grazie alla crittoanalisi, poiché quest’ultima è in grado di poter analizzare le reti neurali.Un esempio di una possibile applicazione futura riguarda le password; se ad oggi siamo abituati ad avere una password per poter loggare nei vari siti, un domani potremmo non averne più bisogno perché potremmo sostituirla con la nostra mente.Queste sono solo supposizioni basate però su ciò che potrebbe realmente accadere.Infatti questo pensiero è condiviso da moltissimi ricercatori.

Neuralink impianta nel cervello un chip di elettrodi di pochi millimetri.Questi chip consentiranno di contenere gli effetti di patologie neurodegenerative, ma l’effettonegativo purtroppo è legato alla privacy della nostra mente..In un domani non troppo lontano, questo chip sarà in grado di poter predire le nostre emozioni ed i nostri pensieri.In sintesi potrebbe essere un vero e proprio siero della verità assoluta ma non solo.Infatti esso sarà anche in grado di poter manipolare i pensieri, cancellare i ricordi ecc.. Uno dei principali scopi per cui potrebbe essere utilizzato probabilmente è il marketing.Infatti potrebbero essere raccolti e utilizzati i dati delle preferenze delle persone.In Cina sono già stati usati dei chip in alcune scuole al fine di monitorare l’apprendimento degli alunni.

Attualmente Neuralink ha eseguito diversi esperimenti, tra i più importanti divulgati possiamotrovare l’installazione di un chip all’interno del cervello di un maiale e di una scimmia.Nel primo caso Neuralink voleva analizzare i dati prodotti dal movimento fisico dell’animale.Nel secondo caso invece, la scimmia è stata messa a giocare al famoso gioco Pong con un controller che spesso veniva disconnesso e riconnesso.Durante la disconnessione la scimmia continuava a giocare senza il controller tramite la sua mente ed il chip interagiva con il gioco come se fosse il controller comandato dal pensiero della scimmia.

10 ConclusioneLa problematica principale è che ad oggi non ci sono regolamentazioni legali e / o etiche di questa tematica.Questo argomento è stato discusso al convegno di Privacy e neurodiritti in occasione della 15esima giornata europea della protezione dei dati personali.“La scienza, solo se guidata dal diritto e dall’etica, può rendere la vita migliore.” Questa è l’affermazione fatta da Stanzione (presidente del garante per la protezione dei dati personali).

Sitografia