Cos’è il Machine Learning e quali sono le sue principali branchie

Il Machine Learning rappresenta oggi uno dei metodi più utilizzati, nonché più potenti, per permettere a una macchina di imparare. Imparare è da intendere nella sua accezione più generale: non c’è un ambito specifico in cui una macchina possa imparare a fare/capire/distinguere/prevedere/etc. qualcosa, l’importante è che questo apprendimento avvenga in maniera autonoma—una volta forniti i dati di allenamento agli algoritmi.

Distinguiamo ora delle diverse tipologie di Machine Learning, che variano in base ai diversi modi di gestire i dati che gli vengono forniti per l’allenamento, nonché la natura per la natura stessa dei dati che gli devono essere forniti. Distinguiamo dunque le seguenti macrocategorie del Machine Learning:

  • Supervised learning
  • Unsupervised learning
  • Reinforcement learning

Supervised learning

Il Machine Learning supervisionato (supervised) è un tipo di apprendimento che allena gli algoritmi tramite l’esposizione a istanze già risolte di un problema. Nello specifico si tratta di mostrare all’algoritmo delle coppie ({\bf x},\,{\bf y}) del tipo

({\bf x},\,{\bf y}):x_i\in{\bf x},\,y_i\in{\bf y}\,\forall\,i

Dove i diversi valori di x_i sono delle istanze del problema, mentre i valori y_i corrispondenti sono la relativa soluzione del problema, e in quanto tali vengono chiamati ground truths.

L’obiettivo di un algoritmo supervised è dunque quello di cercare di capire quale sia la regola che unisce un certo x_i col corrispettivo y_i. Tale regola deve essere espressa in termini di una funzione che approssima correttamente le relazioni tra i dati. Chiameremo una funzione del genere h—da hypothesis (ipotesi)—e vorremmo che tramite tale funzione la seguente uguaglianza possa essere verificata

h(x_i)=y_i\,\forall\,i

Ovvero che attraverso la funzione h, dato un qualunque valore di input x_i, restituisca esattamente il corrispettivo valore di output y_i per ogni possibile istanza del problema.

Naturalmente, una tale funzione, in generale, non esiste (specie per i problemi più complessi), dunque avremo bisogno di studiare la bontà di h, cercando di capire come si generalizza su dati mai visti, ovvero “quanto correttamente” riesce a restituire l’output esatto nel caso di input mai visti all’interno dei dataset di allenamento.

Le performance di tale algoritmo avranno dunque bisogno di essere misurate rispetto a un insieme di test (test set) che contiene al suo interno anche le soluzioni dei problemi in esso posti, permettendo così di misurare le performance su dati mai visti, dei quali conosciamo però il risultato corretto, quindi possiamo utilizzarli per misurare l’accuratezza della funzione h che l’algoritmo utilizza.

In particolare, la funzione h potrà però presentare diverse tipologie di errori nell’approssimare i dati:

  • Bias (pregiudizio): tendenza a imparare le informazioni sbagliate a causa di semplificazioni della realtà. Si parla in questo caso di un algoritmo che presenta underfitting, ovvero la tendenza ad essere meno (under) adatto (fit) a descrivere la realtà
  • Varianza: la varianza rappresenta il problema opposto al bias, ovvero la tendenza di un algoritmo a imparare la realtà troppo da vicino, trovando una funzione che mappa esattamente tutti gli input proposti negli output desiderati. Una tale funzione però, nonostante descriva correttamente l’insieme di dati utilizzato durante l’allenamento, avrà poi difficoltà ad essere generalizzata su dati mai visti. Si parla dunque in questo caso di overfitting, ovvero la tendenza ad essere eccessivamente (over) adatti (fit) a descrivere una realtà specifica, senza essere in grado di descrivere una realtà generale

Nota: spesso è utile cercare di trovare una funzione semplice per descrivere i dati, tale funzione però non deve essere troppo semplice, in quanto soffrirebbe di un bias alto, ma allo stesso tempo non deve essere troppo complessa, altrimenti soffrirebbe di varianza alta. La difficoltà sta proprio nel cercare di trovare un giusto bilanciamento tra bias e varianza.

Alcuni degli ambiti in cui viene usato l’apprendimento supervisionato sono quelli di

  • Classificazione di immagini
  • Elaborazione di linguaggio naturale (natural language)
  • Riconoscimento vocale

Delle tecniche che possiamo utilizzare per trovare una funzione h per un problema decisionale sono, ad esempio, le seguenti:

Unsupervised learning

Presenta tecniche simili a quelle viste per il Supervised Learning però invece di fornire delle coppie ({\bf x},\,{\bf y}) all’algoritmo gli vengono soltanto forniti dei dati e un obiettivo, esso dovrà poi trovare il modo migliore per raggiungere tale obiettivo, senza utilizzare feedback specifico da parte del programmatore.

Reinforcement learning

Si veda la relativa pagina sul Reinforcement Learning.

In poche parole

‎‏‏‎ ‎‏‏‎✅ Il Machine Learning è un metodo di apprendimento automatico che permette a una macchina di imparare in maniera autonoma. Esistono diverse tipologie di Machine Learning, tra cui il Supervised Learning, che allena gli algoritmi tramite l’esposizione a istanze già risolte di un problema, l’Unsupervised Learning, che fornisce solo dati e un obiettivo, e il Reinforcement Learning.

‎‏‏‎ ‎‏‏‎✅ Tali tecniche presentano diverse tipologie di errori, tra cui il Bias e la Varianza, che possono portare, rispettivamente, a underfitting o overfitting. Alcuni ambiti in cui viene utilizzato il Supervised Learning sono la classificazione di immagini, l’elaborazione di linguaggio naturale e il riconoscimento vocale.

Se hai trovato errori o informazioni mancanti scrivi a:
giacomo.dandria@esercizistem.com

Se hai trovato errori o informazioni mancanti scrivi a:
giacomo.dandria@esercizistem.com

Questa pagina è stata utile?
No
Torna in alto