Circuiti e Algoritmi per il Machine Learning (Laurea Magistrale in Ingegneria Elettronica, Ingegneria delle Comunicazioni)


AVVISO IMPORTANTISSIMO! Il corso nasce come nuova attivazione dall'evoluzione di programmi e di denominazioni, con l'esigenza di essere al passo coi tempi e con le attività didattiche e di ricerca più avanzate in funzione del miglior servizio possibile verso gli studenti, tenuto conto del panorama scientifico e industriale attuale e futuro. Di seguito le indicazioni per gli studenti nei vari anni:
  • "Circuiti e Algoritmi per il Machine Learning", denominazione a regime e programma definitivamente rinnovato, andrà in aula in lingua italiana per la prima volta a settembre 2020 (1° semestre) per gli studenti immatricolati nel 2019/2020 e iscritti nel 2020/2021 al 2° anno delle Lauree Magistrali in Ingegneria Elettronica e Ingegneria delle Comunicazioni. 
  • "Circuiti e Algoritmi per il Calcolo Distribuito", con programma già aggiornato verso le tematiche del machine learning, va in aula in lingua italiana a settembre 2019 (1° semestre) per gli studenti immatricolati nel 2018/2019 e iscritti nel 2019/2020 al 2° anno delle Lauree Magistrali in Ingegneria Elettronica e Ingegneria delle Comunicazioni. 
  • "Distributed Computing for Circuits and Systems" è andato in aula in lingua italiana (ma col nome in inglese) a settembre 2018 (1° semestre) per gli studenti immatricolati nel 2017/2018 e iscritti nel 2018/2019 al 2° anno della Laurea Magistrale in Ingegneria Elettronica. 
Il corso, nelle sue varie declinazioni, è comunque aperto anche ad altri studenti della Facoltà e dell'Ateneo che sono interessati alle tematiche trattate, in quanto NON esistono propedeuticità sostanziali.

  • Obiettivi del modulo e capacità acquisite dallo studente. Attraverso l’introduzione delle nozioni di base riguardanti le problematiche teoriche, tecniche e pratiche di progettazione e realizzazione di circuiti e algoritmi nei sistemi di apprendimento automatico e intelligenza artificiale basati sul learning statistico e data-driven, in architetture di calcolo parallele, distribuite e quantistiche (GPU, TPU, multicore, cloud, etc.), lo studente rafforzerà le conoscenze acquisite nel primo ciclo di studi. Saranno in tal senso approfondite le applicazioni nell'ambito dell’ICT e dell’Ingegneria dell’Informazione per la soluzione di problemi supervisionati e non supervisionati in casi di studio reali, in particolare riguardanti ottimizzazione, approssimazione, regressione, interpolazione, predizione, filtraggio, riconoscimento e classificazione, al fine di elaborare e applicare idee originali anche in un contesto di ricerca. Le capacità acquisite consistono nella soluzione delle problematiche relative a progettazione, realizzazione e test di architetture di calcolo e modelli computazionali, con particolare riferimento allo sviluppo in linguaggio Matlab/Python/Julia/VHDL, per la realizzazione di sistemi di machine learning e intelligenza artificiale in ambienti paralleli, distribuiti e quantistici in un contesto più ampio rispetto al settore di studio della teoria dei circuiti e dell’ingegneria elettronica.
  • Prerequisiti. Conoscenze di base riguardanti la teoria dei circuiti, l'elaborazione dei segnali e l'elettronica digitale.
  • Risultati di apprendimento attesi.  Lo scenario delle tecnologie ICT sta rapidamente evolvendo verso sistemi in cui i dispositivi tecnologici che implementano algoritmi di machine learning e intelligenza artificiale costituiscono parte integrante dell’ambiente in cui sono immersi, in particolare nelle reti complesse di sensori e attuatori quali smart grid, IoT, distribuzione energetica e delle merci, reti biologiche e sociologiche, etc. A valle di tale insegnamento, lo studente sarà in grado di comunicare le conoscenze acquisite a interlocutori specialisti e non specialisti nel mondo della ricerca e del lavoro in cui svilupperà le sue successive attività scientifiche e/o professionali. Attraverso una sistematica attività di laboratorio, nel corso della quale saranno considerate le metodologie relative alla progettazione e alla realizzazione di architetture di calcolo parallele e di sistemi di agenti distribuiti per il machine learning e l’intelligenza artificiale, lo studente integrerà le conoscenze acquisite per gestire la complessità dei meccanismi di apprendimento induttivo a partire da informazioni limitate dalla contingenza organizzativa dell’insegnamento.
  • Programma (a consuntivo farà ovviamente riferimento TUTTO E SOLO quanto presentato, spiegato e discusso durante le lezioni del corso):
    • Brevi richiami sull'elaborazione numerica dei segnali e dell’informazioneSistemi e segnali tempo-discreti, conversione analogico/digitale (DAC, ADC), trasformata z. Strutture di elaborazione e filtraggio, architetture FIR, IIR e a traliccio, effetti di quantizzazione, processori per DSP.
    • Virtualizzazione delle risorse in ambienti di calcolo distribuiti, cloud computing.
    • Principi di programmazione concorrente, parallela e distribuita. Processi sequenziali e paralleli. Accesso a risorse condivise, primitive di comunicazione e sincronizzazione, inter-process communication, stallo. Tecnologie OpenCL, MPI. Cenni ai linguaggi di programmazione concorrente.
    • Metodi di progettazione di processori vettoriali. Dependence Graph (DG) e analisi delle dipendenze. Proiezione e scheduling, mapping canonico da DG a SFG, esempi. Array sistolici, fused multiply-add (FMA), pipelining, sistolizzazione.
    • Calcolo parallelo su architetture multi-core, FPGA, GPU, TPU.
      • Machine Learning e Intelligenza Computazionale: reti neurali, logica fuzzy e algoritmi evolutivi.
        • Implementazione parallela di algoritmi di clustering e classificazione: C-Means, k-NN.
          • Implementazione hardware di architetture neurali “shallow”. Modelli di riferimento: Multilayer Perceptron (MLP); Radial Basis Function (RBF); Fuzzy Inference System (FIS) e reti neurali ANFIS; Extreme Learning Machine (ELM) o Random Vector Functional-Link (RVFL); Echo State Network (ESN). Vincoli di precisione numerica finita. Vincoli architetturali. Tecniche di virtualizzazione e condivisione.
          • Apprendimento e inferenza di reti neurali “deep” su architetture parallele.  Modelli di riferimento: Convolutional Neural Network (CNN); Long Short-Term Memory (LSTM); Gated Recurrent Unit (GRU); Autoencoder e Generative Adversarial Network (GAN); Attention Networks.
          • Tecniche di ottimizzazione e apprendimento distribuito. Topologia e reti di agenti (sensori e attuatori intelligenti). Distributed Average Consensus (DAC), ADMM, algoritmi euristici. Clustering distribuito e classificazione distribuita. Learning distribuito in reti ricorrenti e (stacked) deep.
          • Introduzione al calcolo quantistico. Porte e array quantistici. Algoritmi quantistici per l’ottimizzazione e il trattamento dell’informazione (QFFT, Grover, Schor). Quantum machine learning. Reti neurali quantistiche.
          • Studi di caso per applicazioni parallele e distribuite e introduzione ai progetti monotematici: 
            • quantizzazione, classificazione, predizione, approssimazione, interpolazione e filtraggio di dati meccatronici, biologici, energetici, economici, ambientali e  aerospaziali; 
            • il caso particolare di Smart Grid, analisi comportamentale e biometria;   
            • algoritmi di machine learning in ambiente CUDA, OpenCL, OpenCV, Dlib;
            • apprendimento parallelo in ambiente C, Matlab, Python (TensorFlow, Keras, XLA), Julia;
            • programmazione su architetture multi-core Intel per il Deep Learning (MKL, TBB, MKL-DNN, OpenVINO, oneAPI);
            • implementazione di reti neurali e neurofuzzy su microcontrollori, sistemi embedded e smart sensor;
            • utilizzo di nodi di calcolo e reti di sensori distribuiti basati su tecnologia Raspberry Pi.
        • Materiale didattico
          • Appunti e dispense forniti dal docente
          • P. Pacheco, An introduction to Parallel Programming, MK Publisher.
          • H.T. Kung, R. Sproull, G. Steele, VLSI Systems and Computations, Springer.
          • S.O. Haykin, Neural Networks and Learning Machines (3rd Ed.), Pearson.
          • I. Goodfellow, Y. Bengio, A. Courville, Deep Learning, MIT Press.
          • Ulteriori letture facoltative:
            • B.N. Barney, HPC Training Materials, Lawrence Livermore National Laboratory's Computational Training Center.
            • C.M. Bishop, Pattern Recognition and Machine Learning, Springer.
            • S. Theodoridis, K. Koutroumbas, Pattern Recognition, Academic Press
            • B. Kosko, Neural Networks and Fuzzy Systems, Prentice-Hall
            • L. Deng, Deep Learning: Methods and Applications, Microsoft Research

        Vai alla scheda dei corsi transitori (Circuiti e Algoritmi Calcolo Distribuito, Distributed Computing for Circuits and Systems)
                

        AVVISOper ogni tipo di comunicazione legata al corso, gli interessati sono pregati di inviarmi una e-mail indicando nell'OGGETTO "Machine Learning CA" e nel testo i seguenti dati: nome, cognome e numero di matricola. Cercherò di rispondere al più presto.

        Pagine secondarie (1): Distributed Computing