Che cos’è il machine learning?

Il machine learning è un campo di ricerca multidisciplinare che ha come fine quello di dare ai computer l’abilità di apprendere come realizzare un compito, senza essere esplicitamente programmati a farlo.

oppure, citando una definizione più formale del prof. Tom Mitchell della Carnegie Mellon University,

Tom_Mitchell

“Si dice che un programma impara da una certa esperienza E rispetto a una classe di compiti T ottenendo una performance P, se la sua perfomance nel realizzare i compiti T, misurata dalla performance P, migliora con l’esperienza E.”

che, detto in parole più semplici, vuol dire che un programma apprende dall’esperienza a realizzare un compito se le sue prestazioni migliorano con il tempo in cui ripete quel compito.

In pratica di cosa si tratta?

Per cercare di capire meglio di cosa si tratta, prendiamo ad esempio un esperimento realizzato da Google nel 2012, nel quale, utilizzando 10 milioni di immagini scaricate da Internet (della dimensione di 200 x 200 pixel), per tre giorni è stata istruita una rete neurale (utilizzando un cluster di 1.000 macchine interconnesse, per un totale di 16.000 core).

Al termine del processo di apprendimento, la rete è stata in grado di riconoscere la presenza di volti umani e gatti all’interno di video di YouTube. Il software, quindi,  ha fatto esperienza utilizzando i 10 milioni di immagini (E) ed è stato capace di completare con una certa probabilità di successo (P) il compito (T) di riconoscere pattern ricorrenti (i lineamenti dei volti umani e dei gatti) senza avere alcuna indicazione su cosa avesse dovuto cercare nei frame dei video di YouTube.

unsupervised_icml2012_cat_and_face

Per coloro che fossero interessati a tutti i dettagli dell’esperimento di apprendimento, a questo link è disponibile tutto il materiale per approfondire.

In questo esperimento è stata utilizzata una tecnica di apprendimento non supervisionato poiché la rete non ha ricevuto informazioni specifiche in merito a cosa deve cercare. Tra gli algoritmi di machine learning ne abbiamo una seconda categoria in cui invece si danno al software esempi completi da usare come indicazione di cosa rintracciare nei dati, si tratta del cosiddetto apprendimento supervisionato.

Un diluvio di dati…..

Spesso si parla di apprendimento automatico, perché? Il machine learning nasce come sottoinsieme dell’Intelligenza Artificiale, perché era diventata più forte la necessità di avere software capaci di apprendere a realizzare un nuovo compito automaticamente.

Ci sono dei compiti in cui l’approccio mediante le tecniche classiche di programmazione non è sufficiente a raggiungere il risultato, poiché non si è in grado di scrivere un programma che risolva direttamente un certo problema.

Questo avviene, ad esempio, quando bisogna usare una grande quantità di dati proveniente da fonti diverse, quando lo scenario da analizzare muta velocemente oppure quando non esiste esperienza umana pregressa per un certo compito o ancora quando l‘expertise necessario per un certo compito è difficile da esplicitare come avviene nel caso del riconoscimento del linguaggio umano o dei volti.

Ad esempio,il mondo della ricerca è ormai investito da un data deluge, ovvero un’enorme quantità di dati prodotta grazie all’evoluzione delle tecnologie con cui analizzare fenomeni, che sta creando nuove possibilità per la scienza. Oltre alle palesi problematiche connesse alla conservazione di questi dati, è di fondamentale importanza avere a disposizione gli strumenti giusti per eseguire analisi, estrarre informazioni utili e scoprire connessioni tra fenomeni al di fuori della nostra portata.

Complessità in aumento

I software di machine learning sono diventati sempre più complessi nella definizione degli algoritmi per risolvere i compiti per cui erano stati creati, al punto che i ricercatori, in alcune situazioni, non riescono più a capire esattamente come abbia fatto il sistema ad apprendere.

Un caso interessante lo ha esposto il ricercatore di Google, Quoc V. Le,  alla Conferenza sul Machine Learning a San Francisco nel novembre del 2013: alcuni software hanno imparato a riconoscere la differenza tra gli oggetti che sono stati mostrati loro così bene che gli esseri umani non riescono a capire facilmente come abbiano fatto e che parametri usano per distinguere un oggetto da un altro.quoc5

Si può parlare di apprendimento automatico proprio perchè il software “sembra pensare” indipendentemente dai suoi programmatori e i suoi processi cognitivi sono difficili da analizzare:  il software si è evoluto nel tempo rispetto a quando è stato programmato diventanto talmente complesso che gli esperti umani non riescono più a capirlo.

Tensorflow: il machine learning di Google è diventato open source

Il 9 novembre del 2015, il sistema più avanzato di machine learning, Tensorflow, creato e usato da Google nelle sue maggiori applicazioni, è diventato liberamente accessibile.

tensorflow_google_machine_learning_open_source-806x393Si tratta di una novità importante perché :

  • Google ha il più avanzato sistema di machine learning attualmente esistente, qualcuno sostiene che Google è avanti 6/7 anni rispetto alla concorrenza. Quante volte siete rimasti positivamente sorpresi da come un’applicazione di Google ha riconosciuto quello che le stavate dicendo, ha etichettato correttamente le vostre foto, ha trovato una pagina web che ha illuminato la vostra ricerca?
  • Adesso chiunque può usare il sistema di machine learning di Google, per la creazione di nuovi prodotti e applicazioni.

Che cos’è Tensorflow?

Tensorflow è una libreria software che contiene algoritmi e strumenti, che ha consentito a Google di creare le più grande rete neurale esistente e di addestrare migliaia di core dei loro datacenter. Ora è utilizzabile da chiunque per poter implementare il machine learning nei propri sistemi in maniera molto flessibile. Le librerie sono utilizzabili con i linguaggi Python e C++, e sono altamente scalabili (da uno smartphone a migliaia di core di un datacenter).

Perché Google ha rilasciato in open source il suo miglior prodotto?

Google vuole creare uno standard per lo scambio di idee sul machine learning in modo che sia più facile introdurre il machine learning nei prodotti/servizi che lo richiedono.

Come ci dice Mark Bergen, analogamente a quanto avvenuto per Android, “il fatto che molte più persone cominceranno a usare il sistema di Google per fare progetti di machine learning, darà a Google più controllo in questo campo in crescita”.

Inoltre, in questo modo Google potrà beneficiare del miglioramento del codice da parte della comunità scientifica anche per i suoi prodotti.

Il vero valore è nei dati

Nell’ambito del machine learning, il vero valore è nei dati, non nel software o negli algoritmi.

Le reti neurali per ottenere modelli di valore hanno bisogno di grandi quantità di dati e Google, che ha a disposizione i dati delle nostre ricerche e quelli di tante altre applicazioni, ha reso open source un importante pezzo del suo motore di AI, ma non rilascerà mai i suoi dati.

Anzi dall’apertura di Tensorflow si aspetta che il suo software sia testato su altri datset, magari proprietari, ed evolva.