Il machine learning, in italiano apprendimento automatico, è una sottobranca dell’informatica originariamente nata come approccio per il raggiungimento di un’intelligenza artificiale. Questo obiettivo è stato successivamente sostituito, in un’ottica più concreta, con l’affrontare e risolvere problemi di natura pratica.

“field of study that gives computers the ability to learn without being explicitly programmed” [Definizione di Machine Learning – Arthur Samuel, 1959]

L’idea alla base del machine learning è quella di replicare il processo di apprendimento mirato all’esecuzione di un compito, sia esso specifico o meno, tramite la realizzazione di algoritmi generici il cui scopo è quello di creare dei modelli per i dati trattati. Grazie a questi modelli è possibile superare le limitazioni derivanti da programmi o algoritmi espliciti (statici) e riuscire ad effettuare decisioni e predizioni basate invece sui dati che si hanno a disposizione.

L’evoluzione ed il miglioramento di un sistema di questo tipo quindi non sarà più legata ad ulteriori sviluppi di un determinato programma, bensì al continuo utilizzo di dati più aggiornati non appena questi vengono resi disponibili.

Il machine learning risulta molto legato ad altre discipline, come ad esempio il data mining con cui condivide diverse metodologie, tuttavia si differenzia da esse in un aspetto importante: lo scopo dell’apprendimento è quello di ottenere la migliore generalizzazione di un problema per riuscire ad effettuare delle predizioni quanto più accurate possibile sui dati che verranno presentati al sistema.

Come apprende un sistema?

Un processo di apprendimento, identificabile come un compito di machine learning, può essere classificato secondo tre categorie principali che si differenziano in base al feedback che il sistema riceve durante il procedimento:

  • Apprendimento supervisionato: vengono presentati i dati di input e i risultati desiderati. Lo scopo è di apprendere una regola generale che colleghi i dati in ingresso con quelli in uscita;
  • Apprendimento non supervisionato: vengono presentati i dati di input ma nessun risultato desiderato. Lo scopo è quello di scoprire schemi o modelli nascosti nei dati presentati;
  • Apprendimento con rinforzo: vengono raccolti i dati di input tramite l’interazione con un ambiente dinamico; ad ogni azione in questo ambiente corrisponde una ricompensa (anche negativa) e l’obiettivo è quello di svolgere un determinato compito massimizzando il valore della ricompensa.

Esistono inoltre diversi approcci pratici per l’applicazione di algoritmi di machine learning con cui è possibile identificare un metodo di apprendimento; di seguito vengono indicati alcuni degli approcci principali:

  • Albero delle decisioni: utilizza un albero delle decisioni, ovvero un grafo ad albero, come modello predittivo per indicare delle decisioni e le loro possibili conseguenze;
  • Reti neurali artificiali: tramite una rete neurale artificiale si possono utilizzare algoritmi di apprendimento ispirati alla struttura di una rete neurale biologica. Le strutture sono formate da gruppi di neuroni artificiali interconnessi tra loro, utilizzati per la computazione. Per reti neurali artificiali multi-strato si parla anche di apprendimento approfondito (deep learning), rivelatosi efficace per applicazioni come riconoscimento vocale e *computer vision*;
  • Algoritmi genetici: ricerca euristica che simula il processo di selezione naturale in cui una popolazione di individui (candidati come soluzione ad un problema di ottimizzazione) viene evoluta per il raggiungimento della soluzione migliore. Tramite un processo iterativo, le proprietà della popolazione vengono modificate e mutate; ad ogni iterazione (chiamata generazione) viene calcolata la loro idoneità alla soluzione sulla base della funzione obiettivo del problema. Gli individui più idonei vengono poi scelti per costituire la popolazione di partenza per l’iterazione successiva;
  • Analisi dei gruppi (clustering): processo di raggruppamento di oggetti in modo che quelli inseriti nello stesso gruppo, chiamato appunto *cluster*, siano più simili tra loro rispetto a quelli in altri gruppi. Questo risultato è ottenibile con molteplici algoritmi che differiscono tra loro nella nozione di cosa costituisce un *cluster* e come identificarli in maniera efficiente;
  • Reti di Bayes: modello probabilistico che rappresenta un insieme di variabili casuali e le loro dipendenze condizionali tramite un grafo orientato aciclico, identificati rispettivamente come nodi e archi. Ad ogni nodo è inoltre associata una funzione di probabilità che riceve in input l’insieme dei valori delle variabili dei nodi genitore e restituisce in output la probabilità della variabile rappresentata;
  • Programmazione logica induttiva: approccio orientato all’apprendimento di regole tramite l’uso della programmazione logica. Data una rappresentazione della conoscenza di base e di un insieme di esempi, un sistema di questo tipo è in grado di derivare un programma logico che confermi tutti gli esempi positivi e nessuno di quelli negativi.

Questi approcci possono risultare più o meno efficaci (o addirittura potenzialmente inefficaci) in base alla tipologia del problema che si vuole risolvere; è quindi necessario identificarne correttamente la tipologia e in seguito determinare il miglior approccio da applicare.

Come si è diffuso il machine learning?

Dal momento in cui è stato definito, la diffusione del machine learning è stata legata ai costi relativi alla potenza computazionale e all’acquisizione di dati. Negli ultimi anni tuttavia non solo i costi associati a questi due aspetti sono diminuiti in maniera importante, ma il conseguente aumento della loro disponibilità ha sollevato nuove sfide e potenziali problemi precedentemente non noti o considerati.

In questo ambiente in cui il machine learning è diventato disponibile ad un pubblico molto ampio si sono quindi create nuove e numerose opportunità negli ambiti più disparati, causandone una diffusione ampia e rapida.

Attualmente, le applicazioni del machine learning sono veramente numerose, molte delle quali sono integrate con la vita di tutti i giorni di un gran numero di persone in aspetti più o meno importanti. Alcuni casi diretti sono:

  • Sistemi di raccomandazioni: Amazon, Netflix e tanti altri suggeriscono contenuti di diverse tipologie in base alle preferenze dell’utente;
  • Riconoscimento vocale e del linguaggio naturale: la maggior parte degli smartphone rilasciati negli ultimi anni implementa dei sistemi di questo tipo anche tramite assistenti virtuali, ad esempio Siri di Apple e Google Now di Google;
  • Automobili a guida autonoma o semiautonoma: sebbene siano stati costruiti solamente dei prototipi non destinati al commercio di auto che non necessitino di una persona alla guida per riuscire a circolare nel traffico correttamente, sul mercato sono presenti auto che consentono la guida semiautonoma come strumento di assistenza al guidatore, come ad esempio vari modelli della casa automobilistica Tesla;
  • Scoperta di frodi riguardanti carte di credito: l’applicazione del machine learning a questo ambito permette di fornire un indicatore che esprime la probabilità che un determinato insieme di comportamenti sia fraudolento. Nonostante quindi non sia possibile assicurare statisticamente che una particolare transazione o utente siano fraudolenti, si rivela uno strumento efficace quando combinato con esperti del settore, aiutando con il grande volume di informazioni necessarie per la corretta identificazione di frodi e della loro evoluzione nel tempo.

Quando può essere utile il machine learning?

Un’elevata complessità del problema considerato indica generalmente un alto valore di business della soluzione; l’applicazione del machine learning a problemi di natura più semplice potrebbe quindi essere eccessiva e non avere un ritorno adeguato a causa della complessità implicita dell’approccio.

machinelearning

Esempio di classificazione di alcuni campi applicativi.

In generale, la scelta di utilizzare il machine learning per la risoluzione di un problema è appropriata quando il sistema desiderato presenta almeno una delle seguenti esigenze:

  • Il sistema deve adattarsi all’ambiente in cui opera e/o personalizzarsi in maniera automatica;
  • Il sistema deve migliorare le proprie prestazioni rispetto allo svolgimento di un particolare compito;
  • Il sistema deve scoprire modelli, regolarità e nuove informazioni a partire da dati empirici.

Questa scelta si rivela invece praticamente necessaria quando un approccio algoritmico tradizionale è inapplicabile, ad esempio in caso di complessità troppo elevata nel formulare una soluzione oppure l’impossibilità di formalizzare il problema stesso o la conoscenza necessaria per risolverlo.

In zero12 il machine learning ha trovato impiego nell’ambito dell’Internet of Things; tramite un approccio di apprendimento supervisionato ad esempio stiamo sviluppando dei sistemi predittivi per l’identificazione di guasti di macchine industriali.

Grazie a strumenti come AWS Machine Learning stiamo inoltre sperimentando un sistema in grado di suggerire ad una forza vendita su quali opportunità concentrare le proprie attività commerciali: grazie ai dati raccolti sui contatti infatti è possibile identificare le migliori occasioni per la chiusura di un contratto nel breve periodo.

Leave a Comment