MATLAB Environment for Neural Network Deployment

Post on 12-Feb-2017

121 views 7 download

transcript

1

MATLAB Environment for Neural Networks Deployment

SEMINARIO PER IL CORSO DIENGINEERED ARTIFICIAL SYSTEM

A cura diAngelo Cardellicchio

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

3

Let’s do something fun!

Generatore di scrittura 'a mano'

Giocatore di BreakOut

Neural Network Playground

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.

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)

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

7

Una (semplice…) ANN

∑ 𝜎

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.

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.

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.

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.

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 .

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

14

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

𝑥2

�̂�1𝐸

𝑐1

𝑐2

𝑐3

𝜎

𝜎

𝑝1

𝑝2

15

Sensibilità• Come varia rispetto a ?

𝑥2

�̂�1𝐸

𝑐1

𝑐2

𝑐3

𝜎

𝜎

𝑝1

𝑝2

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:

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!

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.

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

20

Meet Mr. Deep Learning

Deep Learning

Approccio classico

𝑓 1…𝑓 𝑛

𝑓 1…𝑓 𝑛

Credits: Wikipedia

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

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

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.

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.

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.

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 )

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.’

28

Grazie per l’attenzione!