matlab environment for neural network deployment
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!