Salta ai contenuti. | Salta alla navigazione

Strumenti personali

Scheda insegnamento

Obiettivi formativi

L'obiettivo del corso è quello di condurre gli studenti nello sviluppo e nell’applicazione di tecniche basate su reti neurali deep per la realizzazione di applicazioni di Intelligenza Artificiale.

Le principali conoscenze acquisite saranno:

- il linguaggio Python

- conoscenza delle principali architetture di reti neurali deep (reti convoluzionali, e ricorrenti).

Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) saranno:

- capacità di utilizzare Python come linguaggio per lo sviluppo di applicazioni basate su reti neural deep

- capacità di sviluppare un'applicazione che utilizza deep network per risolvere compiti tipici dei sistemi di Intelligenza Artificiale, quali riconoscimento e classificazione di immagini, analisi dei testi, etc

Prerequisiti

Buona conoscenza di linguaggi di programmazione imperativi e a oggetti.

 

Contenuti del corso

Si indicano nel seguito i contenuti del programma e le ore indicative dedicate:

 

Introduzione a Python

Introduzione Machine Learning

- Classificazione

- Regressione (Logistic regression)

Introduzione reti neurali

- Struttura, shallow/deep

- Introduzione Keras/Tensorflow e esercizi

- Back propagation

- Regularization

- Practical Methods

Convolutional NN

- Drop out

- Parameter Sharing

- Alexnet, VGG, GoogleNet

Recurrent/Recursive NN

Applicazioni pratiche e direzioni di ricerca

-  Computer Vision, Object Detection

-  Autoencoders

-  GAN

-  Transfer Learning

 

Metodi didattici

L'attività didattica è svolta con lezioni frontali ed esercitazioni pratiche di tipo laboratoriale.

Sarà anche concordato un progetto - da svolgere individualmente o in piccoli gruppi di 2-3 studenti al massimo - il cui svolgimento sarà poi oggetti di valutazione.

Modalità di verifica dell'apprendimento

La verifica dell'apprendimento avverrà tramite valutazione di:

  • una prova scritta (tre domande a risposta aperta) a fine corso;
  • valutazione di un progetto assegnato dal docente.

Il progetto puo' essere svolto individualmente o in gruppi di 2 studenti al massimo. L'assegnazione del progetto da parte del docente avverrà sotto richiesta dello studente (o della coppia di studenti). Tale richiesta potrà essere fatta in ogni momento a partire da quando il docente avrà ultimato le parti importanti del corso (indicativamente due settimane prima della fine del corso) e sarà indipendente dall'iscrizione alla prova scritta.

L’esame è costituito quindi da una prova scritta (tre domande a risposta aperta) e dall’esposizione - anche con strumenti di presentazione - del progetto svolto e dei risultati ottenuti.

La parte scrittà sarà fatta in date fissate dal docente (indicativamente tre per sessione) a cui lo studente può iscriversi online. La presentazione del progetto sarà fatta dal singolo studente (in caso di attività individuale) o dal gruppo (massimo 2) di studenti previo appuntamento da concordare con il docente. In questo ultimo caso, ogni studente del gruppo dovrà avere la responsabilità di una parte del progetto chiaramente identificata, dimostrare di avere compreso l'architettura applicativa e le funzioni di tutti i principali componenti software, oltre alla presentazione dettagliata dei componenti realizzati. L'iscrizione alla prova scritta è indipendente dall'assegnazione del progetto (che potrà essere richiesto sia prima sia dopo la data della prova) ma sarà propedeutica alla valutazione finale del progetto, che dovrà essere presentato dopo aver sostenuto la prova scritta.

 

Sitografia:

●     https://jakevdp.github.io/PythonDataScienceHandbook/

●     https://www.tensorflow.org

●     https://keras.io/