Machine Learning

Machine Learning

Machine Learning: Macchine di apprendimento

Per Machine Learning nell’informatica si intende l’insieme dei metodi che forniscono ad un computer l’abilità di apprendere un processo, senza essere stato esplicitamente programmato. Studiato da quasi 60 anni, il campo dell’apprendimento automatico dei computer viene oggi impiegato in diversi settori: informatica, statistica computazionale, reti neurali artificiali (intelligenza artificiale e Machine Learning), data mining. Gli algoritmi del Machine Learning sono in continua evoluzione. Per poter apprendere dati e fare delle predizioni su di essi, è necessario costruire un algoritmo per l’apprendimento automatico, che varia a seconda dei campi di applicazione. Cercando in rete informazioni ed esempi sul Machine Learning, si trovano diverse macchine di apprendimento che usufruiscono di algoritmi per il data mining, per l’ottimizzazione dei dati e dei processi informatici, e per il soft e cloud computing. I software dotati di una macchina di apprendimento possono interpretare i dati ricevuti ed integrarli in nuovi modelli matematici, per rispondere alla previsione di un comportamento dell’utente, o ad un nuovo processo della macchina. Nel campo della statistica, l’apprendimento automatico ha permesso di migliorare i modelli statistici, al punto di aver fatto nascere un nuovo campo di studi denominato “apprendimento statistico”.

In generale, il Machine Learning analizza i metodi di sviluppo di macchine che possano svolgere ragionamenti induttivi attraverso l’elaborazione dei dati. Non è propriamente una intelligenza artificiale, ma una macchina di apprendimento che applica le Teorie del Machine Learning e può portare a termine un processo di acquisizione di una esperienza ed elaborazione di un nuovo compito, che non ha mai affrontato. In inglese, l’assunzione di questi processi viene definita “training examples”), dato che le macchine si “allenano” attraverso l’interpretazione di esperienze. Replicare il processo di apprendimento per eseguire un compito è l’idea base del Machine Learning, tutto dunque dipende dalla quantità di dati forniti ad un programma e al continuo utilizzo da parte della macchina. Chi vuole programmare una macchina di apprendimento deve prima di tutto identificare il compito che la macchina deve eseguire, e ingegnerizzare il processo di elaborazione dati che porta al “feedback” da parte della macchina. Lo sviluppo di un software in cloud è oggi una delle soluzioni maggiormente adottate da parte degli sviluppatori di macchine di apprendimento (Machine Learning online).

Un software in cloud permette di sviluppare l’algoritmo che esegue il metodo di apprendimento dei dati, modellare le conseguenze dei “feedback” e calcolare le decisioni attraverso i processi computazionali. Microsoft, attraverso il suo programma di Machine Learning denominato “Azure”, ha pubblicato diverse informazioni che introducono allo sviluppo di una macchina di apprendimento. Gli algoritmi possono essere di diversi tipi. Ad esempio, gli algoritmi di apprendimento supervisionato utilizzano l’andamento storico dei dati storici per rilevare diverse informazioni, ed utilizzarle per fare una previsione dei dati del futuro. La macchina di apprendimento supervisionata applica dei valori ai dati che riceve, e li classifica in base alle categorie. Nell’apprendimento non supervisionato, invece, la macchina non associa “etichette” ai dati che riceve, ma li organizza in base ad una struttura predefinita (raggruppamento dei dati in cluster durante i processi del Machine Learning). Senza supervisione, la macchina di apprendimento assume una struttura di dati più complessa, e dunque necessita di una organizzazione dedicata. Sempre Microsoft, in risposta alla domanda su come scegliere gli algoritmi per la Machine Learning, definisce questi termini di orientamento per la scelta dell’algoritmo: Precisione, Tempo di formazione della macchina, Linearità, Numero di Parametri, Numero di Caratteristiche, Casi Speciali. Con quest’ultimo parametro, si fa riferimento al fatto che alcuni algoritmi di apprendimento possono interpretare una struttura dei dati in base ai risultati desiderati, fornendo previsioni più accurate ma che in altri contesto sarebbero meno accurate.

Al programma Microsoft Azure per Machine Learning si accede tramite l’utilizzo di diversi Linguaggi e Framework di appartenenza, quali Java SDK, Python SDK, Ruby SDK, Node.js SDK, REST. .NET SDK. Per ogni strumento di programmazione (esempio: Python SDK) sono fornite Informazioni di riferimento sulle API (interfaccia di programmazione di un’applicazione). Il Machine Learning di Microsoft Azure fornisce anche un set di architetture consigliate per le applicazioni in cloud. Per sviluppare gli algoritmi della macchina di apprendimento, si possono progettare modelli per il cloud computing e programmare le procedure consigliate per il Machine Learning, i passaggi esaustivi della macchina di apprendimento e le soluzioni di distribuzione degli “input”.

Le macchine di apprendimento possono essere sviluppate utilizzando anche un’altra applicazione in cloud, fornita da Google e denominata Google Prediction (Google Cloud Prediction API per Machine Learning). Di fatto, il kit di strumenti per Machine Learning di Google appartengono alla suite di prodotti Google in cloud, raggiungibili sul Google Cloud Platform. Per il Machine Learning Google fornisce la piattaforma di sviluppo della macchina di apprendimento in cloud, le API Cloud Jobs (ad oggi disponibili nella loro versione “Alpha”), le API Cloud Natural Language, le API Cloud Speech, le API Cloud Translation e le API Cloud Vision. Gli strumenti di sviluppo di una macchina di apprendimento con Google sono molto efficaci, il loro utilizzo viene determinato dalle necessità che hanno portato a programmare la macchina di apprendimento e alla tipologia di dati che devono essere analizzati e previsti. Google è molto attiva nel campo del Machine Learning per il suo motore di ricerca e per il miglioramento degli strumenti messi a disposizione dei suoi utenti. Un software in cloud computing per lo sviluppo di una macchina di apprendimento può migliorare l’esperienza di navigazione su internet ed offrire prodotti più sicuri ed intelligenti, ottimizzando i processi e rendendo più consapevole l’interazione uomo macchina.