Traduttore automatico - Read this site in another language

venerdì 25 marzo 2022

Come creare la nostra Artificial Intelligence

immagine tratta da: 
https://p4pe.co/product/artificial-intelligence-and-machine-learning-essentials/
Abbiamo parlato spesso di Artificial Intelligence, ma non l'abbiamo ancora fatto dal punto di vista di chi vuole avvicinarsi alla materia e provare a costruire la sua propria AI.

Oggi invece ci avviciniamo ai più giovani cercando di spiegare cosa occorre per realizzare una AI, quali strumenti sono utili e come procedere passo passo verso il proprio obiettivo.

In questo articolo diamo per scontate alcune conoscenze, in particolare non spieghiamo cos'è una AI. Se proseguendo la lettura vi rendete conto di aver bisogno di rinfrescare qualche concetto, vi suggerisco di leggere l'articolo "La nuova rivoluzione digitale, il Deep Learning" di Andrea Piras, dove potrete trovare le definizioni e spiegazioni di AI, Machine Learning e Deep Learning.

Individuare il problema

Può sembrare strano ma se si vuole costruire una AI bisogna individuare per bene il problema che si vuole risolvere. 

Precisiamo subito che un problema che appare semplice dal punto di vista umano potrebbe essere difficile o complesso per una AI e viceversa. L'AI è di solito molto efficace nello svolgere compiti ripetitivi e che magari potrebbero essere alienanti per una persona. Per esempio supponiamo di aver bisogno di raccogliere foto e disegni di alcuni tipi di frutta (pere e mele). Potremmo assumere una persona capace di disegnare e mandarla in giro alla ricerca di soggetti da disegnare. Leonardo da Vinci probabilmente avrebbe girato per i mercati cittadini e per le campagne realizzando di persona i disegni. Oppure potremmo assumere un fotografo, chiedendogli di realizzare degli scatti che poi utilizzeremo per le nostre necessità. Potremmo anche assumere qualcuno che si metta a scandagliare internet alla ricerca di immagini e che poi le salvi in due cartelle diverse a seconda del soggetto. Potremmo, nell'ultimo caso, utilizzare una AI creata per lo scopo. Come vedete il compito è relativamente semplice, ma metodologia e tecnologia impiegate sono diverse. 

Allo stesso modo è possibile che l'identico problema sia risolvibile utilizzando tipi differenti di Intelligenza Artificiale. Occorre dunque cercare di definire bene il problema e scegliere la metodologia migliore per raggiungere lo scopo. Infine, a seconda del problema, potrebbe anche capitare che utilizzare una AI si riveli inutile e dispendioso, ma noi non ci occuperemo di quest'ultimo caso.

Sui dati...

Definito il problema si potrebbe essere tentati dal passare alla scrittura del programma (codice) che ci aiuterà a risolverlo (parliamo sempre di raccogliere immagini, foto o disegni di pere e mele e di classificarle). Ma non è così, prima di tutto occorre pensare ai dati. Occorre cercare di capire con che tipo di dati abbiamo a che fare (strutturati o non strutturati) e come dobbiamo catalogarli: dobbiamo dividere le mele e le pere oppure occorre fare qualcosa di più complesso magari distinguendo tra frutti di diverso colore? L'analisi sui dati è molto importante e sarà utile in diverse fasi del nostro progetto, in particolare nella fase di addestramento della nostra AI, in pratica quando le viene insegnato a svolgere il compito per cui è stata creata.

Come ho detto prima i dati si possono dividere in due macro categorie: strutturati o non strutturati.

I dati strutturati sono conformi ad un modello, hanno una struttura ben definita, sono ordinati ed è possibile accedervi facilmente per impiegarli (sia da una persona, sia da un programma). Normalmente si conservano all'interno di database. Se consideriamo l'esempio delle mele e pere precedentemente introdotto, possiamo associare ai due frutti delle caratteristiche loro proprie (colore, dimensione, forma...) che serviranno per distinguerle e saranno utilizzati per addestrare l'algoritmo. 

I dati non strutturati sono invece video, foto, audio... molto più difficili da trattare.   

L'algoritmo

Dopo aver riflettuto sulla tipologia di dati con cui avremo a che fare, possiamo iniziare a pensare all'algoritmo più idoneo alla risoluzione del problema, algoritmo che diventerà il cuore della nostra AI. 

Possiamo dividere gli algoritmi in due categorie chiamate "supervised learning" e "unsupervised learning". 

Alla prima categoria (supervised learning) appartengono degli algoritmi che richiedono l'intervento umano, principalmente per classificare manualmente i dati che verranno poi impiegati per addestrare l'algoritmo. Se il nostro problema consistesse nel verificare le email in arrivo e selezionare quelle di spam, da mandare su una apposita cartella, probabilmente useremo un algoritmo di questa categoria utilizzando come esempi un numero molto elevato di messaggi che gli utilizzatori hanno classificato come legittimi o spam. Tra queste tecniche possiamo annoverare le neural networks, naive Bayes, linear regression, logistic regression, support vector machine (SVM), k-nearest neighbor, random forest.

Alla seconda categoria (unsupervised learning) appartengono algoritmi che non necessitano dell'intervento umano per classificare i dati e vi appartengono tre sottocategorie: clustering, association e dimensionality reduction. Sempre a titolo di esempio, se il nostro problema consiste nell'identificare attività potenzialmente malevole in una rete aziendale, probabilmente utilizzeremo un algoritmo di clustering per individuare l'insieme delle attività che appaiono molto diverse da quelle usuali. 

Addestrare l'AI

La fase successiva consiste nell'addestrare l'algoritmo a svolgere il compito. Per tornare al semplice esempio iniziale della suddivisione di immagini di pere e mele occorrerà addestrare il nostro algoritmo a riconoscere i due frutti con una certa accuratezza. L'accuratezza dipende da noi, è una cosa che dobbiamo decidere in base ai nostri obiettivi di business. Potremmo decidere che ci interessa una accuratezza dell'80%, il che significa che il nostro algoritmo dovrà essere in grado di riconoscere una pera o una mela da immagini di frutta 80 volte su cento. questo significa che possiamo gestire l'errore dell'algoritmo attraverso un'altra metodologia (per esempio mettendo una persona a controllare le immagini selezionate) oppure che l'errore non causa danni al nostro business o ancora che il danno causato è inferiore alla spesa che dovremmo sostenere per migliorare il processo di selezione.

Se però nella fase di addestramento non si riesce a raggiungere l'accuratezza richiesta potrebbe essere necessario fare un passo indietro e scegliere un diverso tipo di algoritmo. Ma prima di cambiare algoritmo è meglio verificarne la configurazione (attraverso i parametri di configurazione) e se il dataset selezionato per eseguire l'addestramento è corretto. Per tornare al solito esempio di selezione di mele e pere, se tra le immagini usate per l'addestramento abbiamo per errore utilizzato solo immagini di pere e mele di colore rosso potrebbe darsi che l'AI non riconosca pere e mele di altri colori non riuscendo perciò a raggiungere l'accuratezza richiesta. In questo caso sarà sufficiente modificare il dataset per comprendere frutti di vari colori, fino a raggiungere l'accuratezza richiesta.

Linguaggio di programmazione e piattaforma

Il passo successivo consiste nella scelta del linguaggio di programmazione da utilizzare. La scelta dipende dalle nostre conoscenze di programmazione.

I linguaggi che possono essere utilizzati sono tanti ma i più comuni sono Python e R in quanto possiedono già molte librerie già pronte all'uso che semplificano la scrittura del codice. Infine è necessario scegliere la piattaforma che ci consentirà di costruire la nostra AI. Esistono varie piattaforme che aiutano nella realizzazione del nostro progetto, tra queste per esempio TensorFlow è una piattaforma open source che permette di fare delle prove senza spendere niente, oppure Numpy, Keras, Pandas, scikit-learn, Matplotlib, Seaborn e cosi via, il panorama è veramente ampio.

Non resta che provare...

A proposito, dimenticavo di dire che la nostra AI si alimenta continuamente dei dati che riceve. Ne tiene traccia e li utilizza. Così è possibile insegnarle a fare previsioni, magari sulla qualità e tipo di mele che troveremo al mercato nei mesi prossimi. Ma questo è un altro problema! 

Alessandro Rugolo

(Ringrazio tutti gli amici di SICYNT che mi hanno consigliato ed aiutato a migliorare l'articolo)

Per approfondire:

La nuova rivoluzione digitale, il deep learning - Difesa Online

Step-by-Step Methods To Build Your Own AI System Today | upGrad blog

What is Structured Data? - GeeksforGeeks

What is Supervised Learning? | IBM

Types of Artificial Intelligence Algorithms You Should Know [A Complete Guide] | upGrad blog

Unsupervised Learning for Cyber (hmgstrategy.com)

sabato 5 marzo 2022

Amazon e Stellantis per l'automotive del futuro

(foto: https://techtarget.itmedia.co.jp/)
Nel mese di gennaio di questo splendido (si fa per dire) 2022, una notizia è stata riportata da alcuni giornali ma probabilmente è passata inosservata dai più, me compreso.

Si tratta del partenariato strategico tra Stellantis e Amazon. 

Ricordo che Stellantis (con quartier generale nei Paesi Bassi) è la multinazionale automotive nata nel 2021 dalla fusione della italo-americana Fiat Chrysler e della francese PSA.

Non credo sia necessario invece ricordare cosa sia Amazon. 

Il partenariato strategico farà si che Alexa (l'assistente virtuale di Amazon) sarà incluso nativamente nei veicoli prodotti dal gruppo, allo scopo di svolgere le funzioni relative a numerosi comandi vocali. Secondo alcuni articoli Alexa avrà anche il compito di gestire non solo il veicolo ma anche la domotica relativa al proprietario del veicolo, unendo in una unica interfaccia numerose funzionalità.

Amazon si occuperà della gestione dei dati generati dalla totalità dei veicoli di Stellantis, più di dodici milioni al momento (34 milioni previsti al 2030), cosa che permetterà di sviluppare nuovi servizi.

Tra le novità c'è anche lo sviluppo di una nuova generazione di chip per le autovetture, adattate alle esigenze dei costruttori di auto.

Naturalmente ci si potrebbe porre diverse domande in merito alla partnership.

La prima domanda riguarda il trattamento di dati da parte della multinazionale (Stellantis), che nonostante la sede nei Paesi Bassi, quindi in Europa, è di proprietà, tra gli altri, per il 14 % della Exor N.V. (controllata dalla famiglia Agnelli), per il 7 % dalla PSA (Peugeot S.A.) e per il 3 % da Dongfeng Motor Corporation (produttore di automobili dello stato cinese con sede a Wuhan).

Quali sono i possibili problemi che si potrebbero verificare ? Dove saranno custoditi i dati personali? A chi ci si dovrà rivolgere in caso di problemi legali? Chi sarà responsabile qualora un ransomware dovesse compromettere i sistemi e bloccare automobili o abitazioni, magari interi quartieri? 

In caso di guerra (e quella commerciale e finanziaria sappiamo bene essere sempre in corso) cosa può accadere? In caso di furto di credenziali milioni di auto e di proprietà collegate potrebbero essere hackerate, bloccate, distrutte. E chi scommetterebbe sulla incolumità di personaggi politici o capi militari o di fazione considerati nemici ? Cosa potrebbe accadere in caso di un attacco statuale contro i sistemi di guida automatica di milioni di auto, magari per creare il caos preliminare ad un attacco convenzionale? 

La seconda domanda riguarda le possibilità per Alexa di impiego dei dati per analisi e successiva valorizzazione. Come verranno impiegati i dati? Per lo sviluppo di servizi utili in qualche modo all'utente ma anche, e soprattutto, per migliorare gli utili delle multinazionali che sono indubbiamente in una posizione di forza.

La terza domanda riguarda la cyber security. Siamo sicuri che sia utile rendere ancora più connesso il mondo in cui ci muoviamo e lavoriamo tutti i giorni? Attenzione, non sono certo uno di quelli che dicono che la tecnologia è il diavolo, la tecnologia (quella digitale in particolare) è utile per tanti aspetti, ma è anche molto vulnerabile.  

Ancora una volta, noi singoli acquirenti non potremo fare altro che stare a vedere cosa accade, sperando di non doverne pagare le conseguenze.

Renzo Arbore direbbe: "Meditate, gente, meditate...".

Alessandro Rugolo 


Per approfondire:

Partenariat stratégique d’ampleur entre Stellantis et Amazon (incyber.fr);

Official Global Website | Stellantis;

Amazon Alexa Official Site: What is Alexa?

Stellantis and Amazon Collaborating on Connected Vehicles | Datamation;

Amazon’s tech is headed to millions of Stellantis vehicles in 2024 | TechCrunch