L’insegnamento presenta il tema della realizzazione di agenti autonomi, in grado di muoversi e interagire con un ambiente incognito al fine di raggiungere un determinato obiettivo, utilizzando algoritmi di apprendimento con rinforzo (Reinforcement Learning).
Il corso fornisce metodologie e strumenti per lo sviluppo di sistemi software, secondo criteri di elevata efficienza e produttività. Viene offerta una panoramica generale sui sistemi multimediali e sulla modalità di interazione con gli utenti. Sono anche offerti elementi di programmazione di videogiochi e simulazione.
La frequenza e la partecipazione attiva alle attività formative proposte (lezioni frontali e laboratori tecnico-pratici) e lo studio individuale consentiranno di:
Sono necessarie per affrontare efficacemente i contenuti dell’insegnamento le seguenti conoscenze di base: programmazione con un linguaggio di programmazione di alto livello, meglio se Python (al fine di capire e implementare gli algoritmi considerati) e i principali algoritmi di machine learning supervisionato (per poter comprendere gli algoritmi basati su approssimatori di funzione).
L’insegnamento si compone di lezioni frontali e di una parte di laboratorio tecnico-pratico. Durante le lezioni frontale, il docente presenta gli argomenti fornendo esempi di codice che vengono provati sfruttando gli ambienti OpenAI Gym. Gli studenti e le studentesse possono utilizzare i propri calcolatori durante la lezione per mettere in pratica quanto proposto dal docente. Durante i laboratori tecnico-pratici, il docente titolare dell’insegnamento, coadiuvato da tutor di laboratorio, chiederà di utilizzare il calcolatore per risolvere problemi reali applicando gli algoritmi visti durante le lezioni frontali.
Il seguente elenco riporta i contenuti affrontati a lezione. Le slide e i notebook con le note utilizzate durante le lezioni possono essere scaricati qui: https://github.com/riccardoberta/autonomous-agents
Le Nazioni Unite hanno stilato un elenco di 17 obiettivi nell'ambito dell'agenda 2030 per lo sviluppo sostenibile, che spaziano dalla fine della povertà e della fame nel mondo al miglioramento della salute e dell'istruzione, fino alla riduzione delle disuguaglianze e delle ingiustizie. Ci sono alcune sfide che lo sviluppo di agenti autonomi deve affrontare per poter essere realmente impiegato per il bene sociale, come il problema di apprendimento con dati limitati, gli squilibri geografici, i dati parziali e l'apprendimento con memoria e potenza di calcolo limitati. L’insegnamento adotterà una prospettiva di progettazione responsabile, al fine di fornire allo studente la capacità di sviluppare sistemi socialmente intelligenti. In particolare, lo studente imparerà come i modelli possono essere progettati senza pregiudizi (10. Riduzione delle disuguaglianze), come possono diventare spiegabili (16. Pace, giustizia e istituzioni forti) e come mitigare i rischi etici posti dai comportamenti autonomi (16. Pace, giustizia e istituzioni forti). Inoltre, nel presentare esempi di implementazione, si utilizzeranno scenari volti a favorire un uso sostenibile delle risorse naturali (13. Azione per il clima, 15. Vita sulla terraferma, 14. Vita sotto l'acqua), al miglioramento della vita nelle città (11. Città e comunità sostenibili, 3. Buona salute e benessere) e nelle industrie (9. Industria, innovazione e infrastrutture) Alla termine dell’insegnamento, lo studente saprà quali insidie possono rende irresponsabili i comportamenti degli agenti autonomi e come progettare modelli responsabili, che aiutino le persone e non le danneggino, pur essendo utili e accurati.
Tutte le slides e il codice sorgente utilizzate durante le lezioni e altro materiale didattico saranno disponibili su aul@web. In generale, gli appunti presi durante le lezioni e il materiale su aul@web sono sufficienti per la preparazione dell'esame. I libri sotto indicati sono suggeriti come testi di appoggio, ma gli studenti possono comunque utilizzare anche altri testi recenti sul Reinforcement Learning di livello universitario.
Questi libri possono fornire ulteriori approfondimenti e risorse per uno studio più approfondito sull'argomento del Reinforcement Learning.
Ricevimento: Il docente riceve su appuntamento, per prendere appuntamento è possibile contattare il docente tramite Microsoft Teams (preferibilmente) o tramite email a riccardo.berta@unige.it
RICCARDO BERTA (Presidente)
ALESSANDRO DE GLORIA
FRANCESCO BELLOTTI (Presidente Supplente)
https://corsi.unige.it/8732/p/studenti-orario
L'esame consiste in una prova scritta sugli argomenti teorici e pratici presentati a lezione. In particolare, lo studente deve dimostrare di aver compreso appieno il funzionamento degli algoritmi alla base dello sviluppo di agenti autonomi e di saperli implementare in linguaggio Python. L'esame valuterà la comprensione degli studenti dei concetti, la loro capacità di applicare gli algoritmi e le loro competenze pratiche di implementazione.
I dettagli sulle modalità di preparazione per l’esame e sul grado di approfondimento di ogni argomento verranno dati nel corso delle lezioni. L’esame scritto verificherà l’effettiva acquisizione delle conoscenze di base sugli algoritmi di Reinforcement Learning e la loro applicazione per la realizzazione di agenti autonomi. I problemi presentati e le domande aperte permetteranno di valutare la capacità di applicare le conoscenze in situazioni pratiche che possono verificarsi nella realtà.