L'obiettivo del corso è far familiarizzare gli studenti con i principi di elaborazione computazionale dei dati comunemente chiamati Computational Intelligence (CI). Ciò si riferisce alla teoria, alla progettazione, all'applicazione e allo sviluppo di paradigmi computazionali ispirati a una gamma più ampia di strutture biologiche capaci di auto-organizzazione autonoma. Gli studenti acquisiranno quindi principi sia teorici che pratici dei sistemi di intelligenza artificiale di ispirazione biologica, come quelli evolutivi, neurali e collettivi. Dopo il corso gli studenti saranno in grado di: comprendere concettualmente i termini e gli algoritmi importanti di CI scegliere i metodi appropriati per un determinato compito costruire sistemi intelligenti per applicazioni reali.
Prerequisiti
Conoscenze di programmazione Python 3, matematica, algoritmi e strutture dati avanzate.
Metodi didattici
L’insegnamento si compone di sessioni sincrone (lezioni frontali in aula e laboratorio) e asincrone (assegnamenti, project, video lezioni).
Verifica Apprendimento
Gli studenti devono completare un progetto di ricerca affrontando un problema specifico; dovranno consultare la letteratura scientifica e quindi implementare una metodologia adeguata o svilupparne una nuova. Gli studenti sono liberi di proporre i propri argomenti e sono incoraggiati a lavorare in team (non più di 2 studenti per team), ma per l'esame ciascuno sarà individualmente responsabile dell'intero compito. Codice, documentazione e report devono essere inseriti in un repository git creato dal docente. Il punteggio ha un offset da -2 a +2. La prova orale consiste in una discussione che parte dal progetto di ricerca e copre altri argomenti del corso. Il punteggio ha un offset da 0 a 30.
Testi
(i) Introduction to Evolutionary Computing, A. E. Eiben, J. E. Smith, 2015, Springer. (ii) Hands-On Genetic Algorithms with Python: Applying genetic algorithms to solve real-world deep learning and artificial intelligence problems, Eyal Wirsansky, 2020, Packt Publishing. (iii) Computational Intelligence: An Introduction, Andries P. Engelbrecht (Autore), 2007, 2nd edition, John Wiley & Sons Inc. (iv) Bio-Inspired Artificial Intelligence: Theories, Methods, and Technologies, Dario Floreano and Claudio Mattiussi, 2008, The MIT Press.
Contenuti
Introduzione alla bio-inspired computing. Differenza tra ottimizzazione, modellazione e simulazione. I problemi NP. Sistemi neurali. Sistemi nervosi biologici. Reti neurali artificiali. Apprendimento supervisionato, non supervisionato e con rinforzo. Sistemi evoluzionari. Le origini della computazione evoluzionaria. I componenti degli algoritmi evoluzionari. Rappresentazione, mutazione e ricombinazione. Fitness, selezione e popolazione. Algoritmi evoluzionari multi-obiettivo. Algoritmi memetici. Gestione dei vincoli. Sistemi co-evolutivi, cooperativi e competitivi. Applicazioni dell’evolutionary computing nell’intelligenza artificiale. Robotica evoluzionaria. Sistemi collettivi e Swarm Intelligence. Auto-organizzazione biologica. Algoritmo Particle Swarm Optimization. Algoritmi Ant Colony Optimization. Applicazioni della swarm intelligence nell’intelligenza artificiale. Swarm Robotics.