# Workshop ML Bolzano
## Abstract
Si inizia spiegando cos'è l'intelligenza artificiale, con particolare focus sulle differenze tra machine learning e deep learning. Si prosegue con un codelap con lo scopo di partire da un problema semplice ed arrivare ad una soluzione che renda consapevoli i partecipanti delle dinamiche che ci sono dietro. Si descriveranno in seguito le problematiche che si riscontrano in uno scenario di studio reale, mostrando come esse possono essere risolte e offrendo la possibilità ai partecipanti di partecipare attivamente alla risoluzione.
## Schema
### Mattina
- Introduzione al problema dell'intelligenza artificiale, spiegando le differenze tra machine learning e deep learning (per questo potremmo prendere il primo capitolo del libro che suggeriva Gianluigi) - **50m**
- Codelab (o forse Workshop) che parte da un dataset stupido e pronto, per spiegare la regressione lineare a singola variabile (algoritmo di "aggiustamento del peso"), multivariabile, probabilità (sigmoid), classificazione multipla (softmax). Si scorre velocemente su raccolta dati, comprensione dei dati, preprocessamento dei dati, creazione modello. - **2h**
### Pomeriggio
* Scenario concreto: nella realtà ci sono una serie di problematiche -> raccolta dati, comprensione dei dati, preprocessamento dei dati e feature extraction (data preparaing and cleaning), creazione modello, debug della soluzione (overfitting etc). **1h**
* Soluzione reale. Si cerca di risolvere più problemi possibili. **2.5h**
------------------
## Scheletro iniziale
### Mattina
Si parte dalla teoria base e si intervalla con esercizi che dimostrano tale teoria e che aiutano a comprendere come funziona il ML e in particolare le reti neurali.
- (1) Introduzione a cosa è il machine learning: si spiega cosa è, a cosa serve e varie possibili applicazioni. Si prosegue mostrando alcuni esempi di metodologie, come Regressione, Alberi Decisionali e Reti Neurali (dal punto di vista generale).
- (3) Gently Tech Introduction.
- si parte da un problema banale (come prevedere il costo di una casa data la sua metratura) per spiegare cosa è una regressione lineare, cosa è il gradiente, l’errore e la funzione di loss. Si esegue la risoluzione insieme.
- si prova ad aggiungere una variabile di input, per capire cosa è la somma pesata
- si prova a definire un obiettivo diverso, classificare una probabilità. Si va a spiegare la sigmoide e quindi il neurone.
- infine si prova ad effettuare una classificazione multipla. Si introduce multilayer e differenti funzioni di attivazione.
- accenno al multilayer.
### Pomeriggio
Si spiegano i vari problemi che si possono verificare e come si possono risolvere.
- (2) Data prepairing e data cleaning: si parte da un set che non può essere facilmente utilizzato con la rete neurale che si è definita nella mattinata. Si evidenziano uno ad uno i problemi e si cercano di risolvere. I vari problemi che vorremmo mettere nel dataset sono: tipi diversi di input, scale diverse, dati errati, dati non puliti, dati sbilanciati, dati inutili. La risoluzione prevede tra le altre cose di ridurre la dimensionalità, trasformare gli attributi e scalarli in modo che abbiano lo stesso peso.
- (2) Convergenza e ottimizzazione: si spiegano principalmente i problemi di convergenz ed overfitting, mostrando alcune soluzioni facili da implementare come cambiare l’algoritmo di discesa del gradiente o usare l’early stop.