Title: Presentazione di PowerPoint
1Esercitazione N5
Approssimazione di Funzioni
2Esercizio 1 Costruzione di una rete RBF
E' quindi possibile, ed anche semplice, definire
i pesi delle connessioni del secondo strato che
ricalcano perfettamente i valori del target in
corrispondenza dei punti del training set. Una
seconda versione di RBF ammette un certo valore
di errore, posizionando il massimo della
gaussiana in corrispondenza di una parte del
training set o di punti medi di gruppi di punti.
In questo modo, ammettendo di avere
un'approssimazione non esatta della funzione, si
può ridurre il numero di neuroni dello strato
nascosto. La funzione di attivazione utilizzata
dalle RBF si richiama con la parola chiave
radbas gtgt p -3 0.1 3 gtgt a radbas(p) gtgt
plot(p,a)
Il metodo più semplice per approssimare una
funzione mediante reti neurali è quello di usare
le Radial Basis Functions (RBF). Queste hanno una
struttura come quella descritta nella figura
seguente
Gli ingressi passano attraverso un primo strato
di connessioni per costituire l'ingresso di uno
strato di neuroni con funzione di attivazione di
tipo gaussiano. Le uscite dello strato sono
combinate linearmente per dare le uscite. Nella
versione più semplice, viene assegnato un neurone
nascosto ad ogni pattern del training-set e si
definiscono i pesi del primo strato di
connessioni in modo tale che la gaussiana abbia
il massimo in corrispondenza del punto.
3Vediamo come si possano usare le RBF per
costruire una funzione. Nell'esempio che segue,
tre funzioni radbas sono combinate linearmente
per ottenere la funzione che in figura appare di
colore magenta. La principale differenza,
rispetto alle MLP viste finora, è che le funzioni
elementari che vengono combinate sono pressoché
ortogonali tra loro. gtgt p -3 0.1 3 gtgt
clf gtgt hold on gtgt plot(p,radbas(p)) gtgt
plot(p,radbas(p-1.5)) gtgt plot(p,radbas(p2)) gtgt
rb1 radbas(p) gtgt rb2 radbas(p-1.5) gtgt rb3
radbas(p2) gtgt plot( p, rb1 rb2 0.5rb3 , 'm'
)
Matlab prevede due comandi distinti per la
costruzione di reti RBF, a seconda che si ammetta
o no un errore di approssimazione della
funzione. Il comando newrb crea una rete RBF
ammettendo un errore di approssimazione assegnato
come parametro. La sintassi è la seguente gtgt eg
0.02 errore ammesso gtgt sc 1
costante di spread gtgt p -3 0.1 3
ingressi gtgt t sin(p) target gtgt net
newrb(p,t,eg,sc) costruzione RBF
4plottando i campioni della funzione insieme alle
uscite della rete otteniamo il seguente
grafico gtgt plot(p,sim(net,p),'',p,t,'o')
Eseguendo il plot in questo secondo caso, i punti
della funzione sono riprodotti con la stessa
precisione di prima, ma ora la rete ha 50 neuroni
nello strato nascosto, mentre prima ne aveva solo
25. Inoltre, se si riduce il passo di
campionamento, si può osservare che l'uscita
della rete corrisponde alla funzione approssimata
solo nei punti di addestramento, mentre in tutti
gli altri punti l'errore può essere elevato.
Esclusi due campioni, l'approssimazione è
accettabile. Possiamo vedere cosa succede se
riduciamo il coefficiente sc, cioè se utilizziamo
gaussiane più strette gtgt eg 0.02 errore
ammesso gtgt sc 0.01 costante di spread gtgt
p -3 0.1 3 ingressi gtgt t sin(p)
target gtgt net newrb(p,t,eg,sc) rete RBF
Viceversa, se il parametro sc è molto elevato,
per esempio sc 100, la rete ha difficoltà ad
approssimare anche i punti di addestramento.
5Lo stesso problema si può affrontare con le reti
RBF esatte. In questo caso i parametri di errore
e di varianza della gaussiana non devono essere
più assegnati, perché il primo è nullo per
definizione e il secondo viene calcolato
dall'algoritmo sulla base della distribusione dei
punti di addestramento nello spazio degli
ingressi. La funzione per la costruzione di una
tale rete è newrbe gtgt p -3 0.1 3
ingressi gtgt t sin(p) target gtgt netE
newrb(p,t) rete RBF
Ripetendo i comandi per la graficazione dei punti
utilizzata in precedenza, si può osservare che la
rete approssima perfettamente la funzione anche
in punti diversi da quelli di addestramento.
Inevitabilmente, la rete RBF creata in questo
modo ha 61 neuroni nascosti, tanti quanti sono i
campioni utilizzati nell'addestramento. Possiamo
provare ad approssimare la stessa funzione con
una rete MLP gtgt netFF newff(-3 3, 10
1, 'logsig' 'purelin') gtgt netFF
train(netFF,p,t) lo strato nascosto ha soltanto
10 neuroni. L'addestramento della rete è
piuttosto rapido. In 100 epoche raggiunge un
errore di 5e-9. Vediamo la qualità
dell'approssimazione gtgt plot(pp,sim(netFF,pp),'.'
,pp,sin(pp)) L'approssimazione è buona quanto
quella della rete RBF con 61 neuroni nascosti.
6Esercizio 2 Funzione di Schwefel La funzione di
Schwefel è così definita f 0 500n ? ?
Lo studente approssimi questa funzione con una
RBF esatta, con una approssimata e con una MLP.
Confronti, poi le prestazioni e le dimensioni
delle tre reti ottenute.
Grafichiamo la funzione nel caso di n 2 gtgt
X,Y meshgrid(0500, 0500) gtgt Z
-X.sin(sqrt(X)) -Y.sin(sqrt(Y)) gtgt
mesh(Z) si ottiene la seguente figura