Con questo post voglio raccontarvi qualcosa sull' Apprendimento Automatico rimandando se di vostro interesse ad un prossimo post una trattazione delle Support Vector Machines (SVM). No, non pensate che siano cose totalmente astratte in quanto sul loro utilizzo si basano programmi che utilizzate quotidianamente smile_regular. L' Apprendimento Automatico nasce come una sottoarea dell' Intelligenza artificiale; nel corso degli ultimi anni ha comunque raggiunto una completa autonomia nei confronti di quest'ultima. L'idea che sta alla base del Machine Learning è che i pc non vengano più programmati a mano bensì abbiano la capacità di programmarsi da soli. La programmazione tradizionale in alcuni contesti presenta infatti delle limitazioni:

  • Elevata complessità ( ad esempio nel riconoscimento di facce: l'uomo lo fa ma non essendo però in grado di definirne il processo decisionale)
  • Mancanza di adeguata conoscenza (ad esempio prevedere l'attività biologica di una molecola)
  • Applicazioni self-custom( ad esempio un news reader che apprenda i propri gusti)

L'approccio adottato dall'Apprendimento Automatico è di tipo Data-Driven: consideriamo ad esempio la spam filtering: dato una mail si deve decidere se questa sia o meno un messaggio legittimo. Considerando un approccio tradizionale potremmo scrivere un programma che abbia del codice tipo:

if ("Viagra" || "Make Monery" || "Hot Video")

in subject  then spam
Siamo sicuri di arrivare alla definizione di un programma davvero efficiente?

Questo primo approccio basato su delle regole e per questo presenta delle controindicazioni infatti:

  • Come definire le regole?
  • Diversi utenti possono avere diverse esigenze ( per alcuni "Hot Video" non è assolutamente spam smile_teeth )

Conviene quindi ricorrere ad un approccio data-driven cosi definito:

  1. Raccogliere un insieme di esempi(Training DataSet) di messaggi che l'utente ha etichettato o meno come spam
  2.  Addestrare una macchina sui messaggi etichettati (fase di Training)
  3. Testare la macchina addestrata su nuovi messaggi per ottenere una predizione (inferenza induttiva: definire una conclusione teoria generale partendo da esempi specifici)

Il processo di apprendimento viene visto come un processo di ricerca; si parte da uno spazio delle ipotesi in cui si esegue una ricerca tesa a trovare l'ipotesi che meglio classifica i dati disponibili; nell'esempio che vi ho appena esposto è stato utilizzato un modello di apprendimento con Supervisione(Supervised Learning): è infatti possibile distinguere all'interno del Dataset un insieme di dati di input e uno di output.

Questo schema generale mostra come un generatore di dati produca i dati in ingresso; il supervisore associa ad ogni input il corrispondente output. L'algoritmo di apprendimento fornisce la propria uscita imitando il comportamento del supervisore.

Per oggi basta così, se vi interessano queste tematiche lasciate qualche feedback...

Technorati tags: ,