Apprendimento Automatico Fondamenti
| Apprendimento Automatico: Fondamenti | |
|---|---|
| Sigla Corso: | AA1 |
| Nome Docente/i: | Alessio Micheli |
| Corso di laurea: | Magistrale in Informatica |
| Anno di corso: | 2 |
| Home page del corso: | AA1 |
Indice |
Programma
Prerequisiti
Analisi matematica: funzioni, calcolo differenziale; algoritmica, elementi di probabilità e statistica.
Obiettivi didattici
L'obiettivo del corso è di introdurre i principi e metodi dell'Apprendimento Automatico (da insiemi di dati) con particolare attenzione alle Reti Neurali e modelli affini, oggi alla base della costruzione di sistemi adattivi in molti domini applicativi innovativi in informatica e in settori interdisciplinari.
I concetti sono introdotti progressivamente a partire dagli approcci più semplici di Apprendimento Automatico fino ai modelli allo stato dell'arte, sia neurali che ad essi complementari, nell'ambito dell'inquadramento concettuale generale e moderno del Machine Learning (apprendimento di funzioni da esempi).
Per avere un'idea più precisa di cosa sia il Machine Learning è possibile consultare, sul sito del docente, una raccolta di documenti di carattere divulgativo o storico alla sezione "What is Machine Learning?".
Programma completo
Il seguente programma riprende quello del corso di Reti Neurali 1 (A.A. 2009/2010).
- Introduzione al Machine Learning.
- Concept Learning.
- Modelli lineari.
- K-Nearest Neighbor (K-nn).
- Perceptron.
- Reti Neurali multistrato feedforward.
- Cascade Correlation.
- Valutazione e selzione del modello.
- Statistical Learning Theory.
- Support Vector Machines (SVM) e modelli a Kernel.
- Apprendimento Bayesiano.
- Unsupervised Learning e Self Organizing Maps (SOM).
- Bias/Variance Analysis.
Materie affini
Apprendimento Automatico Reti Neurali e Metodi Avanzati (AA2)
Bibliografia
- Machine Learning. Tom Mitchell. McGraw Hill, 1997.
- Neural Networks: a Comprehensive Foundation. Simon Haykin. Prentice Hall.
- Lucidi forniti a lezione.
Risorse bibliografiche aggiuntive
- Pattern Recognition and Machine Learning. C. M. Bishop. Springer.
- The Elements of Statistical Learning. T. Hastie, R. Tibshirani, J. Friedman. Springer.
- The Cascade-Correlation Learning Architecture (GzipPS). S. Fahlman, C. Lebiere.
Modalità di esame
Progetto (con relazione) più orale.
Il progetto riguarda prevalentemente l'implementazione e l'utilizzo di alcuni degli strumenti visti a lezione (eg. Reti Neurali Feedforward), applicandoli alla risoluzione di un problema del mondo reale. I dataset possibili vengono indicati dal docente.
Sono previste anche tipologie di progetto più orientate all'applicazione che allo sviluppo (eg. utilizzo di librerie già fatte), secondo modalità da concordare con il docente.
Materiale aggiuntivo
- MONK's Problems: 3 "dataset giocattolo" utili per testare i propri algoritmi di apprendimento e fare qualche esperimento.
- Torch: un ambiente Matlab-like per utilizzare algoritmi di Machine Learning allo stato dell'arte.
Commenti
Per chi è l'esame
Il corso rappresenta un introduzione al Machine Learning e quindi è indirizzato a chiunque voglia iniziare ad addentrarsi nel settore. Non è tuttavia adatto a chi cerca un esame poco impegnativo e da fare in poco tempo: il programma è vasto, il materiale da cui studiare è eterogeneo, il progetto non è banale, l'orale non è solo una formalità.
Approccio
Pur essendo un corso di introduzione al Machine Learning, i temi affrontati non sono elementari e non è banale l'approccio didattico adottato. Non si tratta, dunque, di un corso che si riassume in: leggere una dispensa e dare l'esame.
Il corso, pur proponendo una propria visione organica del Machine Learning, fa riferimento a materiale didattico eterogeneo (eg. non c'è IL libro) che comprende sia libri che articoli scientifici. I lucidi forniti sono uno strumento utile ad orientarsi, ma non coprono certo tutto ciò che c'è da sapere, mentre i testi di riferimento, nel loro insieme, offrono una trattazione sin troppo ampia in alcuni punti o eccessivamente "biased" in altri. E' quindi assolutamente consigliabile frequentare le lezioni per poter efficacemente svolgere il lavoro di integrazione delle fonti e seguire l'approccio critico proposto.
Data la natura avanzata di alcuni dei temi trattati, il programma è molto "dinamico", e può essere in parte modificato per permettere di approfondire alcuni paradigmi o modelli specifici. In questo grande attenzione viene data alle preferenze degli studenti: osservazioni, commenti e richieste (purché attinenti) sono ben accette nel corso delle lezioni e, generalmente, si preferisce soddisfarle piuttosto che lasciarle cadere in nome di una "tabella di marcia" troppo rigida.
Le lezioni sono dunque stimolanti ed istruttive, ma l'approccio è indubbiamente diverso rispetto a molti dei corsi a cui siamo abituati. La necessità di districarsi fra i testi consigliati, la mancanza di un vero e proprio testo di riferimento, le lezioni "interattive", sono tutte caratteristiche positive, ma che in alcuni casi possono richiedere uno sforzo di adattamento che è bene sapere di dover affrontare.
Dove e cosa studiare
Se si vuole avere un'idea chiara di cosa studiare la cosa migliore da fare è andare a lezione.
I lucidi delle lezioni non sono, per scelta del professore, disponibili online e vengono forniti durante il corso. Nelle copisterie si trovano i lucidi degli anni passati (per il corso di Reti Neurali 1), ma prima di affidarsi ciecamente a questi sarebbe meglio contattare il professore, in modo da verificare che ci sia tutto e che tutto sia consistente con il programma attuale.
Pur avendo i lucidi è comunque assolutamente necessario procurarsi i libri e gli articoli citati nella bibliografia delle singole lezioni, poiché i lucidi non riportano tutto quello che viene fatto a lezione. Alcuni algoritmi, inoltre, vengono sviluppati alla lavagna (eg. Back Propagation), senza che la derivazione sia riportata sui lucidi. In questi casi le possibili soluzioni sono: studiare da un libro o, al solito, andare a lezione.
Progetto
Il progetto verte generalmente su un problema del mondo reale, il che lo rende più stimolante del solito "problema giocattolo" a cui siamo abituati, ed offre la possibilità di confrontare i risultati ottenuti con quanto si trova in letteratura.
Non vengono imposti particolari vincoli tecnologici riguardo allo sviluppo del codice, come il linguaggio da usare o la piattaforma, anche se alcuni vincoli sono impliciti e determinati dal problema trattato (eg. se il dataset è ampio e la vostra implementazione è in Python potreste arrivare alla pensione prima che il learning sia finito).
Il progetto, ovviamente, non mira al raggiungimento di un risultato sorprendente in temini di qualità dell'apprendimento, ma guarda alla corretta applicazione e contestualizzazione delle tecniche viste durante il corso. Per questo è molto importante la relazione, che deve essere redatta in maniera rigorosa e con attenzione.
La relazione è inoltre una buona occasione per fare un po' di pratica per la tesi. Si tratta infatti della descrizione critica di risultati sperimentali, con riferimenti bibliografici precisi: per molti aspetti è quindi più vicina alla tesi che al "descrivere le principali scelte implementative", con cui si risolvono molti dei nostri progetti.
Info
Per ogni tipo di richiesta o informazione, ma anche solo se siete intenzionati a dare l'esame o seguire qualche lezione, contattate il prof. Micheli: lui l'apprezzerà di certo.
Altro
Il corso rappresenta un primo passo nell'ambito del Machine Learning, settore che nel nostro dipartimento ha un gruppo di ricerca giovane, proficuo ed attivo. Per saperne di più: Computational Intelligence & Machine Learning Group.