Machine Learning (o Apprendimento Automatico) rappresenta un insieme di metodi sviluppati a partire dagli ultimi decenni del XX secolo che porta i computer ad apprendere e agire come fanno gli umani, migliorare in modo autonomo il loro apprendimento nel tempo, “alimentandoli” con dati e informazioni sotto forma di osservazioni e interazioni reali.
Varie comunità scientifiche hanno utilizzato nel tempo diversi nomi quali statistica computazionale, riconoscimento di pattern, reti neurali artificiali, filtraggio adattivo, teoria dei sistemi dinamici, elaborazione delle immagini, data mining, algoritmi adattivi, ecc. Tutti sinonimi per indicare l’applicazione di metodi statistici al fine di migliorare progressivamente la performance di un algoritmo nell’identificare pattern nei dati.
Definizioni di Machine Learning
Come ogni concetto, l’apprendimento automatico non ha una definizione ben precisa. In rete ovviamente si trovano decine di definizioni più o meno autorevoli, tra cui troviamo:
- “L’apprendimento automatico è la pratica di analizzare dati, imparare da essi e quindi fare una determinazione o una previsione su qualcosa nel mondo.” – Nvidia
- “L’apprendimento automatico è la scienza che permette ai computer di agire senza essere programmati esplicitamente.” – Stanford
- “L’apprendimento automatico si basa su algoritmi che possono apprendere dai dati senza basarsi su una programmazione basata su regole.” – McKinsey & Co.
- “Gli algoritmi di apprendimento automatico possono capire come eseguire compiti importanti generalizzando da esempi.” – Università di Washington
- “Il campo del Machine Learning cerca di rispondere alla domanda: Come possiamo costruire sistemi informatici che migliorano automaticamente con l’esperienza e quali sono le leggi fondamentali che governano tutti i processi di apprendimento? “- Carnegie Mellon University
Concetti base di Machine Learning
Esistono molti tipi diversi di algoritmi di apprendimento automatico e ogni anno ne vengono pubblicati a centinaia. In genere sono classificati in base allo stile di apprendimento (apprendimento supervisionato, apprendimento senza supervisione, apprendimento semi-supervisionato) o per somiglianza nella forma o nella funzione (ad es. Classificazione, regressione, albero decisionale, clustering, deep learning, ecc.).
Quale usare? La chiave per non perdersi in questo enorme universo è quello di valutare l’algoritmo sulla base di tre componenti che contraddistinguono ciascuno di questi algoritmi. Questi componenti sono:
- Rappresentazione: un insieme di classificatori oppure il linguaggio che un computer può comprendere
- Valutazione: funzione obiettivo o di punteggio usata per distinguere i classificatori buoni da quelli cattivi
- Ottimizzazione: il metodo di ricerca, come ad esempio, il classificatore con il punteggio più alto. Esistono metodi di ottimizzazione standardizzati e personalizzati
L’obiettivo fondamentale di un algoritmo di machine learning è quello di generalizzare oltre gli esempi di training, cioè interpretare con successo i dati che non ha mai “visto” prima.
Quando le persone chiedono “Che cos’è l’apprendimento automatico?”, spesso vogliono vedere cos’è e cosa fa. Di seguito sono riportate alcune rappresentazioni visive dei modelli di machine learning:
- Modello dell’albero decisionale
- Modello di miscela gaussiana
- Rete neurale dropout
- Unione di crominanza e luminanza utilizzando le reti neurali convoluzionali
Come imparano le macchine?
Esistono diversi approcci, dall’utilizzo di semplici alberi decisionali, passando per il clustering alle reti neurali artificiali (l’ultima delle quali ha lasciato il posto al deep learning), a seconda del compito che si sta tentando di realizzare e del tipo e quantità di dati a disposizione.
Mentre l’enfasi viene posta spesso sulla scelta dell’algoritmo migliore, i ricercatori hanno scoperto che alcune delle domande più interessanti nascono non tanto dagli algoritmi di apprendimento automatico che lavorano alla pari ma dai dati utilizzati per l’addestramento o quando si lavora in nuovi domini.
Le ricerche fatte quando si lavora su applicazioni reali spesso guidano i progressi sul campo e le ragioni sono duplici:
- tendono a scoprire i confini e i limiti dei metodi esistenti
- ricercatori e sviluppatori che lavorano con esperti di dominio possono per migliorare le prestazioni del sistema.
Un aspetto importante, in termini di utilizzo a livello aziendale, è che l’apprendimento automatico non è solo automazione. Le macchine che “apprendono” sono utili agli esseri umani perché, attraverso la loro potenza di calcolo, sono in grado di evidenziare o trovare più rapidamente strutture (pattern) in grandi dati impossibili da analizzare dagli esseri umani. L’apprendimento automatico è uno strumento che può essere utilizzato per migliorare le capacità degli esseri umani di risolvere i problemi e fare inferenze su una vasta gamma di problemi, dalla diagnostica delle malattie fino a trovare soluzioni per il cambiamento climatico globale.
Sfide e limiti
Di contro, avere accesso a un set di dati abbastanza grande ha rappresentato in alcuni casi anche il principale problema. I problemi principali (e da sempre storicamente riconosciuti) dell’apprendimento automatico sono:
- sovradimensionamento: in cui il modello mostra “pregiudizi” nei confronti dei dati di addestramento e non generalizza a nuovi dati. Ad esempio, la macchina apprende cose casuali quando viene addestrato su nuovi dati
- dimensionalità: gli algoritmi con più funzioni operano in dimensioni superiori / multiple, rendendo più difficile la comprensione dei dati
Uno degli errori più comuni nel machine learning è quello di testare con successo i dati di apprendimento e avere l’illusione di avere successo; Domingo (e altri) sottolineano l’importanza di tenere separati alcuni set di dati durante i test e di utilizzare solo i dati riservati per testare un modello scelto, seguito dall’apprendimento dell’apprendimento sull’intero set di dati.
Spesso, quando un algoritmo di apprendimento non funziona, il percorso più rapido per raggiungere il successo è quello di alimentare la macchina con più dati, la cui disponibilità è ormai nota come principale fattore di progresso negli algoritmi deep learning di ultima generazione; tuttavia, questo può portare a problemi di scalabilità, nel quale vero è che abbiamo più dati ma il tempo per imparare da questi dati rimane comunque un problema.
Deep learning e sviluppi moderni nelle reti neurali
Il deep learning prevede lo studio e la progettazione di algoritmi per l’apprendimento di una buona rappresentazione dei dati a più livelli di astrazione. Con l’avvento di DeepMind e Facebook (per citarne alcuni) il deep learning viene considerato “la prossima frontiera” del machine learning.
La Conferenza Internazionale sull’Apprendimento Automatico (ICML) è considerata come una delle più importanti al mondo. Quest’anno si è svolta a giugno a New York City e ha riunito ricercatori provenienti da tutto il mondo per affrontare le attuali sfide nel deep learning:
- Apprendimento senza supervisione in piccoli set di dati
- Apprendimento basato sulla simulazione e trasferibilità al mondo reale
I sistemi di deep learning hanno fatto grandi progressi negli ultimi dieci anni in settori come il rilevamento e il riconoscimento degli oggetti (object detection and recognition), il text-to-speech, il recupero delle informazioni e altro ancora. La ricerca è ora focalizzata sullo sviluppo di machine learning efficienti in termini di dati, ovvero sistemi di deep learning in grado di apprendere in modo più efficiente, con le stesse prestazioni ma in meno tempo e con meno dati, in settori all’avanguardia come assistenza sanitaria personalizzata, apprendimento robotico, analisi del “sentimento” (Sentiment analysis ma anche opinion mining) e altro ancora…