Le definizioni di Intelligenza Artificiale (IA) sono molteplici e diverse tra loro. Questo perché l’intelligenza artificiale è un insieme di tecnologie che interagiscono per permettere alle macchine di comprendere, agire ed apprendere gli avvenimenti con un livello di intelligenza simile a quello umano. Esse sono capaci di adattare il proprio comportamento analizzando le proprie azioni passate ed imparando dai propri errori. Perché Python è una buona scelta per creare un’IA.
Python è il terzo linguaggio di programmazione più utilizzato al mondo dopo Java ed il linguaggio C. Non sarebbe falso dire che python sia già presente nella nostra quotidianità anche se non possiamo ne vederlo ne toccarlo, ma viene spesso utilizzato come linguaggio di scripting nelle applicazioni web. I motivi del suo successo sono molti e tra questi troviamo una libreria standard che gestisce in modo automatico la memoria, la vera e propria essenza del linguaggio che deve essere semplice, potente ed intuitivo, con tempi di sviluppo brevi. Inoltre, Python è un linguaggio multi-paradigma, supporta la programmazione procedurale, ad oggetti e diversi elementi della programmazione funzionale. É un linguaggio di alto livello ma allo stesso tempo semplice e completamente gratuito. Non è da sottovalutare, viene utilizzato nell’informatica scientifica e nei progetti di intelligenza artificiale. Infine, è portabile, cioè è possibile usarlo su diverse piattaforme, avendo l’interprete Python installato.
Machine Learning
Il Machine Learning è un sottoinsieme dell’intelligenza artificiale il quale crea dei sistemi che migliorano, grazie all’apprendimento, le performance con l’utilizzo dei dati.
Ci sono due modi in cui l’algoritmo apprende i dati per fare previsioni: machine learning supervisionato e non supervisionato. La scelta tra i due dipende da fattori correlati alla struttura e al volume dei dati. L’obiettivo principale è che una macchina sia in grado di imparare dalla propria esperienza, che sia in grado di svolgere ragionamenti induttivi.
Deep Learning
L’apprendimento approfondito è il ramo più avanzato del Machine Learning: consiste in un insieme di tecniche su reti neurali artificiali organizzate in strati, dove ogni strato calcola i valori per quello successivo. Con una quantità sufficiente di dati il sistema è in grado di risolvere problemi di apprendimento in modo automatico, imparando quindi a svolgere compiti. Costituisce una delle principali fonti di successo per le intelligenze artificiali, ma il recente successo del Deep Learning è dovuto a fattori che hanno migliorato aree che in passato non avevano dato buoni risultati, ad esempio: l’ottimizzazione dei metodi di addestramento delle reti neutrali, incremento dei dati a disposizione e sistemi di calcolo parallelo su GPU.
Reti Neurali
Le Reti Neurali costituiscono un sottoinsieme del Machine Learning e sono anche l’elemento centrale del Deep Learning. Questi, non a caso, ricordano il cervello umano, essendo infatti ispirati ad esso, imitando il modo in cui i neuroni biologici si inviano segnali.
Le Reti Neurali sono formate da nodi che contengono un livello di input, uno o più livelli nascosti, ed uno di output. I nodi sono connessi tra loro e ciascuno ha un peso ed una soglia associati: se l’output è al di sopra del valore soglia allora il nodo viene attivato, inviando dati al successivo livello della rete. Queste fanno affidamento ai dati di addestramento per imparare a migliorare la loro accuratezza, per questo motivo sono dei potenti strumenti nell’intelligenza artificiale. Una rete neurale che consiste in più di tre livelli può essere considerata un algoritmo di Deep Learning.
Installazione di Python e delle librerie necessarie
Installare Python su windows è estremamente semplice, basterà andare sul sito ufficiale Python Software Foundation e cliccare sul tasto download per l’ultima versione disponibile. Durante la fase di installazione è importanze assicurarsi di aver spuntato l’aggiunta alla variabile d’ambiente Path, per facilitarne l’utilizzo. Per verificare di aver installato bene Python sarà necessario aprire un terminale di sistema e provare a dare il comando python. A questo punto dovrebbe aprirsi una shell interattiva con cui poi si prenderà confidenza. In genere le librerie sono già installate su Windows, essendo necessarie, ma per una maggiore sicurezza è opportuno invocare l’interprete python dalla shell, se non fallisce allora le librerie sono presenti. In caso di necessità, si può tranquillamente installare il routime di Visual C++ 2015.
Le librerie necessarie per lo sviluppo di un IA con Python sono le seguenti: Numpy, Pandas, Scikit-learn, Networkx, Scrapy e BeautifulSoap, PySpark, Nltk, Prophet,Statsmodels, Boken, Matplotlib, OpenCV, Tensorflow, Scikit-optimize, Optuna.
Configurazione dell’ambiente di sviluppo
Prima di iniziare a scrivere un programma, è necessario configurare la postazione di lavoro con un nuovo ambiente di sviluppo. Prima di tutto, un ambiente virtuale è un ambiente di sviluppo che si comporta come un contenitore per il nostro progetto. Avere un ambiente virtuale significa installare le librerie e pacchetti necessari per il nostro progetto specifico. Una delle più famose opzioni per la gestione degli ambienti virtuali di Python è Anaconda : un software che aiuta a configurare e gestire il nostro ambiente di sviluppo. Una volta installato Anaconda (o miniconda, versione light ) e validato il corretto funzionamento usato il comando “conda “, sarà poi possibile creare un ambiente di sviluppo e attivarlo.
Caricamento e preparazione dei dati
Il primo passo nella creazione di un’intelligenza artificiale semplice è identificare il problema in questione, quindi quale risultato si desidera. Successivamente, i dati sono una parte cruciale, infatti il data scientist passa oltre l’80% del tempo a controllare e adattare i dati all’uso. Le intelligenze artificiali imparano dai dati, pertanto anche se disponi di dati validi, bisogna assicurarsi un buon processo di preparazione di questi. Quindi, per prima cosa bisogna selezionare i dati, ciò significa che si deve considerare di quanti dati si ha effettivamente bisogno per affrontare il problema su cui si sta lavorando. Dopo aver selezionato accuratamente i dati, bisogna considerare come utilizzarli. Questo passaggio consiste in un inserimento dei dati in un modulo su cui si può lavorare. Ed è qui che ci si occupa di formattare i dati, della pulizia dei dati (correzione o rimozione dei dati mancanti), e campionamento per una rappresentazione più veloce. L’ultimo passaggio, dopo la selezione e la pre-elaborazione, è la trasformazione. Questo passaggio viene anche chiamato ingegneria delle funzionalità: consiste nel ridimensionamento, decomposizione e aggregazione degli attributi. I dati pre-elaborati possono presentare scale diverse il che è un problema, ed è in questo che consiste il ridimensionamento; quindi, portarli su una stessa scala; la decomposizione consiste essenzialmente nella semplificazione dei dati, un concetto complesso potrebbe essere più utile se suddiviso in più parti comuni; per un metodo di apprendimento automatico quando suddiviso nelle parti costituenti; analogamente alcune funzionalità possono essere aggregate in un’unica funzionalità che sarebbe più significativa.
Installazione di Python e delle librerie necessarie
Installare Python su windows è estremamente semplice, basterà andare sul sito ufficiale Python Software Foundation e cliccare sul tasto download per l’ultima versione disponibile. Durante la fase di installazione è importanze assicurarsi di aver spuntato l’aggiunta alla variabile d’ambiente Path, per facilitarne l’utilizzo. Per verificare di aver installato bene Python sarà necessario aprire un terminale di sistema e provare a dare il comando python. A questo punto dovrebbe aprirsi una shell interattiva con cui poi si prenderà confidenza. In genere le librerie sono già installate su Windows, essendo necessarie, ma per una maggiore sicurezza è opportuno invocare l’interprete python dalla shell, se non fallisce allora le librerie sono presenti. In caso di necessità, si può tranquillamente installare il routime di Visual C++ 2015.
Le librerie necessarie per lo sviluppo di un IA con Python sono le seguenti: Numpy, Pandas, Scikit-learn, Networkx, Scrapy e BeautifulSoap, PySpark, Nltk, Prophet,Statsmodels, Boken, Matplotlib, OpenCV, Tensorflow, Scikit-optimize, Optuna.
Configurazione dell’ambiente di sviluppo
Prima di iniziare a scrivere un programma, è necessario configurare la postazione di lavoro con un nuovo ambiente di sviluppo. Prima di tutto, un ambiente virtuale è un ambiente di sviluppo che si comporta come un contenitore per il nostro progetto. Avere un ambiente virtuale significa installare le librerie e pacchetti necessari per il nostro progetto specifico. Una delle più famose opzioni per la gestione degli ambienti virtuali di Python è Anaconda : un software che aiuta a configurare e gestire il nostro ambiente di sviluppo. Una volta installato Anaconda (o miniconda, versione light ) e validato il corretto funzionamento usato il comando “conda “, sarà poi possibile creare un ambiente di sviluppo e attivarlo.
Caricamento e preparazione dei dati
Il primo passo nella creazione di un’intelligenza artificiale semplice è identificare il problema in questione, quindi quale risultato si desidera. Successivamente, i dati sono una parte cruciale, infatti il data scientist passa oltre l’80% del tempo a controllare e adattare i dati all’uso. Le intelligenze artificiali imparano dai dati, pertanto anche se disponi di dati validi, bisogna assicurarsi un buon processo di preparazione di questi. Quindi, per prima cosa bisogna selezionare i dati, ciò significa che si deve considerare di quanti dati si ha effettivamente bisogno per affrontare il problema su cui si sta lavorando. Dopo aver selezionato accuratamente i dati, bisogna considerare come utilizzarli. Questo passaggio consiste in un inserimento dei dati in un modulo su cui si può lavorare. Ed è qui che ci si occupa di formattare i dati, della pulizia dei dati (correzione o rimozione dei dati mancanti), e campionamento per una rappresentazione più veloce. L’ultimo passaggio, dopo la selezione e la pre-elaborazione, è la trasformazione. Questo passaggio viene anche chiamato ingegneria delle funzionalità: consiste nel ridimensionamento, decomposizione e aggregazione degli attributi. I dati pre-elaborati possono presentare scale diverse il che è un problema, ed è in questo che consiste il ridimensionamento; quindi, portarli su una stessa scala; la decomposizione consiste in una scomposizione di funzionalità in modo tale da rendere il concetto più semplice; ed infine, potrebbero esserci funzionalità che possono essere aggregate tra loro, considera quindi quale aggregazione potrebbe essere eseguita.
Dedicare molto tempo a queste fasi può essere vantaggioso per la prestazione di un algoritmo.
Creazione e addestramento del modello
Questa è la parte migliore della creazione di un’intelligenza artificiale. La scelta del tipo di apprendimento può cambiare la forma che assume l’algoritmo: supervisionato e non supervisionato. La vera differenza tra i due la si nota dal fatto che l’algoritmo supervisionato presenta tutti i dati etichettati e gli algoritmi imparano a prevedere l’output dai dati di input; mentre l’algoritmo non supervisionato presenta dati non etichettati e gli algoritmi apprendono la struttura intrinseca dai dati input.
Ma il passaggio importante per garantire la funzionalità del modello è il training dell’algoritmo, ovvero l’addestramento. Lo scopo dell’addestramento è quello di fare buone previsioni utilizzando i dati per identificare un modo corretto. Per semplicità si può prendere in considerazione un modello utilizzando google colab, modello disponibile in Sklearn. Successivamente si può notare che avremo a disposizione un solo set di dati. Questo set di dati dovrà essere diviso in due parti: una parte per valutarne le prestazioni e un’altra per l’addestramento. Utilizzando classier.fit, alleniamo il modello per generarne i parametri in modo tale che possa essere utilizzato per previsioni future.
Valutazione del modello
Dopo aver addestrato il modello, le prestazioni di questo verranno testate sul set di dati del test che sono state create in precedenza. Bisogna ricordare che questo test non è reale, quindi non è atipico trovare livelli di precisione di accuratezza del 97%, che nella realtà è considerato molto alto.
Utilizzo del modello per prevedere risultati
Una volta che i dati sono stati selezionati con cura ed il modello è stato addestrato e valutato, si può provvedere con la previsione di risultati futuri. L’analisi predittiva consiste nell’utilizzare dati tramite tecniche delle intelligenze artificiali e machine learning per individuare le probabilità di eventi futuri basandosi proprio sui dati. Come ormai abbiamo compreso, la qualità dei risultati finali dipenderanno dalla selezione dei dati. Il risultato non sarà un’esatta previsione del futuro ma permette di anticipare i problemi e di decidere di conseguenza.
Esempio di utilizzo dell’IA in un’applicazione reale
Le applicazioni dell’intelligenza artificiale nel nostro quotidiano sono molteplici, infatti molte delle comodità di cui usufruiamo sono dotate di intelligenza artificiale. Tra le più popolari e che spesso vengono date per scontato sono gli acquisti personalizzati. Amazon sperimenta sistemi basati sull’IA per prevedere i bisogni dei propri consumatori, il loro obiettivo è quello di capire di cosa hanno bisogno le persone ancor prima che queste se ne rendano conto, attirandole con uno sconto al quale non è facile resistere. Amazon quindi si basa su un insieme di dati del profilo dell’utente e quindi sugli acquisti fatti in precedenza, in modo tale da prevedere quelli futuri.
Come utilizzare l’IA per risolvere un problema specifico attualmente esistono otto classi di soluzioni di Intelligenza artificiale: autonomous vehicle, autonomous robot, intelligent object, virtual assistant, recommendation, image processing, language processing, intelligent data processing. Queste soluzioni vengono classificate in questo modo per le applicazione di AI alle imprese, le soluzioni ariano in base alla loro funzionalità e alla modalità di realizzazione. In particolare, nel caso Amazon vediamo la soluzione recommendation, si tratta di una ricerca verso le preferenze e gli interessi dell’utente in maniera diretta o indiretta. Tuttavia, bisogna notare che il modello mostra una visione statica di un progetto IA, mentre l’identificazione di soluzioni può avvenire solo in modo interattivo. Questo è dovuto al fatto che non esiste una soluzione universale.
Conclusione
Riepilogando, quindi , l’intelligenza artificiale consiste nello sviluppo di una macchina dotata di autonomia, apprendimento e adattamento, tramite un’analisi di dati. Le principali tecniche utilizzate da questa sono il deep learning e machine learning.
Python è un linguaggio interpretato, cioè che non ha bisogno di essere compilato in linguaggio macchina prima dell’esecuzione, può essere utilizzato in modo diretto dallo sviluppatore per eseguire il programma. Non c’è da stupirsi che sia il più popolare oggi sul mercato, offrendo risultato con minor codice, è un linguaggio dinamico e riduce la complessità. É evidente che Python è il miglior linguaggio di programmazione per l’intelligenza artificiale, ed è utile anche per molti altri obiettivi. É infatti consigliato se si vuole imparare a programmare velocemente, ed il fatto che sia semplice ed immediato lo rende ideale per i principianti. Inoltre, se si vuole diventare un data scientist le sue librerie scientifiche vengono considerate tra le più importanti dell’intero settore.