Neural Networks and Machine Learning - IPS Cloud

Vista dall’esterno, una rete neurale artificiale è un software eseguito da un computer. La particolarità rispetto al resto dei programmi è la sua capacità di apprendere quali sono le relazioni tra i dati in ingresso e i dati in uscita (i risultati), questo attraverso una struttura logica di base che non cambia al variare dei dati e delle relazioni, ma si adatta.

Il nome rete neurale viene dal paragone con quella del nostro cervello. La sua struttura prevede una serie di punti, detti nodi, connessi tra loro, che ricevono un valore numerico da altri nodi, lo aumentano o diminuiscono e restituiscono il risultato a nodi diversi da quelli da cui l’hanno ricevuto. In modo simile, nel nostro cervello i neuroni ricevono un impulso elettrico da una serie di neuroni e a loro volta ritrasmettono o meno questo impulso elettrico ad altri neuroni. Detta così, un neurone non sembra un oggetto molto intelligente. Gli arrivano delle piccole scosse e tutto quello che fa è ritrasmetterle o meno ad altri neuroni. Come può tutta questa corrente che ci gira nella testa trasformarsi nelle cose così complesse che riusciamo a fare? Il segreto sta nella quantità. Se ad esempio avessimo 100 neuroni, non solo non saremmo molto intelligenti, ma, per come siamo fatti, non sarebbero sufficienti nemmeno per restare in vita (tuttavia ci sono animali che non hanno alcun neurone, come ad esempio le spugne). E se ne avessimo 1000? Non farebbe molta differenza, pensate che una medusa ne ha circa 6000 e fa parte della categoria di fauna con la più bassa capacità cerebrale. Un topo ne ha già circa 70 milioni e noi esseri umani arriviamo a ben 86 miliardi. Ma come fa la quantità a trasformare un processo così basilare e banale nelle sorprendenti abilità che possediamo? Per arrivare alla risposta analizziamo una rete artificiale.

La rete di neuroni artificiale

Schema di una rete neurale artificiale

Schema di una rete neurale artificiale semplificata

Iniziamo a schematizzare un esempio di rete neurale molto semplice per capirne il meccanismo più nel dettaglio. Come vedete nella figura, abbiamo tre livelli. Uno di input dove in questo caso ci sono tre nodi (cerchi azzurri), questi tre nodi rappresentano tre informazioni in ingresso. Un livello centrale detto nascosto, per il fatto che non comunica direttamente con l’esterno (cerchi bianchi). E un livello a destra che rappresenta i risultati, in questo caso fatto da un solo nodo (cerchio arancione). Le linee grigie mostrano le connessioni tra i vari nodi. Il modo più semplice per spiegarne il funzionamento è con un esempio.

Un esempio di previsione meteo

Usiamo un modello di previsioni meteo estremamente semplificato. Supponiamo di voler capire se fra un’ora pioverà o meno, basandoci su tre semplici fattori: 1) La quantità di nuvole in cielo, 2) La velocità del vento, 3) L’eventuale quantità di pioggia in questo momento. I nostri tre input saranno dei numeri decimali che possono andare da 0 a 1. Ad esempio per il primo fattore, la quantità di nuvole, avremo uno 0 se non c’è alcuna nuvola in cielo, uno 0,5 se le aree annuvolate e quelle serene sono equivalenti, fino ad arrivare a 1 nel caso in cui tutto il cielo è coperto di nuvole. Quindi possiamo vedere il nostro valore di nuvolosità come la percentuale di cielo coperta da nuvole. Allo stesso modo faremo per gli altri due fattori, quindi il fattore di vento, che sarà 0 nel caso di assenza totale fino ad arrivare ad 1 nel caso di velocità massima (verrà definita a priori una velocità massima a cui assegnare 1 a seconda della zona geografica in cui stiamo facendo le previsioni). Infine assegniamo il valore della quantità di pioggia, 0 nel caso di totale assenza fino a 1 per l’intensità massima. Per tenere l’esempio più semplice possibile abbiamo un solo risultato e lo chiamiamo Piove.

Il livello nascosto

Adesso che abbiamo deciso quali sono gli ingressi e le uscite della nostra rete neurale, possiamo procedere a spiegare cosa fa questo fantomatico livello intermedio. Come potete vedere dalla figura, ognuno dei pallini bianchi (che simboleggiano i neuroni) riceve tutti e tre gli input. Quindi ognuno di questi nodi riceve tre numeri compresi tra 0 e 1. La prima cosa che fa è assegnare un “peso” ad ognuno di questi tre valori. Questo significa che definisce una percentuale per ognuno degli input. Poi calcola queste percentuali e le somma. Vediamo un esempio.

Prendiamo questi tre input: Nuvole = 0,8 ; Vento = 0,1 ; Pioggia = 0,3. Siamo in una situazione di cielo molto nuvoloso, con pochissimo vento e un po’ di pioggia. Il primo nodo decide di dare alla nuvolosità un peso del 35%, al vento un peso del 52% e alla pioggia un peso del 2%. Quindi i valori di input di questo nodo diventeranno: 0,8 x 0,35 = 0,28 ; 0,1 x 0,52 = 0,052 ; 0,3 x 0,02 = 0,006. Dopo aver fatto questi calcoli, il nodo somma i tre risultati: 0,28 + 0,052 + 0,006 = 0.338. Immagino che vi stiate ponendo due domande, dov’è andato a prendere quelle percentuali per calcolare il peso di ogni input? Per quale motivo fa questa cosa? Iniziamo a rispondere alla prima, per la seconda la risposta arriverà più avanti. Queste percentuali sono a caso. Bene, voi direte, già il tutto sembrava poco intelligente prima, adesso che si inventa i numeri sembra proprio senza senso. In realtà possiamo affermare che a questo punto del processo il nostro sistema è ignorante, perché non ha ancora utilizzato l’intelligenza per imparare, ma lo farà.

Il prossimo passaggio consiste nel definire una soglia, cioè un valore minimo oltre il quale questa informazione andrà avanti oppure no. In questo caso ad esempio possiamo definire che se il risultato del calcolo di un nodo supera 1,5 allora il segnale viene trasmesso oltre, altrimenti si ferma lì. Anche per questo valore non sappiamo a priori qual è quello corretto per ogni nodo, quindi potremmo impostare un numero qualsiasi. Tuttavia in questo caso ho introdotto il risultato di un mio ragionamento nella rete neurale, scegliendo la media della somma degli input. Nel nostro esempio la somma dei tre input può andare da 0 (quando sono tutti zero) a 3 (quando sono tutti uno). Ho fatto questo per mostrare come sia possibile far partire una rete neurale con dei parametri che hanno già un senso, quindi figli di una conoscenza e un ragionamento esterni alla rete neurale. Il vantaggio di fare questo è semplicemente quello di diminuire il tempo che la rete impiegherà per arrivare ai risultati, ma non è assolutamente una cosa necessaria. Per ottenere matematicamente il prosieguo o meno dell’informazione, introduciamo una funzione matematica che genera il valore 0 se il risultato del calcolo precedente è minore di 1,5 oppure genera un 1 nel caso il risultato è maggiore di questa soglia. Quindi dal nodo uscirà uno 0 o un 1.

I risultati del pensiero artificiale

Ora siamo all’ultimo livello, quello dei risultati. Ogni nodo centrale è collegato a quello del risultato, che abbiamo chiamato Piove. Questo nodo riceve uno 0 o un 1 da tutti i nodi centrali, esattamente come prima, applica un peso ad ogni valore in arrivo e ha un valore di soglia, sotto al quale la stessa funzione matematica di prima genererà uno 0 e sopra genererà un 1. Quindi niente di diverso rispetto al livello precedente. Eravamo rimasti che il primo nodo del livello centrale aveva calcolato il valore 0,338, che è minore di 1,5, quindi ha trasmesso al nodo dei risultati uno 0. Pertanto quest’ultimo ha ricevuto uno 0 dal primo nodo centrale, diciamo che gli applica un peso del 71%, quindi ottiene 0 x 0.71 = 0. Allo stesso modo ha ricevuto i valori dagli altri due nodi centrali, quindi ipotizziamo gli altri valori con il loro peso e facciamo la stessa somma che abbiamo fatto per i nodi centrali: 0 x 0,71 + 1 x 0,27 + 1 x 0,95 = 1,22. In questo caso, senza fare nessun ragionamento, decidiamo che la soglia di questo nodo è 2, quindi essendo 1,22 minore di 2 la nostra funzione matematica genererà uno 0. Cosa significa che il nodo del risultato Piove è uguale a zero? Decidiamo noi cosa significa, e diciamo che se il valore è 0 allora tra un ora non pioverà, mentre se è 1 significa che tra un ora pioverà. In questo esempio la nostra rete neurale ci ha detto che la previsione è che non pioverà. Se il processo finisse qui avrebbe lo stesso valore di lanciare una moneta e decidere che testa significa che pioverà e croce no, perciò adesso dobbiamo rendere la nostra rete neurale capace di imparare.

Il machine learning (l’apprendimento della macchina)

Per permettere alla rete neurale di apprendere quali relazioni ci sono tra le informazioni in ingresso e i risultati, abbiamo bisogno di dati reali. Nel nostro esempio dobbiamo raccogliere i dati della nuvolosità, della velocità del vento e dell’intensità della pioggia per un certo periodo di tempo. Con queste informazioni abbiamo sia gli input che i risultati, perché, se rileviamo i dati ogni ora, sappiamo che l’intensità di pioggia ad un certo orario è quello che avrei dovuto prevedere un’ora prima, quindi vado a correlarlo ai tre parametri dell’ora precedente. Nel nostro caso molto semplice il risultato non è nemmeno l’intensità, ma semplicemente la presenza o l’assenza di pioggia. Una volta che ho un buon numero di dati (ovviamente più è grande e più saranno attendibili le previsioni), applico alla rete neurale quella che viene chiamata retropropagazione dell’errore.

Detto in altre parole, non è altro che una sorta di apprendimento per tentativi. Quando la rete lavora sulla serie di dati storici, può fare un confronto tra i risultati da lei ottenuti e quelli reali. In generale tra i due valori ci sarà una differenza, quindi un errore. Lo scopo dell’apprendimento è lo stesso per un essere umano, smettere di commettere errori, o meglio, ridurli il più possibile. Nel nostro esempio molto semplificato la rete neurale potrebbe calcolare uno 0 quando il risultato corretto doveva essere un 1, quindi assenza di pioggia quando in realtà ha piovuto (e viceversa). Ipotizziamo che su 100 misurazioni reali, in 30 casi il risultato è corretto, mentre nei restanti 70 è sbagliato. La rete neurale può modificare i parametri che abbiamo visto prima per ridurre la percentuale di errori: il peso degli input e la soglia che determina se l’uscita dal nodo è 0 o 1.

Come ottimizzare i parametri
Esempio di funzione che rappresenta l’errore del risultato in relazione ai pesi e alle soglie, cioè ai parametri che la rete neurale può variare.

Esempio di funzione che rappresenta l’errore del risultato in relazione ai pesi e alle soglie, cioè ai parametri che la rete neurale può variare.

Una prima ipotesi è quella di continuare a modificare questi valori per ogni nodo in modo casuale finché l’errore scende sotto un certo livello che riteniamo accettabile, così facendo avremmo una rete neurale che ha imparato quali sono le correlazioni tra input e risultati. Questo sistema forse potrebbe anche funzionare per il nostro esempio composto da una manciata di neuroni, ma pensate ad una rete fatta da centinaia di migliaia di nodi, sicuramente non ci basterebbe una vita intera per vedere il risultato, non solo, probabilmente andrebbe oltre la durata dell’universo dalla sua nascita ad oggi. Allora dobbiamo pensare a metodi più furbi per trovare i parametri corretti. Possiamo usare una funzione matematica che contiene i nostri parametri e rappresenta il nostro errore, e quello che dobbiamo fare è trovare dove è minima (e quindi dove l’errore è minimo). Nell’immagine vediamo un esempio di funzione dell’errore in due variabili, quindi una superficie curva con dei massimi e dei minimi (cime ed avvallamenti). Quello che dobbiamo fare è modificare i nostri parametri per arrivare sul fondo dell’avvallamento più basso. In questo caso ipotizziamo che con i parametri iniziali, che causano un errore del 70%, siamo nel punto A. Dobbiamo trovare la strada che nel minor tempo possibile ci faccia arrivare al punto B, dove troviamo i parametri che danno l’errore minimo e rendono la nostra rete capace di fare questa previsione meteo. Per fare questo ci sono metodi matematici molto efficaci, come quello chiamato discesa stocastica del gradiente. Comprendere questi metodi implica un approfondimento matematico corposo e lo scopo di questo post è quello di spiegare il concetto generale. Ho messo il link di Wikipedia per i lettori più curiosi e caparbi che desiderano addentrarsi nell’argomento.

Reti più complesse
Esempio di una rete per il riconoscimento di cifre scritte a mano con una risoluzione di 50x50 pixel

Esempio di una rete per il riconoscimento di cifre scritte a mano con una risoluzione di 50×50 pixel, ogni input rappresenta un pixel.

Adesso la nostra rete ha i parametri corretti, quindi ha imparato quali sono le relazioni tra gli input e i risultati ed è in grado di prevedere se tra un’ora pioverà con un errore contenuto. Questo esempio è estremamente semplificato, in realtà le reti neurali possono gestire un numero di input molto più elevato e anche i risultati possono essere formati da più neuroni. Il livello intermedio può essere composto da più livelli, dove ognuno fa una parte del lavoro e passa il risultato parziale al livello successivo. Facciamo l’esempio di una rete che riconosce i numeri scritti a mano, diciamo dove una singola cifra è un’immagine composta da 50 x 50 pixel, avrebbe quindi 50 x 50 = 2500 valori in input. Ipotizziamo tre livelli intermedi composti ognuno da 1700 neuroni e 10 per i risultati (le dieci possibili cifre da 0 a 9), sarebbero in totale 5110 neuroni. Proviamo a calcolare quanti parametri ci sarebbero da ottimizzare con ogni neurone di un livello connesso a tutti i neuroni del livello precedente: 1700 x 2500 (pesi) + 1700 (soglie) + 1700 x 1700 (pesi) + 1700 (soglie) + 1700 x 1700 (pesi) + 1700 (soglie) + 10 x 1700 (pesi) + 10 (soglie) = 10 milioni di parametri circa. Un ultimo punto da rimarcare è che oltre all’aumento dei neuroni e delle connessioni, le reti neurali artificiali possono lavorare insieme ad altri algoritmi, creando un sistema ibrido più efficiente.

Perché la dimensione fa la forza

Torniamo un attimo alla domanda che ci siamo posti all’inizio. Adesso che abbiamo un’idea del principio di funzionamento di una rete neurale, possiamo anche intuire perché un numero di neuroni maggiore comporta capacità maggiori. In realtà dovremmo parlare anche di numero di connessioni. Perché grazie a loro è possibile avere mix anche molto complessi di input e quindi la possibilità di manipolare in modo più raffinato ciò che entra in un neurone. In sostanza dobbiamo pensare che un neurone fa un’operazione estremamente semplice, quindi se vogliamo ottenere una capacità complessa, la dobbiamo suddividere in un certo numero di operazioni elementari, che, combinate insieme, riusciranno a dare il risultato. Se ho tanti valori in ingresso, come nell’esempio dell’immagine del numero scritto a mano, per poterli gestire tutti e non perdere informazioni, il numero di neuroni deve essere elevato. Proviamo ad esagerare e mettere un solo neurone nel livello intermedio, gli arriveranno tutte insieme le informazioni dei 2500 pixel. Lui potrà solo variare i loro pesi prima di sommarle tutte, in questo modo però avrà solo un valore che sarà una sorta di media di tutti i singoli valori che non dice proprio nulla sull’immagine. Se invece ho più neuroni, il primo potrà dare più peso solo a certi pixel e mandare avanti quell’informazione, il secondo ad altri, e così via. In questo modo l’informazione non si perde e viene sempre più elaborata ad ogni passaggio fino ad arrivare all’ultimo livello, quello dei risultati, dove il neurone corrispondente alla cifra riconosciuta farà uscire il valore 1. Questa suddivisione di compiti tra neuroni viene ottenuta con la fase di apprendimento e la relativa ottimizzazione dei parametri come abbiamo visto nel paragrafo precedente.

Mancanza di intelligenza o di apprendimento?

Facciamo questo esempio sul cervello umano. Siete andati all’estero, in un paese del quale non conoscete assolutamente la lingua. Una persona vi si avvicina e vi parla in questa lingua, il vostro cervello elabora tutte le informazioni sonore ricevute dalle orecchie, ogni neurone viene o meno attivato dall’insieme di impulsi elettrici e a seconda della soglia manda avanti o meno l’informazione ai neuroni successivi e così fino ai risultati. Ma i risultati non avranno senso, saranno solo un guazzabuglio di suoni sconosciuti, sebbene il vostro cervello abbia fatto lo stesso lavoro che fa sempre. La differenza rispetto a quando ascoltiamo un dialogo in una lingua conosciuta è che in questo caso è mancata la parte di apprendimento, dove tutti i parametri vengono settati per elaborare gli input e dare un risultato utile. Anche in questo caso tutta l’informazione proveniente dalla persona che vi parlava è andata persa, ma al contrario dell’esempio del singolo neurone, non poteva elaborare da solo le informazioni di 2500 pixel (mancanza di intelligenza), in questa situazione il numero di neuroni sarebbe stato sufficiente, ma è mancata la fase precedente di apprendimento.

Nel prossimo post parleremo di quali risultati concreti si possono ottenere con una rete neurale artificiale e delle sue principali applicazioni pratiche con gli enormi benefici che porta.

L'evoluzione dell'intelligenza artificiale - IPS CLoud

Molti pensano che i calcolatori siano stati inventati dopo la scoperta dell’elettricità. In realtà i primi erano meccanici e risalgono alla seconda metà del 1600 ed erano già in grado di svolgere operazioni di somma, sottrazione e moltiplicazione. Ma è negli anni trenta del secolo scorso che vengono gettate le basi per il computer e l’informatica come li conosciamo oggi. Claude Shannon, dell’università di Yale, mostra le potenzialità dell’utilizzo del sistema binario nelle telecomunicazioni e da inizio a quella che oggi chiamiamo l’era digitale, quella fatta di uno e zeri. Nello stesso periodo, Alan Turing (famoso per aver decifrato i codici creati dalla macchina tedesca Enigma durante la seconda guerra mondiale) pubblica un articolo sulla Macchina di Turing, una macchina teorica in grado di eseguire algoritmi (una procedura di istruzioni logiche) e gestire dati. Quanto definito da Turing in questo scritto è ancora oggi alla base dei nostri computer.

La macchina che imita l’uomo

Già negli anni quaranta del secolo scorso si parlava di intelligenza artificiale (anche se il nome è nato negli anni cinquanta). Nascevano, almeno sulla carta, le reti di neuroni artificiali. Era stato dimostrato che qualunque problema computabile, cioè risolvibile tramite un algoritmo, era risolvibile con una rete di neuroni. Questa rete era costituita da elementi che potevano essere “spenti” o “accesi”, e lo stato di ogni elemento era determinato dall’insieme degli stimoli dei neuroni circostanti (parleremo più approfonditamente delle reti neurali nel prossimo post). Nel 1950, due studenti di Harvard, basandosi sulle scoperte fatte nel decennio precedente, hanno realizzato la prima rudimentale rete neurale artificiale che chiamarono SNARC (Stochastic neural analog reinforcement calculator). Negli anni successivi, un gruppo di dieci ricercatori guidati da John McCarthy aveva colto la sfida per costruire una macchina che imitasse in tutto e per tutto l’apprendimento e l’intelligenza della mente umana, e il tutto in due mesi. Sicuramente starete pensando che la loro ambizione andava un po’ oltre la realtà e credo non serva che vi dica com’è andata a finire. Al contrario di loro, Allen Newell e Herbert Simon, grazie ad un obiettivo più realistico, ma comunque sorprendente per l’epoca, erano già riusciti a costruire una macchina che era in grado di dimostrare teoremi matematici. Oltre ad aver dato vari contributi a questa materia, a McCarthy va la paternità del termine intelligenza artificiale, che dal suo primo utilizzo nel 1956, ha dato vita ufficialmente all’omonima disciplina.

Ambizioni e difficoltà

Potete immaginare l’entusiasmo che creava questa neonata disciplina. La possibilità di creare delle macchine in grado di ragionare sembrava aver catapultato la fantascienza nella realtà. I primi tentativi erano molto promettenti. Si riuscivano a dimostrare teoremi di geometria anche molto complessi e nel 1966 James Slagle del MIT di Boston riuscì a realizzare un programma che risolveva gli integrali. Si tratta di un’operazione non semplice e penso che tutti noi possiamo confermarlo pensando a quando eravamo alle scuole superiori o all’università e ci siamo trovati di fronte ad esempi che non sapevamo proprio come risolvere. Purtroppo tutta questa euforia si spense presto. I ricercatori si resero conto che in realtà bastava aumentare anche di poco la complessità del sistema e i tempi di calcolo diventavano insostenibili. Per esempio, se applichiamo un sistema di risoluzione (che possono essere le reti neurali o un un altro tipo di algoritmo) per trovare il valore di una variabile e diciamo che in qualche ora di computazione si arriva al risultato, aumentando il numero di variabili questo tempo può diventare più grande dell’età dell’universo. Questo può dipendere sia dal tipo di algoritmo o sistema che viene usato per trovare la soluzione, sia dalla potenza di calcolo della macchina utilizzata. A volte basta anche portare il numero di variabili da una a due per rendere il sistema irrisolvibile in un tempo ragionevole. Per questo motivo durante gli anni sessanta l’euforia per l’intelligenza artificiale si spense e i fondi furono progressivamente tagliati.

Dagli anni 80 ad oggi

Negli anni ottanta ci fu una riaccensione di questa disciplina, la scintilla scoccò grazie al passaggio dal mondo accademico a quello industriale. Nel 1982 fu utilizzato il primo software intelligente a scopo commerciale. Si trattava di un sistema per gestire le vendite dei computer, in grado di riconoscere se in un ordine c’erano componenti mancanti. Per fare questo doveva comprendere e analizzare le relazioni che c’erano tra i vari componenti e gestire eventuali errori o mancanze. Questo “giocattolo” faceva risparmiare all’azienda ben 40 milioni di dollari l’anno. Non ci volle molto prima che la maggior parte delle grandi aziende introdussero dei sistemi intelligenti che gestivano i processi più svariati.

Dal 1986 ci fu anche un ritorno delle reti neurali, rimaste un po’ in disparte dopo i limiti riscontrati negli anni sessanta. Vennero applicati approcci nuovi che portarono a risultati promettenti. Inoltre nel 1996 ci fu la famosa vittoria a scacchi del computer Deep Blue (costruito dall’IBM) contro l’allora campione del mondo Kasparov. Anche se questa macchina non utilizzava le reti neurali, fu comunque un’enorme pubblicità nei confronti della macchina che imita e supera l’uomo. Un anno dopo i sistemi intelligenti approdarono alla NASA, che li utilizzò per gestire vari aspetti delle missioni spaziali.

Oggi i software intelligenti stanno entrando un po’ in tutti i settori. Pensate alle auto con guida autonoma o ai sistemi per i pronostici delle vendite. Dalle previsioni meteo alle predizioni dei guasti nell’industria, passando per la finanza. Tutto si sta trasformando e diventando smart. L’loT (internet delle cose) sta portando alla connessione di sempre più oggetti alla rete, quindi sempre più dati da interpretare e sfruttare per migliorare l’efficienza, piuttosto che la possibilità di controllare tutto da remoto. I sistemi intelligenti portano ad una svolta nella gestione di quelli che vengono chiamati Big Data e permettono di sostituire parzialmente l’uomo nel fare previsioni, piuttosto che nell’ottimizzare sistemi complessi.

Dove porterà il futuro?

Oggi l’intelligenza artificiale è in grado ad esempio di riconoscere il volto di una persona o il linguaggio parlato, ma è ancora lontana da molte altre caratteristiche proprie della mente umana. Questo non rende meno sorprendente o meno efficace ciò che riesce a fare, come vedremo meglio nei prossimi post, ma se la domanda è quanto è vicina alla mente di un essere umano, la risposta è non molto. In tanti hanno speculato su dove potrà arrivare la ricerca in questo campo e in che tempi, ma ovviamente non c’è nessuna certezza. Guardando l’evoluzione del processo tecnologico nei secoli, vediamo un andamento esponenziale. Ci sono voluti 150.000 anni all’homo sapiens per arrivare all’agricoltura con i relativi insediamenti stabili, solo 7.000 per costruire i primi imperi e la scienza come la conosciamo oggi è nata appena 500 anni fa. Come abbiamo visto all’inizio del post, l’era dell’informatica ha circa cent’anni e solo negli ultimi 40 ha avuto un’evoluzione vertiginosa. Guardando questo trend verrebbe da pensare che se continua in questo modo non sarebbe così strano fra un centinaio d’anni assistere (per i nostri posteri) a macchine capaci di replicare tutte o quasi le capacità della mente umana. E se si arrivasse a quel punto, magari si potrebbe andare anche oltre, con macchine molto più intelligenti dell’uomo. Questo da un lato affascina, ma da un altro spaventa. Con uno scenario del genere l’uomo sarebbe ancora al vertice della piramide sul nostro pianeta? A questa domanda lasciamo rispondere la fantascienza, che ha già dato sfogo a molte fantasie con gli scenari più disparati.

Cos'è l'intelligenza artificiale? - IPS Cloud

Si sente parlare molto spesso di intelligenza artificiale, ma altrettanto spesso non è ben chiaro cosa sia e quali siano le reali potenzialità. Lo scopo di questo articolo e dei successivi è quello di provare a fare un po’ di chiarezza e definirne i confini, fino ad arrivare alle sue applicazioni pratiche e ai vantaggi che può e potrà portare.

Iniziamo dall’intelligenza

Come prima cosa dobbiamo provare a definire cosa intendiamo per intelligenza, un compito tutt’altro che semplice. Iniziamo dall’etimologia della parola: intelligenza viene da intendere, quindi capire. Possiamo vederlo come il processo che ci fa passare dal non sapere come qualcosa funziona, ad averne la comprensione. Credo che nessuno obietti sul fatto che per capire cosa si nasconde dietro una mela che cade al suolo, Newton abbia utilizzato l’intelligenza; e ha usato sempre l’intelligenza per capire che la dinamica era la stessa che faceva ruotare la luna intorno alla terra o quest’ultima intorno al sole. Ma se vi chiedessi se un neonato ha bisogno dell’intelligenza per imparare a camminare, cosa mi rispondereste? Oppure se il nostro cane si avvicina e ci lecca perché capisce che siamo tristi o sofferenti, è intelligenza? Sono sicuro che per queste ultime due domande non avrei la stessa risposta da tutti. Questo ci fa capire come l’intelligenza sia un concetto che si può interpretare in modi diversi e persone diverse possono decidere di definirne dei confini più o meno ampi.

Potremmo andare ancora oltre e chiederci se gli esseri viventi che si sono spinti fuori dall’acqua e hanno “imparato” a respirare l’aria l’hanno fatto grazie all’intelligenza. In questo caso credo che la quasi totalità delle persone risponderebbe di no. Perché è stato un processo evolutivo dettato da mutazioni e fatti casuali, che hanno portato dopo moltissime generazioni un essere acquatico fuori dagli oceani. Ma anche l’uomo primitivo ha imparato a cuocere il cibo grazie ad eventi casuali, come uno scienziato oggi può scoprire e imparare qualcosa grazie a delle casualità o a dei tentativi più o meno fortuiti. Quindi potremmo vedere l’insieme degli esseri viventi che evolvono come una sorta di intelligenza globale? Non voglio provare a rispondere a questa domanda, ma mi sono voluto spingere fino a questo punto estremo per cercare di lasciare da parte i pregiudizi che potremmo avere nei confronti del significato di un termine ed essere in grado di coglierne molte più sfaccettature.

Confronto uomo-macchina

Una cosa che sicuramente ancora ci differenzia dalle macchine è la consapevolezza di quello che sappiamo e di quello che facciamo. Questo non significa che noi siamo consapevoli di tutto quello che facciamo (soprattutto alcuni, direte voi…), pensate ad azioni come camminare, prendere un oggetto con la mano, e così via. Sono azioni dietro le quali non c’è un ragionamento o del pensiero logico, che ci porta ad elaborare il modo per coordinare migliaia di fasci muscolari e portare a termine una cosa così complessa. Infatti ci appare semplicissima, non dobbiamo neanche pensarci. A quanti di voi è capitato di essere alla guida della vostra auto mentre andate al lavoro e ad un certo punto chiedervi come siete arrivati lì? Come se la mente avesse fatto tutto tranne pensare alla guida e a dove stavate andando. Possiamo dire che abbiamo funzionato col pilota automatico. Ma sicuramente non era così la prima volta che vi siete messi al volante, il processo è stato molto più oneroso, avete dovuto capire, pensare e imparare. Questo denota come molte capacità che non richiedono un ragionamento, sono diventate tali dopo un processo di apprendimento. Pertanto potremmo affermare che guidare un’automobile richiede intelligenza. In una prima fase per creare la procedura nella nostra memoria e in seguito per poterla utilizzare e permetterci di gestire tutti gli input sensoriali coinvolti e ottenere il risultato di arrivare al lavoro sani e salvi.

Quindi possiamo riassumere che negli esseri viventi ci sono capacità innate (sviluppatesi con l’evoluzione), altre che possono essere apprese e trasformate in automatiche e doti invece che richiedono l’abilità di trovare connessioni logiche tra cose che apparentemente sembrano sconnesse (sono quelle che ci permettono di scoprire cose nuove). E’ giunto il momento di chiederci quali tra queste caratteristiche sono proprie anche delle macchine. La risposta è tutte e tre. Questo non significa che una macchina possa equiparare l’uomo in tutte le sue abilità intellettuali. Siamo ancora estremamente lontani da questo traguardo, ma significa che è in grado di imitare la mente umana in alcune delle sue capacità.

Capacità innate e apprendimento

Possiamo vedere una macchina che esegue un algoritmo (una procedura di istruzioni logiche) come una capacità innata. Nel senso che il computer, come insieme di hardware e software, è stato costruito e programmato per eseguire un certo compito. A differenza dell’uomo, non si è autonomamente evoluto per arrivare ad essere quello che è oggi, ma è figlio dell’evoluzione culturale e tecnologica dell’uomo stesso. Già questa caratteristica è un potenziale non da poco se pensiamo che permette alle macchine di ottenere risultati che l’uomo no può raggiungere. Questo grazie alla loro enorme velocità, al fatto che possono disporre di potenti sensori e operare senza bisogno di riposarsi. Pensate ai sistemi di sicurezza che leggono la retina e la confrontano ai campioni in frazioni di secondo; oppure ai sistemi di navigazione che in pochi secondi calcolano il percorso più veloce su distanze anche di migliaia di chilometri. Sono cose che l’uomo non è in grado di fare e nemmeno di apprendere, perché le nostre caratteristiche non ce lo permettono. Forse sarebbe un po’ una forzatura chiamare questa intelligenza, ma potremmo vederla come un travaso dell’intelletto umano nelle capacità delle macchine. Anche qui voglio azzardare e provo a definire la somma uomo-macchina come un’entità un po’ più intelligente del solo uomo.

La cosa davvero interessante è che una macchina è anche in grado di apprendere e lo può fare in un modo similare al funzionamento del cervello umano. Uno di questi sistemi prende il nome di rete neurale artificiale. Nei prossimi post ripercorreremo brevemente l’evoluzione che nell’ultimo secolo ci ha portati a questo punto. In seguito entreremo un po’ più nei dettagli, spiegando il funzionamento di queste reti neurali e fino a che punto si sono avvicinate alle capacità del cervello, per concludere con i vantaggi pratici che portano nel mondo industriale.

Cosa sono i KPI aziendali e come utilizzarli - IPS Cloud

Un’azienda per funzionare ha bisogno di creare utile. Per fare questo, sono due i macro fattori su cui possiamo intervenire: l’aumento degli introiti e la riduzione dei costi. In entrambi i casi devo conoscere i dettagli della situazione attuale, fare un confronto con gli obiettivi che mi sono posto e definire quali sono le azioni che mi porteranno a raggiungerli. I KPI in tutto questo giocano un ruolo fondamentale, vediamo cosa sono e come sfruttarli al meglio per migliorare i risultati aziendali.

Misurare per migliorare

KPI è l’acronimo di Key Performance Indicators, cioè gli indicatori chiave delle prestazioni. Si tratta di numeri che misuro, non di giudizi più o meno soggettivi. Voglio citare una frase di Lord Kelvin (scienziato e ingegnere del diciannovesimo secolo) “Se non si può misurare qualcosa, non si può migliorarla”. Certamente questa affermazione è molto forte, ma racchiude una verità. Il primo passo per migliorare è avere dei valori oggettivi che mi dicono lo stato di un processo, altrimenti il rischio è di avere la sensazione che le cose stiano in un certo modo, quando in realtà non è così. E soprattutto i numeri mi permettono di sapere per certo se sto migliorando e di quanto. Ciò non significa che questi indicatori sono la soluzione di tutti i problemi o la bacchetta magica che trasforma tutto in oro. Le intuizioni e le idee delle persone restano la chiave per il miglioramento, ma con delle misure mirate e ben fatte, si ha a disposizione uno strumento molto potente per stimolare le idee e misurare la bontà dei cambiamenti che si implementano.

Un metodo per essere più efficienti

Un KPI può essere quindi qualunque parametro misurabile, che mi da informazioni utili sull’andamento di un settore aziendale. Nella maggior parte dei casi non è una cosa a se stante, ma è parte di un metodo. Di seguito ne schematizziamo i punti fondamentali, che andremo poi ad analizzare uno per uno.

  1. Definire l’area da monitorare e migliorare (es. economica, di marketing, produttiva, logistica, di qualità, degli acquisti, ecc.).
  2. Scegliere quali sono gli obiettivi e quali indicatori li descrivono meglio.
  3. Misurare lo stato dell’arte e quantificare gli obiettivi.
  4. Definire una periodicità di confronto degli indicatori con gli obiettivi.
  5. Tenere e implementare una lista di azioni pratiche per colmare il divario tra i valori misurati e quelli desiderati.
1. Definire l’area da monitorare e migliorare

Sicuramente il primo passo è quello di decidere dove voglio intervenire. Se si parte da zero è meglio iniziare con una sola area aziendale e concentrarsi su quella finché non si padroneggia il metodo e si iniziano a vedere i primi risultati. Far partire troppe cose insieme crea confusione e normalmente non si riescono a seguire tutte in modo efficace. Se c’è un’area chiaramente più in difficoltà di altre, si può iniziare da quella. Altrimenti è consigliabile scegliere prima un’area dove si hanno più competenze, o comunque persone che la gestiscono che hanno più attitudine al cambiamento. Questo permetterà di vedere prima i risultati e stimolare il cambiamento nelle altre aree. Se riesco a mettermi in tasca in fretta un esempio positivo, sarà più facile convincere chi è più riluttante a intraprendere questa strada.

2. Scegliere quali sono gli obiettivi e quali indicatori li descrivono meglio

La direzione in cui spesso ci muoviamo è quella di fare del nostro meglio per migliorare qualcosa il più possibile. Anche se sembra un approccio molto positivo, nasconde un problema: la mancanza di un obiettivo chiaro. In sua assenza è facile perdersi e andare in direzioni diverse senza raggiungere la meta. Inoltre si può avere la sensazione di aver fatto molto, ma i risultati concreti possono essere piccoli o addirittura assenti. Per questo è importante definire a priori dove si vuole arrivare e definirlo in modo oggettivo, con dei numeri, così siamo certi che sarà chiaro per chiunque. Inoltre un obiettivo non deve essere troppo complesso, a meno che non sia veramente necessario.

Esempi pratici di obiettivi e relativi indicatori

Proviamo a fare degli esempi pratici di possibili obiettivi. Nell’ambito della produzione, potrei prefissarmi di essere più efficiente, quindi ridurre i costi. Ma come dicevamo prima, devo trovare degli indicatori misurabili, oltre che facili da ottenere. Uno può essere il rapporto tra le ore vendute (usate per costificare il prodotto) e quelle realmente impiegate. Oppure il rapporto tra le ore effettivamente produttive e quelle di presenza degli operatori. Nel primo caso vedo se sto impiegando più tempo di quello preventivato e posso intervenire guardando nel dettaglio il processo produttivo. Può darsi che scopro di aver sbagliato a preventivare, ma non è detto che riesca a vendere il mio prodotto ad un prezzo più alto, quindi devo capire dove intervenire per ridurre i tempi. Oppure vedo che il preventivo era corretto, ma c’e un problema nel processo che lo rallenta e a quel punto agisco per rimuoverlo. Nel caso invece del rapporto ore produttive / ore presenza, potrei notare che il lavoro non è organizzato bene e gli operatori passano molto tempo in giro a cercare quello di cui hanno bisogno, togliendo tempo alla produzione vera e propria.

Passiamo ad un’altro esempio in un ambito diverso, le vendite. In quest’area potrei adottare tre macro obiettivi: l’ordinato annuale, magari suddiviso per aree geografiche; il margine minimo sulle commesse e il numero di nuovi clienti nell’anno. In questo caso, oltre ad avere degli indicatori che misurano questi tre valori, posso decidere di aggiungerne altri per meglio identificare i possibili problemi. Un esempio potrebbe essere il rapporto tra il numero di ordini e quello delle offerte, suddiviso per aree geografiche. Questo mi aiuterebbe a capire se in alcuni paesi sono interessati ai miei prodotti, ma forse non sono abbastanza competitivo sui prezzi. Potrei fare interventi mirati, piuttosto che decidere di lasciar perdere un paese per mettere più focus su un altro.

Ogni azienda e ogni settore aziendale ha le sue peculiarità. Sarebbe poco efficace provare a definire degli obiettivi standard che possano andare bene per tutti. A meno di quelli più generali, come ad esempio l’efficienza in produzione, la percentuale di scarti, il valore dell’ordinato, il valore del magazzino per arrivare a quelli economico-finanziari. Ma per essere davvero efficaci bisogna andare mirati, la cosa migliore è cercare di guardare alla propria azienda in modo distaccato, provando a porsi più domande possibili sulle eventuali aree di miglioramento e mettendo sempre in discussione le abitudini. Una delle cose migliori da fare è quella di confrontarsi con qualcuno di esterno. Non perché sia più capace di noi, ma semplicemente perché noi non vediamo più molte cose che sono diventate assodate e normali. Una persona che le vede per la prima volta, le nota e ci aiuta a vederle, oltre a portare un punto di vista diverso che quasi sempre racchiude spunti positivi.

La combinazione degli indicatori

Ci sono due motivi per combinare insieme degli indicatori, il primo è per aggregare dei micro obiettivi e farli diventare un unico obiettivo a più alto livello. In questo modo possiamo adattare il monitoraggio a tutti i livelli aziendali (questo tema verrà approfondito in seguito). Il secondo motivo è quello di rendere gli indicatori affidabili. Prendiamo l’esempio della produzione. Se l’operatore non dovesse registrare le ore produttive correttamente, magari vedremmo un indicatore ore preventivate / ore impiegate abbastanza alto. Ma il motivo potrebbe essere che le ore registrate sono meno di quelle realmente impiegate. Allo stesso modo potrei vedere l’indicatore ore produttive / ore presenza alto, ma anche qui perché le ore produttive non sono state registrate correttamente, in questo caso in eccesso. Se però creo un terzo indicatore che è il prodotto dei due precedenti, il risultato mi dirà sempre se c’è realmente un problema, anche se viene “nascosto” da uno dei due indicatori. Come abbiamo visto, nel primo caso l’errore sono le ore produttive inferiori a quelle reali, nel secondo invece sono le ore produttive maggiori di quelle effettive. Questo significa che se uno dei due indicatori erroneamente (o purtroppo a volte volontariamente) diventa migliore, l’atro peggiorerà, pertanto nel terzo (la combinazione dei due) l’errore si annulla e vedo un valore affidabile. Tenete conto che questo metodo funziona se ho solo un parametro potenzialmente inaffidabile.

Rendere le misure automatiche

Nei casi in cui i parametri potenzialmente errati possono essere più di uno o nei casi dove non posso applicare la combinazione degli indicatori per annullare l’errore, una soluzione è passare dalle rilevazioni manuali a quelle automatiche. Oggi la tecnologia permette di effettuare misurazioni automatiche e gestire i dati con costi molto contenuti. Questi sistemi si possono applicare potenzialmente a tutte le macchine e linee, anche quelle più obsolete, dotandole dei sensori mancanti. In questo modo, non solo si hanno sempre dei valori affidabili senza gli errori o le dimenticanze di un sistema manuale, ma si elimina il costo delle ore impiegate dagli addetti per rilevare i dati, inserirli in un computer, creare i report, ecc. Inoltre permettono la rilevazione e l’elaborazione di un numero di dati che non sarebbe possibile trattare manualmente. Quest’ultima caratteristica sta provocando una vera e propria rivoluzione nel modo di gestire le aziende e, come hanno fatto i computer negli anni 80, ci sta portando in una nuova era.

L’utilizzo delle medie mobili

A volte i valori puntuali che rileviamo sono troppo variabili o mancano di informazioni per essere significativi quando sono letti singolarmente. Ad esempio, se ogni fine giornata rileviamo la produttività di una macchina che lavora 8h al giorno, possiamo avere dei giorni in cui è bassa perché magari non ha concluso un pezzo entro la giornata. Se il pezzo aveva un tempo di ciclo lungo, diciamo di 3h, la macchina in 8h di turno ne ha conclusi 2. Pertanto le ore produttive registrate alla fine del turno saranno: 2pz x 3h = 6h, rapportate alle 8h danno una produttività del 75%, ma nelle ultime 2h in realtà ha lavorato. Ci sono due modi per ovviare a questo problema: non misurare la produttività in base al numero di pezzi prodotti, ma al numero di ore produttive effettive della macchina (anche qui i sistemi di rilevamento automatico ci vengono in aiuto), oppure calcolare la media mobile di un periodo ragionevole, che in questo caso potrebbe essere una settimana. La media va a filtrare le singole anomalie, dandoci un valore attendibile.

La media mobile non è altro che una media che ricalcolo ad ogni nuovo valore entrante sul periodo che ho scelto. Tornando all’esempio sopra, ogni fine turno, oltre a registrare il valore del giorno, calcolo la media degli ultimi 5 valori (ipotizzando di lavorare 5 giorni a settimana) e registro anche questo dato. Questa operazione la faccio ogni giorno, quindi avrò due serie di numeri: una dei valori giornalieri e l’altra delle medie degli ultimi 5 giorni. Se la immaginiamo su un grafico, possiamo vedere la media mobile come una curva smussata rispetto a quella a “denti di sega” dei valori puntuali.

3. Misurare lo stato dell’arte e quantificare gli obiettivi

Per poter quantificare gli obiettivi futuri dobbiamo prima sapere qual’è la situazione attuale. Una caratteristica fondamentale di un obiettivo è il fatto che sia raggiungibile. Altrimenti non ci darebbe un gran valore aggiunto, saremmo solo frustrati per il fatto che non riusciamo ad arrivarci e ad un certo punto lasceremmo perdere. Un obiettivo futuro dev’essere un aumento percentuale ragionevole rispetto ai valori di oggi. Ad esempio se oggi ho un’efficienza ore produttive / ore presenza del 78%, non ha senso darsi l’obiettivo di arrivare al 100% in sei mesi. Primo perché non sarà mai 100%, devo contare le pause delle persone; secondo perché le cose non si cambiano dalla sera alla mattina, ma sono processi che richiedono tempo e perseveranza. Sarebbe molto più ragionevole darsi come obiettivo un aumento di questo indicatore del 5%, che in sei mesi potrebbe essere già sfidante. Meglio un piccolo aumento costante nel tempo, che cercare di scalare l’Everest e lasciar perdere perché è troppo faticoso.

4. Definire una periodicità di confronto degli indicatori con gli obiettivi.

I KPI sono degli strumenti molto utili per identificare i problemi e aiutarci a migliorare. Ma dobbiamo evitare di cadere nella trappola di farli diventare dei numeri che raccolgo quando ho tempo e dopo che li ho raccolti li butto in un cassetto per guardarli un giorno che non arriverà mai. Il metodo migliore è programmare delle revisioni periodiche, coinvolgendo le persone che hanno una responsabilità per quegli obiettivi. Se si vogliono raggiungere i risultati, le due cose prioritarie e strettamente necessarie sono la determinazione e la perseveranza. A volte si vedono situazioni dove il metodo non è proprio dei migliori, le competenze potrebbero essere più profonde e le idee magari non sono il top, ciononostante il risultato è arrivato. Normalmente in quei casi, determinazione e perseveranza sono state così forti che sono riuscite a compensare quelle lacune. Non fraintendetemi, non sono convinto che queste due caratteristiche da sole siano sufficienti (le competenze, il metodo e le buone idee sono importantissimi), ma voglio dire che sono un ingrediente che non può mancare per arrivare al risultato e per arrivarci in tempi ragionevoli.

5. Tenere e implementare una lista di azioni pratiche per colmare il divario tra i valori misurati e quelli desiderati.

Durante queste revisioni periodiche dobbiamo verificare dove ci sono divari tra indicatori e obiettivi. Ogni volta che individuiamo un indicatore che non sta andando come vorremmo, dobbiamo cercare di elencare le possibili cause. Torniamo all’esempio fatto in precedenza, le ore produttive / ore presenza. Se questo indicatore è più basso di quello che ci siamo prefissati, alcune tra le possibili cause possono essere la mancanza delle materie prime alle macchine, il malfunzionamento delle macchine che provocano troppi fermi, gli operatori che fanno attività non necessarie, ecc. Per elencare le cause non c’è niente di meglio che osservare con attenzione le postazioni di lavoro per un po’ di tempo, finché non si sono individuati almeno i problemi principali. Poi con sistemi di rilevamento automatici possiamo avere un controllo costante e preciso, ma nelle prime fasi è sempre meglio una presenza diretta.

Il secondo passo è quello di definire delle azioni che mi portino a migliorare. Queste azioni devono essere di breve termine. Se ci viene in mente qualcosa a medio o lungo termine, dividiamolo in azioni brevi, che possiamo fare e verificare entro la prossima revisione. Devono essere pratiche. Stiamo sempre coi piedi per terra, facciamo cose concrete e che sappiamo fare. Devono portare un vantaggio sostanzioso. Almeno all’inizio, concentriamoci su azioni che portano un risultato sensibile, i dettagli lasciamoli per una seconda fase. Dobbiamo sempre definire un responsabile per ogni azione ed entro quando dev’essere portata a termine. Nella maggior parte dei casi, definire due o più responsabili equivale a non definirne nessuno e c’è un alto rischio che l’azione non venga conclusa nei tempi previsti. Come ultima cosa, non dimentichiamoci mai di scrivere tutto quello che decidiamo di fare, con le caratteristiche che abbiamo appena elencato, e di condividerlo con tutte le persone coinvolte. Questo eviterà fraintendimenti e dimenticanze.

Come aggregare i KPI per ottenere diversi livelli di dettaglio

Secondo la dimensione e la struttura aziendale, serve ottenere una sorta di albero dei KPI. I responsabili di aree specifiche useranno degli indicatori specifici, ma salendo nella struttura dell’azienda, servono indicatori più aggregati. Devono dare una visione di insieme dell’area al livello superiore, questo a scalare fino ad arrivare al direttore generale. Supponendo che tutti gli indicatori siano dei rapporti (quindi delle percentuali adimensionali), possiamo aggregarli calcolandone la media. E’ sempre meglio definire anche un peso per ogni indicatore, perché non tutti hanno lo stesso impatto. Ad esempio se ore produttive / ore presenza = 78%, ore produzione preventivate / ore produzione impiegate = 89% e ore imballaggio preventivate / ore imballaggio impiegate = 86% e valuto che l’impatto dell’imballaggio è piccolo confrontato alla produzione, posso decidere di dargli un peso inferiore. In questo modo nell’aggregato do più importanza agli altri due indicatori. Il calcolo potrebbe essere: (0,78 x 1 + 0,89 x 1 + 0,86 x 0,3) / (1 + 1 + 0,3) = 0,84. In questo caso abbiamo deciso che l’imballaggio pesa il 30% e gli altri il 100%. 

Un’altro metodo che si può utilizzare è quello di moltiplicare direttamente i rapporti tra loro (come abbiamo fatto sopra, anche se lo scopo era diverso). In questo modo gli effetti negativi non si mediano, ma si sommano e l’indicatore aggregato diventa più sensibile alle inefficienze. Anche in questo caso potrebbe avere senso utilizzare dei pesi diversi per i diversi indicatori, ma essendo un prodotto e non una media, dobbiamo agire diversamente. Supponiamo che, come prima, voglio dare un peso di 0,3 al terzo indicatore. Per prima cosa dobbiamo trovare il coefficiente “C” di questo peso, da moltiplicare per il terzo rapporto “R” (ore imballaggio preventivate / ore imballaggio impiegate). Non sarà semplicemente uguale a 0,3 come nella media pesata, ma per ottenerlo dobbiamo applicare la seguente formula: C = P x (R – 1) / R + 1 / R, dove “P” è il peso che voglio dare a quel KPI. Perciò nel nostro caso specifico diventerà: C = 0,3 x (0,86 – 1) / 0,86 + 1 / 0,86 = 1,114 e questo è il coefficiente da moltiplicare per il terzo indicatore nella formula di aggregazione: 0,78 * 0,89 * 0,86 * 1,114 = 0,67. Il risultato è un KPI aggregato che vale il 67%. Come vedete è sensibilmente più basso rispetto allo stesso calcolato con la media pesata, che era l’84%. Si può scegliere il metodo che si preferisce, l’importante è che si usi lo stesso metodo anche per aggregare i relativi obiettivi, altrimenti ci troveremmo a paragonare mele con pere.

 

La sicurezza della rete aziendale - IPS Cloud

Oggi tutte le reti aziendali sono connesse ad internet. I motivi sono numerosi, dallo scambio di email alla ricerca di informazioni, dall’utilizzo del cloud per l’archiviazione dei dati, agli svariati servizi a cui accediamo con un browser. Inoltre abbiamo sempre più necessità di accedere alla rete aziendale da remoto, che sia dalla nostra abitazione piuttosto che durante un viaggio di lavoro. Per questo è fondamentale che tutte queste connessioni avvengono con il giusto livello di sicurezza. Vediamo quali sono i mezzi che abbiamo a disposizione, come funzionano e quando usarli.

Autenticazione e autorizzazione

Immaginiamo di essere fornitori di componenti del settore aerospaziale e di andare a visitare una sede della NASA. Sicuramente quando arriviamo, prima di farci entrare, ci chiederanno di identificarci con un documento. Vorranno sapere il motivo della nostra visita e ci faranno registrare per averne traccia. Ci daranno un badge da indossare che ci identifica e qualcuno ci accompagnerà esattamente dove dobbiamo andare. Non resteremmo mai soli. Se fossimo malintenzionati che vogliono rubare informazioni, non avremmo certo vita facile. Non sarebbe semplice uscire dal percorso sicuro in cui siamo. E anche se ci riuscissimo, le varie aree avrebbero dei sistemi di accesso controllato, magari tramite badge, se non più sofisticati. Tutto questo è iniziato con due passaggi fondamentali. Prima di tutto siamo stati identificati e autenticati e di conseguenza ci sono state attribuite delle autorizzazioni su dove potevamo andare e cosa potevamo vedere.

La stessa cosa si presenta nel mondo digitale. Se agli utenti della nostra azienda non è richiesta l’autenticazione per accedere ai dati, un eventuale intruso che riuscisse ad entrare nella rete potrebbe liberamente accedere ai server e ai PC e fare ciò che vuole con i nostri dati, oltre alla possibilità di bloccarne il funzionamento. Per tornare al paragone di prima, più metto punti nella mia rete dove “mi serve il badge per entrare”, più un eventuale hacker sarà in difficoltà a muoversi all’interno e di conseguenza farà molta più fatica a fare danni o rubare dati. Un esempio apparentemente banale, ma molto efficace, è la modalità di accesso al sistema operativo del proprio PC. Se accedo come amministratore ho il permesso di fare ciò che voglio sul mio computer. Voi starete pensando che è una cosa buona, ma dobbiamo tenere conto che se un hacker riesce ad entrare nel mio PC, anche lui potrà fare ciò che vuole. E questo è un po’ meno buono. Se invece accedo con un profilo che mi autorizza solo a fare quello che mi serve quotidianamente, diventa molto più difficile per un hacker manomettere parti sensibili del sistema operativo o accedere a dati per i quali il mio utente non è autorizzato. Questo non significa che anch’io devo essere necessariamente limitato, se sporadicamente ho bisogno di accedere a funzioni o dati sensibili, vi accedo con un un’altro utente che ha questi permessi, ma per un tempo molto ridotto. Questo metodo si chiama principio del privilegio minimo. Nel caso si disponga di esperti IT interni, la cosa migliore è lasciare solo a loro il permesso di accedere a aree sensibili di PC e server, per evitare che persone poco esperte possano involontariamente rendere il sistema vulnerabile. Questo non significa che il principio non valga anche per un operatore IT, il quale deve usare privilegi di amministratore solo quando sono necessari.

Monitoraggio del sistema

Come facciamo a scoprire che sta succedendo qualcosa di pericoloso prima che sia troppo tardi? La prima cosa è sicuramente l’utilizzo di un antivirus, che blocca in via preventiva eventuali azioni rischiose. Come l’apertura di file potenzialmente pericolosi o l’accesso a siti web non sicuri. Non sempre però un malware viene identificato preventivamente, perciò è buona prassi far fare periodicamente all’antivirus scansioni approfondite. Inoltre non sarebbe male avere un sistema che registra tutto quello che avviene nella rete, quindi chi accede a cosa e quando. Così possiamo verificare se è avvenuto qualcosa di anomalo e intervenire prima che sia troppo tardi. Ad esempio, a chi ha un account Google, gli sarà capitato di accedere con un nuovo dispositivo e Google ha subito notificato che c’è stato un accesso da quel nuovo PC o smartphone, quel giorno a quell’ora e da quel posto. In questo modo, se non foste stati voi, magari sareste in tempo a cambiare la password dell’account prima che il malintenzionato faccia danni o ne faccia di ulteriori.

Crittografia dei dati

Trasferire informazioni attraverso internet oggi è diventata una necessità imprescindibile. Ma questo porta ad un’altra necessità, quella di non far leggere i miei dati a chi non è autorizzato. Nel World Wide Web, come dice il nome, c’è il mondo intero. Chiunque potenzialmente può leggere quello che trasferisco, a meno che non lo rendo illeggibile. Per ottenere questo viene usata la crittografia, cioè la traduzione dei messaggi in un linguaggio incomprensibile, come ad esempio un codice fatto di lettere e numeri apparentemente casuali. Per fare questo viene utilizzata una chiave di codifica, ovvero una serie di regole che determinano in quale codice viene trasformata una frase.

Crittografia a chiave simmetrica

Il sistema più semplice di crittografia è quello cosiddetto a chiave simmetrica. Questo metodo utilizza una sola chiave sia per crittografare, sia per decifrare il messaggio quando viene ricevuto. Quindi il processo prevede che la persona che scrive il messaggio e quella autorizzata a leggerlo siano entrambe in possesso della chiave. Il punto debole di questo metodo sta proprio nella gestione della chiave. Se quando la inviamo all’altra persona viene intercettata da un hacker, questo può usarla per decifrare tutti i messaggi che ci scambiamo su internet crittografati con quella chiave .

Crittografia a chiave asimmetrica

Nel 1976 i due matematici Diffie e Hellman pubblicano un nuovo sistema di crittografia. Questo metodo prevede l’utilizzo di due chiavi, una pubblica e una privata. Per spiegare come funziona usiamo la classica analogia dei lucchetti. Supponiamo di voler scambiare tramite posta delle scatole con un nostro amico e vogliamo essere certi che nessuno possa aprirle. Potremmo mettere un lucchetto sulla scatola, mandare prima la chiave al nostro amico e in seguito la scatola. Ma in questo caso avremmo il problema menzionato sopra. Se qualcuno dovesse intercettare la chiave, potrebbe farne una copia e successivamente aprire il lucchetto della scatola in transito. Per evitare questo possiamo fare una cosa più furba. Chiediamo al nostro amico di mandarci un lucchetto aperto del quale solo lui ha la chiave. Mettiamo questo lucchetto sulla scatola e gliela spediamo. Così è impossibile che qualcuno abbia intercettato la chiave durante il transito, visto che non è mai stata spedita.

Il lucchetto del nostro esempio corrisponde alla chiave pubblica, mentre la chiave che non ha mai lasciato la casa del nostro amico corrisponde alla chiave privata. Ovviamente se vogliamo scambiare messaggi nelle due direzioni, in totale le chiavi diventeranno quattro, due pubbliche (due lucchetti) e due private (le due chiavi dei lucchetti). In realtà anche questo sistema potrebbe avere un punto debole. Visto che sto spedendo un “lucchetto aperto”, chiunque potrebbe guardarci dentro per cercare di ricostruirne la chiave. Per costruire la chiave pubblica (il lucchetto) partendo da quella privata (la sua chiave) ed evitare questo problema, vengono usati dei calcoli matematici difficilmente reversibili. Ad esempio, con un computer è immediato trovare il risultato della moltiplicazione 709 x 887, ma non è così veloce trovare quali due numeri sono stati moltiplicati per ottenere il risultato 628883. Se questo numero lo facciamo diventare abbastanza grande, diciamo almeno di 600 cifre, il tempo per trovare i due valori che moltiplicati tra loro danno quel risultato è talmente lungo che in pratica non è fattibile. I due numeri da moltiplicare rappresentano la chiave privata del lucchetto, mentre il risultato della moltiplicazione rappresenta il lucchetto aperto che spedisco. Questo è solo un esempio per spiegare il concetto, esistono vari metodi per ottenere un “lucchetto” sicuro.

Dove viene usata la crittografia

Magari vi sarà capitato di notare che oggi quasi tutti i siti internet iniziano con HTTPS. Questa S in più sta ad indicare che lo scambio di informazioni con quel sito è sicuro, perché crittografato usando il sistema di chiave pubblica e privata. E’ il browser stesso che mi avverte se sto andando su un sito che non usa la crittografia, definendolo non sicuro. In realtà i sistemi utilizzati sono spesso degli ibridi tra chiave asimmetrica e simmetrica, perché usando solo la prima, la comunicazione diventerebbe molto lenta.

Rimane ancora un problema da risolvere, quando ad esempio il sito della mia banca mi manda la chiave pubblica, quindi il lucchetto per chiudere la mia scatola prima che gliela invio, come faccio ad essere sicuro che è davvero la mia banca e non un hacker che si spaccia per lei? La risposta sta nei certificati. Ci sono delle autorità di certificazione che accertano che una chiave pubblica appartiene effettivamente al suo proprietario, il quale l’ha depositata presso questo ente. In questo modo se un malintenzionato invia la sua chiave pubblica per cercare di rubarci informazioni, il browser non riconosce il certificato come attendibile e avverte subito l’utente dei rischi.

La VPN

Oltre che per i siti internet, la crittografia viene utilizzata per creare dei canali sicuri tra due punti privati fisicamente lontani. Un esempio è quando voglio connettermi alla rete aziendale da casa. Se accedessi senza prendere nessuna precauzione, tutti i dati scambiati sarebbero accessibili da chiunque, visto che passano da internet. Per risolvere il problema posso usare una VPN (virtual private network). Si tratta di un canale virtuale che connette il mio PC alla rete dell’azienda, dove i dati che transitano sono criptati. In questo modo sono tranquillo che nessuno può leggere quello che sto scambiando.

Vero che il canale della VPN non è in chiaro, ma qualcuno potrebbe comunque cercare di entrare in questo tunnel virtuale, come ci sono entrato io che sto scambiando i dati, e arrivare alla rete aziendale. Per evitarlo vengono usati i sistemi di autenticazione e autorizzazione che abbiamo visto all’inizio. Quindi oltre ad utilizzare la crittografia, ha anche un sistema di “controllo agli ingressi”.

Nel caso in cui non abbiamo bisogno di avere un flusso di dati in ingresso, ma vogliamo solo inviarli all’esterno della nostra rete (ad esempio ad un server su cloud), invece di usare una VPN, possiamo decidere di aprire la comunicazione in una sola direzione: in uscita. Premettiamo che in ogni caso i dati devono viaggiare crittografati, altrimenti chiunque potrebbe leggerli. Con questo sistema, un hacker non sarebbe in grado di leggere le informazioni inviate e non potrebbe nemmeno accedere alla nostra rete tramite questo canale di comunicazione, visto che l’entrata è chiusa. Per fare questo però dobbiamo scegliere un protocollo che non necessita di una comunicazione in entrambe le direzioni, altrimenti non funzionerebbe. Un esempio è l’MQTT, che pubblica i dati su un server intermedio, al quale il server finale (dove vogliamo inviare i dati) farà una richiesta per averli. Questo sistema viene chiamato publish-subscribe. Quindi il flusso di informazioni diventa bidirezionale solo dal server intermedio in poi. Mentre per quanto riguarda la nostra rete, permette alla porta utilizzata per questa comunicazione di rimanere sempre chiusa in ingresso.

Il firewall

Il nome nasce dai sistemi utilizzati per confinare un incendio in una zona di un edificio ed evitare che si propaghi indisturbato. In una rete informatica lo possiamo immaginare come una porta presidiata da qualcuno che verifica cosa entra ed esce. Può essere messo tra la rete aziendale ed internet, tra un PC e la rete aziendale o all’interno della rete stessa in punti intermedi. Lo scopo è quello di evitare accessi o movimenti di dati indesiderati.

Il firewall è un insieme di regole che determina cosa può passare. Ad esempio per far connettere un utente da casa all’azienda, posso impostare come regola del firewall che solo determinati PC possono accedere (ogni computer ha un identificativo univoco). Così chiunque tenti di connettersi da un’altro computer viene bloccato. Oppure accettare connessioni solo da certi indirizzi IP (indirizzo che identifica univocamente qualunque dispositivo che accede ad una rete). Il suo utilizzo può essere anche al rovescio. Ipotizziamo che sul mio PC è finito un programma con un virus. Questo programma tenta di connettersi ad internet per aprire un canale che permetterà ad un hacker di entrare. Posso impostare sul firewall che solo determinati software possono comunicare con internet, e solo in certe modalità prestabilite.

Riassumiamo i 10 punti chiave per la cybersecurity

Dopo aver spiegato quali sono gli strumenti per la sicurezza, concludiamo riassumendo le 10 azioni principali che serve intraprendere per rendere sicura la nostra rete:

  1. Dividere la rete in aree e filtrare ogni ingresso tramite firewall, e non solo tra la rete aziendale e internet (che rimane comunque il minimo indispensabile).
  2. Gestire le aree, i dispositivi e i software con un sistema di autenticazione e autorizzazione appropriato.
  3. Applicare sempre il principio del privilegio minimo.
  4. Usare un sistema di monitoraggio di ciò che avviene nella rete.
  5. Utilizzare password robuste (più è lunga, più è sicura) e non la stessa per più cose.
  6. Aggiornare costantemente i sistemi operativi e i software.
  7. Avere un antivirus attivo e aggiornato su ogni computer e server.
  8. Servirsi di una VPN per connessioni private con l’esterno (a meno di connessioni crittografate che aprono solo l’uscita).
  9. Utilizzare solo siti sicuri (lo potete leggere nel browser).
  10. Non usare programmi non originali, possono nascondere malware.
Cyber security - IPS Cloud

Voglio iniziare dal presupposto che qualunque oggetto connesso ad internet è potenzialmente vulnerabile agli attacchi informatici. Che sia un computer, un cellulare, un sistema di allarme o qualunque altra cosa. Ha un cordone ombelicale che può trasformarsi in una via d’accesso per gli hacker. Quindi basta non connettere nulla ad internet e il problema è risolto. Ovviamente questa affermazione è una provocazione, i vantaggi che internet ci da sono enormi. Probabilmente l’impatto sarebbe paragonabile a rinunciare all’energia elettrica. E come per la corrente, la soluzione non è non usarla, ma fare gli impianti e le reti con i giusti livelli di sicurezza.

In cosa consistono gli attacchi informatici

Esistono vari sistemi di attacco e il fattore comune è quello di raggiungere il dispositivo con un software chiamato comunemente malware. Gli scopi possono andare dal creare un malfunzionamento dell’oggetto attaccato, alla lettura di informazioni, fino ad arrivare al controllo del sistema. Pensate ad un hacker che prende il controllo della rete informatica di un moderno hotel. Come in tutti gli altri settori, il livello di digitalizzazione è elevato e le porte delle camere si aprono e si chiudono con delle tessere codificate. Potrebbe chiudere a chiave tutte le porte e chiedere un riscatto per riaprirle. E questa non è una fantasia, ma un fatto successo realmente. Potrebbe bloccare i computer di un’azienda e sbloccarli solo se le sue richieste vengono esaudite. Con una modalità più silenziosa potrebbe rubare i dati presenti nei computer (email, documenti, ecc.) per rivenderli a chi possa essere interessato. Tuttavia questo non deve spaventarci. Pensiamo a come sono gestiti i nostri soldi, in un sistema informatico che passa da internet e interconnette milioni di utenti. Ma questo non significa che quando ci alziamo la mattina dobbiamo iniziare a preoccuparci che qualcuno ci ruberà i soldi dal conto. Anzi, diciamo che è una possibilità così remota che nessuno ci pensa. Non perché le banche tengono tutto sconnesso da internet, al contrario, sono totalmente connesse, ma perché il sistema di sicurezza che utilizzano è talmente ben strutturato che riuscire a penetrarlo sarebbe un obiettivo estremamente arduo.

Chi sono gli hacker

Partiamo dagli amatori. Sono spesso persone non così competenti, che sfruttano software malevoli trovati in internet. Il loro scopo può essere anche solamente quello di provocare un danno, a volte lo fanno solo per curiosità, altre volte per dimostrare le loro abilità. In ogni caso non bisogna sottovalutare i problemi che possono provocare.

Poi troviamo gli hacker veri e propri. Persone con conoscenze approfondite delle reti e dei sistemi informatici, che si dividono in tre tipi. I Cappelli Bianchi cercano le vulnerabilità dei sistemi informatici allo scopo di migliorarne la sicurezza. Lo fanno per conto del proprietario, al quale vengono riportati i risultati. I Cappelli Neri al contrario lo fanno in modo illegale per trarne un guadagno personale. Il lavoro può anche essergli commissionato da qualcuno. I Cappelli Grigi si pongono un po’ a metà strada. Trovano le vulnerabilità di un sistema e, a seconda dei casi, magari le comunicano al proprietario, oppure le pubblicano su internet per permettere ad altri hacker di sfruttarle.

Infine ci sono le vere e proprie organizzazioni criminali. Si tratta di persone ben organizzate e finanziate che possono lavorare per conto di altre persone o al servizio di governi. I loro attacchi sono indirizzati a obiettivi specifici, dietro i quali spesso ci sono motivazioni politiche.

Perché scegliere il cloud

Per sistema cloud si intendono dei server o più in generale dei servizi da remoto. Invece di avere localmente dei computer che gestiscono l’immagazzinamento dei dati o software di vario genere, tutto questo viene fatto su computer che stanno in appositi centri dedicati a questo tipo di servizi. Allora, con tutti i rischi che abbiamo visto prima, perché scegliere il cloud? Sfrutto un paragone e vi faccio questa domanda: Perché mettere i soldi in banca invece che sotto il materasso? Diventano digitali, sono nella rete alla mercé degli hacker, quindi non sembrerebbe una soluzione così furba. Se non fosse che il livello di sicurezza di un sistema bancario digitale è di gran lunga superiore a quello della nostra casa. Allo stesso modo i servizi cloud dei big player come Microsoft, Amazon o Google hanno livelli di sicurezza superiori a quelli che possiamo avere a casa nostra o nella nostra azienda. Questi fornitori arrivano a spendere più di un miliardo di dollari l’anno solo per la cyber security.

Una migrazione già in divenire

In realtà tutti noi ci stiamo spostando progressivamente verso il cloud, anche se non sempre ce ne rendiamo conto. Per leggere le email andiamo su un browser e visualizziamo la pagina del nostro gestore di posta elettronica, oppure attraverso un’app del cellulare. Tutte le nostre email stanno su un server da qualche parte nel mondo, come il backup delle nostre fotografie o i file che mettiamo su OneDrive piuttosto che Google Drive, per non parlare dei social media. Siamo molto più spaventati di tenere le nostre foto solo sul cellulare o le email solo sul nostro PC, perché potrebbero avere problemi con il rischio di perdere tutto. Mentre su cloud sono costantemente sottoposti a backup.

La configurazione e l’aggiornamento dei dispositivi

Un’altro punto importante da tenere in considerazione è lo stato dei nostri dispositivi. Facciamo l’esempio di un server in azienda dove ci sono una serie di dati sensibili. Siamo sicuri che il sistema operativo sia costantemente aggiornato? Appena un hacker trova una falla e il problema diventa noto, chi fornisce il sistema operativo fa un aggiornamento per chiudere il “buco”, ma se l’aggiornamento non viene tempestivamente installato, il nostro server è a rischio. La stessa cosa può valere anche per il nostro PC o smartphone. Inoltre, le configurazioni di sicurezza devono essere impostate correttamente. Basta anche un solo settaggio sbagliato o non idoneo per rendere un server o un computer vulnerabile. E purtroppo non sempre possiamo avere a disposizione i massimi esperti di sicurezza informatica che ci configurano la rete e i relativi dispositivi connessi ad essa. Mente i vari Microsoft, Amazon o Google li hanno, esattamente come li hanno le banche. Come ultimo punto ci sono i backup. Se il dispositivo lo gestiamo noi, dobbiamo pensare a gestire correttamente il backup di tutti i dati per evitare che un malfunzionamento ce li faccia perdere. Su cloud questa cosa fa parte del servizio, quindi una cosa in meno da gestire, verificare e manutenere, con tutti i rischi che si porterebbe dietro.

In conclusione possiamo dire che un servizio cloud è un sistema intrinsecamente più sicuro, sempre aggiornato, con il backup dei dati e configurato al meglio per rendere un attacco molto difficile. Il cloud da solo non è la soluzione a tutti i problemi, dobbiamo pensare anche alla sicurezza dei dispositivi che rimangono in azienda. Nel prossimo post parleremo in modo più approfondito di come funzionano questi sistemi e configurazioni per la sicurezza di una rete informatica e la loro importanza per difendere la nostra azienda dagli attacchi.

Perché investire nel monitoraggio di impianti e macchine?

Poter tenere sotto controllo un sito industriale non significa solo sapere ciò che avviene su ogni macchina o linea in ogni momento, ma permette anche di utilizzare i dati per migliorare i processi di manutenzione e alzare l’efficienza. Questo significa eliminare tutti quegli sprechi che in passato non era possibile evitare.

Una manutenzione tradizionale prevede interventi basati sulla previsione di vita di un dato componente, ma spesso questa previsione non può avere un elevato grado di affidabilità, perché le variabili in gioco sono molteplici e gli imprevisti sono dietro l’angolo. Così ci si trova ad intervenire su una macchina e magari sostituire componenti che avrebbero lavorato ancora a lungo o, al contrario, non sostituire un componente ormai logoro e causare un fermo macchina con tutte le sue conseguenze. In entrambi i casi i soldi da sborsare possono essere assolutamente non trascurabili.

Le ultime tecnologie in questo settore permettono di gestire interventi di manutenzione mirati, evitando sia sostituzioni inutili, sia fermi macchina. I costi risparmiati con questi tipi di sistemi sono molto più grandi di quello che si possa immaginare e di conseguenza si ha un ritorno dell’investimento in poco tempo. Il nostro sistema IPS Cloud si basa proprio su queste tecnologie e offre un servizio a 360 gradi per tutti i tipi di esigenze.

Per approfondimenti non esitate a contattarci