Applicazione di una rete neurale

7

Click here to load reader

Transcript of Applicazione di una rete neurale

Page 1: Applicazione di una rete neurale

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2 Emanuele Duca 10

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2 Emanuele Duca 10

ESERCIZIO 2

1. Introduzione Lo scopo di questo secondo esercizio è quello di prevedere, tramite l’utilizzo di una rete neurale, il consumo (MW/h) di energia di una città del quale viene fornita una mappa di campioni stimata per 25 lunedì successivi nell’arco delle 24 ore. Avremo quindi una tabella costituita da 25 righe e 24 colonne con cui addestreremo e valideremo la rete neurale. Riportiamo i dati forniti dall’esercizio:

ma=[ 139 131 122 123 139 157 188 239 256 265 213 22 9 218 205 195 198 1 97 214 253 237 273 245 199 158 152 149 143 147 156 166 199 258 272 271 256 24 1 220 209 208 211 218 213 262 297 272 254 220 180 148 144 141 142 148 170 208 257 265 258 255 22 3 214 206 201 205 209 209 255 279 274 254 207 167 144 139 135 133 140 162 195 262 270 270 255 23 8 217 208 209 218 220 218 256 281 276 254 220 186 158 146 140 141 144 165 211 270 279 282 270 25 7 226 223 228 225 217 224 253 288 286 270 217 185 154 150 145 151 157 171 215 257 278 273 254 24 2 220 223 227 229 230 228 261 283 279 266 223 192 163 154 152 152 155 175 222 251 279 269 269 24 9 234 222 222 218 223 217 259 299 283 273 235 192 164 156 153 143 161 180 207 250 278 276 260 23 9 221 215 211 208 212 207 239 287 266 247 199 174 178 169 166 112 172 183 221 256 270 266 262 25 2 234 237 240 237 233 226 251 302 294 283 248 203 199 195 180 188 180 196 223 256 269 269 279 26 2 245 247 246 249 243 230 262 305 297 294 263 225 205 194 185 176 187 199 229 251 267 282 263 25 3 239 248 241 239 226 237 251 289 302 280 265 226 211 196 186 187 191 201 234 247 285 272 333 27 9 256 259 273 272 272 256 260 307 315 299 256 234 223 213 207 196 199 212 225 249 259 281 274 27 1 256 257 263 282 253 248 248 320 306 288 286 237 227 219 216 211 213 209 216 222 230 223 219 21 0 212 197 209 199 196 194 215 267 283 275 253 219 223 217 206 197 199 203 211 238 268 272 283 27 1 259 261 264 266 254 241 252 302 298 297 283 254 228 209 212 205 200 213 213 233 266 274 287 27 6 266 265 273 276 272 247 267 305 311 320 281 257 239 230 225 203 202 205 208 230 256 276 277 28 1 265 266 278 264 265 241 248 303 310 300 284 259 235 228 218 209 210 215 217 246 258 287 282 28 6 292 243 275 274 266 242 242 302 310 311 280 251 229 213 211 209 208 211 220 230 261 276 252 27 8 273 260 268 266 259 247 212 296 313 307 276 251 225 217 214 196 205 210 209 219 245 273 279 27 5 255 265 266 267 258 244 243 292 304 307 277 239 220 213 207 203 203 207 210 226 252 276 292 27 2 263 268 270 256 253 232 229 288 297 297 267 241 210 206 197 211 214 213 216 228 253 277 277 27 4 264 263 267 264 253 236 236 257 302 296 276 242 220 217 215 214 212 215 210 219 252 275 275 27 2 269 253 268 271 265 240 231 273 299 294 275 237 214 209 205 204 202 209 218 234 257 289 289 27 9 275 268 278 273 257 260 262 298 306 306 275 232 210 200 199 197 199 209 224 253 279 290 285 27 9 257 256 264 264 261 240 258 300 318 281 265 234 ];

Page 2: Applicazione di una rete neurale

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2 Emanuele Duca 11

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2 Emanuele Duca 11

2. Realizzazione Come si può notare i consumi contengono valori elevati, quindi al fine di evitare la saturazione dei neuroni è necessario convertire i dati mediante la funzione mapstd la quale opera una scalatura dei parametri operando sulla media (posta pari a 0) e sulla deviazione standard ( posta pari ad 1). La variabile creata sarà quindi utilizzata dalla rete; rammentando tuttavia lo scopo dell’esercizio ovvero un plot di stima dei consumi in MH/h appare chiaro l’utilizzo nella fase finale del progetto di una funzione inversa per riportare i dati alle loro dimensioni di partenza. Per fare ciò è sufficiente specificare in mapst il parametro ‘reverse’ in modo tale da ottenere la denormalizzazione voluta: % normalizzazione dati

[ma,data]=mapstd(ma); %denormalizzazione dati ma4=mapstd( 'reverse' ,ma4,data); Successivamente viene realizzata la rete da utilizzare, tenendo in considerazione in questo caso la volontà di avere in ingresso due lunedì consecutivi casuali piuttosto che i primi due, questo è stato possibile mediante il comando randint :

%inizializzazione casuale c1=randint(1,1,[1,18]); x=ma(c1,:); y=ma((c1+1),:); p=[x;y];

A questo punto si realizza la rete nello stesso modo analizzato nell’esercizio1, con la sostanziale differenza riguardante la scelta dell’algoritmo utilizzato (traingd), in quanto ha fornito risposte soddisfacenti nelle simulazioni effettuate e il numero di neuroni presenti nel primo strato (18).

net= newff(minmax(p),[18,1],{ 'tansig' , 'purelin' }, 'traingd’);

Page 3: Applicazione di una rete neurale

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2 Emanuele Duca 12

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2 Emanuele Duca 12

I pesi e i parametri di training sono stati inizializzati nel modo seguente: net.layers{1}.initFcn= 'initnw' ; net.layers{2}.initFcn= 'initnw' ; net=initlay(net); net.trainParam.show = 100; net.trainParam.lr = 0.005; net.trainParam.epochs= 400; net.trainParam.goal = 1e-4; Per realizzare il training set della rete si utilizzano 2 lunedì successivi mentre il terzo è considerato il target (come da specifiche). Questa procedura è iterata fino ad ottenere 18 coppie d’ingresso utilizzando le prime venti righe della matrice ma (25x24), le restanti costituiranno il validation set. for i=1:18 x=ma(i,:); y=ma(i+1,:); z=ma(i+2,:); p1=[x;y]; [net,tr]=train(net,p1,z); end La visualizzazione dei bias e dei pesi sinaptici come visti nell’esercizio precedente è affidata alle seguenti righe di codice: w1=net.IW{1,1}; b1=net.b{1}; w2=net.lw{2,1}; b2=net.b{2}; Infine si procede con la validazione della rete alla fine della quale avviene la denormalizzazione dei dati come già accennato in precedenza.

Page 4: Applicazione di una rete neurale

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2 Emanuele Duca 13

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2 Emanuele Duca 13

%% validation for h=1:3 pv=[ma(20+h,:);ma(21+h,:)]; val=[ma3(22+h,:)]; st=sim(net,pv); ma4(22+h,:)=st; %denormalizzazione dati ma4=mapstd( 'reverse' ,ma4,data); end Il ciclo for fornisce i valori della matrice pv relativi alla righe 21,22,23,24, mentre val avrà al suo interno le uscite relative alle righe 23,24 e 25. Di seguito sono riportati i risultati ottenuti: figure(); for j=1:18; plot(ma3(j,:), 'b' ); title( 'Dati' , 'color' , 'r' ); xlabel( 'Ore' , 'color' , 'r' ); ylabel( 'Consumo(Mw/h)in 25 lunedi successivi' , 'color' , 'r' ); hold on end

Figura 1 Dati in ingresso.

Page 5: Applicazione di una rete neurale

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2 Emanuele Duca 14

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2 Emanuele Duca 14

%realizzazione delle ore x=(1:24); figure(10); subplot(3,1,h); plot(x,ma4(22+h,:), '+' , 'color' , 'b' ); xlabel( 'Ore' , 'color' , 'b' ); ylabel( 'Consumo MW/h' , 'color' , 'b' ); legend( 'Consumo' , 'Location' , 'NorthOutside' ); hold on

Figura 2 Consumi stimati per i dati del validation set.

Page 6: Applicazione di una rete neurale

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2 Emanuele Duca 15

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2 Emanuele Duca 15

plot(x,val, 'r' ); err(h,:)=val-ma4(22+h,:); figure(11);subplot(3,1,h);plot(x,err(h,:));

title([ 'Errore per l ingresso x(' ,num2str(h), ')' ], 'color' , 'r' ); xlabel( 'Ore' , 'color' , 'b' ); ylabel( 'Consumo MW/h' , 'color' , 'b' );

Figura 3 Errore per i tre dati in ingresso.

Una volta analizzato l’errore per i tre ingressi è stato stimato l’errore medio della rete. errm=((err(1,:)+err(2,:)+err(3,:))/3); figure(12);plot(x,errm); title( 'Errore medio' , 'color' , 'r' ); xlabel( 'Ore' , 'color' , 'b' ); ylabel( 'Consumo MW/h' , 'color' , 'b' );

Page 7: Applicazione di una rete neurale

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2 Emanuele Duca 16

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2 Emanuele Duca 16

0 5 10 15 20 25-15

-10

-5

0

5

10

15Errore medio

Ore

Con

sum

o M

W/h

Figura 4 Errore medio prodotto dalla rete

Come si può vedere l’errore per gli ingressi si attesta intorno al 10% mentre l’errore medio è del 5%, quindi si può dire che la rete è discretamente performante per il problema sottoposto.