matlab environment for neural network deployment

28
MATLAB Environment for Neural Networks Deployment SEMINARIO PER IL CORSO DI ENGINEERED ARTIFICIAL SYSTEM A cura di Angelo Cardellicchio 1

Upload: angelo-cardellicchio

Post on 12-Feb-2017

132 views

Category:

Engineering


7 download

TRANSCRIPT

Page 1: MATLAB Environment for Neural Network Deployment

1

MATLAB Environment for Neural Networks Deployment

SEMINARIO PER IL CORSO DIENGINEERED ARTIFICIAL SYSTEM

A cura diAngelo Cardellicchio

Page 2: MATLAB Environment for Neural Network Deployment

2

Ctrl+C/Ctrl+V

• Gli umani, e soprattutto gli accademici, sono naturalmente portati ad imitare modelli di successo.

• Ed il nostro cervello, per le sue capacità di apprendimento, ne è un esempio!

Nascono le Artificial Neural Networks (ANN), strutture volte a riprodurre imitare le capacità di apprendimento ed organizzazione delle reti neurali biologiche.

Credits: Wikipedia

Page 3: MATLAB Environment for Neural Network Deployment

3

Let’s do something fun!

Generatore di scrittura 'a mano'

Giocatore di BreakOut

Neural Network Playground

Page 4: MATLAB Environment for Neural Network Deployment

4

Meglio approssimare!• Le ANN ‘classiche’ sono caratterizzate da un unico

strato nascosto (shallow networks).• Il teorema dell’approssimazione universale

afferma che, con un adeguato numero di neuroni, una shallow network può approssimare qualsiasi

funzione.• Nella pratica, l’approssimazione di qualsiasi

funzione avviene mediante una sommatoria pesata.

Page 5: MATLAB Environment for Neural Network Deployment

5

Basi fisse o adattative?• Nella formulazione precedente, le funzioni sono

chiamate basi, e, pesato in maniera opportuna, permettono di approssimare la funzione .

• Una base può essere fissa (fixed) o adattativa (adjustable).

Question time: quale tipo di base garantisce

maggiore flessibilità?Tipo di approssimatore Forma genericaPolinomiale (fixed basis)

Neural Network (adaptive basis)

Page 6: MATLAB Environment for Neural Network Deployment

6

Perché usare una base fissa?• Aumentando il numero di basi fisse utilizzate, è

comunque possibile approssimare in maniera adeguata funzioni complesse.

M=4

M=8

Page 7: MATLAB Environment for Neural Network Deployment

7

Una (semplice…) ANN

∑ 𝜎

Page 8: MATLAB Environment for Neural Network Deployment

8

Trivial, silly, unefficient• Le ANN utilizzano una funzione di costo per

valutare l’errore, ossia la differenza tra l’uscita della rete ed il target prefissato.

• I pesi da assegnare a ciascun ramo della rete sono appresi valutando iterativamente la variazione dell’errore in base alle variazioni di ciascuno dei pesi.

• Domanda: proviamo a perturbare ogni peso della rete, e valutare gli effetti complessivi sull’errore. Giusto?

• Risposta: good luck with that.

Page 9: MATLAB Environment for Neural Network Deployment

9

Chain rule• L’idea illustrata nella slide precedente è quella

alla base della famosa chain rule, che permette di ‘scomporre’ la derivata di una funzione composta:

• Dato che una ANN è una funzione composta dalle funzioni (somma ed attivazione) dei singoli layer, usare la chain rule ci permette di valutare la variazione complessiva dell’uscita della rete rispetto alle variazioni dei singoli pesi.

Page 10: MATLAB Environment for Neural Network Deployment

10

The Curse of Dimensionality• È possibile applicare direttamente la chain rule

solo nel caso che i layer siano funzioni scalari.• Al giorno d’oggi, i layer sono normalmente dei

tensori!• In questo caso, il numero di derivate ‘esplode’, e

la rete diventa ingestibile!• Occorre qualche accorgimento che ci permetta di

mettere in relazione direttamente la variazione dell’errore con la variazione dei singoli pesi.

• Meet backpropagation.

Page 11: MATLAB Environment for Neural Network Deployment

11

Boxing

𝑥2

�̂�1𝐸

𝑓 (𝑐1 ,𝑐2 ,𝑐3 )=𝐸

𝑐1

𝑐2

𝑐3

• Ci interessa la relazione tra gli ingressi al box, , e

l’errore in uscita dal sistema.

Page 12: MATLAB Environment for Neural Network Deployment

12

Sensibilità• Definiamo come sensibilità il vettore delle

derivate parziali dell’errore rispetto ai singoli valori .

• Il vettore descrive come varia in funzione dei singoli . In generale:

• Di conseguenza, una perturbazione si propagherà ad in base al valore .

Page 13: MATLAB Environment for Neural Network Deployment

13

Sensibilità• Vogliamo ora valutare l’effetto dei valori in uscita

dal layer precedente sull’errore, tenendo conto delle considerazioni fatte in precedente. Chiamiamo l’uscita dal layer precedente .

𝑥2

�̂�1𝐸

𝑐1

𝑐2

𝑐3

𝜎

𝜎

𝑝1

𝑝2

Page 14: MATLAB Environment for Neural Network Deployment

14

Sensibilità• La sensibilità, per la coppia , è data da:

𝑥2

�̂�1𝐸

𝑐1

𝑐2

𝑐3

𝜎

𝜎

𝑝1

𝑝2

Page 15: MATLAB Environment for Neural Network Deployment

15

Sensibilità• Come varia rispetto a ?

𝑥2

�̂�1𝐸

𝑐1

𝑐2

𝑐3

𝜎

𝜎

𝑝1

𝑝2

Page 16: MATLAB Environment for Neural Network Deployment

16

Sensibilità• La relazione mette in relazione la sensibilità del layer

con quella del box. Ma è indipendente da ciò che avviene

all’interno del box!• Estendiamo questo concetto, e saremo in grado di

valutare come l’errore è influenzato da ciascun peso propagando quella formula verso l’ingresso della rete!

• Abbiamo però bisogno di un punto di partenza: in tal senso, consideriamo l’errore stesso, genericamente pari a:

Page 17: MATLAB Environment for Neural Network Deployment

17

Aggiornamento dei pesi• Le considerazioni precedenti ci portano alla

seguente formula, che mette in relazione la variazione dell’errore con quella del singolo peso:

• Questa formula ci permette di calcolare la derivata parziale dell’errore rispetto a ciascun peso della

rete.• Tutto ciò è possibile perché conosciamo i valori ,

grazie all’algoritmo di backpropagation!

Page 18: MATLAB Environment for Neural Network Deployment

18

Backpropagation – recap 1. Inizializzazione pesi ad un valore casuale

(stochastic backpropagation), impostazione learning rate e funzione di costo/criterio di stop.

2. Scelta di un vettore degli ingressi casuale.3. Prima iterazione.4. Calcolo delle sensibilità di ciascun layer

mediante backpropagation.5. Aggiornamento dei pesi in base al gradiente.6. Se il criterio di stop è rispettato, stop,

altrimenti torna al punto 2.

Page 19: MATLAB Environment for Neural Network Deployment

19

Meet Mr. Deep Learning• Il deep learning è, assieme al concetto di big

data, ‘the next big thing’.• Rappresenta una rivoluzione nel campo del

pattern recognition: tradizionalmente, infatti, gli step di feature selection e matching sono fatti ‘a mano’, grazie all’esperienza ed alle competenze di un esperto.

• Il deep learning ‘automatizza’ questo processo.Feature Selection

Feature Matching Ranking

Page 20: MATLAB Environment for Neural Network Deployment

20

Meet Mr. Deep Learning

Deep Learning

Approccio classico

𝑓 1…𝑓 𝑛

𝑓 1…𝑓 𝑛

Credits: Wikipedia

Page 21: MATLAB Environment for Neural Network Deployment

21

Deep Learning e CNN• Le Convolutional Neural Networks (CNN) sono uno

dei modelli di rete più usati nel campo del deep learning, ed hanno un numero di strati molto elevato (da cui la definizione di deep).

• Question time: se le ANN sono degli

approssimatori universali, quali sono i vantaggi

derivanti dall’uso di architetture deep?

Credits: Wikipedia

Page 22: MATLAB Environment for Neural Network Deployment

22

Deep Learning e CNNGli strati delle CNN sono organizzati in maniera tale da riproporre il comportamento del cervello umano, che estrae le feature in maniera ‘gerarchica’.

Contorni

Forme

Tessitura

Page 23: MATLAB Environment for Neural Network Deployment

23

Deep Learning e CNNPer approssimare efficacemente il funzionamento di un’architettura deep, occorre un elevato numero di neuroni nell’hidden layer di una rete shallow.

Page 24: MATLAB Environment for Neural Network Deployment

24

A deeper look into CNNs…

Credits: Wikipedia

𝑦 𝑖𝑗=∑𝑢𝑣𝑤𝑢𝑣 𝑥𝑖+𝑢 , 𝑗+𝑣

• Le CNN sono composte da vari tipi di layer. Esaminiamo i tre più comuni.

• Il primo è il layer di convoluzione, nel quale l’immagine (o, generalmente, il pattern) è convoluta con un kernel.

Page 25: MATLAB Environment for Neural Network Deployment

25

A deeper look into CNNs…

Credits: Wikipedia

• Il secondo strato, che normalmente segue quello di convoluzione, è il layer di pooling, che partiziona l’immagine in ingresso secondo un certo schema e, per ogni partizione, restituisce un unico valore, diminuendo progressivamente le dimensioni spaziali dell’immagine.

Page 26: MATLAB Environment for Neural Network Deployment

26

A deeper look into CNNs…

Credits: Wikipedia

• Il terzo strato è legato alla funzione di attivazione. Ve ne sono di vario tipo, ma la più usata è la ReLU (Rectified Linear Unit).

𝜎 (𝑥 )=max (𝑥 ,0 )

Page 27: MATLAB Environment for Neural Network Deployment

27Credits: All world’s engineers

MatConvNet• Cosa è?

• Libreria MATLAB per utilizzare le CNN• Ma MATLAB non usa il Neural Network

Toolbox?• Sì, ma questo non permette di definire CNN,

tant’è che MatConvNet è ormai lo standard

‘de facto’ usato anche da MathWorks nei suoi

tutorial.• MATLAB è la soluzione migliore per il deep

learning?• Ricorriamo alla tipica risposta che un

ingegnere dà ad una domanda di questo tipo:

‘It depends.’

Page 28: MATLAB Environment for Neural Network Deployment

28

Grazie per l’attenzione!