In questa pagina sono raccolte alcune proposte di
progetti per la parte di laboratorio eventualmente
associata al corso (4 crediti). Tale elenco non va
inteso come esaustivo: gli studenti possono proporre
altri progetti, concordandoli preventivamente col
docente.
La discussione del progetto può avvenire solo dopo
aver sostenuto con successo l'esame scritto di
Fondamenti di Intelligenza Artificiale M. La data di
discussione va concordata preventivamente col docente.
Alla discussione del progetto, lo studente è
tenuto a:
- portare una relazione sintetica del lavoro svolto (max. 10 pagine);
- effettuare una presentazione della durata di 10 minuti ca. (max. 8 slide);
- mostrare una demo del sistema realizzato.
Reti Neurali e Deep Learning
-
51:
Reti neurali per la classificazioen di reazioni emotive.
Lo scopo del progetto è di sviluppare ed applicare una rete neurale al problema della classificazione (sia binaria che eventualmente non) delle emozioni sperimentate da una persona durante la visione di immagini attraverso il suo segnale EEG. Dal punto di vista applicativo, si vuole sviluppare un sistema da collegare ad un visore di VR per far dipendere il contenuto dell’esperienza dal grado di soddisfazione dell’utilizzatore. A questo scopo è necessario:- Integrare un hardware per EEG (sviluppato nei laboratori di ricerca DEI) con il software di acquisizione dei dati;
- Selezionare un dataset di immagini che possano generare una risposta emotiva ed utilizzarle (mediante un programma già sviluppato) per l'acquisizione dei segnale con relative label;
- Design, training e validazione della rete neurale impiegata per la soluzione del problema;
- Interagire con ambienti in ambito psicologico–neurologico per l’interpretazione dei dati.
NAO Robot
-
45: Ricerca del percorso all'interno di labirinti per il Robot NAO.
L'attività si svolgerà inizialmente sull'ambiente di sviluppo e simulazione fornito con il robot (framework Choreographe). Una volta raggiunta una buona stabilità e affidabilità del software sviluppato, verrà fornita l'opportunità di lavorare direttamente con il robot presso i locali del DISI.
L'attività si compone di due parti:
A conoscenza completa: Si dovrà implementare nell'ambiente di sviluppo Choregraphe (python + macro blocchi) l'algoritmo di ricerca A*, per la ricerca del percorso all'interno di un labirinto. In particolare sarà richiesto di implementare l'algoritmo, utilizzare i macro blocchi messi a disposizione da Choregraphe per applicare le mosse della soluzione trovata e testare l'algoritmo sia in ambiente simulato (utilizzando diversi labirinti come benchmark), sia nel caso reale.
Senza conoscenza completa: Si dovrà implementare nell'ambiente di sviluppo Choregraphe (python + macro blocchi) una euristica per la ricerca del percorso all'interno di un labirinto, si dovranno sfruttare i sensori messi a disposizione dal Robot NAO per trovare gli ostacoli presenti nel labirinto (Sensore a ultrasuoni o fotocamera) e l'euristica dovrà tenere conto dei punti esplorati del labirinto per ottenere sempre una soluzione.
N.B.: gli algoritmi di visione (apprendimento e riconoscimento oggetti) sono già implementati e disponibili come macro blocchi all'interno dell'ambiente Choregraphe, non andranno quindi implementati ma solo utilizzati.
(Persone : 2) (Referente:Thomas Bridi) (Stato: non asssegnata)
GIOCHI, BOTS e ALTRO
- 36:
Giochi matematici e problem solving
Si affrontino e risolvano (cercando di essere il piu' generali possibile) alcuni giochi matematici tipo quelli riportati nei files che seguono mediante le tecniche di problem-solving descritte nel Corso di Intelligenza Artificiale.
http://matematica.unibocconi.it/sites/default/files/giochiautunno2010/allenamentiautunno2010.pdf
http://matematica.unibocconi.it/sites/default/files/giochiautunno2010/soluzioniautunno2010.pdf
Se ne possono trovare altri nel sito:
http://matematica.unibocconi.it/giochi-matematici
o in altri siti mediante ricerca con google.
Si tenti una classificazione dei problemi i base alle modalita` di soluzione. Si espliciti la difficolta` nel trattare la parte di "comprensione" del problema descritto in modo testuale/grafico e si mostrino esempi e possibili soluzione studiando anche lo stato dell'arte.
(Persone : 2) (Referente: Paola Mello) (Stato: non asssegnata)
COMPUTAZIONE EVOLUTIVA
- 14: Progetto e implementazione di un algoritmo genetico per risolvere problemi di ottimizzazione combinatoria (per esempio, quadratic assignment problem e timetabling problem)
(Persone : 1) (Referente: Andrea Roli) (Stato: non asssegnata)
- 15:
Progetto e implementazione di un algoritmo genetico per definire una strategia di gioco per il dilemma del prigioniero (versione iterata) o altri giochi analoghi descritti da matrice di payoff. [ http://en.wikipedia.org/wiki/Prisoner's_dilemma]
(Persone : 1) (Referente: Andrea Roli) (Stato: non asssegnata)
- 16: Progetto e implementazione di un algoritmo genetico per costruire un'istanza difficile per un problema di ottimizzazione combinatoria.
(Persone : 1) (Referente: Andrea Roli) (Stato: non asssegnata)
- 17: Progetto e implementazione di un algoritmo di programmazione genetica per l'approssimazione di funzioni.
(Persone : 1) (Referente: Andrea Roli) (Stato: non asssegnata)
- 18: Progetto e implementazione di un
algoritmo di programmazione genetica per una strategia di
comportamento in un videogioco (per esempio Robocode o Mario Bros). [ http://robocode.sourceforge.net/]
(Persone : 1) (Referente: Andrea Roli) (Stato: non asssegnata)
- 51: Progetto e implementazione di un algoritmo genetico per definire le regole di transizione di un automa cellulare unidimensionale
[ http://mathworld.wolfram.com/CellularAutomaton.html]
di raggio r > 1 in modo da ottenere un classificatore capace di risolvere il problema della densità (cioè, il pattern iniziale, binario, converge a valori tutti 0 o tutti 1 a seconda della predominanza di un valore o dell'altro nella configurazione iniziale). Per maggiori informazioni: http://csc.ucdavis.edu/~evca/Projects/evca.html
(Persone : 1) (Referente: Andrea Roli) (Stato: non asssegnata)
- 52: Esperimenti di evolutionary art
(http://en.wikipedia.org/wiki/Evolutionary_art) o di evolutionary
music (http://en.wikipedia.org/wiki/Evolutionary_music).
Progetto e implementazione di un algoritmo genetico per la generazione di quadri o di composizioni musicali.
(Persone : 1) (Referente: Andrea Roli) (Stato: non asssegnata)
NATURAL LANGUAGE PROCESSING E ARGUMENTATION MINING
- 53: Natural Language Processing in Prolog..
(Persone : 1-2) (Referente: Paola Mello) (Stato: non asssegnata)
- 46: Annotazione e classificazione di argomenti all'interno di un dataset di file audio..
Si dovrà analizzare un insieme di file audio relativi a dibattiti televisivi svoltisi nel corso della campagna elettorale
per le elezioni nel Regno Unito. L'obiettivo è quello di individuare (taggare) gli argomenti (o parti di essi) contenuti
in tali documenti, utilizzando poi un classificatore (già esistente) per verificare quali e quanti argomenti vengono
riconosciuti in modo automatico con strumenti di Natural Language Processing.
(Persone : 1-2) (Referenti: Paolo Torroni, Marco Lippi) (Stato: non asssegnata)
- 47: Sentiment analysis di argomenti utilizzati in dibattiti politici.
La "sentiment analysis" ha come obiettivo quello di classificare la "polarità" di un dato testo, ovvero
individuare se le opinioni in esso contenute sono positive, negative o neutre. L'obiettivo di questo
progetto è quello di utilizzare strumenti già esistenti di Sentiment Analysis per classificare ed
analizzare frasi pronunciate nel corso di dibattiti politici.
(Persone : 1-2) (Referenti: Paolo Torroni, Marco Lippi) (Stato: non asssegnata)
- 48: Analisi delle relazioni tra argomenti in contesto politico.
L'obiettivo di questo progetto è quello di analizzare le relazioni esistenti tra gli argomenti proposti dai partecipanti ad un dibattito politico. Nel proporre una certa tesi, è spesso necessario portare elementi a supporto (detti premesse o evidenze), oppure elementi che "attacchino" tesi antitetiche. Si dovrà annotare un dataset che descriva le relazioni esistenti tra vari argomenti, e costruire un classificatore (utilizzando strumenti esistenti di apprendimento automatico) in grado di identificare tali relazioni.
(Persone : 1-2) (Referenti: Paolo Torroni, Marco Lippi) (Stato: non asssegnata)
- 49: Segmentazione e classificazione di articoli di giornale.
L'attività consiste nell'analizzare un corpus di articoli di giornale in lingua italiana (principalmente "La Repubblica" e "Il Sole 24 ore") con l'obiettivo di estrarre le informazioni principali (task di segmentazione) e classificarle in categorie semantiche (task di classificazione), sfruttando strumenti di apprendimento automatico e Natural Language Processing già esistenti.
(Persone : 1-2) (Referenti: Paolo Torroni, Marco Lippi) (Stato: non asssegnata)
- 50: Individuazione di argomenti in articoli di giornale.
L'attività consiste nell'analizzare un corpus di articoli di giornale in lingua italiana (principalmente "La Repubblica" e "Il Sole 24 ore") con l'obiettivo di estrarre automaticamente e classificare argomenti in essi contenuti, sfruttando strumenti di apprendimento automatico già esistenti e utilizzati in altri ambiti del Natural Language Processing.
(Persone : 1-2) (Referenti: Paolo Torroni, Marco Lippi) (Stato: non asssegnata)
Proposte negli anni precedenti
-
2011-09:
Caratterizzazione di una General Purpose-GPU mediante machine learning/model fitting. L’utilizzo di General Purpose Graphical Processing Units (GP-GPUs) per l’accelerazione di calcolo con parallelismo di dati massiccio sta acquistando popolarità ad un ritmo sorprendente; l’attrattiva dell’approccio risiede nella sua efficacia e nella vasta disponibilità di GPGPU potenti e di costo contenuto. Ottenere performance mediante un simile approccio è però tutt’altro che banale e richiede la riprogettazione di molti algoritmi per esporne il parallelismo, una massiccia ristrutturazione del codice e una profonda conoscenza delle caratteristiche dell’hardware su cui l’applicazione è destinata ad eseguire. Tali difficoltà motivano l’interesse verso lo sviluppo di sistemi di Computer Aided Design (CAD) che permettano l’automatizzazione di alcuni passi di progetto; la realizzazione di un tale strumento richiede però la formulazione di opportuni modelli, che descrivano con un grado di approssimazione sufficiente la risposta della piattaforma hardware a variazione di determinati parametri di progetto. Obiettivo di questo studio è realizzare una prima caratterizzazione di una GP-GPU reale (Nvidia Fermi architecture), utilizzando allo scopo tecniche di apprendimento automatico (reti neurali o Support Vector Machines) o di model fitting. Per le sue caratteristiche, questo progetto offre l’opportunità di contribuire in modo relativamente semplice, ma significativo, allo sviluppo di una linea di ricerca.
(Persone : 1) (Referente: Michele Lombardi) (Stato: non asssegnata)
- 2011-10: Sperimentazione di euristiche di ricerca per l’ottimizzazione di applicazioni streaming. L’elaborazione in real time di flussi di dati (stream processing – es. Codifica/decodifica di flussi audio/video) rimane ad oggi l’applicazione principale per la maggior parte dei cosiddetti sistemi embedded; in tale contesto, la possibilità di sovrapporre l’elaborazione di frame consecutivi è un fattore chiave per ottenere la migliori performance. L’utilizzo di metodi automatici di ottimizzazione si è dimostrato efficace nel migliorare le prestazioni di applicazioni software per sistemi embedded multi-core complessi; gli approcci classici, tuttavia, non considerano esplicitamente la possibilità di sovrapporre elaborazioni ripetute su un flusso di dati e perdono molta della loro attrattiva quando l’applicazione di interesse (come spesso accade) è di tipo streaming, motivando lo sviluppo di approcci a hoc. In tempi recenti, il gruppo di ricerca di Intelligenza Artificiale a Bologna ha sviluppato alcuni prototipi di ottimizzatori per risolvere questo tipo di problematiche: obiettivo di questo progetto è il miglioramento di uno di questi prototipi, in particolare attraverso la sperimentazione ed ideazione di euristiche per guidare una ricerca ad albero. Per le sue caratteristiche, questo progetto offre l’opportunità di contribuire in modo semplice, ma significativo, allo sviluppo di una linea di ricerca.
(Persone : 1) (Referente: Michele Lombardi) (Stato: non asssegnata)
- 2011-11: Estensione di un risolutore automatico per l’ottimizzazione di applicazioni streaming.L’elaborazione in real time di flussi di dati (stream processing – es. Codifica/decodifica di flussi audio/video) rimane ad oggi l’applicazione principale per la maggior parte dei cosiddetti sistemi embedded; in tale contesto, la possibilità di sovrapporre l’elaborazione di frame consecutivi è un fattore chiave per ottenere la migliori performance. L’utilizzo di metodi automatici di ottimizzazione si è dimostrato efficace nel migliorare le prestazioni di applicazioni software per sistemi embedded multi-core complessi; in linea di massima, l’approccio richiede di risolvere un problema combinatorio di allocazione delle risorse hardware e di scheduling. I metodi classici, tuttavia, non considerano esplicitamente la possibilità di sovrapporre elaborazioni ripetute su un flusso di dati e perdono molta della loro attrattiva quando l’applicazione di interesse (come spesso accade) è di tipo streaming: questo fornisce motivazione per lo sviluppo di approcci a hoc. In tempi recenti, il gruppo di ricerca di Intelligenza Artificiale a Bologna ha sviluppato alcuni prototipi di ottimizzatori per risolvere questo tipo di problematiche: obiettivo di questo progetto è l’estensione di uno di questi prototipi, in particolare introducendo nell’ottimizzazione uno stadio di allocazione delle risorse (assente nella versione attuale). Per le sue caratteristiche, questo progetto offre l’opportunità di contribuire in modo semplice, ma significativo, allo sviluppo di una linea di ricerca.
(Persone : 1) (Referente: Michela Milano, Michele Lombardi) (Stato: non asssegnata)
- 2011-12: Scheduling di trasferimenti di dati per l’ottimizzazione di applicazioni streaming. L’elaborazione in real time di flussi di dati (stream processing – es. Codifica/decodifica di flussi audio/video) rimane ad oggi l’applicazione principale per la maggior parte dei cosiddetti sistemi embedded; in tale contesto, la possibilità di sovrapporre l’elaborazione di frame consecutivi è un fattore chiave per ottenere la migliori performance. L’utilizzo di metodi automatici di ottimizzazione si è dimostrato efficace nel migliorare le prestazioni di applicazioni software per sistemi embedded multi-core complessi; in linea di massima, l’approccio richiede di risolvere un problema combinatorio di allocazione delle risorse hardware e di scheduling. I metodi classici si basano tuttavia su un modello semplificato dell’utilizzo dei dispositivi di memoria, in cui ogni task lavora su dati indipendenti: realizzare a livello implementativo una simile astrazione richiede spesso l’inutile replicazione di strutture dati e non permette una efficace ottimizzazione dei trasferimenti di dati. In tempi recenti, il gruppo di ricerca di Intelligenza Artificiale a Bologna ha sviluppato alcuni prototipi di ottimizzatori per risolvere problemi di scheduling ciclico: obiettivo di questo progetto è l’estensione di uno di questi prototipi, incorporando uno stadio di pianificazione e scheduling dei trasferimenti di dati; tale stadio di ottimizzazione si baserà su un modello decisamente più realistico di quello classico, evitando inutili colli di bottiglia dovuti a replicazione e sollevando in parte il programmatore dal gravoso compito di ottimizzare i trasferimenti. Per le sue caratteristiche, questo progetto offre l’opportunità di contribuire in modo significativo allo sviluppo di una linea di ricerca.
(Persone : 1) (Referente: Michela Milano, Michele Lombardi) (Stato: non asssegnata)
- 2011-13:
Progetto e training di una rete neurale per predizione della temperatura di un sistema multicore. Le gestione termica di sistemi multi-core è diventata negli ultimi anni un argomento di ricerca particolarmente attivo: ne è motivo la presa di coscienza che lo sviluppo di tali piattaforme è destinato a ricevere una battuta di arresto, se non saranno risolti i problemi di dissipazione di calore dovuti all’impacchettamento di una grande quantità di unità di calcolo su una superficie limitata. È possibile utilizzare metodi automatici di ottimizzazione per distribuire il carico di lavoro su una piattaforma multi-core in modo da ridurre la temperatura di picco, così da evitare l’innesco di meccanismi di controllo di basso livello (riduzione della frequenza, core shutdown...) ed i conseguenti rallentamenti di esecuzione. L’impiego di algoritmi di ottimizzazione ha tuttavia come condizione la disponibilità di un modello dichiarativo del comportamento termico del dispositivo; l’approccio classico, che consiste nella sintesi di un modello sulla base delle leggi fisiche che regolano i trasferimenti e la generazione di calore, è però in questo caso difficilmente applicabile; la ragione è che la quantità di elementi da prendere in considerazione è così grande (workload, posizione dei processori sul chip, efficienza locale del sistema di raffreddamento...) che la soluzione del corrispondente sistema di equazioni differenziali diventa proibitiva. In questo contesto il gruppo di ricerca in Intelligenza Artificiale a Bologna sta sviluppando un approccio alternativo, che consiste nell’apprendimento automatico di un modello approssimato (allo stadio corrente una rete neurale): in questo modo, l’azione dei vari elementi che concorrono al comportamento termico viene appresa dalla rete, piuttosto che esplicitamente definita dal progettista; la rete addestrata può poi essere utilizzata da un metodo di ottimizzazione. Un prototipo dell’intero approccio è già stato realizzato, mettendo in luce la necessità di riprogettare in parte la rete per adattarla alla formulazione del problema di ottimizzazione e migliorare l’accuratezza delle previsioni: tale attività di riprogettazione e training costituisce l’argomento del progetto corrente.
(Persone : 1) (Referente: Michela Milano, Michele Lombardi, Andrea Bartolini) (Stato: non asssegnata)